Linux作为1个免费、自由软件,内核版本不断升级。新的内核修订了旧内核的bug,并增加了许多的
新特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制1个更高效,更稳定的内核,就需
要重新裁剪、编译内核。
如果说Linux的shell是用户应用程序与计算机系统的接口(作业级),则Linux内核可以看成是
shell与硬件的接口,它们之间的关系如图。
精简内核制作步骤:
一、添加一块儿新的硬盘,最好和你宿主机上的硬盘类型(sisc、IDE、stat)保持一致。
然后启动你的宿主机。查看新的硬盘是否被系统所识别。
给新的硬盘分区。
在宿主机中建立两个挂载点,将新硬盘上的前两个分区挂载到系统中。
Grub菜单的第二个阶段,主要是系统的标签,背景,内核,驱动。
注意:在使用 “grub-install --root-directory=/mnt /dev/sdb ”时,/mnt后不能写
为/mnt/boot,系统会自动寻找打指定目录下的名为boot的目录,此时/mnt/boot目录下会生成一个
grub目录,里面缺少grub.conf文件
第二阶段基本上建立成功,只不过缺少了配置文件,在后面我们将自己来制作。接下来我们来建
立grub菜单的第一阶段。使用“grub” 命令来建立。
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
其中lib目录里面是库文件,init是守护进程,里面有许多的模块。
在/mnt/boot/grub/目录中创建文件grub.conf vim grub.conf
在/mnt/sysroot中建立目录和老的硬盘上的/目录中的目录相同。
在usr/目录中创建两目录bin sbin ,在etc目录中创建目录rc.d。
因为系统启动要依靠依赖守护进程,所以要在sbin/目录有init文件,如果不知道init应该位于那
个文件夹,可以使用命令“which init”在老系统中查看。然后将老系统中文件拷贝到新的硬盘的根
目录中对应的位置(/mnt/sysroot/sbin),init运行时要加载许多库文件,所有我们还要将init对应
的库文件拷贝到新硬盘中对应的lib中。 使用命令“ldd 可以查看对应的库文件”。 如果你需要的
文件很多的话,用cp命令执行的话,会很繁琐,我们可以编写一个脚本来拷贝这些文件以及相应的库
文件。
做到现在,新的硬盘可以启动了,只是不可以使用关机和重启的命令。为了做的相对好点,我们
可以简单的制作一下:
在/mnt/sysroot/etc/rc.d目录中建立一个新文件inittab,设置系统的启动。
脚本编写之后,因为要用的/sbin/halt和/sbin/reboot,所以我们还要将这两个文件从老系统拷
贝到新的硬盘所对应的目录下/mnt/sysroot/sbin中,以及将它们所要运行的库文件拷贝
到/mnt/sysroot/lib中。
系统启动要进行初始化,所以我们要在/mnt/sysroot/etc/rc.d/目录中创建初始化文件
rc.sysinit。
现在你就可以使用新的硬盘来启动系统了。注意:在虚拟机中,你创建一个新的Linux主机时,要保证硬盘和你的新硬盘类型是一样的,否则会出现这样的错误:
拷贝文件以及相关库文件的脚本:
转载于:https://blog.51cto.com/wangjun51/1265471