PXEBootによるFedoraCore4のインストール

今回初めてPXEbootを使用してOS(LinuxのFedoraCore4)をインストールしたのですが、とても便利なうえに省力化できました。他にも方法はあると思いますが一例として設定方法を載せておきます。

全体的な流れとしてはPXEboot用のサーバをたてた後、インストールしたいマシンをネットワークに接続してOSをインストールするという感じです。

今回参考にしたURLです。

Fedora JP : http://fedora.jp/

@IT:PXEネットワークブート用サーバを構築するには:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/710pxeserver.html

@IT:PXEネットワークブートでLinuxをインストールするには:http://www.atmarkit.co.jp/flinux/rensai/linuxtips/711pxeinst.html

PXEを使ってPCもディスクレスにしよう:http://www15.big.or.jp/~yamamori/sun/pxe/


まず、FC4のDVDイメージをダウンロードしておきます。

# mkdir -p /usr/local/image/linux/fc4/
# cd /usr/local/image/linux/fc4
# wget http://ftp.riken.jp/Linux/fedora/core/4/i386/iso/FC4-i386-DVD.iso

syslinux のインストールを確認します。

# rpm -qa | grep syslinux
syslinux-3.08-2

※デフォルトで入っているのでこれを使います。入ってない場合はyumでインストールしてください。

tftpサーバのインストールを確認します。

# rpm -qa | grep tftp-server

入っていないのでyumでインストール。

# yum install tftp-server

※ここでxinetdがインストールされて無い場合は一緒にインストールされる

tftp用のコンフィグを変更します。

# vi /etc/xinetd.d/tftp

/etc/xinetd.d/tftpファイル

service tftp
{
(省略)
        disable = no ←「yes」を「no」に変更
(省略)
}

変更したので xinetd を再起動しておきます。

# service xinetd restart

先ほどダウンロードしたイメージを/mnt/isoにマウントします。
目的は中のファイルをコピーしたいだけなのでどこでも結構です。

# mkdir /mnt/iso
# mount -t iso9660 -o loop /usr/local/image/linux/fc4/FC4-i386-DVD.iso /mnt/iso

tftp用ディレクトリを作ります。

# mkdir /tftpboot/linux-install

作ったtftp用ディレクトリに boot イメージをコピーします。

# cp /mnt/iso/images/pxeboot/vmlinuz /tftpboot/linux-install
# cp /mnt/iso/images/pxeboot/initrd.img  /tftpboot/linux-install
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/linux-install

pxelinux.cfgディレクトリを作成します。

# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/linux-install
# mkdir /tftpboot/inux-install/pxelinux.cfg

defaultファイルをテキストファイルで新規に作成します。

# vi /tftpboot/inux-install/pxelinux.cfg/default

/tftpboot/inux-install/pxelinux.cfg/defaultファイル

default fc4

label fc4
kernel vmlinuz
append ks=http://10.0.0.1/ks/ks.cfg ksdevice=eth1 load initrd=initrd.img devfs=nomount

PXEbootでインストールする際にDHCPを使用するのでDHCPサーバをインストールします。TFTPと同じマシンでDHCPサーバを動かさないといけない為、他にDHCPサーバが動いている場合はそちらを止めるか、専用の別セグメントを作るなどしてください。

# rpm -qa | grep dhcp
# yum install dhcp

DHCPのコンフィグファイルを変更します。

# vi /etc/dhcpd.conf

/etc/dhcpd.confファイル

ddns-update-style none;
subnet 10.0.0.0 netmask 255.0.0.0 {
        range 10.0.0.100 10.0.0.200;
        filename "/linux-install/pxelinux.0";
}

DHCPサーバを起動するインターフェースを指定しておきます。

# vi /etc/sysconfig/dhcpd

/etc/sysconfig/dhcpdファイル

DHCPDARGS=eth1

今回はHTTP経由でインストールイメージをダウンロードするためApacheをインストールします。

# rpm -qa | grep httpd
# yum install httpd

インストールイメージのダウンロード先ディレクトリを作成します。

# mkdir /var/www/html/fedora
# mount -t iso9660 -o loop /usr/local/image/linux/fc4/FC4-i386-DVD.iso /var/www/html/fedora

毎回マウントされるようにfstabに書いておきます。

# vi /etc/fstab

/etc/fstab

(省略)
/usr/local/image/linux/fc4/FC4-i386-DVD.iso     /var/www/html/fedora    iso9660 ro,loop 0 0

KickStartファイルをコピーしておきます。[付録A]

# mkdir /var/www/html/ks
# cp /root/anaconda-ks.cfg /var/www/html/ks/.

KickStartファイルの例外
原因は調べていないのですが、packages オプションの書き方でインストール中にpythonの例外が発生することがありました。添付したものでやった場合は大丈夫でした。

chkconfig で起動時の設定をします。

# chkconfig httpd on
# chkconfig dhcpd on
# chkconfig iptables off

iptablesでtftpを通す設定をするか無効にしておきます

rootオーナーのファイルをApacheで見れるようにするのと社内ネットワークなのでselinuxを無効にしました。

# vi /etc/selinux/config

/etc/selinux/configファイル

SELINUX=disabled      ←	「enforcing」を「disabled」に変更

最後にリブートします。

# reboot

これで準備完了です。

<各マシンのインストール>
サーバの準備ができたら、それぞれのマシンにOSをインストールしていきます。
手順は以下のとおりです。

  1. ネットワークケーブルで接続する。
  2. 電源を入れる。
  3. BOOT時にPXEBootを選択する。(Dellの場合はF12を押下)
  4. あとは自動的にインストールされる。
  5. インストール終了後、再起動ボタンを押して再起動したら終了。

[付録A]使用したキックスタートファイルです。(別のマシンの anaconda-ks.cfg を編集して使用しました。)

# Kickstart file automatically generated by anaconda.

install
url --url http://10.0.0.1/fedora
lang ja_JP.UTF-8
langsupport --default=ja_JP.UTF-8
keyboard jp106
xconfig --card "VESA driver (generic)" --videoram 16384 --hsync 31.5-37.9 --vsync 50-70 --resolution
800x600 --depth 16
network --device eth0 --bootproto dhcp
network --device eth1 --onboot no --bootproto dhcp
rootpw --iscrypted $1$IMf.S.6v$suaJjs.CJwBvMAZsSwcbF/
firewall --disabled
selinux --enforcing
authconfig --enableshadow --enablemd5
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=sda
clearpart --linux --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.9 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.9
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1000 --grow --maxsize=1984

%packages
@ editors
@ emacs
@ text-internet
@ language-support
@ japanese-support
@ development-tools
kernel-smp-devel
kernel-smp
grub
e2fsprogs
lynx
lvm2
nasm

%post

chkconfig acpid off
chkconfig bluetooth off
chkconfig canna off
chkconfig cups off
chkconfig gpm off
chkconfig iiim off
chkconfig iptables off
chkconfig isdn off
chkconfig kudzu off
chkconfig mdmonitor off
chkconfig netfs off
chkconfig nfslock off
chkconfig pcmcia off
chkconfig portmap off
chkconfig rhnsd off
chkconfig rpcgssd off
chkconfig rpcidmapd off
chkconfig xfs off

以上でお終いです。
何台ものマシンにインストールしなければならないときは有効な手段だと思います。