miauのブログ

はてなダイアリー「miauの避難所」をはてなブログに移行しました

PXE plugin でブートできる OS の動作検証

前項 の続き。Hudson PXE Plugin で使える Oracle VM Server 以外の OS をひととおり試してみました。

検証環境(Hudson マスター)は前項と同様 CentOS 5.5、Hudson 1.384、Hudson PXE netboot plugin 1.5 です。

PXE サーバからブートするには

Wiki に書いてあるとおりですが、前回書いてなかったので念のため書いておきます。

Hudson PXE plugin を導入したサーバと同じセグメントで PC を起動して、ネットワークからブートします。(Wiki によると、別セグメントから PXE サーバにリクエストを転送する仕組みもあるようです。)

ネットワークをブート順の高位に持ってきてもいいですが、PC の起動中に F12 を押すと、ブートデバイスが選べたり、PXE でのブートが始まることが多いみたいです。

物によっては、BIOSPXE を有効にしておく必要があります。また、「PXE 対応のネットワークカードを使う必要がある」というような説明をよく見かけます。たぶん最近のものであれば大丈夫だと思いますが・・・。

CentOS/Fedora/Ubuntu 共通の前置き

CentOSFedoraRedHat もたぶん同様)、Ubuntu では

  • Interactive Install
  • Automatic Install for Hudson

のどちらかが選べるようになっています。

「Interactive Install」を選んだ場合は、インストールの過程で root のパスワードなり一般ユーザ名/パスワードなりを指定することになります。

「Automatic Install for Hudson」を選んだ場合は

  • root/hudson
  • hudson/hudson

の 2 ユーザが作られます。CentOSFedora では Configure 画面に「Root Password」という項目があるので、root パスワードが変更できるようです。(ここは検証していません。)

CentOS → 5.5 で動作を確認

i386x86_64 ともに動作しました。

Interactive は CD ブート等によるインストールとほとんど同じですが、途中でイメージの場所を聞かれます。イメージの場所は Hudson の「Network Slave Installation Management」で表示されている該当 OS(この場合は「CentOS 5.5(i386)」等)の URL になります。

たとえばこの URL が

だったとすると、

  • Installation Method: HTTP
  • Web site name: 192.168.0.1:8080
  • CentOS directory: pxe/configuration/CentOS5.5i386/image

のような感じで指定すればよいです。

Fedora → 14 で動作を確認

i386x86_64 ともに動作しました。

Interactive では、CentOS と同じように途中でサーバの情報を指定する必要があります。

「Installation Method」で「URL」を選んで、

のように指定すればよいです。(こちらはプロトコル/サーバ/パスを分離する必要はありません。)

Ubuntu-Server → 10.04.1 LTS、10.10 で動作を確認

i386amd64 ともに動作しました。

ただ、Interactive では前述のように

  • root/hudson
  • hudson/hudson

が作られるので、Ubuntu の通常の使い勝手とは異なり、

  • root ユーザでログインできる
  • hudson ユーザは sudo の権限を持っていないが su で root になれる

ことになります。少し違和感があります。

OpenSolaris → 0906-110、0906-111 で動作確認(※これ以外では動作せず)

Wiki によると

PXE Plugin requires OpenSolaris 2009.06 build 110 or later.

とのことだったので、これ以降のバージョンを色々と調べましたが、ちゃんと動作したのは 0906-110、0906-111 だけでした。

上記以外のバージョンでは、

Loading snv_134/boot/platform/i86pc/kernel/unix.............
Fatal: kernel load address (0x00000000) is too low (<0x00010000).

のようなエラーになりました。(0906-111a、0906、1002-117、1002-126、dev-127、dev-128a、dev-134 で確認しました。)

作成されるユーザは

  • jack/jack
  • root/opensolaris

の 2 ユーザです。(ソース読んで確認&推測しました・・・。)

(追記)今調べたら LiveCD のユーザがこうなってるみたいなので、インストールに成功してるか怪しいかもしれません。画面には

opensolaris console login: Service discovery phase initiated
Service name to look up: dummy
Nov 15 00:09:51 opensolaris sendmail[296]: My unqualified host name (localhost)
unknown; sleeping for retry
Service discovery over multicast DNS failed
Service located at 192.168.0.1:56348 will be used
Service discovery finished successfully
Process of obtaining configuration manifest initiated
Nov 15 00:10:51 opensolaris sendmail[296]: unable to qualify my own domain name
(localhost) -- using short name

のようなメッセージが表示されており・・・埋もれてますが「opensolaris console login:」というプロンプトが表示されているようなのですが。

Parted Magic → 4.7〜4.9 で動作確認

Config 画面のヘルプに

Download the parted magic PXE file, which should have a file name like pmagic-pxe-4.1.zip, and specify the path of this file. The zip file needs to be placed on the Hudson master.

とあるので、4.1 以降で動作するようですが、動作するのは 4.9 まででした。(4.7、4.8、4.9 で確認しました。)

それ以降のバージョン(5.0、5.1、5.4、5.7)では、

Loading partedMagic/initramfs.........

が 18 行くらい進んだところで止まってしまい、動作しませんでした。

VMWare ESXi → 動作せず

Wiki ページによると

This feature is implemented with VMWare ESXi 4.0.0.

とのことだったので 4.0.0-171294 と 4.0.0.Update01-208167 で試してみましたが、

Loading esxi/image.tgz....

が 9 行+7 文字くらい進んだところで止まってしてしまいました。VMware ESXi はサーバの要件もきびしいので、そちらで引っかかってる可能性もあるにはあります。

ついでに 4.1.0-260247 も試してみましたが、こちらはファイル読み込み中に

Fatal: cannot open esxi/ienviron.tgz

のようなエラーになって停止してしまいました。

VMWareESXiBootConfiguration.java を見ると

        return String.format("LABEL %1$s\n" +
                "    MENU LABEL %2$s\n" +
                "    KERNEL mboot.c32\n" +
                // the following list is taken from 4.0. Maybe we should parse isolinux.cfg? 
                "    APPEND %3$s/vmkboot.gz --- %3$s/vmkernel.gz --- %3$s/sys.vgz --- %3$s/cim.vgz --- %3$s/ienviron.tgz --- %3$s/image.tgz --- %3$s/install.tgz\n",
                getId(), getDisplayName(), getId());

のように書いているので、4.1 でファイルの構成が変わったんですかね。

感想

ついうっかり全部試してしまったけど、すごく疲れた・・・。今日だけで何回サーバを起動したのやら。まあ、今後サーバのインストールが楽になるし、いざってときに Parted Magic が使えるので便利になるはず。

業務連絡(同僚向け)

現在のところ VMware の仮環境で構築してるので、私が VM を起動してないと使えません。サーバを整理してちゃんとした PXE サーバが立ったら自由に使えるようになる予定ですが、その前に使いたい場面があったら声かけてください。