本文主要基于孙海勇
源代码搭建应用(二)——建立自己的Linux LiveCD系统 然后写了个脚本,这样大家就很容易的做出自己的LiveCD,而尽量减少错误。脚本见附件。所以使用本文时应参照孙海勇这篇文章。
准备工作:
-
已经制作好的LFS 6.3。我以前有两篇文章可以减轻工作量,自动化或半自动化生成lfs6.3,大概需要3个小时左右。LFS6.3半自动化脚本 以及LFS6.3自动化脚本-之ALFS(jhalfs-2.3.1)
-
(可选,不过推荐,只会耗费21分钟左右)LFS6.3完成后继续安装openssh和samba client。主要目的是为了可以在windows里面用客户端SecureCRT来连接wmware中的lfs 6.3直接copy&paste了。安装samba客户端主要用来方便与windows共享文件。见我的另一篇文章:LFS6.3完成后继续安装openssh和samba client
-
01.sh,见附件
-
squashfs-3.3。下载地址
-
Cdrtools-2.01和2个补丁。参照: 下载地址:
把以上5个文件放入 windows共享目录中,如share
启动系统
lfs里启动ssh,这样就可以windows里面的SecureCRT可以登入了
/usr/sbin/sshd
试一下挂载windows里面的共享目录:
mount -t smbfs -o username=***,password=*** //192.168.187.1/share /mylfsshell/
cp /mylfsshell/*.* /sources
下面总耗时:40分钟左右。
下面开工:
编译安装必要的工具:(和孙海勇文一样,此处照搬,只是更详细的写了些命令)
1、squashfs的内核补丁
本文创建的系统利用的是squashfs方式压缩文件系统,所以必须让内核支持squashfs
1)下载squashfs-3.3,并解压缩,在其目录中有linux kernel的补丁,找到你需要的内核补丁,因为LFS-6.3使用的是Linux-2.6.22.5这个版本,因此在内核的源代码目录中使用
tar xvf squashfs3.3.tgz
tar xvf linux-2.6.22.5.tar.bz2
cd linux-2.6.22.5
patch -Np1 -i /sources/squashfs-3.3/kernel-patches/linux-2.6.22/squashfs-patch
2)重新配置内核,添加如下选项
File systems -> Miscellaneous filesystems -> SquashFS 3.3
3)重新编译安装内核,使其支持squashfs
2、安装squashfs-tools
内核支持squashfs后,还需要有专门的工具来创建squasfs文件,该工具包含在squashfs软件包中,进入squashfs-tools
cd squashfs3.3/squashfs-tools/
make
install -m 755 unsquashfs mksquashfs /usr/bin
现在系统已经可以创建并识别squashfs文件系统了。
3、安装cdrtools-2.01
安装这个包是为了使用其包含的命令mkisofs,这个是建立光盘镜像的工具。编译该包可以参考BLFS手册中该软件包部分。
tar xvf cdrtools-2.01.tar.bz2
cd cdrtools-2.01
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的制作步骤。
编译制作LiveCD专用的内核:
LiveCD可以通过initrd来加载需要的设备驱动,因此建议将不是开始运行就需要的功能都制作成模块形式,这样可以减少内核的体积,同时也可以增加系统的灵活性。
内核必须功能(这些功能必须包含在内核本身,不能以模块的形式出现)
Automatic kernel module loading支持:
(Loadable module support-> Automatic kernel module loading选为includes)
这样可以方便今后加载模块。
RAM disk support:
(Device Drivers->Block devices->RAM disk support选为includes )
initrd是采用RAM disk的方式使用的,因此内核必须支持该功能
同时,这里设定RAM disk的大小的时候为了方便今后可能的扩展,如果在使用的机器上内存不是很紧张的话建议调整的大一些,我在这里把起调整为10M大小
ext2支持:
(File systems->Second extended fs support 选为includes )
因为initrd.img本身是一个ext2的文件系统,所以要想使用initrd就必须让内核能够识别出ext2文件系统。
内核必须的功能,但可以使用模块的形式出现
loop支持:
(Device Drivers->Block devices->Loopback device support ,我这里选为*,即includes)
squashfs需要loop的支持才能正常使用,因此必须包含此功能。
squashfs支持:
(File systems->Miscellaneous filesystems-> SquashFS 3.3 - Squashed file system support,我这里选为M )
这里制作LiveCD的方法中,压缩的文件系统采用squashfs,所以内核也必须包含此功能。
非必须功能:
如网卡、声卡、磁盘驱动等,这些并不是一定需要的,可以根据你的LiveCD的功能来进行取舍,如你需要制作一个应急修复盘,那么磁盘驱动方面就比较重要了,而声卡什么的则不是必须的了;而如果你是要制作一个桌面的LiveCD,那么声卡什么的则非常必要了。
编译内核,
make make modules_install cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.22.5 cp -v System.map /boot/System.map-2.6.22.5 cp -v .config /boot/config-2.6.22.5 install -d /usr/share/doc/linux-2.6.22.5 cp -r Documentation/* /usr/share/doc/linux-2.6.22.5
将内核文件放入/opt/iso/boot目录中,将模块放入/opt/iso/modules中。(
这里我在shell脚本里面是采用如下两条命令:
cp -v arch/i386/boot/bzImage /opt/iso/boot/kernel
cp -r /lib/modules/2.6.22.5 /opt/iso/modules/,所以你不用输入)
好,下面shell开始发挥威力了.
mv /sources/01.sh ~
cd ~
./01.sh
然后大功告成了:
shell会在你的windows里的share目录中生成mylinux.iso文件,是不是很简单。
关于shell里面的主要说明:
1.在创建标签的时候一般会把自己的名字写上:
echo "创建LiveCD标签"
echo "SunPeng's LiveCD" > /opt/iso/LABEL
但是别忘了修改下面这条语句,一定要一致:
if grep -q "SunPeng's LiveCD" ${SYSTEM}/cdrom/LABEL ; then
2.loop设备我没有作为module,所以注释掉了这条语句:
#/sbin/modprobe loop
3.孙海勇原文中的语句
pivot_root ${SYSTEM} ${SYSTEM}/initrd
我的系统出现问题,改成下面的这条语句:
/sbin/pivot_root ${SYSTEM} ${SYSTEM}/initrd
4.孙海勇原文中的语句
cp -a /bin/{bash,bunzip,bzcat,bzip2,killall,chmod,cp,grep,mount,tar,ln,cat,mkdir} ${INITRD}/bin
我系统中没有bunzip,改成bunzip2,以及增加umount
cp -a /bin/{bash,bunzip2,bzcat,bzip2,killall,chmod,cp,grep,mount,umount,tar,ln,cat,mkdir} ${INITRD}/bin
------------------
|
文件:
|
01.zip
|
大小:
|
1KB
|
下载:
|
下载
|
|
------------------
另外,附上一些参考资料,对大家有用:
-
http://blog.chinaunix.net/u/13265/showart.php?id=477664 源代码搭建应用(二)——建立自己的Linux LiveCD系统
-
想做个自己的 lfs distribution 吗
-
LiveCD是这么产生的
-
精通initramfs构建step by step
-
http://blog.linuxeden.com/?uid-86833-action-viewspace-itemid-3515 制作基于 grub 的 linux liveCD
-
LFS-制作自己个性化的LiveCD
加我私人微信,交流技术。