contents
- KOF2007 / FreeSBIE / Dual bootするために
- ISOイメージ作成スクリプトの変更
- GrubからのCD boot
GrubでDual bootするために
- 2007年09月15日(土)
関西オープンソース2007 / FreeSBIE / Dual bootするために
で、今回作っているCD-ROMは、Squeak関係の二つのものがブートするDual boot CD-ROMです。
で、Squeakの一つのものであるSqueakNOSは、画面モードの設定をしてくれるGrub(legacy)が必須なので、boot loaderは必然的にGrubになります。
ISOイメージ作成スクリプトの変更
で、普通のISOイメージ作成ではそんなものを仮定していないので、以下のようにISOイメージ作成用スクリプトiso.shに変更を行います。
db% diff -u iso.sh.org /usr/local/share/freesbie/scripts/iso.sh --- iso.sh.org 2007-09-15 08:24:07.000000000 +0900 +++ /usr/local/share/freesbie/scripts/iso.sh 2007-09-16 07:24:23.000000000 +0900 @@ -48,7 +48,7 @@ echo "Running mkisofs..." -mkisofs -b boot/cdboot -no-emul-boot -J -r -ldots -l -L -V ${FREESBIE_LABEL} -p FreeSBIE -o $ISOPATH . >> ${LOGFILE} 2>&1 +mkisofs -J -hide-rr-moved -joliet-long -l -r -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -V ${FREESBIE_LABEL} -p FreeSBIE -o $ISOPATH . >> ${LOGFILE} 2>&1 echo "ISO created:"
GrubからのCD boot
FreeBSDをGrubからcd bootしようとすると、上手くいきません。 で、Problem booting FreeBSD from cboot FreeBSD from cdrom using grubdrom using grubのパッチを適用します。 一応、パッチの内容を以下に。
db% diff -u main.c.old /usr/src/sys/boot/i386/loader/main.c --- main.c.old 2007-09-15 08:28:47.000000000 +0900 +++ /usr/src/sys/boot/i386/loader/main.c 2007-09-16 08:25:13.000000000 +0900 @@ -242,8 +242,11 @@ if ((new_currdev.d_type == biosdisk.dv_type) && ((new_currdev.d_kind.biosdisk.unit = bd_bios2unit(biosdev)) == -1)) { printf("Can't work out which disk we are booting from.\n" - "Guessed BIOS device 0x%x not found by probes, defaulting to disk0:\n", biosdev); - new_currdev.d_kind.biosdisk.unit = 0; + "Guessed BIOS device 0x%x not found by probes, defaulting to cd0:\n", biosdev); + bc_add(biosdev); + new_currdev.d_type = bioscd.dv_type; + new_currdev.d_dev = &bioscd; + new_currdev.d_kind.bioscd.unit = bc_bios2unit(biosdev); } env_setenv("currdev", EV_VOLATILE, i386_fmtdev(&new_currdev), i386_setcurrdev, env_nounset);
しかし、元記事のbc_add(biosdev)のインデントなんとかしといてくれ!! おかげで、2日潰れたよ(;-;)