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なんてものはない. 困ったな.