up

前へ| 次へ

作成の続き

では

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 が 存在する デストリビューション があります。フロッピーディ スクを いれていない状態で 動かしてみましょう。

# 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

へい 無事 に 辿りついたようです。

補足

個猫 としての 補足

(fd0)/boot/grub/stage1

ファイルを 特定する方法として

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)

”d (fd0) ” については 同様に

http://www.gnu.org/software/grub/manual/grub.html#install

に 有るように ”[d] dest_dev” ですので フロッピーディスクに 処理をし ます。

0x8000

これも 同じく ”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 (fd0)/boot/grub/menu.lst

”[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 作成


前へ| 次へ

up

Copyright © 2004.-2009. nyantarou All Rights Reserved.