Palm84 某所の日記

死のうは一定、しのびクマには何しよぞ...

PXEネットワークブートについてのめも

2011.3.6 整理しました。

INDEX

あくまで目的は緊急時、メンテナンス用に“ミニ”OSの“一時的”起動。Linux ユーザにはいわずもがななことばかり。

というわけで、palm84レベル的(何)私的めもですたい...

起動ディスク(イメージ)

こ、これはまた死ぬほど便利(だったら・・とか言わない!そこw)

ネットワークブート非対応のマシンでも、NIC(LANアダプタ)が内蔵 or PCIボードなら起動フロッピー(またはCDやUSBメモリ、HDからでもおk)からネットワークブートできるかもしれません(PCMCIAやUSB-LANは難しいのかな??)。でも、対応モジュールとかの組み込みは難しいかなぁと思っておりました...

ところが、あにはからんや弟はかって、か・か簡単に対応フロッピーイメージを作成してダウンロードさせて頂けるサイトがあったんですよー(っていうか私が無知だっただけですが...汗)

起動FDイメージ、isoイメージ及びGRUB・SYSLINUX用ブートイメージなどがダウンロードできます。

all-drivers は汎用で使えます。gPXE 対応、通常のPXEブートでも使えます。

起動FD/CDイメージ

  1. Choose an output format
    • FDなら SYSLINUX-based bootable floppy image (.sdsk) を選択
    • CDなら ISO bootable image (.iso) を選択
  2. Choose a NIC type
    • all-drivers を選択
  3. [Get Image] をポチっと

CDはDVD/CDライティングソフトで“イメージファイルとして”書き込み、FDはRawWrite for Windows などを使いませう。

Linux kernel (SYSLINUX/GRUB/LILO) loadable image (.lkrn)

HDに GRUB などのブートローダがインストールされてる場合や、マルチブートなCD・USBメモリなどではこちらがいいかも。Linux カーネルとして指定します。

  1. Choose an output format
    • Linux kernel (SYSLINUX/GRUB/LILO) loadable image (.lkrn) を選択
  2. Choose a NIC type
    • all-drivers を選択
  3. [Get Image] をポチっと

ファイル名 gpxe-x.x.x+-gpxe.lkrngpxe.krn とかリネームした方がいいかな。

  • SYSLINUX(syslinux.cfg など)
LABEL gpxe
KERNEL /gpxe.krn
  • GRUB(menu.lst など)
title gPXE
root (hdx,x)
kernel /gpxe.krn
  • GRUB for DOS (menu.lst)
title gPXE
find --set-root /gpxe.krn
kernel /gpxe.krn

Windows マシンで使うなら、Windows ブートマネージャ(NTLDR, BOOTMGR)から GRUB for DOS をチェインロード設定するのがおすすめ。

汎用版が使えない場合は、NIC type を指定してみるべし。対応モジュール(?)/ROM名を調べるのはちと大変かもしれませんが、商品名でググったり、試行錯誤するべし。

上記とは別のFDイメージとisoイメージ

※ 少し古めですが、100BASEなNICとかならほぼイケるかも。gPXEは非対応。

こんなのありました。SYSLINUXのethersel.c32でPCIカード(or 内蔵)を自動検出。

ブート可能なアイテム

あくまで個人的にですけど「割と簡単に設定できるもの」です。

CDブートでブート用サーバ設定

Linux LiveCDの中には、スクリプトなどでネットワークブート用サーバを構築できるものもあります。

  • KNOPPIX-Terminal-Service (5.1.1 以降)
    • RAM 256MB以上(KDEの場合)
    • 下記のHTTP-FUSEに比べ、クライアント側の動作はかなり軽い
    • サーバ側はCDブート、あるいは仮想マシン上isoイメージからブートさせる必要がある
    • インターネット接続環境は不要必須ではない(※ ルーターはあった方がかなり楽です)
  • slax-ja - PukiWiki(slax-ja-6.1.2-2.iso)
  • INSERT - 私的 Linux LiveCDめも
DHCP/TFTP サーバのみでOK

Windowsマシンでも、TFTPD32のみでサーバ構築可能。

その他

テスト版ですが、下記ではDHCP/TFTPでブートしてhttpサーバ上のisoイメージからKnoppixを起動させます。

KNOPPIX Terminal Server

サーバ側の細かい設定は不要なので、お試しならこれがいいかも。KNOPPIX をCDブート(あるいは仮想マシン上でisoイメージでブート)してスクリプト一発でネットワークブートに必要な DHCP/TFTP(NFSもですね) サーバを稼動させることができました。

【追記】産総研 5.1.1CDではスクリプトを修正

ちょこっと修正したらブート可能になりましたー。

5.3.1 以降では修正不要でした。

う?むむ、CDブートなサーバなんて重いやろと思ってました。ところが姉はからんや妹はかって、クライアント側はメモリ256MBでもGUI(デスクトップ環境)がそこそこ動きます(※128MBでは激重だったのでテキストモードにすべきかな)。

尚、他の Linux 上でも DHCP/TFTP + NFS or HTTP サーバを設定したら PXE からの KNOPPIX のブートは可能でした。

SLAX

CDブートして、【Slax as PXE server】を選択するとサーバとしてSLAXが稼動(DNS,DHCP,TFTP,HTTPサーバ)します。

または、起動後にスクリプト実行でもいいみたい。

# /boot/pxelinux.cfg/start
# /boot/pxelinux.cfg/web/start
参考めも

# cat /proc/cmdline
vga=769 initrd=/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;startx BOOT_IMAGE=/vmlinuz ip=192.168.0.95:192.168.0.200:192.168.0.200:255.255.255.0 auto
  • pxelinux.cfg/default
PROMPT 0

LABEL linux
MENU LABEL Run linux over PXE
KERNEL /vmlinuz
IPAPPEND 1
APPEND vga=769 initrd=/initrd.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;startx

PROMPT 1 に修正したほうがいいかも

サーバ側マシンの設定

※ 上記の「KNOPPIX Terminal Server」「slax-ja」を使う場合は不要です。

ネットワークブートに必要なサーバ側の設定について。Windows + TFTPD32 なら低スペックマシンでも可能です。(クライアントがブートした後はサーバは不要です。)

めも

gPXE ってナニ?

まだまだ勉強不足でよく理解しておりませぬ。すみません。とりあえず雑記レベルですが

iSCSIAoE はなんかすごいと思っていますが、今のところ必要ないので試したことありませぬ。(スキルなしの言い訳。orz)

gpxelinux.0

DHCPサーバの boot file 指定に pxelinux.0 の代替で gpxelinux.0 を使うとHTTPサーバからのファイルのロードが可能になりますな。

  • pxrlinux.cfg/default
LABEL hogehoge from http server
LINUX []http://192.168.0.2/hogehoge/vmlinuz[]
INITRD []http://192.168.0.2/hogehoge/initrd.img[]
HTTP booting

gPXE イメージからブートすると、HTTPサーバでPXELINUXを使えました。