トップ «前の日記(2014-06-25(Wed)) 最新 次の日記(2014-07-11(Fri))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2014-07-09(Wed)

PXE で LIVE DVD

PXEBootで有線接続された別マシンのISOイメージ(Ubuntu-14.04, i386) を起動させる。
DVDをNFSで/にマウントさせる。
適当に検索してどうにかできた。
環境はUbuntu-12.04LTS。まだ14.04に上げていない...

必要なパッケージはsyslinux, tftpd-hpa, isc-dhcp-server, ntfs-kernel-serverといったところか。

まずDHCP。
dhcpサーバは filename で送信するファイルにpxelinux.0を指定する。 これは/usr/lib/syslinuxにあるので、 /var/lib/tftpboot/の下にコピーする。

ddns-update-style none;
option domain-name-servers  $DNS_SERVER1, $DNS_SERVER2 ...;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
allow booting;
allow bootp;
subnet ${LOCAL_NET}.0 netmask 255.255.255.0 {
  range ${LOCAL_NET}.50 ${LOCAL_NET}.80;
  option routers ${LOCAL_NET}.1;
  filename "pxelinux.0";
}

次にnfs。isoイメージをマウントしておき、/etc/exportsに一行 書いて、 exportfs -ra。

$MOUNTPOINT \
 ${LOCAL_NET}.0/24(rw,no_root_squash,async,insecure,subtree_check)

それからtftpd。ここが嵌った。結局、 /var/lib/tftpboot/pxelinux.cfg/defaultはこうなった。

default live
label live
	kernel $MOUNTPOINT/casper/vmlinuz
	append initrd=$MOUNTPOINT/casper/initrd.lz \
  file=$MOUNTPOINT/preseed/ubuntu.seed boot=casper \
  netboot=nfs nfsroot=${NFS_SERVER}:$MOUNTPOINT \
  quiet splash --

tftpd-hpaは、手元環境ではrestartしないと、なんかうまくいかない。
nfsやdhcpなどは、通常は切っておく。起動スクリプトはこんな感じ。

#!/bin/sh
mount -r -o loop ISOIMAGE $MOUNTPOINT
service nfs-kernel-server start
service isc-dhcp-server start
service tftpd-hpa restart
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s ${LOCAL_NET}.0/24 \
  -o $NIC -j MASQUERADE

この設定ではinetdは要らないようだ。切っておいても別状なかった。
古いPCの2,3台でデスクトップが起動し、Netにも接続できた。
まだ、efiなPCは起動できない。
それからtftpdでなくhttpを使う話などもあったが、これも そのうち、そのうち...


リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。