自己DIY制作精简版Centos系统

分类:CentOS教程 阅读:83225 次

我们都知道linux系统具有无比强大的功能,但是有时候功能强大并不一定是我们想要的,有些情况下我们想要的恰恰就是一个简洁、消耗资源少、能运行一些基本的功能和基本指令的系统,这时候就需要我们手动来制作一个精简的linux系统。

如下图所示:我们有一台待安装的主机(主机B)和一台功能完备的主机(主机A),首先把待安装主机的硬盘拆下来放到主机A上,然后在主机A把内核、驱动、进程、库文件等一些系统必备的东西放到空的硬盘上做成系统硬盘,最后把做好的硬盘放到主机B上直接启动就行了。


下面我们在虚拟机上来模拟这个实验:

1、在宿主机上创建一个空的硬盘


2、打开主机A进行硬盘分区

(1)利用fdisk /dev/adb对空的硬盘进行分区,分区大小分别为主分区一(作为引导分区)100M、主分区二(作为根分区)1G(根分区不能太小)和主分区三(作为虚拟分区)500M

(2)对分区做标识


(3)分别对第一第二分区做格式化


(4)新建两个挂载点,把新硬盘的前两个分区分别挂载到两个挂载点上


3、为新硬盘创建grub引导程序引导的第一、第二阶段建

(1)创建grub引导程序引导的第二阶段,如下所示,参数DIR既是指/mnt /dev/adb


如下图所示在boot目录下生成了grub菜单,进入grub目录查看,除了grub.conf的配置文件没有外其他说明文件和描述文件都有,这里需要说明的是配置文件需要我们手动创建。


(2)创建grub引导第一阶段

首先输入grub,然后开始创建

4、拷贝内核

5、拷贝驱动

(1)在家目录下创建一个临时工作空间,在该目录下把主机A的驱动解压缩到该目录

在temp目录下有些比较重要的目录或文件,比如bin(放置库文件)、init(init程序调用的相关信息)。下面我们来查看一下init文件,如图所示,我们要根据实际情况做相应的调整。


(2)把temp目录下的文件重新打包成一个文件,并输送到新硬盘的引导分区下


6、切换到/mnt/boot/grub目录,创建grub.conf文件,文件内容如下


7、在新硬盘的根分区下建设文件系统(下面建设的是必要的目录,可根据实际情况设置哦)


8、拷贝可执行程序和其所依赖的库文件

(1)这里我们先拷贝init的可执行程序和所依赖的库

首先查看可执行文件的具体位置,再进行拷贝


然后进行查看库文件并拷贝


如上图所示,凡是带有/lib目录的都要拷贝


(2)根据上边的方法再分别把bash、ls、cat进行拷贝

9、配置inittab文件

(1)切换到/mnt/sysroot/etc目录下,建个inittab文件。

(2)打开/etc/inittab文件


(3)因为不需要太多的功能,在inittab文件里我们只留下0、6级别和初始化的文件,也就是上图中21、23和29行。

10、在/mnt/sysroot/rc.d目录下配置初始化文件rc.sysinit


11、然后运行多次sync命令,把设置的所有参数同步到要写入的新的磁盘上

12、在虚拟机上添加一个虚拟主机(也就是主机B),并把其中的硬盘卸下,把刚才我们建的那块硬盘添加到这台主机上


13、完成后暂停主机A,启动主机B,进入系统,我们试着去完成添加的几个可执行程序,ls可以完成,关机指令和重启指令却不能完成


(1)查看/mnt/sysroot/etc目录下inittab文件我们就不难发现,要进入0级别的话,依赖于名为rc的脚本,而rc的脚本又需要相应的指令,相应的指令又需要相应的库文件的支持。我们都把这些拷过来的话实在是太麻烦了,那应该怎样做呢,下面我们来做一下讲解。


(2)如下图所示,我们来为关机和重启分别做sysshutdown和sysreboot两个脚本


分别制作关机脚本和重启脚本,并把相应的可执行程序和库文件拷到对应的目录下



把脚本权限改为可执行


(3)进行同步后,暂停主机A,主机B,再进行相应的关机、重启命令就ok了

14、当然了,我们还想要有机器的主机名另外还要具备基本的网络功能,下面就来一一实现

(1)关闭主机B,启动主机A。分别把名为ping、hostonly以及ifconfig的可执行程序和所依赖的库文件拷到相应的目录下


(2)编辑初始化配置文件/mnt/sysroot/etc/rc.d/rc.sysinit


如上图所示,想要让脚本发挥作用,还需要一个名为network的文件,我们把主机A上的文件拷到主机B的硬盘上,然后做改动



(3)同步之后暂停主机A,开启主机B,测试一下


15、要实现网络功能的话首先需要内核的支持,但是内核中只有那些最常见的驱动,而其它的都被做成内核的模块,当然网卡也不例外。

(1)查看网卡参数


(2)查看PCnet的模块


(3)分别查看PCnet模块和mii模块的详细信息,从中可以看到模块的路径

(4)在主机B的硬盘上建一个存放驱动的目录,再把驱动拷进去


(5)加载驱动需要相应工具的支持,这里我们用insmod,在宿主机把相应的可执行程序和库文件拷到新硬盘相应的目录下

(6)为了在初始化的时候引用相应的模块,编辑初始化的文件/mnt/sysroot/etc/rc.d/rc.sysinit


(7)同步之后,暂停主机A并开启主机B,进行验证


至此,一个简易linux系统就制作成功了,当然我们可以根据需要随意添加应用和修改脚本


本文出自 “xiaoxiaozhou” 博客,请务必保留此出处http://xiaoxiaozhou.blog.51cto.com/4681537/1280158