最新消息:

<转>源代码搭建应用(二)——建立自己的Linux LiveCD系统

RamOs 大步 806浏览 0评论
源代码搭建应用(二)——建立自己的Linux LiveCD系统
作者:孙海勇

更新日志
2008年2月12日:本文发布。

前言:
也许有很多朋友想将自己制作的Linux系统应用到自己的实际工作生活中,但往往因为各种原因不能在你操作的机器上安装你要的系统,所以现在出现了各种 不同的LiveCD来解决各种应用方面的需求,可能有朋友对这种LiveCD的制作非常感兴趣,我结合我自己的认识和实际的应用经验总结了一套手工制作 LiveCD的方法,希望对想制作LiveCD或者对这方面感兴趣的朋友有所帮助。
制作LiveCD的方法有很多,我这里只介绍我实际制作LiveCD的方法,与通常制作LiveCD的软件有所不一样,不过效果类似,希望能起到抛砖引玉的效果,如果有什么建议或想法也欢迎一起探讨,共同提高水平。

更新,文章中难免出现一些错误或者笔误,也有可能加入新内容,因此难免会进行修正或增删一些内容,如果本文被转载可以在www.linuxsir.org的LFS版中或者在本人的Blog中查看最新版本。
  linuxsir:http://www.linuxsir.org/bbs/showthread.php?t=322970
  我的Blog:http://youbest.cublog.cn
  如须转载请注明作者为孙海勇(冲天飞豹),并提供转载出处。
  

LiveCD原理分析
启动过程
1)计算机启动光盘上的引导程序,这部分我采用grub来完成,当然还可以使用如lilo,如果是其它非x86架构的机器也可以用其它适合的引导程序。
2)引导程序装入光盘上的Linux内核,并同时装入一个RAM disk,本文中采用grub的功能来完成,RAM disk使用的是initrd的方式,当然也可以采用其它Linux支持的方式,不过可能启动脚本需要进行一定的修改。
3)内核启动后转入到initrd中linuxrc,由linuxrc来完成各种初始化的操作。
4)linuxrc必须是一个可执行文件,这里我们采用的是bash的脚本来完成,本文中的linuxrc主要是完成各种必须的文件加载、设备的识别及内核模块的加载,建立和准备好用户操作根目录环境
5)linuxrc运行结束后会进入根系统的/sbin/init继续执行,该程序将利用/etc/inittab文件来完成系统的启动过程
6)启动完成,进入用户操作模式。
需要注意的地方
1)RAM disk的大小必须小于Linux中对RAM disk设置的大小,如果超过了必须重新配置内核并重新编译。
2)RAM disk所使用的文件系统必须是Linux内核内制支持的,在编译内核的时候不能把该文件系统编译成模块。
3)LiveCD在启动中或者启动后会需要创建或者写入一些文件,所以这部分文件就需要存放在可以写入的文件系统中,这里我采用tmpfs的方式来 存放这些需要变动的文件,经过分析本文所制作的LiveCD需要修改的目录包括/etc、/home、/root、/var,对于/etc则将其打包并在 系统启动中的适当时机解压缩到一个可以写入的空间中,而对于/home、/root、/var本文采用了动态生成生成的方式,当然这个没有必须的方法,这 个需要随具体情况来变化,也都可以采用类似/etc的处理方式。

准备工作:
请按照LFS手册也可以参考我写的《第二版 手把手教你如何建立自己的Linux系统(LFS速成手册)》创建好一个基本的Linux系统,本文的内容将基于一个标准的LFS-6.3系统来完成全部工作。

编译安装必要的工具:
1、squashfs的内核补丁
本文创建的系统利用的是squashfs方式压缩文件系统,所以必须让内核支持squashfs
1)下载squashfs-3.3,并解压缩,在其目录中有linux kernel的补丁,找到你需要的内核补丁,因为LFS-6.3使用的是Linux-2.6.22.5这个版本,因此在内核的源代码目录中使用
patch -Np1 -i <path>/squashfs-3.3/kernel-patch/linux-2.6.22/squashfs-patch
2)重新配置内核,添加如下选项
File systems -> Miscellaneous filesystems -> SquashFS 3.3

3)重新编译安装内核,使其支持squashfs
2、安装squashfs-tools
内核支持squashfs后,还需要有专门的工具来创建squasfs文件,该工具包含在squashfs软件包中,进入squashfs-tools
make
install -m 755 unsquashfs mksquashfs /usr/bin
现在系统已经可以创建并识别squashfs文件系统了。
3、安装cdrtools-2.01
安装这个包是为了使用其包含的命令mkisofs,这个是建立光盘镜像的工具。编译该包可以参考BLFS手册中该软件包部分。
patch -Np1 -i ../cdrtools-2.01-mkisofs_iconv-1.patch
patch -Np1 -i ../cdrtools-2.01-ascii-2.patch
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root
make INS_BASE=/usr DEFINSUSR=root DEFINSGRP=root install &&
install -v -m755 -d /usr/share/doc/cdrtools-2.01 &&
install -v -m644 README* ABOUT doc/*.ps
/usr/share/doc/cdrtools-2.01
好,到目前为止,系统已经具备了创建LiveCD的必要环境,下面就开始讲解创建一个简单的LiveCD的制作步骤。

准备工作目录:

代码:
mkdir -pv /opt/iso/{boot,modules} cd /opt/iso

编译制作LiveCD专用的内核:
LiveCD可以通过initrd来加载需要的设备驱动,因此建议将不是开始运行就需要的功能都制作成模块形式,这样可以减少内核的体积,同时也可以增加系统的灵活性。
内核必须功能(这些功能必须包含在内核本身,不能以模块的形式出现)
Automatic kernel module loading支持:
这样可以方便今后加载模块。
RAM disk support:
initrd是采用RAM disk的方式使用的,因此内核必须支持该功能
同时,这里设定RAM disk的大小的时候为了方便今后可能的扩展,如果在使用的机器上内存不是很紧张的话建议调整的大一些,我在这里把起调整为10M大小

转载请注明:大步's Blog » <转>源代码搭建应用(二)——建立自己的Linux LiveCD系统

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap