HAYAGUI

FreeBSD 4.8 + grub

はじめに

FreeBSD のブートローダーといえば boot0 ですが、 linuxではおなじみの GRUB を使って FreeBSD をロードしてみます。

使用する PC には、ハードディスクは 1台 。FreeBSD 4.8 がインストールされているだけで、ブートローダーは使用していません。

mico# fdisk -s /dev/ad0
/dev/ad0: 526 cyl 255 hd 63 sec
Part        Start        Size Type Flags
   1:          63     8450127 0xa5 0x80
mico# cat /etc/fstab
# See the fstab(5) manual page for important information on automatic mounts
# of network filesystems before modifying this file.
#
# Device                Mountpoint      FStype  Options         Dump    Pass#
/dev/ad0s1b             none            swap    sw              0       0
/dev/ad0s1a             /               ufs     rw              1       1
/dev/ad0s1f             /tmp            ufs     rw              2       2
/dev/ad0s1g             /usr            ufs     rw              2       2
/dev/ad0s1e             /var            ufs     rw              2       2
/dev/acd0c              /cdrom          cd9660  ro,noauto       0       0
proc                    /proc           procfs  rw              0       0

フロッピーディスクを作成

/stand/sysinstall で、grub-0.92 をインストールします。
各stageが、以下に保存されます。
mico# pwd
/usr/local/share/grub/i386-freebsd
mico# ls
e2fs_stage1_5           minix_stage1_5          vstafs_stage1_5
fat_stage1_5            reiserfs_stage1_5       xfs_stage1_5
ffs_stage1_5            stage1
jfs_stage1_5            stage2
その他
mico# pwd
/usr/local/sbin
mico# ls -la grub*
-r-xr-xr-x  1 root  wheel  115540 Mar 23  2003 grub
-r-xr-xr-x  1 root  wheel   11697 Mar 23  2003 grub-install
-r-xr-xr-x  1 root  wheel    2429 Mar 23  2003 grub-md5-crypt

フロッピーディスクを一枚用意して、stage1 と stage2 を コピーします。

mico# dd if=stage1 of=/dev/fd0 bs=512 count=1
1+0 records in
1+0 records out
512 bytes transferred in 1.181090 secs (433 bytes/sec)

mico# dd if=stage2 of=/dev/fd0 bs=512 seek=1
dd: /dev/fd0: Invalid argument
192+1 records in
192+0 records out
98304 bytes transferred in 4.282234 secs (22956 bytes/sec)
このフロッピーディスクに grub が入りました。 これを使ってブートさせてみますので、PC を再起動させます。

フロッピーディスクから起動

BIOSで、フロッピーディスクがハードディスクより先にブートするようになっている環境で、PCの電源を入れると、 以下のようなメッセージが表示されます。
GRUB Loading stage2......
その後、以下のような入力画面になります。

    GRUB  version 0.92  (639 lower / 195520 upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub>
ヘルプを出してみる。コマンドがズラリ。
grub> help
blocklist FILE                         boot
cat FILE                               chainloader [--force] FILE
color NORMAL [HIGHLIGHT]               configfile FILE
device DRIVE DEVICE                    displayapm
displaymem                             find FILENAME
geometry DRIVE [CYLINDER HEAD SECTOR [ halt [--no-apm]
help [--all] [PATTERN ...]             hide PARTITION
initrd FILE [ARG ...]                  kernel [--no-mem-option] [--type=TYPE]
makeactive                             map TO_DRIVE FROM_DRIVE
md5crypt                               module FILE [ARG ...]
modulenounzip FILE [ARG ...]           pager [FLAG]
partnew PART TYPE START LEN            parttype PART TYPE
quit                                   reboot
root [DEVICE [HDBIAS]]                 rootnoverify [DEVICE [HDBIAS]]
serial [--unit=UNIT] [--port=PORT] [-- setkey [TO_KEY FROM_KEY]
setup [--prefix=DIR] [--stage2=STAGE2_ terminal [--dumb] [--timeout=SECS] [--
testvbe MODE                           unhide PARTITION
uppermem KBYTES                        vbeprobe [MODE]

grub には入力補完機能があります。結構便利。
「root (hd0,」の状態で tabキーを押すと補完されて、いかのように表示されます。
grub> root (hd0,0,
 Possible partitions are:
   Partition num: 0, [BSD sub-partitions immediately follow]
     BSD Partition num: 'a',  Filesystem type is ffs, partition type 0xa5
     BSD Partition num: 'b',  Filesystem type unknown, partition type 0xa5
     BSD Partition num: 'e',  Filesystem type is ffs, partition type 0xa5
     BSD Partition num: 'f',  Filesystem type is ffs, partition type 0xa5
     BSD Partition num: 'g',  Filesystem type is ffs, partition type 0xa5

'a' , 'b' , 'e' , 'f' , 'g' は、パーティション番号(BSD風に言うとスライス)にあたり、 先の /etc/fstab を対応できることがわかります。

で、こんな感じに入力。

grub> root (hd0,0,a)
 Filesystem type is ffs, partition type 0xa5
各々の説明
root カーネルの存在するデバイスとパーティションを指定するコマンド。
(hd0,0,a) BIOSから認識される最初のハードディスク(hd0,0,a) で、最初のパーティション(hd0,0,a) で、パーティションタイプが ffs (hd0,0,a)

次は、kernel コマンドで、カーネルファイル名を指定します。

grub> kernel /boot/loader
   [FreeBSD-a.out, loadaddr=0x200000, text=0x1000, data=0x24000, bss=0x0, entry
=0x200000]
最後に、boot コマンドでブートさせます。
grub> boot 
これで、FreeBSD が起動されるはず。

ハードディスクにインストール

今度は、ハードディスクにインストールしてみます。/boot/grub ディレクトリを作成して、stage2 をコピーします。
mico# mkdir /boot/grub
mico# cp stage2 /boot/grub/
次に、ロードするOSを選択するメニューを作成します。/boot/grub/menu.lst を作成して、
mico# cd /boot/grub/
mico# pwd
/boot/grub
mico# vi menu.lst
以下のような内容を設定します。
mico# cat menu.lst
timeout 3
default 0

title FreeBSD
root  (hd0,0,a)
kernel /boot/loader
再度フロッピーディスクで起動させて、grub の画面になったら、インストール。
grub> install=(fd0)+1 (hd0) (hd0,0,a)/boot/grub/stage2 0x8000 p
フロッピーディスクを抜いて、再度電源を入れなおすと、grub のメニューが表示される。

戻る



(C)1999 - 2003 Kenji Ito All rights reserved.