Live image制作


initrd


解压缩 initrd0.img


# cp /cdroot/isolinux/initrd0.img .
# mv initrd0.img initrd0.img.gz
# gzip -d initrd0.img.gz
# mkdir initrd
# cd initrd/
# cpio -i < ../initrd0.img

压缩


# cat create-initrd.sh 
#!/bin/sh
find . | cpio -c -o > ../initrd-me.img
rm ../initrd-me.img.gz
gzip ../initrd-me.img

Meego initrd 中 init 脚本流程


1, 添加 udev 规则将 安装盘 设备名链接到 /dev/root


echo "KERNEL==\"sr[0-9]\", PROGRAM=\"/sbin/blkid -s LABEL -o value %N\", 
        RESULT==\"$CDLABEL\", SYMLINK+=\"root\"" >> /etc/udev/rules.d/00-cdlabel.rules

2, 将基本文件系统 ext3fs.img 挂到 loop 设备上


losetup -r $BASE_LOOPDEV /squashfs/LiveOS/ext3fs.img

3, 创建一块 overlay 内存与 $BASE_LOOPDEV 关联上, 使$BASE_LOOPDEV 可写


do_live_overlay() {
   ...
   echo 0 `blockdev --getsize $BASE_LOOPDEV` snapshot $BASE_LOOPDEV $OVERLAY_LOOPDEV p 8 | dmsetup create live-rw
}

4, 基本文件系统 链接到设备 /dev/root, 并 mount 到 /sysroot


ln -fs /dev/mapper/live-rw /dev/root
mount -n  /dev/mapper/live-rw /sysroot

5, 再次添加 udev 规则 将安装盘设备名 重新链接到 /dev/live


echo "KERNEL==\"sr[0-9]\", PROGRAM=\"/sbin/blkid -s LABEL -o value %N\",
       RESULT==\"$CDLABEL\", SYMLINK+=\"live\"" >> /sysroot/lib/udev/rules.d/50-udev*

6,执行 exec /sbin/run-init "$@", 实际上是 chroot


# cat sbin/run-init 
#!/bin/bash
cd /sysroot
mount --move . /
exec /sbin/chroot . "$init" "$@"

基本文件系统中的 /etc/inittb


实际执行 /sbin/boot-and-install


x1:4:once:/sbin/boot-and-install

可修改 /sbin/boot-and-install 脚本,执行我们安装盘上的 脚本完成安装。


基本文件系统中的 /etc/fstab


/dev/root  /         ext3    defaults,noatime 0 0

安装后需修改


制作安装镜像脚本


#!/bin/sh
if [ -z $1 ]
	then img_version=`date -d today +"%Y%m%d%H%M"`
else
	img_version=$1

fi
CDLABEL=panda-linux-${img_version}
sed  -i "s/\(CDLABEL=panda-linux-\)[^[:blank:]]*/\1${img_version}/" ./cdroot/isolinux/isolinux.cfg
mkisofs -J -R -D -A "$CDLABEL" -V "$CDLABEL" -o ${CDLABEL}.iso \
	-b isolinux/isolinux.bin -c isolinux/boot.cat \
	-no-emul-boot -boot-load-size 4 -boot-info-table \
	cdroot

已知问题


  1. 安装完成后无法关机 (loop 设备无法umount)
  2. dmsetup 机制不了解

posted on 2012-10-25 10:53  cfox  阅读(824)  评论(0)    收藏  举报

导航