livecdの作り方が気になったのでやってみた. livecdを作っておくとデモとか楽になるかもしれない.

1. ツール群インストール

# aptitude -y install xorriso live-build syslinux squashfs-tools

2. debootstrap

適当にworkディレクトリ(/livework)を切って,debootstrapで新しい環境作りをする. これで,/livework/chroot以下にbin, etc, varなどの構造が作られる.

# mkdir ~/livework && cd ~/livework
# debootstrap --arch=amd64 sid chroot

3. chroot

chrootを使い,debootstrapで作った新環境に潜る. proc等をマウントし,カーネルイメージとlive-bootをインストールする.

# chroot chroot # export HOME=/root
# export LC_ALL=C
# export PS1="(chroot) $PS1"
# mount -t proc none /proc
# mount -t sysfs none /sys
# mount -t devpts none /dev/pts
# aptitude -y install linux-image-amd64 live-boot
# passwd
# aptitude clean
# rm -rf /tmp/*
# umount /proc /sys /dev/pts
# exit

4. isolinux

ディレクトリbinaryを作って,vmlinuzとinitrdをchroot環境からコピーする. mksquashfsでchroot以下からファイルシステムを作成(圧縮)する. ただし,/bootだけは除く.(mount binary/live/filesystem.squashfs /media/hogeで確認できる) CDから起動する場合はsyslinuxを使うみたい.

# cd ~/livework
# mkdir -p binary/live
# mkdir -p binary/isolinux
# cp chroot/boot/vmlinuz-3.13-1-amd64 binary/live/vmlinuz
# cp chroot/boot/initrd.img-3.13-1-amd64 binary/live/initrd
# mksquashfs chroot binary/live/filesystem.squashfs -comp xz -e boot
# cp /usr/lib/syslinux/isolinux.bin binary/isolinux
# cp /usr/lib/syslinux/menu.c32 binary/isolinux

起動設定も書いておく.

# vim binary/isolinux/isolinux.cfg

ui menu.c32
prompt 0
menu tile Boot Menu on MyDebian
timeout 300

label live-amd64
	menu label ^Live (amd64)
	menu defalut
	linux /live/vmlinuz
	append initrd=/live/initrd boot=live persistence

label live-amd64-failsafe
	menu label ^Live (amd64 failsafe)
	menu defalut
	linux /live/vmlinuz
	append initrd=/live/initrd boot=live config memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal
endtext

5. isoイメージ作成

ここが大事なところであるが,よくわかっていない. qemuのテストではうまくいっているようである.

# cd ~/livework
# xorriso -as mkisofs -r -J -joliet-long -l -cache-inodes \
-isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin -partition_offset 16 \
-A "Debian Live"  -b isolinux/isolinux.bin -c \
isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-boot-info-table -o remaster.iso binary
# qemu-system-x86_64 remaster.iso

参考

追記

# aptitude install live-build
# lb config
# lb build

これでも同じ(ような)ことができるのが分かった.debootstrapよりlive-buildのほうがだいぶリッチだしパッケージも増えているような気がする.インストーラも付いてる. lb buildもうまくいっているように見えたが,qemuとvirtualboxのどちらでも落ちてしまったのでなんかちょっと残念.

/init line 220: can't open /scripts/live
Kernel panic - not syncing: Attempted to kill init!

ということで,initスクリプトを見てみた.

# mkdir initrd_expand; cd initrd_expand
# gzip -cd ../initrd.img | cpio -imd --quit

line 220: ./scripts/${BOOT}

./scripts/の中を見てみるとliveなんてものはない. 困ったな.