カスタムUbuntuが動いたから、構築のメモ書き
ご覧の方へお願い
この方法はまっちゃんが試した結果です。間違っている可能性がありますので実行は自己責任でお願いします。誰も見ないだろうけど、一応ね。
どこか間違っていたらツッコミ願います。
ベースイメージ
Ubuntu9.10-ja
使用ツール
ツール名 | 用途 |
squashfs-tools | HDDイメージを展開するツール |
genisoimage | ブータブルISOの作成 |
VirtualBox | 作成環境の保持&作成したISOのテスト |
手順(ISOは/media/cdrom0/にマウントされてる)
mkdir extract-cd
作業用ディレクトリを作成し、
rsync --exclude=casper/filesystem.squashfs -a -v /media/cdrom0/ extract-cd
HDDイメージ以外をコピーする。
unsquashfs -d edit mnt/casper/filesystem.squashfs
HDDイメージを展開してeditディレクトリに入れてもらう。
sudo cp /etc/hosts edit/etc
sudo cp /etc/resolv.conf edit/etc
でネットワーク周りの設定をコピー
sudo chroot edit
editディレクトリをルートに切り替えて
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts
必要なものをマウント
あとは、apt-getとかで必要なもの(linux-image-$(uname -r)とか)を入れて。
sudo rm /etc/hosts
rm /etc/resolv.conf
コピーしたネットワークの設定を廃棄。
umount /proc
umount /sys
umount /dev/pts
exit
アンマウント&脱出。"umount /proc"が失敗したら、"umount -lf /proc"で強制アンマウントできる。
脱出したらHDDイメージをまとめてISOへ。その前に
chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -ie '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop</code></pre>
ちょっとはみ出した…HDDイメージの中のファイルをリストアップ。
<pre style="border:solid #cccccc; background-color:#ffffff"><code>sudo mksquashfs edit extract-cd/casper/filesystem.squashfs
HDDイメージの作成。30分以上かかるから、暇つぶしの何かがいるかも。
sudo cp edit/vmlinuz extract-cd/casper/vmlinuz
sudo cp edit/inird.img extract-cd/casper/initrd.gz
カーネルイメージをコピーする。
ここで何回かはまった。Ubutnu9.10ではinitrdはgzではなくlzを使うっぽいので再圧縮。
mv extract-cd/casper/initrd.lz inird.lz.orig
gzip -dc extract-cd/casper/initrd.gz | lzma -7 > extract-cd/casper/initrd.lz
rm -f initrd.lz.orig
rm -f extract-cd/casper/initrd.gz
あとは、正規ディスク確認用MD5を書き換えて
sudo /bin/sh -c "rm extract-cd/md5sum.txt"
sudo /bin/sh -c "(cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)"
ISOに焼き込んだらできあがり
mkisofs -iso-level 4 -allow-lowercase -L -relaxed-filenames -no-iso-translate -N
-b "isolinux/isolinux.bin" -hide boot.catalog -hide "isolinux/isolinux.bin"
-no-emul-boot -boot-info-table -V "CustuUbuntu" -o CustuUbuntu.iso extract-cd
注意事項
・apt-getでなにか取得したらapt-get cleanを忘れないように。
・HDDイメージの展開先はパーミッションが設定できるファイルシステムでマウントさせてるドライブに。さもなくばISOイメージ起動中にパーミッションエラーで落ちる。
/etc/sudoers is mode 0777, should be 0440
こんな感じのエラー
・vmlinuzとinitrd.imgはchrootしたあとで”apt-get install linux-image-$(uname -r)”を実行すると自動生成される。