contents
  1. KOF2007 / FreeSBIE / Dual bootするために
    1. ISOイメージ作成スクリプトの変更
    2. 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日潰れたよ(;-;)

Last modified: 2007-09-16
Post-it: New Post-it (help)

Text color: [_][_][_][_]

Background: [_][_][_][_][_][_]

Draw Line:

x: y: