では
http://www.gnu.org/software/grub/manual/grub.html#install
を参考に 作成しましょう
# df Filesystem 1k-blocks Used Available Use% Mounted on /dev/hda7 9469148 5198224 3782148 58% / /dev/hda8 9614116 5154572 3971172 57% /var/data /dev/fd0 1412 117 1223 9% /mnt
フロッピーディスクは マウントされている 状態です。
# grub Probing devices to guess BIOS drives. This may take a long time. GRUB version 0.93 (640K lower / 3072K 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> root (fd0) Filesystem type is ext2fs, using whole disk /* 此処までは同じです ここから今回は setup (fd0) でなく install で行います */ /* grub> install /boot/grub/stage1 d (fd0) /boot/grub/stage2 p /boot/grub/menu.lst */ /* 一行で 表示 されません 以下のように なります。 */ grub> install /boot/grub/stage1 d (fd0) /boot/grub/stage2 p /boot/grub/menu.ls> <ub/menu.lst grub> quit
再起動させてみます。
# shutdown -r now
あ! フォロッピーディスク を アンマウント するのを 忘れていたのですが 無事 立ち上がってきました ということです。
grubconfig が 存在する デストリビューション があります。フロッピーディ スクを いれていない状態で 動かしてみましょう。
# grubconfig GRUBのインストール先の選択 GRUBはいくつかの場所にインストールすることができます: 1. ハードディスクのマスターブートレコード(MBR) 2. Linux のパーティションの先頭(DOSやLinuxのfdiskでそのパーティショ ンを起動可能にするか、WindowsNT/2000/XPのOSローダのような他のブー トマネージャを使って起動してください) 3.フォーマット済のフロッピーディスク 2 か 3 を選べば安全ですが、2 の場合は後で少し作業が必要になります。 2 の場合にはこの設定ツールの最後で WindowsNT/2000/XP の OS ローダの 設定が行えます。どれを選びますか? MBR Master Boot Recordへインストール Root Linuxパーティションの先頭 Floppy /dev/fd0(A:)へインストール Quit GRUB のインストールを中止 < OK > <Cancel> rootパーティションの入力 カーネル起動直後に / にマウントするパーティションを 入力してください。 [例: /dev/hda2 ] /* 対応する場所を 入力 */ < OK > <Cancel> カーネルパラメータの入力 カーネル起動時に与えるカーネルパラメータをここで指定できます。 vga16 unicon=eucjp はuniconを使うための指定です。uniconを使わない場合は 削除して Enter キーを押してください。 [例: ide=nodma (IDE デバイスの DMA を OFF にする)] [例: max_scsi_luns=1 (検出を行う SCSI の LUN の最大数を指定)] [例: nosmp (SMP マシンをシングルプロセッサで動作)] vga16 unicon=eucjp < OK > <Cancel> Windowsパーティションの選択 Windows がインストールされている /dev/hda1 Win95 NoWindows Windowsはインストールされていない < OK > <Cancel> GRUBをインストール中... Probing devices to guess BIOS drives. This may take a long time. GRUB version 0.93 (640K lower / 3072K 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> root (hd0,6) Filesystem type is ext2fs, partition type 0x83 grub> install (hd0,6)/boot/grub/stage1 d (fd0) (hd0,6)/boot/grub/stage2 0x8000 p (hd0,6)/etc/grub.conf Error 21: Selected disk does not exist grub> quit
結果は 無惨ですが 参考になる場所が 有ります。
install (hd0,6)/boot/grub/stage1 d (fd0) (hd0,6)/boot/grub/stage2 0x8000 p (hd0,6)/etc/grub.conf
これで 対応してみましょう。
# fdformat /dev/fd0u1440 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formatting ... done Verifying ... done # mke2fs /dev/fd0 -L "boot dev hda7" mke2fs 1.34 (25-Jul-2003) Filesystem label=boot dev hda7 OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 184 inodes, 1440 blocks 72 blocks (5.00%) reserved for the super user First data block=1 1 block group 8192 blocks per group, 8192 fragments per group 184 inodes per group Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 38 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # mount /dev/fd0 /mnt/ # rmdir /mnt/lost+found/ # mkdir /mnt/lost+found/ # mkdir -p /mnt/boot/grub # cp /boot/grub/stage* /mnt/boot/grub/ # cp menu.lst /mnt/boot/grub/ # ls -l /mnt/boot/grub/ | sed 1d -rwxr-xr-x 1 root root 1625 Jun 24 22:30 menu.lst* -rw-r--r-- 1 root root 512 Jun 24 22:30 stage1 -rw-r--r-- 1 root root 111584 Jun 24 22:30 stage2 # umount /mnt/ # grub ... grub> find /boot/grub/menu.lst (fd0) /* マウント していないのですが 捜し出すようです */ (hd0,9) (hd0,10) /* フロッピーディスクを 抜くと */ grub> find /boot/grub/menu.lst (hd0,9) (hd0,10) /* フロッピーディスク を 挿入 マウントは しません */ grub> find /boot/grub/menu.lst (hd0,9) (hd0,10) /* 駄目な様です */ grub> root (fd0) Error 25: Disk read error grub> quit
では マウント して
# mount /dev/fd0 /mnt/
# grub
...
grub> root (fd0)
Filesystem type is ext2fs, using whole disk
/* 今回は これを 試みます
install (fd0)/boot/grub/stage1 d (fd0) (fd0)/boot/grub/stage2 0x8000 p (fd0)/boot/grub/menu.lst
*/
<0x8000 p (fd0)/boot/grub/menu.lst /* 表示はこうなりますが カーソルを移動させると */
grub> install (fd0)/boot/grub/stage1 d (fd0) (fd0)/boot/grub/stage2 0x8000 p (>
/* Enter キー で実行すると */
grub> quit
# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda7 9469148 5144036 3836336 58% /
/dev/hda8 9614116 5154580 3971164 57% /var/data
/dev/fd0 1412 117 1223 9% /mnt
# umount /mnt/
# shutdown -r now
へい 無事 に 辿りついたようです。
個猫 としての 補足
ファイルを 特定する方法として
http://www.gnu.org/software/grub/manual/grub.html#File-name-syntax
11.2 How to specify files
There are two ways to specify files, by absolute file name and by block list.
An absolute file name resembles a Unix absolute file name,
using `/' for the directory separator (not `\' as in DOS).
One example is `(hd0,0)/boot/grub/menu.lst'.
This means the file /boot/grub/menu.lst in
the first partition of the first hard disk.
If you omit the device name in an absolute file name,
GRUB uses GRUB's root device implicitly.
So if you set the root device to, say, `(hd1,0)'
by the command root (see root), then /boot/kernel is
the same as (hd1,0)/boot/kernel.
が 有るようなので それに従って 指定しました。
”d (fd0) ” については 同様に
http://www.gnu.org/software/grub/manual/grub.html#install
に 有るように ”[d] dest_dev” ですので フロッピーディスクに 処理をし ます。
これも 同じく ”addr ”として 指定しました
The Stage 2 will be loaded at address addr, which must be `0x8000' for a true Stage 2, and `0x2000' for a Stage 1.5.
”[p] [config_file] [real_config_file]”のように 記載されているので 今回の フロッピーディスクの ”menu.lst”を 指定したのです。
”grubconfig” の 実行で
grub> install (hd0,6)/boot/grub/stage1 d (fd0) (hd0,6)/boot/grub/stage2 0x8000 p (hd0,6)/etc/grub.conf
というものを 得ました 要するに 処理の仕方です。
また
http://www.gnu.org/software/grub/manual/grub.html#install
には 以下のように 記載されています。
13.3.18 install ― Command: install [--force-lba] [--stage2=os_stage2_file] stage1_file [d] dest_dev stage2_file [addr] [p] [config_file] [real_config_file]
これらを 元にして今回は
install (fd0)/boot/grub/stage1 d (fd0) (fd0)/boot/grub/stage2 0x8000 p (fd0)/boot/grub/menu.lst
にて 対応しました。
にゃんたろう 拝!
2009年 6月23日 (火) 21:52:03 JST 作成