|
楼主 |
发表于 2011-9-16 17:35:03
|
显示全部楼层
1)建立initrd
cd /opt/iso/boot
mkdir initrd
dd if=/dev/zero of=initrd.img bs=2M count=8 //这里的bs我设置成2M,因为1M会提示设备没有空间
mkfs.ext2 initrd.img
mount -o loop initrd.img initrd
2)创建initrd下的目录
export INITRD=/opt/iso/boot/initrd
cd ${INITRD}
mkdir bin boot dev etc lib proc sbin sys
3)确定initrd需要的东西
cp -a /bin/bash ${INITRD}/bin
mv /opt/iso/modules ${INITRD}/lib
cp -a /lib/udev ${INITRD}/lib
cp -a /lib/firmware ${INITRD}/lib
cp -a /dev/{console,null} ${INITRD}/dev
cp -a /etc/udev ${INITRD}/etc
4)编写linuxrc文件
根据linuxrc用到的命令复制到initrd中
cp -a /bin/{bash,bunzip2,bzcat,bzip2,killall,chmod,cp,grep,mount,tar,ln,cat,mkdir} ${INITRD}/bin
cp -a /usr/bin/basename ${INITRD}/bin
cp -a /sbin/pivot_root ${INITRD}/sbin
cp -a /sbin/{udevd,udevsettle,udevtrigger,modprobe} ${INITRD}/sbin
复制这些命令所需要的各种动态链接库,可通过ldd命令查看。
cp -a /lib/ld-* ${INITRD}/lib/
cp -a /lib/libc-2.5.1.so ${INITRD}/lib/
cp -a /lib/libc.so.6 ${INITRD}/lib/
cp -a /lib/lib{dl,pthread,rt}-* ${INITRD}/lib/
cp -a /lib/lib{readline,history,ncursesw,dl,bz2,blkid,uuid,rt,pthread}.so* ${INITRD}/lib/
创建一些必要的文件
touch ${INITRD}/etc/fstab
创建LiveCD标签
echo "LiveCD" > /opt/iso/LABEL
卸载initrd,并将其压缩
cd /opt/iso/boot
umount initrd
gzip -9 initrd.img |
|