Linux作为1个免费、自由软件,内核版本不断升级。新的内核修订了旧内核的bug,并增加了许多的

新特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制1个更高效,更稳定的内核,就需

要重新裁剪、编译内核。

   如果说Linux的shell是用户应用程序与计算机系统的接口(作业级),则Linux内核可以看成是

shell与硬件的接口,它们之间的关系如图。

精简Linux内核制作_精简Linux系统制作

精简内核制作步骤:

一、添加一块儿新的硬盘,最好和你宿主机上的硬盘类型(sisc、IDE、stat)保持一致。

精简Linux内核制作_精简Linux系统制作_02

精简Linux内核制作_精简Linux系统制作_03精简Linux内核制作_精简Linux系统制作_04

精简Linux内核制作_精简Linux系统制作_05


    然后启动你的宿主机。查看新的硬盘是否被系统所识别。

精简Linux内核制作_精简Linux系统制作_06

  给新的硬盘分区。

精简Linux内核制作_精简Linux系统制作_07

精简Linux内核制作_精简Linux系统制作_08

精简Linux内核制作_精简Linux系统制作_09

精简Linux内核制作_精简Linux系统制作_10

精简Linux内核制作_精简Linux系统制作_11

精简Linux内核制作_精简Linux系统制作_12

精简Linux内核制作_精简Linux系统制作_13

精简Linux内核制作_精简Linux系统制作_14

精简Linux内核制作_精简Linux系统制作_15


 在宿主机中建立两个挂载点,将新硬盘上的前两个分区挂载到系统中。

精简Linux内核制作_精简Linux系统制作_16


    Grub菜单的第二个阶段,主要是系统的标签,背景,内核,驱动。

    注意:在使用 “grub-install --root-directory=/mnt  /dev/sdb ”时,/mnt后不能写

为/mnt/boot,系统会自动寻找打指定目录下的名为boot的目录,此时/mnt/boot目录下会生成一个

grub目录,里面缺少grub.conf文件


精简Linux内核制作_精简Linux系统制作_17


   第二阶段基本上建立成功,只不过缺少了配置文件,在后面我们将自己来制作。接下来我们来建

立grub菜单的第一阶段。使用“grub” 命令来建立。

精简Linux内核制作_精简Linux系统制作_18


    grub菜单基本上已经ok了,前面我们也说了,还确实grub.conf。所以我们现在就来,制作

grub.conf文件。首先将宿主机中的内核和驱动拷贝到新的硬盘的boot目录中,为我们制作grub.conf

做准备。 内核可以直接拷贝,因为内核是运行在硬件基础上的,硬件基本上没有多大的改变。但是驱

动需要我们加工一下,因为新的硬盘可能格式不一样等等。

# cp /boot/vmlinuz-2.6.18-164.e15.img /mnt/boot/

制作initrd,不能直接复制,因为宿主机上的驱动模块不一定适合新的系统。

在管理员家目录下创建一个目录     mkdir  /root/aaa

进入aaa中, cd /root/aaa  

zcat /boot/initrd-2.6.18-164.el5.img |cpio  -id

注: -i:表示把数据读进来,并展开到当前目录下
-d:展开时若需要目录,则自动创建目录

精简Linux内核制作_精简Linux系统制作_19

  其中lib目录里面是库文件,init是守护进程,里面有许多的模块。

精简Linux内核制作_精简Linux系统制作_20


精简Linux内核制作_精简Linux系统制作_21


   在/mnt/boot/grub/目录中创建文件grub.conf   vim  grub.conf

精简Linux内核制作_精简Linux系统制作_22


   在/mnt/sysroot中建立目录和老的硬盘上的/目录中的目录相同。

精简Linux内核制作_精简Linux系统制作_23


在usr/目录中创建两目录bin  sbin ,在etc目录中创建目录rc.d。

   因为系统启动要依靠依赖守护进程,所以要在sbin/目录有init文件,如果不知道init应该位于那

个文件夹,可以使用命令“which  init”在老系统中查看。然后将老系统中文件拷贝到新的硬盘的根

目录中对应的位置(/mnt/sysroot/sbin),init运行时要加载许多库文件,所有我们还要将init对应

的库文件拷贝到新硬盘中对应的lib中。 使用命令“ldd  可以查看对应的库文件”。 如果你需要的

文件很多的话,用cp命令执行的话,会很繁琐,我们可以编写一个脚本来拷贝这些文件以及相应的库

文件。

精简Linux内核制作_精简Linux系统制作_24

精简Linux内核制作_精简Linux系统制作_25


   做到现在,新的硬盘可以启动了,只是不可以使用关机和重启的命令。为了做的相对好点,我们

可以简单的制作一下:

   在/mnt/sysroot/etc/rc.d目录中建立一个新文件inittab,设置系统的启动。

精简Linux内核制作_精简Linux系统制作_26

   脚本编写之后,因为要用的/sbin/halt和/sbin/reboot,所以我们还要将这两个文件从老系统拷

贝到新的硬盘所对应的目录下/mnt/sysroot/sbin中,以及将它们所要运行的库文件拷贝

到/mnt/sysroot/lib中。

系统启动要进行初始化,所以我们要在/mnt/sysroot/etc/rc.d/目录中创建初始化文件

   rc.sysinit。

精简Linux内核制作_精简Linux系统制作_27

现在你就可以使用新的硬盘来启动系统了。注意:在虚拟机中,你创建一个新的Linux主机时,要保证硬盘和你的新硬盘类型是一样的,否则会出现这样的错误:

精简Linux内核制作_精简Linux系统制作_28



拷贝文件以及相关库文件的脚本:

精简Linux内核制作_精简Linux系统制作_29