免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2017 | 回复: 1
打印 上一主题 下一主题

基于LFS LiveCD,制作自己的LiveCD [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-16 10:42 |只看该作者 |倒序浏览



LFS LiveCD, 给我们提供一个很好的学习制作个性化Linux的平台。如果给LiveCD加入自己的一些特色的东西,就可以用来完成自己的工作。

下面我就来介绍一下基于LFS LiveCD, 如何制作自己个性化的LiveCD.

环境准备:
1.支持loop设备、CD-ROM和ISO9600文件系统的Linux.
2.分区拥有3GB空闲空间
3.LFS LiveCD version 6.2-x

步骤:
1.设置环境变量$WORK,使之指向工作目录路径,例如:
[/url]

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压缩包:
[url=http://wiki.linuxfromscratch.org/livecd/browser/tags/6.2-3/packages/initramfs]http://wiki.linuxfromscratch.org/livecd/browser/tags/6.2-3/packages/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
当然你也可以清除其他的历史文件。

14.如果你误操作,创建并删除一些文件,这些文件之前占据的扇区不再是初始化时的数据。这些扇区已经没有用了,但是它们不能很好的被压缩。把它们初始为0:

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 \
        ../lfslivecd-x86-6.2-custom.iso -b \
boot/isolinux/isolinux.bin \
        -c boot/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table \
        -V "lfslivecd-x86-6.2-custom" ./
19.刻录并测试,祝开心!
参考文档
http://www.linuxfromscratch.org/hints/downloads/files/lfscd-remastering-howto.txt


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6621/showart_340813.html

论坛徽章:
0
2 [报告]
发表于 2013-03-28 10:36 |只看该作者
回复 1# aojiang


    哥们,做成功了吗?求指导
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP