最近、Debain/NetBSD/OpenBSD/FreeDOSの安定版のインストーラー(amd64版があればそいつを含んだ奴)を一つにまとめた DVD を欲しくて作ってみた。
grub2 は USB-CD/DVD のアクセス対応のコードがまだ天から降ってこないので、まだ isolinux を使う必要がある。(grub2のbsd系のブートコマンドは、まだ 64bit ELFをサポートしていないので、まだまだなんだがなぁ。。。)
Linux 以外では、floppy イメージをsyslinux の memdiskでエミュレートすることで、インストール作業ができる。ただし、floppy ディスクの交換までエミュレートできないので、一つにまとまったイメージが必要になる。
で、
NetBSD/amd64 4.0 には、boot-big.fs はあったのだが、4.0.1 では提供されていないぞっと。。。なんでかぁ
困ったなぁ
コイツらは普通につくれるのかぁ、、、、Linux システム上で!
小一時間考えて、作ってみた。
NetBSD 4.0.1 のバイナリファイル群を取ってくる。下のスクリプトのTOPDIRに指定して、スクリプトを走らせると。。。memdisk でブートできる boot-big.fs を出来る。。。
#!/bin/sh TOPDIR=/path/to/NetBSD-4.0.1/amd64 BOOTBIGFS=${TOPDIR}/installation/floppy/boot-big.fs [ -e $BOOTBIGFS ] && exit #VOLSIZE=5760 # blocks workdir=/tmp/work$$ mkdir $workdir mkdir $workdir/USTAR tar xfz ${TOPDIR}/binary/sets/base.tgz -C $workdir ./usr/mdec cp $workdir/usr/mdec/boot $workdir/USTAR cp $workdir/usr/mdec/bootxx_ustarfs $workdir cp ${TOPDIR}/binary/kernel/netbsd-INSTALL.gz $workdir/USTAR/netbsd if [ "x$VOLSIZE" = "x" ] ; then needblocks=`du -s -B512 $workdir/USTAR | awk '{print $1}'` VOLSIZE=`expr $needblocks + 20` fi OVOLSIZE=`printf "%o" $VOLSIZE` touch $workdir/USTAR/USTAR.volsize.$OVOLSIZE tar --posix -cf $workdir/USTAR.tgz -C $workdir/USTAR boot USTAR.volsize.$OVOLSIZE netbsd dd if=$workdir/bootxx_ustarfs of=$workdir/boot-big.fs dd if=$workdir/USTAR.tgz of=$workdir/boot-big.fs seek=16 cp $workdir/boot-big.fs $BOOTBIGFS rm -rf $workdir
USTARFSは、initrd で cpio イメージを使うっぽい感じで tar を扱う奴らしい(ちょっと違うけど)。ボリュームのサイズは含まれる特殊なファイル名(USTAR.volsize.XXXX)で指定され、かつ8進数を使うのは、、、如何にも歴史を感じられるなぁ~
で、目的のDVDを無事ゲットできましたとさぁ。。。
まぁ、ついでに Ubunut 8.04.2 LTS Desktop/Server i386/amd64 も作ってもうたぁが、それは別の話。
0 件のコメント:
コメントを投稿