前方的路,充满了艰辛。-
分类: LINUX
2013-03-28 10:39:04
原文地址:基于LFS LiveCD,制作自己的LiveCD 作者:aojiang
export WORK=/mnt/lfslivecd |
2.LiveCD使用ISO9600文件系统,拥有以下文件:
boot/* root.ext2 |
boot目录包含Linux kernel, initramfs映像和bootloader.root.ext2为根文件系统。
为了重新制作该CD,你需要安装以下软件包:
cdrtools-2.01 zisofs-tools-1.0.6 |
3.加载该CD:
mount /media/cdrom |
4.查看root.ext2文件大小:
ls -l /media/cdrom/root.ext2 |
a) 如果该文件大小约为1.5GB,内核已经为你解压了该CD,在这种情况下,你可以copy该文件到你自己的硬盘中:
cp /media/cdrom/root.ext2 $WORK/root.ext2 |
b) 如果该文件只有500MB左右,你需要重新编译内核使之支持ZISOFS,或手动解压该文件:
mkzftree -u -F /media/cdrom/root.ext2 $WORK/root.ext2 |
不管以上哪种情况,你最终获得一个大小约1.5GB的文件$WORK/root.ext2.这可能能满足你的需要,也可能不能满足你的需要。如果你想,你可以使用resize2fs调整文件的大小(e2fsprogs version >= 1.39)。早期版本的e2fsprogs不能直接调整文件系统映像的大小。
6.使用loop设备完成文件系统映像的加载:
mkdir $WORK/root mount -o loop $WORK/root.ext2 $WORK/root |
7.为了保存尽可能多的零扇区,创建并固定加载一个临时目录是一个好主意:
mkdir $WORK/build $WORK/root/build mount --bind $WORK/build $WORK/root/build |
8.加载chroot所需要的目录:
mount -t proc proc $WORK/root/proc mount -t sysfs sysfs $WORK/root/sys mount -t devpts devpts $WORK/root/dev/pts mount -t tmpfs tmpfs $WORK/root/dev/shm |
注意:与LFS 书上不同的是,tmpfs没有加载到$WORK/root/dev.这是因为所有必须的设备节点已经创建为静态节点。
9.chroot 至该文件系统:
chroot $WORK/root |
10.在该root文件系统,进入/build目录,并安装其他任何你想装的软件包。如果必要,修改其他的文件。
11.从以下网址下载initramfs压缩包:
解压该文件,并从Makefile中删除“include $(ROOT)/Scripts/functions".为你的CD生成一个initramfs映像:
make complie-stage2 VERSION="x86-6.2-custom" |
(你可以用你自己的字符串替代"x86-6.2-custom").该步骤将在当前目录下生成initramfs_data.cpio.gz文件。如果该目录不是"/build",把该文件拷贝到/build:
cp initramfs_data.cpio.gz /build |
12.离开chroot并清除加载
exit umount $WORK/root/dev/shm umount $WORK/root/dev/pts umount $WORK/root/sys umount $WORK/root/proc umount $WORK/root/build umount $WORK/root/build |
13.清除bash的历史:
rm $WORK/root/root/.bash_history |
dd if=/dev/zero of=$WORK/root/zeroes |
这条命令将打印一条信息显示“磁盘空间已满”,这不是一个错误。接着,把该文件从文件系统中删除:
rm $WORK/root/zeroes |
15.现在,可以卸载root.ext2 文件了
umount $WORK/root sync |
因为一些kernel的loop驱动存在bug,所以需要sync命令,否则将导致文件系统错误。
16.构建你的LiveCD目录结构
mkdir $WORK/iso |
从LFS LiveCD中拷贝/boot目录
cp -r /media/cdrom/boot $WORK/iso |
用你自己的initramfs映像替代原有的映像
cp $WORK/build/initramfs_data.cpio.gz $WORK/iso/boot/isolinux/iniramfs_data_cpio.gz |
(“cpio"之前的下划线在前面的命令中不是一个typo).
17.压缩root.ext2文件:
mkzftree -F $WORK/root.ext2 $WORK/iso/root.ext2 |
18.创建CD ISO映像:
cd $WORK/iso ; mkisofs -z -R -l --allow-leading-dots -D -o \ boot/isolinux/isolinux.bin \ |
19.刻录并测试,祝开心!
参考文档