【私的】USBブート非対応PC用起動フロッピーを作るの巻【GRUB編】

はてなブックマーク TOPSY

2009.4.25 作成

2009.7.2 なんか間違い多かったです。。。orz。設定ファイル修正しました。
2009.7.4 備考を整理しました。

「段取り九分九厘主義!」、やっぱ仕事では楽したいという...(準備で疲れてりゃ世話ない、ってか)。

ご案内してみたり...
  1. その1 === DOS用USBドライバでUSBデバイスを直接認識
  2. その2 === 分割ファイルをコピーした複数枚FDからブート
  3. 合体編 === 【その1】と【その2】を合体
  4. GRUB編 === 【合体編】をFDイメージへ、PLoP Boot Managerを追加
    • 今ここ

内容が重複しまくっとります。恐れ入り奉りまする。Palm84的【設定ファイル詰め合わせ】については甚だ不完全なのでコロコロ修正すると思います。

作成・使用目的は...
  • CDドライブなし&USBブート非対応PCでのOSのブート
  • CDドライブ故障時などUSB CDでのブート
  • ネットワークブート及びメモリテスト

つまり、色々障害あったりな限定的な条件下でもOSブートを可能にしたい、なんてかんじ?です。

これって何?

上記のページをシコシコ書いたりしてみましたが、実は少し不満があって実際には殆ど使ってなかったりするのでした。

なんとなれば...

てなかんじで、この【GRUB編】のディスクでは、上記のFreeDOSはオンメモリでブートするのでUSB FDドライブはRAMFD.SYSなしでも外してしまえます。

PLoPを足してもまだ少し空きがあるので、fdiskやsysなどDOSコマンドなどの追加が可能になるのでありました...

んで、内容はというと、USBブート非対応PCにて、3つの方法でブートを試します...

  1. PLoP Boot Manager
  2. DOS + USBドライバ
    • DOS上でUSBデバイスを認識させて、USBデバイス上のカーネルなどを LINLD でロード
  3. DOSのRAMドライブに分割したカーネルなどをFDからコピー
    • RAMドライブ上のカーネルなどを LINLD でロード

【1】が使えれば楽なのですが、使えないことも多いので3段構えにて迎え撃つわけであります(織田信長風味w)。【3】が最も面倒ですが認識は結構確実だったりします。

【1】ではUSBメモリ(USB HD)がブート可能に設定されている必要がありますが、【2】【3】ではその必要はありません。

【2】【3】はUSB CDドライブにも対応しています。

【2】,【3】については上記ページをご参照くだされ。

戻る | ページ先頭 U

ダウンロードしておくもの

  1. GRUB for DOS 起動FDイメージ
  2. SYSLINUX の memdisk
  3. PLoP Boot Manager
  4. 置換・追加設定ファイル
GRUB for DOS 起動FDイメージ

0.4.3はFDイメージがないので、grub_for_dos-0.4.2.zip をダウンロード。fat12grldr.img がFAT版FDイメージ。

FD書き込み後に grldr を 0.4.4(grub4dos-0.4.4.zip)の grldr へ置き換えたほうがいいと思います。

SYSLINUX の memdisk

syslinux-3.xx.zip をダウンロード。必要なのは、memdisk\memdisk だけ。

PLoP Boot Manager

plpbt-5.x.x.zip をダウンロード。必要なのは、plpbt.bin だけ。

置換・追加設定ファイル詰め合わせ

FreeDOS起動ディスクの置換ファイルと、GRUB起動ディスクへの追加ファイル。

RawWrite for Windows

FDイメージをFDへ書き込み、及び、FDからFDイメージの作成に使う(別にこれじゃなくてもいいけど)。

イメージ作成については、Virtual Floppy Drive の方が楽かも。

戻る | ページ先頭 U

起動ディスク作成

  1. 【その3】のFDを作成
  2. 【その3FD】から不要ファイル削除
  3. 【その3FD】へ置換ファイルを上書きコピー
  4. 【その3FD】の FDイメージ作成
  5. FDイメージを gzip で圧縮
  6. GRUB起動ディスクイメージを【新FD】へ書き込み
  7. 【新FD】へファイルを追加
【その3FD】の削除するファイルと置換ファイル

削除しても圧縮したらほとんどサイズ変わらないので、しなくてもいいような気もします。

  • 削除するファイル
A:\driver\RAMFD.SYS
A:\grub.exe
A:\menu.lst

実FDドライブはBドライブとなるので変更しとかないとだめ。あとは余分なメニューを消しとく。

  • 置換ファイル(詰め合わせから)
autoexec.bat
config.sys
menu.txt
menu_usb.txt
bin\bgrescue.bat
bin\copyb.bat
bin\insert.bat
bin\other.bat
bin\start.bat
bin_usb\other.bat
bin_usb\start.bat
FreeDOS FDイメージ作成、gzip圧縮
  1. まず、上記のページ内容の FreeDOS 起動FDを作成(※念の為、RawWrite for Windows でバックアップしときませう)
  2. 設定ファイル置換(削除&コピー)
    • 作成した FreeDOS FD をセットして【設定ファイル詰め合わせ】内の 02_Change_SCL.bat を実行
  3. FDからFDイメージ作成
    • RawWrite for Windows でFDイメージを作成
  4. gzip圧縮
    • 上記のFDイメージをgzipで圧縮。ファイル名は fdos_scl.img.gz とする

GZIP圧縮について、私はLhazを使ったけど別になんでも。Linuxとかなら下記の風で。

gzip -fc Fdos_SCL2.img > fdos_scl.img.gz
dd.exegzip.exe があれば

02_Change_SCL.bat と同じディレクトリに dd.exegzip.exe を置けばバックアップからgzipイメージ作成まで Change_SCL.bat で一括実行できます。

GRUB起動ディスクイメージをFDへ書き込み
  1. 別FDをセット
  2. fat12grldr.imgRawWrite for Windows でFDへ書き込み
ファイルを追加

FDへコピー

  • GRUB for DOS 0.4.4 の grldr を上書きコピー
  • 【設定ファイル詰め合わせ】の menu.lst を上書きコピー
  • 上記で作成した fdos_scl.img.gz
  • SYSLINUXの memdisk
  • PLoP Boot Managerの plpbt.bin
  • FD内のファイル default は不要
  • 【設定ファイル詰め合わせ】の grub,get_iso ディレクトリは必要ならコピー

戻る | ページ先頭 U

ファイル一覧

A:.
|   fdos_scl.img.gz
|   grldr
|   memdisk
|   menu.lst
|   plpbt.bin
|
+---get_iso
|       slax-ja-5.1.8.1-3.iso.md5
|       systemrescuecd-x86-1.0.4.iso.md5
|       wget_insert1218
|       wget_knoppix
|       wget_knoppix531
|       wget_puppy4003
|       wget_slax5jp
|       wget_sysres104
|
\---grub
        berry.conf
        bgrescue.conf
        insert.conf
        knoppix.conf
        knoppix3.conf
        puppy.conf
        slax.conf
        sysres.conf

戻る | ページ先頭 U

スクリーンショット

GRUB for DOS - menu.lst

起動時の画面。FreeDOS FDイメージのブートは、SYSLINUXの memdisk とGRUBの Indirect Mapping の2種類の方法で。どちらもオンメモリの仮想Aドライブとしてブート。

PLoP Boot Manager
  • USB CD非対応

ブート可能なUSBメモリ・USB HD からブート。

PLoP Boot Manager 起動画面

※これが使えるとめちゃ楽ですが、少し不安定なのが玉にきず。

FreeDOS 起動ディスク(オンメモリ = 仮想Aドライブ)

FreeDOS FDイメージの起動時の画面。

  • 【Load Ramdisk】- カーネルなどを分割コピーしたFDを読み込んでUSBメモリのLinuxをブート
  • 【1】から【4】- DOS用USBドライバ組み込み、DOS上でUSBデバイスを認識
  • ※実FDドライブは、Bドライブとなる
  • ※USBドライバを使う場合は、この画面が出た時点でUSB FDドライブは外してしまっておk

ネットワークブート(gPXEカーネル)

NICが内蔵かPCIカードでメジャーチップならほぼ使えるんじゃないかな。

Memtest86+

赤いのが出ないことを祈りつつ...

戻る | ページ先頭 U

設定ファイル

GRUBの menu.lst の内容。

PLoP Boot Manager
title Boot from USB  === PLoP Boot Manager v 5.0 ===
kernel /plpbt.bin

kernelplpbt.bin を指定。

FreeDOS FDイメージ
title ===  FreeDOS   === LiveUSB bootdisk image  (SYSLINUX memdisk)
kernel /memdisk raw
initrd /fdos_scl.img.gz
title ===  FreeDOS   === LiveUSB bootdisk image  (Indirect Mapping)
map (fd0) (fd1)
map --hook
map --mem (fd1)/fdos_scl.img.gz (fd0)
map --hook
map --floppies=2
chainloader (fd0)+1
rootnoverify (fd0)

前者は kernelmemdisk 指定。FDイメージが仮想Aドライブ、実FDドライブはBドライブとしてブート。

後者はFDイメージを fd0、実FDドライブを fd1 にマウント(map)してブート。

Network Boot
title Network Boot ---     gPXE kernel
map --mem (fd0)/fdos_scl.img.gz (fd1)
map --hook
kernel (fd1)/gpxe_all.krn

FDイメージを fd1 にマウント(map)。

kernel にFDイメージ内の gpxe_all.krn を指定。

Memtest86+
title Memtest86+
map --mem (fd0)/fdos_scl.img.gz (fd1)
map --hook
kernel (fd1)/memtest

FDイメージを fd1 にマウント(map)。

kernel にFDイメージ内の memtest を指定。

BG-Rescue Linux
title BG-Rescue Linux  (from FDx2)
configfile (fd0)/grub/bgrescue.conf
title BG-Rescue Linux 0.9.1 -- vga=normal
pause  Insert ' vmlinuz ' Floppy and Press Enter
kernel (fd0)/vmlinuz 
pause  Insert ' initrd.img ' Floppy and Press Enter
initrd (fd0)/initrd.img
boot

vmlinuzinitrd.img を順番にFDから読み込み

戻る | ページ先頭 U

備考

USB FDドライブだとこのGRUBはメチャ起動が遅いです。なんとかしたいです。(汗)

まぁ毎日とか使うわけじゃないのでこんなものかな、と言うよりは作者の問題ですね。そうですね

関連リンク

とりあえず、拙作ばかり

戻る | ページ先頭 U

Written by yassy