openSUSEを自動インストールする(ほぼできた)
前回(http://blog.geeko.jp/ribbon/1296) では、途中までしかうまくいきませんでしたが、その後いろいろとやってみて、ほぼうまくいくようになりました。
大まかな流れは、ipxe起動->pxelinux起動->autoyastによる自動インストールとなります。要するに、pxelinux を ipxeでキックしてあげる、ということになります。よってipxe起動以後の手順は、SUSEのマニュアルにある、自動インストールの説明とほぼ同じになります。
準備
◆1 dhcpの設定
前回と違い、ipxe起動ファイルをtftpのroot直下に置きました。こんな感じになります。
default-lease-time 14400;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.101 192.168.10.127;
default-lease-time 14400;
max-lease-time 172800;
}
if exists user-class and option user-class = "iPXE" {
filename "boot.ipxe";
}
else {
filename "iPXE/undionly.kpxe";
}
next-server 192.168.10.41;
この設定により、iPXEが、OSを起動するための初期スクリプト boot.ipxeをダウンロードすることが出来ます。
◆2 boot.ipxe の準備
内容を整理し、以下のようにしました。
#!ipxe
:start
menu Please choose an operating system to install
item --gap openSUSE
item pxelinux pxelinux boot
item shell enter iPXE shell
item exit exit to BIOS
choose --default pxelinux --timeout 30000 target && goto ${target}
:pxelinux
boot http://192.168.10.41/pxelinux.0
boot || goto failed
:shell
echo Type 'exit' to get the back to the menu
shell
set menu-timeout 0
set submenu-timeout 0
goto start
:failed
echo Booting failed, dropping to shell
goto shell
◆3 pxelinxの準備
前回の失敗は、ipxeから起動するLinuxローダに、isolinuxを使用したことでした。これはISOしか見ないようで、ネットワークブートには対応していなかったようです。ネットワークブートに必要なのはpxelinuxなので、これを、/usr/share/syslinux/pxelinux.0 から /srv/tftpboot にコピーします。続いて、/srv/tftpboot配下にpxelinux.cfg ディレクトリを用意します。
◆4 ブート用ファイルの準備
SUSEの自動インストールの説明のように、linux initrd message biostest memtest を、インストールCDイメージから(たとえば/srv/tftpboot/install/leap42/CD1/boot/x86_64/loader/から)コピーします。
◆5 pxelinux.cfg/default ファイルの作成
pxelinuxが使う設定ファイルを用意します。基本的には インストールイメージ内にあるisolinux.cfgをコピーし、配下の以下のように用意しました。単なる自動起動だけであれば、不要な項目も多いですが….
default linux # hard disk label harddisk localboot -2 # install #label linux # kernel linux # append initrd=initrd splash=silent showopts # install label linux kernel linux append initrd=initrd splash=silent showopts install=http://192.168.10.41/install/leap42/CD1 # upgrade label upgrade kernel linux append initrd=initrd splash=silent upgrade=1 showopts # rescue label rescue kernel linux append initrd=initrd splash=silent rescue=1 showopts # mediacheck label mediachk kernel linux append initrd=initrd splash=silent mediacheck=1 showopts # memory test label memtest kernel memtest #ui gfxboot bootlogo message implicit 1 prompt 1 timeout 60
◆7 autoyast.xml を用意する
あらかじめ作成したautoyast.xml をインストールイメージに(この場合は、/srv/tftpboot/install/leap42/CD1/)コピーします。
◆8 起動する
まず、ipxeで起動すると以下の画面が出ます。

enterを押すか、タイムアウトまで待つと、ipxeがsyslinuxを起動します。

enterを押すか、タイムアウトまで待つと、openSUSEが起動します。そして、autoyast.xml が処理され、自動インストールが始まります。

ただ、手動でインストールしたautoyast.xmlが、なぜか不正なため、インストール処理は失敗します。

とりあえずここまで出来るようになりました。





