qemuでgPXE

実機でROMを焼くのは面倒なのでqemuで試してみた。
OSが起動する前なのにDNSで名前解決してHTTPでファイルをとってこられるのがすごい。

ROMイメージの取得

http://rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/
にアクセスして,
1. output format: を .rom
2. NIC type: を ns8390
3. optionalで,PCI VENDOR CODE に 10ec ,PCI DEVICE CODE に 8029 を記入して,
4. Get Image でダウンロード。

httpサーバ側の準備

今回は例としてmbmのディスクイメージでブートしてみる。
public_html/pxeディレクトリを作り,
syslinux-3.83.tar.bz2からmemdiskを,
mbm039.zipからMBM.144をpxeディレクトリにコピー。

qemuの起動

オリジナルのpxe-ne2k_pci.binをバックアップして,
ダウンロードしたromイメージをpxe-ne2k_pci.binにリネーム。
そして,以下のコマンドで起動。

> qemu -L . -boot n

qemu内での操作

ctrl-Bを押して対話モードにして以下のコマンドを実行

gPXE> dhcp net0
gPXE> kernel http://www.foo.com/pxe/memdisk
gPXE> initrd http://www.foo.com/pxe/MBM.144
gPXE> boot

ブートした!

おぼえがき

helpコマンドでコマンドの一覧を表示
configコマンドでipアドレス等の表示と設定ができる
dhcpコマンドで指定するインターフェイス名はeth0ではなくてnet0