自己动手创建最精简的、最具特色linux(2)
2、准备我们的linux的善意欺骗文件initrd文件。
关于initrd文件的作用,我在有一篇名为《Linux开机流程简述》的文章中详细说明多,建议大家去看看,对我们的小linux管理和维修是有很大帮助的。
同样查看宿主机的/boot目录内的内容,会发现有类似initrd-2.6.18-164.el5.img initrd-2.6.28.10.img 这样以initrd开头中间是版本号,以img结尾的文件,那么这就是initrd文件了,每个版本的内核文件,就会有一个与之版本号相对应的initrd文件,将与我们刚才选择的内核版本号相对应的initrd文件拷贝到一个新建的目录内改造(此处我们在/tmp目录中创建一个名为test的目录)
cp /boot/initrd-2.6.18-164.el5.img /tmp/test/
我们用查看这个文件的类型会发现它是一个用cpio打包,由gzip压缩的文件,我们将其展开在当前目录下。
zcat initrd-2.6.18-164.el5.img | cpio -id
展开之后我们会发现一个init的脚本文件,将其用vim打开,将以mkrootdev -t ext3 -o defaults,ro开头行ro
后面的内容改成sda2,保存退出,即可(sda2为我们小linux系统单独运行时根文件系统所在的分区,在此我们告诉init进程,真正的根文件系统在sda2上面,让内核去进行根文件系统的加载,需要注意的是ro和sda2之间有一个空格)
修改 完成之后,我问就该对其进行封装复原了(封装复原前最好先将此目录中的initrd-2.6.18-164.el5.img文件删除,使用命令:rm -rf initrd-2.6.18-164.el5.img),使用命令:
find . | cpio -H newc -o | gzip -9 > /mnt/boot/initrd.gz
(注:find . 为当前目录的所有内容
cpio -H news -o 将目录下的所有内容进行cpio打包
gzip -9 打包之后进行gzip压缩,因为这个文件必须是压缩的格式
> /mnt/boot/initrd.gz 将打包压缩好的文件放在/mnt/boot目录下,并命名为initrd.gz,重命名同样是为了方便使用 )
3、向我们小linux磁盘安装grub引导程序。(关于grub的作用在我刚刚提到的文章里有介绍,此处不再说明)
相关新闻>>
- 发表评论
-
- 最新评论 更多>>