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が、なぜか不正なため、インストール処理は失敗します。
とりあえずここまで出来るようになりました。