0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何制作一个属于自己的Linux操作系统?

dyquk4xk2p3d 来源:良许Linux 2023-04-03 09:33 次阅读

一、前言

Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在Linux内核还是开源软件等方面,都为我们后来人提供了一个良好的学习和研究环境。

本文主要通过裁剪现有Linux系统,根据自己的需要,打造一个属于自己的Linux小系统,让其能够具备Linux的一些常用小功能。

二、原理

启动流程介绍:

制作Linux小系统之前,我们有必要再了解一下Linux的启动流程:

1、首先Linux要通过POST自检,检查硬件设备有没有故障

2、如果有多块启动盘的话,需要在BIOS中选择启动磁盘

3、启动MBR中的bootloader引导程序

4、加载内核文件

5、执行所有进程的父进程、老祖宗init

6、打印欢迎界面

在Linux的启动流程中,加载内核文件时还需要借助别外两个文件:

1)initrd,是CentOS5上用内存模拟的磁盘设备

2)initramfs,是CentOS6上用内存模拟的文件系统

在启程的流程中,init主要是用来做哪些操作的呢?

init通过调用/etc/inittab这个配置文件,然后再去执行/etc/rc.d/rc.sysinit的系统初始化脚本

好啦,原理我们已经知道了,接下来我们来看看具体的思路吧(〃'▽'〃)

三、思路

1、我们要在一个现有的Linux系统上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,一个是/,并将其格式化。当然,我们需要明确的概念是,我们现在加的这个硬盘在现有的Linux系统中是/dev/sdb,但是,当我们把东西全部设置好时,我们就需要把这个硬盘拔除,放在我们的新系统上,此时,他就是/dev/sda啦。

2、在/dev/sdb这个硬盘上,我们要将其打造成一个独立的Linux系统,里面的所有文件是需要我们一个一个拷贝进去的。而且,作为一个将来要当/dev/sda的硬盘,里面一定要有grub文件诺~所以我们要安装grub文件。

3、同时,作为一个能独立运行的Linux系统,内核是一定不能少的!所以,我们要把内核文件和initramfs文件也一起拷到我们的/dev/sdb上。

4、现在我们系统已经初具规模了,接下来就是需要程序了0.0关于程序的拷贝我们可以通过一个脚本来实现。具体的脚本在下文中会给大家说到。

以上步骤完成,我们的自制Linux就完成啦~我们的思路就是这么回事,接下来,我们就开始吧( ̄▽ ̄)~*

四、操作步骤

本次实验我们以centos6.9为例~

1、目标磁盘分区

首先,我们在宿主机上添加一块大小为20G的硬盘:

8c605430-d1af-11ed-bfe3-dac502259ad0.jpg

8c671482-d1af-11ed-bfe3-dac502259ad0.jpg

8c72aedc-d1af-11ed-bfe3-dac502259ad0.jpg

8c8090ce-d1af-11ed-bfe3-dac502259ad0.jpg

8c8b500e-d1af-11ed-bfe3-dac502259ad0.jpg

8c92d946-d1af-11ed-bfe3-dac502259ad0.jpg

8c9aca98-d1af-11ed-bfe3-dac502259ad0.jpg

8ca9d70e-d1af-11ed-bfe3-dac502259ad0.jpg

添加完成后,点击确定,然后我们打开宿主机。通过fdisk来给我们的/dev/sdb进行分区:

8cb6333c-d1af-11ed-bfe3-dac502259ad0.jpg

接下来,我们对/dev/sdb的分区进行格式化:

8cbe3e10-d1af-11ed-bfe3-dac502259ad0.png

格式化完成后,我们创建一个文件夹。进行挂载:

8cc2f590-d1af-11ed-bfe3-dac502259ad0.png

注意:新建的文件夹必须是/mnt/boot

2、安装grub至目标磁盘

我们直接用grub-install –root-directory=/mnt命令来安装。用这个命令会安装grub引导第二阶段的文件。

8cc84ffe-d1af-11ed-bfe3-dac502259ad0.png

我们可以来看一下二进制确认我们是否安装成功:

8cd9597a-d1af-11ed-bfe3-dac502259ad0.jpg

安装成功。

3、复制内核文件和initrd文件

将内核文件和initrd文件复制到/dev/sdb下的boot目录中:

8cf634d2-d1af-11ed-bfe3-dac502259ad0.png

4、建立grub.conf文件

上面我们已经移植了内核和initrd文件,我们可以根据其版本来编写grub.conf文件:

8cfa44b4-d1af-11ed-bfe3-dac502259ad0.png

注意,我们要把selinux给关掉,同时设定一下init,告诉内核不要再去找这个程序了,不然开机的时候会出现错误的~

5、创建一级目录并复制文件

至此,我们就缺目录和文件了~

创建开机后的一级目录,同时把/dev/sdb2挂载至/mnt/sysroot,使该目录作为根目录:

8d06ce5a-d1af-11ed-bfe3-dac502259ad0.png

复制文件,复制文件我们通过脚本执行,复制我们平时常用的命令即可,小编这里复制了ls,ifconfig,bash,reboot,rm,modprobe,mount,ip,mkdir,touch,cat,vi,less,shutdown,insmod。我们可以用tree查看一下这些命令的复制情况:

8d138bf4-d1af-11ed-bfe3-dac502259ad0.jpg

很明显我们都复制成功了~

附:复制命令的脚本源代码

8d29757c-d1af-11ed-bfe3-dac502259ad0.jpg

6、复制网卡驱动

我们基本工作已经完成了,如果想使这个虚拟机带有网卡功能,我们就必须把网卡驱动拷过来,具体操作如下:

1)查询网卡详细信息

8d3ecde6-d1af-11ed-bfe3-dac502259ad0.png

2)把网卡模块的路径复制到/mnt/sysroot的库文件下:

8d48b7d4-d1af-11ed-bfe3-dac502259ad0.png

以上,我们的操作全部完成。现在我们就可以关机,然后把/dev/sdb这个硬盘拆下来,放到新的虚拟机上运行了~

五、测试开机

我们创建一个新的虚拟机,启动的时候会带一个硬盘,我们不用它的,删掉再把我们自己定义的硬盘加进去:

8d558c84-d1af-11ed-bfe3-dac502259ad0.jpg

8d5b0a4c-d1af-11ed-bfe3-dac502259ad0.jpg

8d6b1662-d1af-11ed-bfe3-dac502259ad0.jpg

8d7d51e2-d1af-11ed-bfe3-dac502259ad0.jpg

8d847f12-d1af-11ed-bfe3-dac502259ad0.jpg

8d93fde8-d1af-11ed-bfe3-dac502259ad0.jpg

此时,我们做好的硬盘已经加进去了。我们可以试试能不能启动了,如果虚拟机可以正常开启,就说明我们的实验成功~

8d9e2fac-d1af-11ed-bfe3-dac502259ad0.jpg

8daaf656-d1af-11ed-bfe3-dac502259ad0.jpg

六、实现网络功能

8dbbe286-d1af-11ed-bfe3-dac502259ad0.jpg

由于图片可能会看不清楚,现把代码标出如下:

8dc4caf4-d1af-11ed-bfe3-dac502259ad0.png

由于复制命令的时候忘记复制ping了……所以我们用另一台机器来ping一下这个ip地址:

8dd3cc70-d1af-11ed-bfe3-dac502259ad0.jpg

可以ping通~

至此,我们已经完成了私人订制Linux的全部操作,同时我们的自制Linux也可以联网啦~

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11222

    浏览量

    208896
  • 操作系统
    +关注

    关注

    37

    文章

    6734

    浏览量

    123187
  • 磁盘
    +关注

    关注

    1

    文章

    366

    浏览量

    25176

原文标题:如何制作一个属于自己的Linux操作系统?

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    转:构建属于自己的AVR操作系统

    刚刚在网上找资料看到了这个:构建属于自己的AVR操作系统,感觉是好东西,虽然我自己用不上,但是SO了下坛子里没有人分享过哪就共享出来吧因为
    发表于 07-24 10:15

    打造属于自己Linux操作系统

    跟大神起15分钟制作属于自己Linux
    发表于 04-16 14:18

    如何制作基于linux-2.6.19内核的小型Linux操作系统

    本文着重介绍如何制作基于linux-2.6.19内核的小型Linux操作系统,并将它移植到S
    发表于 04-25 08:40

    如何建立属于自己的AVR的RTOS

    这篇笔记虽然是“51操作系统学习笔记”,但没有找到合适的代码。用杨明记的感觉还有点难度。因而转学《建立属于自己的AVR的RTOS》这篇文
    发表于 11-24 06:31

    Linux操作系统

    linux的教学内容1 、Linux概述 2 、Linux操作系统安装3、 Linux的内核 4 、Li
    发表于 04-10 16:54 0次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系统</b>

    Linux操作系统原理及应用

    Linux操作系统原理及应用 1.1  操作系统的地位 1.2  操作系统的功能 1.3  操作系统的发
    发表于 04-28 14:53 0次下载

    什么是Linux操作系统

    什么是Linux操作系统  简单地说,Linux
    发表于 12-26 12:04 1404次阅读

    手机支持的Linux操作系统

    手机支持的Linux操作系统   Linux系统Linux系统
    发表于 01-28 17:07 1817次阅读

    基于linux的十大操作系统排名

    基于linux内核开源的特性,并随着linux的不断发展,各种基于Linux操作系统版本也在不断发行出来,其中每一个不同版本的
    发表于 07-10 16:23 1.6w次阅读

    Linux操作系统与Windows操作系统的五大区别

    、Android、Ubuntu等都可以叫做Linux系统Linux系统他是家族,他们有共同
    发表于 07-10 16:28 7876次阅读

    什么是分时操作系统Linux属于实时操作系统吗?

    我们平时分享的µC/OS、FreeRTOS、RT-Thread、ThreadX这些都是实时操作系统(RTOS),那么有读者问:什么是分时操作系统Linux属于实时
    的头像 发表于 06-23 17:04 9043次阅读

    51操作系统学习笔记(三):建立属于自己的AVR的RTOS(1)

    这篇笔记虽然是“51操作系统学习笔记”,但没有找到合适的代码。用杨明记的感觉还有点难度。因而转学《建立属于自己的AVR的RTOS》这篇文
    发表于 11-15 18:36 9次下载
    51<b class='flag-5'>操作系统</b>学习笔记(三):建立<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>属于</b><b class='flag-5'>自己</b>的AVR的RTOS(1)

    51操作系统学习笔记(四):建立属于自己的AVR的RTOS(2)

    承接51操作系统学习笔记(三):建立属于自己的AVR的RTOS(1),在avr中调试下下面
    发表于 11-15 21:06 7次下载
    51<b class='flag-5'>操作系统</b>学习笔记(四):建立<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>属于</b><b class='flag-5'>自己</b>的AVR的RTOS(2)

    Linux是实时系统还是分时操作系统?

    我们平时分享的µC/OS、FreeRTOS、RT-Thread、ThreadX这些都是实时操作系统(RTOS),那么有读者问:什么是分时操作系统Linux属于实时
    的头像 发表于 12-28 11:39 1520次阅读

    linux属于什么操作系统

    Linux属于种类UNIX操作系统Linux,全称GNU/Linux,是
    的头像 发表于 11-08 11:01 4284次阅读