無理やりPXEメニューに組み込む
ここまでの設定で、/etc/dhcpd.confを編集することでLinuxのカーネルでもDOSでも起動出来るようになっている。上の例の
27 # filename "/linux-install/pxelinux.0"; 28 # filename "/pxeloader/startrom.n12"; 29 filename "/bpbatch/bpbatch";
を次のように変更すればLinuxをブートできる。
27 filename "/linux-install/pxelinux.0"; 28 # filename "/pxeloader/startrom.n12"; 29 # filename "/bpbatch/bpbatch";
(27行目のコメントを有効にして29行目をコメントアウトする。)
頻繁に使う機能ではないので、これでも良いのだが、出来ればLinuxをブートするかDOSをブートするかを指定できるようにしておきたくなった。(逆にたまにしか使わないので、いちいち設定を変えるのでは記憶を呼び起こさなければならないので大変だ。)
「PEXでメニューを表示する」でもメモしたとおり、PXEにはメニューを使って起動するソフトウェアを選択することができる。この機能を使ってPXEクライアントを立ち上げると次のようなメニューを表示し、ソフトウェアを選択できるようになる:
この例では、
- PXEクライアントをFedora 8のディスクレス・クライアントとして起動する
- PXEクライアントをFedora 8のインストール用カーネルを使って起動する
- PXEクライアントでメモリテスト用ソフトウェアを起動する
- ローカルのHDDから起動する
を選択できるようになっている。これに
を加えてみたい。
なお、PXEのメニュー化の設定は既に完了しているという前提で話しを進める。(メニュー化については「PEXでメニューを表示する」を参照のこと。)
pxelinux.cfgのメニューを変更
/tftpboot/linux-install/pxelinux.cfg/の下にあるPXEクライアント用の設定ファイルを次のように変更する。(今回のクライアントのIPアドレスは192.168.0.128なのでファイル名は"C0A80080"となる。
[root@server-01 pxelinux.cfg]# cat -n C0A80080 1 default syslinux/menu.c32 2 timeout 50 3 ontimeout Fedora-8-Diskless 4 #prompt 1 5 6 label Fedora-8-Diskless 7 kernel Fedora-8-Diskless/vmlinuz 8 append initrd=Fedora-8-Diskless/initrd.img root=/dev/ram0 init=disklessrc NFSROOT=192.168.0.7:/tftpboot/f8 ramdisk_size=25137 ETHERNET=eth0 SNAPSHOT=client-01 9 10 label Fedora-8-Install 11 kernel Fedora-8-Install/vmlinuz 12 append initrd=Fedora-8-Install/initrd.img devfs=nomount 13 14 label DOS_Win98SE 15 kernel bpbatch.bs 16 17 label Memory-Test 18 kernel Fedora-8-Install/memtest 19 20 label local 21 localboot 1
今回赤字の部分を追加している(はてな記法のバグ?で「.bs」が赤くなってない)。なぜ、この様な内容になったのかを説明する。
まず、PXEのネットワーク・ローダー、NBPとなるのはpxelinux.0である。pxelinux.0の設定ファイルで"kernel"行が起動するソフトウェアを指定する箇所だが、基本的にはLinuxのカーネル・フォーマットのソフトウェアとなる。しかし、「Manpage of SYSLINUX」の後半に書いてある"Comboot Images and other operating systems"を見るとLinuxのカーネル以外のフォーマットでもブートできるとある。ファイルの拡張子で幾つかの種類を認識しているが、ブートできるのは次の種類になる。
拡張子 | ブートイメージ |
---|---|
無し、または下記以外 | Linux kernel image |
CBT | COMBOOT image (not runnable from DOS) |
BSS | Boot sector (DOS superblock will be patched in) |
BS | Boot sector |
COM | COMBOOT image (runnable from DOS) |
bpbatchがこのどれかの形式あればpxelinux.0からブート出来る。(つまりNBPからNBPを呼び出す。) 色々試したところ、bpbatchは"Boot sector"として認識してブートできることが分かった。そこで、拡張子に".bs"をつけたシンボリックシンクを用意するこでブートできる。
[root@server-01 pxelinux.cfg]# cd /tftpboot/linux-install/ [root@server-01 linux-install]# ls Fedora-8-Diskless Fedora-8-Install msgs pxelinux.0 pxelinux.cfg syslinux [root@server-01 linux-install]# ln -s ../bpbatch/bpbatch.P bpbatch.bs [root@server-01 linux-install]# ls -F bpbatch.bs@ Fedora-8-Install/ pxelinux.0 syslinux/ Fedora-8-Diskless/ msgs/ pxelinux.cfg/ [root@server-01 linux-install]#
ここでのポイントはpxelinuxを使ってブートしているので/tftpboot/linux-install/というディレクトリがベースのパスとなる。従って、bpbatch.bsも/tftpboot/linux-install/におく必要がある。あと、bpbatchは自分自身の拡張子を見て動作を変えるので".bs"が影響しないか心配だったが、ラッキーにも問題無かった。
pxelinux.ovl?
次に /tftpboot/linux-install/ の下にもう一つシンボリック・リンクを張っておく。
[root@server-01 linux-install]# ls -F bpbatch.bs@ Fedora-8-Install/ pxelinux.0 syslinux/ Fedora-8-Diskless/ msgs/ pxelinux.cfg/ [root@server-01 linux-install]# ln -s ../bpbatch/bpbatch.ovl pxelinux.ovl [root@server-01 linux-install]# ls -l total 68 lrwxrwxrwx 1 root root 20 2008-02-08 09:06 bpbatch.bs -> ../bpbatch/bpbatch.P drwxr-xr-x 2 root root 4096 2008-02-06 23:28 Fedora-8-Diskless drwxr-xr-x 2 root root 4096 2008-02-08 08:17 Fedora-8-Install drwxr-xr-x 2 root root 4096 2008-02-06 10:26 msgs -rw-r--r-- 1 root root 13100 2005-12-20 10:03 pxelinux.0 drwxr-xr-x 2 root root 4096 2008-02-08 09:47 pxelinux.cfg lrwxrwxrwx 1 root root 22 2008-02-08 09:53 pxelinux.ovl -> ../bpbatch/bpbatch.ovl drwxr-xr-x 2 root root 4096 2008-02-08 08:21 syslinux [root@server-01 linux-install]#
bpbatchの基本的な動作として、先ずPXEで本体の"bpbatch"がロードされ起動するが、次に"bpbatch.ovl"というプログラムをロードしてくる。(これはPXEでロードできるプログラムサイズに制限があるためだと推測している。)ところが、"bpbatch.ovl"とう固定的なファイル名ではなく"自分のプログラム名.ovl"というソフトウェアをロードしようとする。ここで「自分のプログラム名」はDHCPで与えられるpxelinux.0となるらしい。従って、この場合はpxelinux.ovlというファイルをロードしようとする。そこでシンボリックリンクを利用して、pxelinux.ovlとしてbpbatch.ovlをロードするようにする。だいぶトリッキーだが、一応動作する。
なお、bpbatchに対する引数はpxelinux.cfgでは指定できないので/etc/dhcpd.confで設定する。
/etc/dhcpd.confの設定
基本的にはパラメータ"filename"としてbpbatchではなくpxelinuxを指定するだけで後の変更は必要ないが、念のため最終的な/etc/dhcpd.confを載せておく。
[root@server-01 linux-install]# cat /etc/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.sample # ddns-update-style none; ignore client-updates; use-host-decl-names on; option option-135 code 135 = text; subnet 192.168.0.0 netmask 255.255.255.0 { option routers server-01; option broadcast-address 192.168.0.255; option nis-domain "localdomain"; option domain-name "localdomain"; option domain-name-servers server-01, dnsserver-01; option time-offset 32400; # Japan Standard Time option ntp-servers ntp.nict.jp, ntp.jst.mfeed.ad.jp; range 192.168.0.128 192.168.0.254; } host client-01 { hardware ethernet 00:0C:29:EB:31:F6; fixed-address client-01; next-server server-01; filename "/linux-install/pxelinux.0"; # filename "/pxeloader/startrom.n12"; # filename "/bpbatch/bpbatch"; default-lease-time 1296000; # 2 weeks max-lease-time 2592000; # 4 weeks option option-135 "/bpbatch/bootscript"; # option option-135 "-i"; }
DHCPサービスを再起動してからPXEクライアントの電源を入れると次のような画面が現れる。
これで"DOS_Win98SE"を選択するとDOSモードで起動する。
副作用
手動で/ftfpboot/linux-install/pxelinux.cfg/C0A80080 といったファイルを修正するので、その後、system-config-netbootユーティリティを使って設定し直そうとすると警告メッセージが出て、ファイルの内容が元に戻ってしまう。従って、その後再度、これらのファイルを手動で設定する必要が出てくるのでバックアップをとって置いた方がいい。
考察
pxelinuxを使ったLinuxブートとbpbatchを使ったDOSブートをメニュー化するのに今回はpxelinuxをベースとした。しかし、bpbatchの方もスクリプトファイルでメニュー化する機能を持ているのでbpbatchをベースとすることもできた。pxelinuxをベースにした場合、ファイルの制限などがあり結構トリッキーな設定を使う必要があったし、今回の場合はかなりラッキーだったと思う。一方、bpbatchのコマンドには"TFTPBoot"コマンドや"LinuxBoot"コマンドがあるので、そちらを使って統合した方が素直だろう。(pxelinuxはLinuxをネットブートすることを念頭に作られているのに対して、bpbatchは汎用的にOSをネットブートすることを目的として作られているため。)
NTFS4DOS
DOSモードで立ち上がるところまでは良いが、HDDの修復目的などでDOSを使う場合、HDDがNTFSでフォーマットされていると手が出ない。DOSからNTFSをアクセスすることが出来るツールをフロッピーにインストールしておく必要がある。その様なツールがいくつかはあるが、有償だったり、無償版はRead Onlyだったりする。私はAvira社のNTFS4DOSという製品を使った。個人使用に限り無償で利用することができる。NTFSに対して読み書きもでき、NTFS用のchkdskやデフラグツールも付いてくる。業務用でも20ユーロ(約3,000円)で購入できる。
元々はDatapolという会社の製品だったが、Datapol社が2006年4月にAvira社に買収され現在ではAvira社の製品として販売されている。
NT4DOSのPXEを使ったネットワークブートは、上で書いた通常のDOSのブート同じである。上の設定の環境を使って補足説明する。
bpbatchを使ってDOSをブートする時にどのフロッピーイメージからブートするかを指定した/tftpboot/bpb-boot/bootscript.bpbを書変える。先程のDOSのブートの時は、
set CacheNever="ON" loadramdisk "/dos/Win98SE_SPC.flp" floppyboot
という設定だったが、loadramdiskの行を次のように書換える。
set CacheNever="ON" loadramdisk "/dos/NTFS4DOS_SPC.flp" floppyboot
ここで"NTFS4DOS_SPC.flp"というのがNTFS4DOSのフロッピーイメージのファイルで、この環境では"/tftpboot/dos"ディレクトリの下において置く。
これでクライアントをブートしてメニューでDOSを選べばNTSF4DOSが起動する。
だたし、PXEの設定ファイル(上の例では/tftpboot/linux-install/pxelinux.cfg/C0A80080)のメニューに表示するタイトルも変更しておく必要がある。(変更しないと"DOS_Win98SE"というメニューのタイトルが表示される。)次のような方法も考えられる。例えば、DOSとNTFS4DOSをメニューから選択的に起動するには、PXEの設定ファイルにNTFS4DOSの項目を追加してappend行を使ってbpbatchに渡す引数を指定し、Win98とは別のスクリプトファイル(例えばbootntfs4dos.bpbなど)を用意する方法もあると思うが、そこまで確認はしていない。(PCのトラブル時にPXEを使ってDOSやNTFS4DOSをブートするだけなので、必要に応じてbootscript.bpbを書き変えれば良いので、今回はそこまで深入りしなかった。今のところ、書換えるのも後で忘れるのでDOS用よNTFS4DOSようのスクリプト別々の名前で用意して、シンボリックリンクで切替えるようにしている。)
NTFS4DOSのカスタマイズ
オリジナルのフロッピーイメージでも勿論使えるが、日本語キーボードを使っている場合は、キーボードを選択できるようにしておく必要がある。オリジナルのフロッピーイメージの内容は次のようなものだが、
autoexec.bat command.com dfrgntfs.exe keyboard.sys keybrd4.sys msdos.sys chkdsk.exe config.sys io.sys keybrd2.sys license.dat ntfs4dos.exe chkdskg.exe cpyrdcc.bat keyb.com keybrd3.sys lngintl.dat vtmode.com
日本語キーボード対応(+レスキュー用コマンド)として次のような内容にしてある。(ちょっと欲張ってCD-ROMドライバも入れてしまっている。CD-ROMドライブからブートできない場合、PXEでブートしてCD-ROMへアクセスするため。)
attrib.exe chkdsk.exe cpyrdcc.bat fdisk.exe jkeybrd.sys mem.exe ntfs4dos.exe autoexec.bat chkdskg.exe deltree.exe find.exe jkeyb.sys move.exe xcopy32.exe biling.sys command.com dfrgntfs.exe himem.sys license.dat mscdex.exe xcopy32.mod cd1.sys config.sys drvspace.bin io.sys lngintl.dat msdos.sys xcopy.exe
これに伴い"config.sys"も次のように書き変える必要がある。
オリジナル:
[menu] menuitem=ntfsdos,NTFS4DOS menuitem=dfrgntfs,Defragment NTFS menuitem=dskchk,Check Disk Utility menudefault=ntfsdos,20 [ntfsdos] [dfrgntfs] [dskchk] [common] files=100 LASTDRIVE=P
日本語用:
[menu] menuitem=ntfsdos,NTFS4DOS menuitem=dfrgntfs,Defragment NTFS menuitem=dskchk,Check Disk Utility menudefault=ntfsdos,20 [ntfsdos] [dfrgntfs] [dskchk] [common] DEVICE=HIMEM.SYS /testmem:off FILES=100 BUFFERS=20 DEVICEHIGH=BILING.SYS DEVICEHIGH=JKEYB.SYS DEVICE=CD1.SYS /D:OPTDRV LASTDRIVE=Z
NTFS4DOSを使ってみて
NTFSにアクセスできること以外は普通のDOSと大して違いはないので、NTFS4DOS自身について特段書くことはないが、NTFS4DOSに付いてくるデフラグツールはちょっとマニアックだった。通常の(Windowsについてくる)デフラグツールは「システムファイル」まではデフラグしない様である。Windowsのデフラグツールで一つ残らずデフラグした後でNTFS4DOSのデフラグを"High"モード(昔のバージョンではparanoia(偏執狂)モードと言ったらしい)で動かすと、まだまだ出るわ出るわ。もっとも、殆どが"C:\System Volume Information"の下にあるバックアップ用のファイルなので、デフラグしたからといってパフォーマンスが上がるわけではなさそうだ。)
LinuxのPXEでDOSをネットワークブートする
PXE(ピクシー)でLinuxのブートやディスクレスの実現は問題なく出来るようになった(「PXEによるディスクレス・クライアント(総集編)」参照)が、凝り性なので色々と試したくなる。次に考えるのはDOSとかWindowsをPXEでブートできないか、と思ってしまう。勿論、LinuxのPXEサーバを使ってだ。PXEサーバが1台あると便利でも書いたがPXEサーバが一台あるといざということに何かと便利である。
Windowsがディスクレスで起動しても、まぁ、それ程嬉しいことはないかと思う。それであれば、贅肉を落としたLinuxをディスクレスで立ち上げてVMware Server Consoleなどを動かした方が気が利いている。しかし、ちょっとDOSを起動したいということはありそうだ。一番ありそうなのはフロッピーの無いノートなどで「Windowsが立ち上がらない!」場合だろう。PXEサーバに予め用意しておけばいつでも使える。
BpBatchが必要
PXE自身はクライアントからの要求に応じて、アドレス解決をしてローダを配ることしかしない。このローダ(NBP:Network Bootstrap Program)がLinuxのカーネルなどのOSの本体を読み出してきて立ち上げる。Linuxを立ち上げる場合のNBPは"pxelinux.0"だった。Windows(W2K/XP/2003など)は"startrom.n12"になる。このあたりMicrosoftのページに書いているので直ぐ見つかった。(「PXE のアーキテクチャ」または「リモート インストール サービスで使用されるテクノロジとコンポーネント」)
DOSのブートもstartrom.n12で出来るのかと思いやったみたが、結局、startrom.n12は"NTLDR"を2次ローダとして読み出し、起動するのでNT系のWindowsにしか使えないようだ。
調べていくとPXEを使ったDOSのブートには"BpBatch"というネットワーク・ローダが必要だと分かった。BpBatchというソフトはRemboという会社が作っていて、個人利用に関しては無償で配布していたようだ。しかし2年程前にIBMに買収されていた。(「Rembo is now a part of IBM」参照。RemboはネットワークでOSを配布する技術があり、Windows Vistaへの移行ツールの一環として買収したようだ。) またRembo自身もそれ以前から配布をやめていたようだが ftp://ftp.ufanet.ru/pub/remoteboot/bpb-exe.zip から未だにダウンロードできるようだ。これを解凍してLinux環境(PXEサーバ)へ持ってくる。
なお、ここから先の設定例はすでにTFTP、DHCP、PXEが既にインストールされていることを前提とする。これらの設定については「PXEによるディスクレス・クライアント(総集編)」を参照のこと。
展開すると次のようなファイルが生成される。
[root@server-01 tmp]# ls -l total 1956 -rw-r--r-- 1 root root 58659 2000-02-11 21:21 bpbatch.hlp -rw-r--r-- 1 root root 191812 2000-02-11 21:21 bpbatch.ovl -rw-r--r-- 1 root root 2183 2000-02-11 21:21 bpbatch.P -rw-r--r-- 1 root root 856 2000-02-11 21:21 INSTALL -rw-r--r-- 1 root root 3471 2000-02-11 21:21 LICENSE -rwxr-xr-x 1 root root 173607 2000-02-11 21:21 mrbatch -rw-r--r-- 1 root root 203190 2000-02-11 21:21 mrbatch.exe -rwxr-xr-x 1 root root 399536 2000-02-11 21:21 mrbatch.static -rwxr-xr-x 1 root root 208763 2000-02-11 21:21 mrzip -rw-r--r-- 1 root root 210416 2000-02-11 21:21 mrzip.exe -rwxr-xr-x 1 root root 429816 2000-02-11 21:21 mrzip.static -rw-r--r-- 1 root root 771 2000-02-11 21:21 readme -rw-r--r-- 1 root root 8631 2000-02-11 21:21 whatsnew
このうち bpbatch.* があれば取り合えず動作する。(が、一応、全てのファイルを/tftpboot/の下へコピーした。)
[root@server-01 tmp]# mkdir /tftpboot/bpbatch/ [root@server-01 bpbatch]# cp * /tftpboot/bpbatch/ [root@server-01 bpbatch]# cd /tftpboot/bpbatch/ [root@server-01 bpbatch]# ls bpbatch.hlp INSTALL mrbatch.exe mrzip.exe whatsnew bpbatch.ovl LICENSE mrbatch.static mrzip.static bpbatch.P mrbatch mrzip readme
"bpbatch.P"がNBPの本体になる。bpbatchはどの様な名前で起動されるかによって、使用するtftpサーバの種類を切替えられるように作られているらしい。
bpbatch | 通常のtftpサーバを使用する。(69番ポート) |
bpbatch.P | パケットサイズを大きく出来るtftpサーバで59番ポートを使用する。 |
bpbatch.B | パケットサイズを大きく出来るtftpサーバで69番ポートを使用する。 |
OSのブートなどで巨大なイメージファイルを転送する場合は"blksize"オプションでパケットサイズを大きく出来るtftpサーバを使うことあるそうだが、その場合には有効だろう。"Incom TFTPD"というtftpサーバはパケットサイズを変えられるらしい。通常のtftpサーバでは"blksize"オプションは使えないので拡張子の無いファイル名を使うことになる。そのためにシンボリックリンクを張っておく。
[root@server-01 bpbatch]# ln -s bpbatch.P bpbatch
[root@server-01 bpbatch]# ls
bpbatch bpbatch.P mrbatch mrzip readme
bpbatch.hlp INSTALL mrbatch.exe mrzip.exe whatsnew
bpbatch.ovl LICENSE mrbatch.static mrzip.static
dhcpd.confに登録する
PXEのBNPとしてbpbatchをダウンロードするように/etc/dhcpd.confを設定する。
[root@server-01 bpbatch]# cat -n /etc/dhcpd.conf 1 # 2 # DHCP Server Configuration file. 3 # see /usr/share/doc/dhcp*/dhcpd.conf.sample 4 # 5 ddns-update-style none; 6 ignore client-updates; use-host-decl-names on; # <- ■■■追加 (*) 7 option option-135 code 135 = text; 8 9 subnet 192.168.0.0 netmask 255.255.255.0 { 10 option routers server-01; 11 option broadcast-address 192.168.0.255; 12 13 option nis-domain "localdomain"; 14 option domain-name "localdomain"; 15 option domain-name-servers server-01, dnsserver-01; 16 17 option time-offset 32400; # Japan Standard Time 18 option ntp-servers ntp.nict.jp, ntp.jst.mfeed.ad.jp; 19 20 range 192.168.0.128 192.168.0.254; 21 } 22 23 host client-01 { 24 hardware ethernet 00:0C:29:EB:31:F6; 25 fixed-address client-01; 26 next-server server-01; 27 # filename "/linux-install/pxelinux.0"; 28 # filename "/pxeloader/startrom.n12"; 29 filename "/bpbatch/bpbatch"; 30 default-lease-time 1296000; # 2 weeks 31 max-lease-time 2592000; # 4 weeks 32 option option-135 "/bpbatch/bootscript"; 33 # option option-135 "-i"; 34 } 35 [root@server-01 bpbatch]#
基本的にはpxelinuxでLinuxのディスクレスクライアントに対するサービスの設定に手を加えた。(厳密にはディスクレスの設定の時に使ったものと若干異なっているものをベースとしている。)赤字が追加した部分となる。
- 29行目:NBPのファイル名を指定する。/tftpboot/bpbatch/bpbatch(先程作ったシンボリックリンク・ファイルで実体は"bpbatch.P")となるが、/tftpbootはTFTPのルートディレクトリなので/tftpboot/からのパス(/bpbatch/bpbatch)で現す。("/bpbatch/bpbatch"の最初のbpbatchはディレクトリ名、2番目のbpbatchはファイル名である。)ちなみに27行目でコメントアウトしているのはlinuxブート用のNBP。
- 32行目:NBPであるbpbatchに渡す引数をしてい指定している。135番オプションを使っているらしい。"/bpbatch/bootscript"はbpbatchに対するスクリプトファイルを指定している。bpbatchはTFTPでbootscript.bpbとう名前のファイルをダウンロードして、そこに書かれている記述の通りにコマンドを実行する。なお、拡張子の".bpb"はbpbatchが自動的に追加するので、dhcpd.confでは書いてはいけない。
- 33行目:コメントアウトしているが、これもbpbatchに渡す引数をしてい指定している。(32行目と交換して使う。)"-i"は対話モードでの実行を指定する。"-i"でbpbatchを起動するとプロンプトが出てコマンド入力待ち状態となる。
- 7行目:bpbatchの引数を表す135番オプションの定義。コード135番は文字列型であることを宣言している。
次にbpbatchに対するスクリプトファイルを作成する。
[root@server-01 bpbatch]# ls bootscript.bpb bpbatch.hlp bpbatch.P LICENSE mrbatch.exe mrzip mrzip.static whatsnew bpbatch bpbatch.ovl INSTALL mrbatch mrbatch.static mrzip.exe readme [root@server-01 bpbatch]# cat -n bootscript.bpb 1 set CacheNever="ON" 2 loadramdisk "/dos/Win98SE_J.flp" 3 floppyboot [root@server-01 bpbatch]#
- 1行目:setコマンドで変数CacheNeverをONにしている。bpbatchはデフォルトでHDDにファイルをキャッシュする。これはネットワークブートする毎に大きなファイルをダウンロードしてネットワークに負担をかけることを避けるためだ。この変数をONにすることでHDDにキャッシュしなくなる。なお、bpbatchがHDDにキャッシュするのはパーティションテーブルに登録されている最後のパーティションの終わりのシリンダから物理的に最後のシリンダまでの間で、どこのパーティションにも属していない領域が使われる。
- 2行目:ramdisk領域にダウンロードするイメージファイルを指定している。今回はWindows98SEで作成したブート・フロッピーのイメージファイルを/tftpboot/dos/Win98SE_J.flpとして、そのファイルを指定している。フロッピーなどのイメージファイルはbpbatchに付属している"MrZip"を使って作ることも出来るが、私の場合はLinuxのddコマンドで直接フロッピーから作った。
[root@server-01 bpbatch]# mkdir /tftpboot/dos/ [root@server-01 bpbatch]# dd if=/dev/floppy of=/tftpboot/dos/Win98SE_J.flp
- 3行目:ramdiskのフロッピーイメージを使ってブートする。
今回はDOSを立ち上げるの目的なのでbpbatchに関しては必要最小限しか使っていないが、結構と豊富なコマンドを持っていて色々な動作が可能だ。bpbatchについては「Linux Remote-Boot mini-HOWTO」に非常に詳しく書いてあるので参考になる。
これで準備が整ったのでDHCPサービスを再起動して設定は終わりとなる。
[root@server-01 bpbatch]# service dhcpd restart Shutting down dhcpd: [ OK ] Starting dhcpd: [ OK ] [root@server-01 bpbatch]#
DOSをPXEブートしてみる
クライアントのPCをBIOS設定でPXEブートできるように設定してからブートしてみる。まずは電源を入れてPXEブートが始まりbpbatchが起動したところ:
次にbpbatchがスクリプトファイルを実行し、Win98SEのDOSフロッピーイメージをダウンロード、起動したところ。キーボードの種類を聞かれるところで入力待ちになっている:
(フロッピーにはディスク管理用のファイルを詰め込んだので日本語フォントは入れられなかった。しかし、キーボードのタイプが違うと扱いにくいので、キーボードの種類は選択できるようにしている。)
最後にdirコマンドで"A:"の内容を見ているところ:
DOSも3GHzのマシンで実行するとつくづく早いと思う。
参考リンク
Linux Remote-Boot mini-HOWTO
bpbatchの作者らが書いた解説ページ。大変詳しいく書いてありbpbatchを利用する上では必読ページとも言える。
PXE Remoteboot on CompactPCI Systems
直接bpbatchには関係ないがbpbatchを使ったブート方法が基本から設定まで書いてある。この中に、bpbatch.Pやbpbatch.Bの違いが書いてあった。