PXEbootでVine Linux 4.2をインストール

きのう中古のhttp://www.tlt.co.jp/pc/catalog/ss/010228ds/を手に入れたのだけど、OSが入ってなかったので今日になってセットアップ。CDドライブがないから、USBのを使おうかと思ったけど、どこにしまったか忘れちゃってて探すのも面倒なので、PXEbootを試してみた。やり方を忘れる前にメモ。セットアップするOSは、この前リリースされたばっかりのVine Linux 4.2。サーバには、別のPCにインストールしたVine Linux 4.2を使うけど、設定が同じならOSは何でもいいはず。

使うのは、DHCPサーバとTFTPサーバとNFSサーバ。PXEbootしたあと外のFTPサーバからインストールするだけならNFSサーバはいらないけど、今回は外につながないでNFSでインストールしたいのでこれで。

参考にしたサイト
http://ryusai.hp.infoseek.co.jp/TPX31-01.htm というか、ここの手順とほとんど同じ。面倒なところを一部簡略化。

TFTPサーバとDHCPサーバインストール

いつものとおりapt-getでインストール。

$ apt-get install tftp-server
$ apt-get install dhcp

TFTP用のディレクトリを作る

どこでもいいのでTFTPでダウンロードするディレクトリを作る。今回は/tftpというのをルートディレクトリに作ってしまう。

$ sudo mkdir /tftp

nobodyとかのユーザで動かすことになると思うので、そのあたりのユーザが書き込みもできるようなパーミッションにしておく必要があるかも。

syslinuxをもらってくる

ftp.kernel.orgに置いてあるsyslinuxの最新版をもらってくる。今日の時点でftp://ftp.kernel.org/pub/linux/boot/syslinux/ にあるsyslinux-3.54.zipをダウンロード。tar.bz2とかtar.gzのほうはソースだけっぽいので、そっちを持ってくるとコンパイルしなきゃいけないみたいだけど、面倒なのでバイナリっぽいのが入ってるzipの方を使う。
こいつを

$ unzip syslinux-3.54.zip

で展開。ZIPファイルの方だとなぜかsyslinux-3.54っていうディレクトリ掘ってくれないので、先にディレクトリ作ってからそっちに展開した方がよさげ。で、展開したファイルの中から、「pxelinux.0」っていうファイルを探して、さっき作ったTFTP用ディレクトリにコピーする。

$ cp pxelinux.0 /tftp/

DHCPサーバの設定

/etc/dhcpd.confを書く。こんな感じ。

server-identifier 192.168.0.200;
ddns-update-style interim;

shared-network DHCP {
  option routers 192.168.0.200;
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.0.255; 

  subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.100 192.168.0.150;
    filename "pxelinux.0";
  }
}

IPアドレスとかは適当。serer-identifireはDHCPサーバ自体のIPアドレスを書く。
本当はMACアドレスとかで割り当てるIPアドレスとか制限した方がいいんだろうけど、面倒なのでやらない。この設定のDHCPサーバで実運用すると不都合があるはずなので、あくまで今回PXEbootでセットアップするための、おそらく最低限の設定ということで。だいたい1台セットアップするだけなのにこんなにIPアドレスレンジ設定する必要ない。1個で十分。

インストールイメージの準備

Vine LinuxのCDをマウントして、それのimages/pxeboot ディレクトリにあるvmlinuzとinitrd.imgをTFTP用ディレクトリにコピーする。ここではCD-ROMそのものを使うけど、別にISOイメージをループバックマウントするのもあり。

$ cd /media/Vine\ Linux\ 4.2\ for\ IA32/images/pxeboot/
$ cp vmlinuz initrd.img /tftp/

CD自体はそのままマウントしておく。

NFSの設定

/etc/exportsにVine LinuxのCDのマウントポイントを書く。そのまま/media/Vine\ Linux\ 4.2\ for\ IA32を書くとうまくマウントできない?みたいなので、ルートディレクトリ直下にシンボリックリンクを作ってしまう。

$ cd /
$ sudo ln -s /media/Vine\ Linux\ 4.2\ for\ IA32 /vine
$ vi /etc/exports

exportsの中身はこんな感じ。

/vine *(ro)

PXEbootインストール用の設定

ほかのWebサイトとか見てると必須ではなさそうな感じだったけど、どうもこれがないと動かなかったのでやる。TFTP用ディレクトリにsyslinuxの設定ファイルを作って書く。

$ cd /tftp/
$ mkdir pxelinux.cfg
$ cd pxelinux.cfg
$ vi default

default は下記の内容にする。

DEFAULT install

LABEL install
kernel vmlinuz
append load initrd=initrd.img devfs=nomount

PROMPT 1
TIMEOUT 0

DHCPサーバのないところに移動

インストールに使うサーバ以外にDHCPサーバが動いていると、まともに動かないはずなので、ふだんほかのDHCPサーバ使っているときはそっちのネットワークから切り離す。

DHCPサーバを起動

こんな感じ。

$ sudo /sbin/service dhcpd start

TFTPサーバを起動

こんな感じ。

$ sudo /usr/sbin/in.tftpd -l -c -s /tftp

ふつうはinetdから起動するんだろうけど。inetdから使いたいときは、/etc/inetd.confに

tftp	dgram	udp	wait	root	/usr/sbin/tcpd	in.tftpd -c -s /tftp

と書いてinetdを起動すればいいんだろうけど、試してないので正しいかどうか不明。どうせずっとTFTPサーバ使えるようにする気がないので、必要なときに自分で起動するようにした。各オプションの意味はマニュアル見れば載ってるけど、あとで調べるの面倒なので書いておく。

-l
スタンドアローンモードで起動。つまりinetdを使わないで動かすということ。
-c
TFTP経由でファイルを作ることを許可する。これをつけておかないとアクセス権限がないとかいって起動してくれなかった。
-s
つないだときのルートディレクトリを変更する。

NFSサーバの起動

こんな感じ。

$ sudo /sbin/service nfs start

ふだんNFS使ってるなら

$ sudo /sbin/service nfs restart

PXEbootする

PXEbootしたいPCをDHCP/TFTP/NFSサーバがつながっているネットワークにつないで、PXEbootで起動する。今回使ったhttp://www.tlt.co.jp/pc/catalog/ss/010228ds/だと、電源入れた直後のBIOS画面でF2を押して、Select boot deviceの画面にして、「[N]: Network(LAN)」を押す。そうするとPXEbootしてくれてsyslinuxが動くはず。そうしたらEnterでインストーラが起動する。

インストーラの設定

最初のうちはテキストモードでのインストールとほとんど変わらないみたい。言語はJapaneseを選択。キーボードはjp106で。インストール方法はNFSを選択。TCP/IPの設定はDHCPで。ネームサーバもらえなかったとか文句言われるけど、空白のままで続行。NFSサーバの設定は、NFSサーバ名にNFSサーバのIPアドレスVine Linuxディレクトリには/vineを指定。ここまで設定すると、Vine Linuxのグラフィカルインストーラが起動するので、いつも通りインストールする。

たぶんこの手順で設定ができると思う。そんなやり方じゃできねーYo!とかあれば指摘してやってください。

で、このPC手に入れたのはいいんだけど、バッテリーが消耗しきっててACアダプタつないでないと動いてくれない。どこかにまともなバッテリー落ちてないですかね。