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をインストールしていきます。
手順は以下のとおりです。
- ネットワークケーブルで接続する。
- 電源を入れる。
- BOOT時にPXEBootを選択する。(Dellの場合はF12を押下)
- あとは自動的にインストールされる。
- インストール終了後、再起動ボタンを押して再起動したら終了。
[付録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
以上でお終いです。
何台ものマシンにインストールしなければならないときは有効な手段だと思います。