« | »

前回(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で起動すると以下の画面が出ます。

pxeok

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

syslinuxok

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

autoinstall-01

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

autoinstall-02

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

 

コメント/トラックバック