MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

コアテクノロジー部

ミラクル・リナックスのOS開発やサポートを担う、技術部の精鋭陣が交代で担当します。

ミラクル関連リンク

採用情報

サイト検索

2008年5月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

« Asianux開発での公用語 | メイン | 無線LANの利用 »

GRUB と USB 接続 FDD とブート FD

さとうふみやす です。 雑談にしようかと思ったのですが、起承転結が思いつかなかったので技術ネタ。 USB フロッピーディスクドライブを利用したときの GRUB ブートフロッピーディスクの作成方法を書きます。 MBR に stage1 を、その後ろに stage2 を入れる方法ではなく、 MBR に stage1 を、ファイルシステムの中に stage2 を入れる手順です。 ブートローダーが壊れたシステムに対してはもちろん便利ですが、 フロッピーディスクのファイルシステム内に memtest86memtest86+, BusyBox の静的リンクバイナリを入れておけば、 様々な場面で役に立ちますよ。 以上でピンと来ない方は、ここでさようなら…。

以下は MIRACLE LINUX V4.0 での手順ですが、ほかの Linux でも同様です。

まずは USB 接続のフロッピーディスクドライブをマシンに接続します。 するとカーネルが認識し、dmesg(8) で確認すると次のようなメッセージが見られます:

usb 3-2: new full speed USB device using address 2
Initializing USB Mass Storage driver...
scsi3 : SCSI emulation for USB Mass Storage devices
  Vendor: MATSHITA  Model: FDD CF-VFDU03     Rev: 1026
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi removable disk sdb at scsi3, channel 0, id 0, lun 0
Attached scsi generic sg2 at scsi3, channel 0, id 0, lun 0,  type 0
USB Mass Storage device found at 2
usbcore: registered new driver usb-storage
USB Mass Storage support registered.
SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 46 94 00
sdb: assuming drive cache: write through
SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 46 94 00
sdb: assuming drive cache: write through
 sdb: unknown partition table

この場合、フロッピードライブは /dev/sdb として認識されました。 それではドライブにフロッピーディスクを入れ、フォーマットします。 Linux だけでなく Windows システムでの利用も考慮すると、 ファイルシステムは VFAT がよいでしょう。 パーティションは必要ないので、デバイスまるごとフォーマットします。 デバイス名を間違えると悲惨なこと (ハードディスク内のファイルシステムが上書き) になるので、くれぐれも慎重に!

# mkfs -t vfat -v -I /dev/sdb
mkfs.vfat 2.8 (28 Feb 2001)
/dev/sdb has 1 head and 3 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 2880 sectors;
file system has 2 12-bit FATs and 4 sectors per cluster.
FAT size is 3 sectors, and provides 710 clusters.
Root directory contains 512 slots.
Volume ID is 44db30c4, no volume label.

次にフロッピーディスク内のファイルシステムをマウントし、 その中に GRUB の stage1, stage2 ブートローダーに入れ、 アンマウントします。

# mount /dev/sda /media/floppy
# mkdir -p /media/floppy/boot/grub
# cp -p /usr/share/grub/i386-asianux/stage? /media/floppy/boot/grub
# umount /media/floppy

stage1 は MBR に入れるのでファイルシステムにも置いておく必要はないと思うのですが、 それがない場合にこの後に実行する GRUB の操作方法を知らないので、今回は深く追求しません。 (ごめんなさい。知っている方、コメントください)

次に grub(8) を起動します。

# grub
Probing devices to guess BIOS drives. This may take a long time.

    GNU GRUB  version 0.95  (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> 

grub(8) に対し、 /dev/sdb が (BIOS から見たときに?) (fd0) であること、 GRUB の stage2 (あるいは stage1_5) や grub.conf (menu.lst) などがあるファイルシステムが (fd0) であることを教えてから、 フロッピーディスクの MBR に stage1 を書き込みます:

grub> device (fd0) /dev/sdb
device (fd0) /dev/sdb
grub> root (fd0)
root (fd0)
 Filesystem type is fat, using whole disk
grub> setup (fd0)
setup (fd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/fat_stage1_5" exists... no
 Running "install /boot/grub/stage1 (fd0) /boot/grub/stage2 p /boot/grub/grub.conf "... succeeded
Done.

これで完成! マシンを再起動しましょう。 BIOS の POST が完了後、フロッピーディスクがアクセスされているでしょうか? その後、GRUB Loading stage2... と表示され、 GRUB のプロンプト grub> まで表示されれば成功です。

以上は USB フロッピーディスクドライブ向けの解説でしたが、 ふつうのフロッピードライブでもほぼ同じ手順で作成できます。 また、それぞれの手順で作成したフロッピーディスクは相互に流用可能です。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/6470122

このページへのトラックバック一覧 GRUB と USB 接続 FDD とブート FD:

コメント

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.