CD-ROMやDVDなどの媒体がついていないサーバ機はローカルからインストールを行うことができないので、ネットワーク経由でインストールを行う必要があります。このとき、ネットワーク経由でブートする仕組みをPXEブートと呼びます。
このPXEブートを行うために、CentOS7をインストールするマシンとは別途、PXEブートをさせるためのTFTPサーバが必要となります。まずこれをインストールします。
# yum install tftp-server # rpm -qa | grep tftp tftp-server-5.2-11.el7.x86_64 |
TFTPサーバの設定を実施しておきます。TFTPサーバはxinetd経由で起動しますので以下のファイルを編集します。
# vi /etc/xinetd.d/tftp # default: off # description: The tftp server serves files using the trivial file transfer \ # protocol. The tftp protocol is often used to boot diskless \ # workstations, download configuration files to network-aware printers, \ # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 |
xinetdを起動します。これによりTFTPサーバも起動しますのでTFTPサーバはこれで完了です。
# systemctl start xinetd.service |
次に以下のコマンドでPXEサーバをインストールします。
# yum install syslinux syslinux-tftpboot # rpm -qa | grep syslinux syslinux-tftpboot-4.05-8.el7.x86_64 syslinux-4.05-8.el7.x86_64 |
これで/tftpbootにPXE関連のファイルが一式でインストールされます。
# ls /tftpboot/ cat.c32 elf.c32 ifcpu64.c32 memdisk pxechain.com vesainfo.c32 chain.c32 ethersel.c32 ifplop.c32 memdump.com pxelinux.0 vesamenu.c32 cmd.c32 gfxboot.c32 int18.com meminfo.c32 reboot.c32 vpdtest.c32 config.c32 gpxecmd.c32 kbdmap.c32 menu.c32 rosh.c32 whichsys.c32 cpuid.c32 gpxelinux.0 linux.c32 pcitest.c32 sanboot.c32 zzjson.c32 cpuidtest.c32 hdt.c32 ls.c32 pmload.c32 sdi.c32 disk.c32 host.c32 lua.c32 poweroff.com sysdump.c32 dmitest.c32 ifcpu.c32 mboot.c32 pwd.c32 ver.com |
次にCentOS7のISOファイルの中に含まれるimages\pxeboot配下のinitrd.imgとvmlinuzファイルを/tftpbootに配置します。
# mv initrd.img vmlinuz /tftpboot/ |
次にPXEブートした際のConfigファイルを作成します。
# mkdir /tftpboot/pxelinux.cfg # vi /tftpboot/pxelinux.cfg/default label X MENU LABEL ^X. CentOS-7.0-x86_64 Installer kernel vmlinuz append initrd=initrd.img inst.repo=http://ftp.riken.jp/Linux/centos/7/os/x86_64/ |
次にPXEブートした際のIPアドレスなどを取得するためのDHCPサーバも必要となりますので、これを構築します。まず以下のコマンドでDHCPサーバをインストールします。
# yum install dhcp # rpm -qa | grep dhcp dhcp-common-4.2.5-27.el7.centos.2.x86_64 dhcp-libs-4.2.5-27.el7.centos.2.x86_64 dhcp-4.2.5-27.el7.centos.2.x86_64 |
最後にDHCPサーバの設定を実施していきます。通常のDHCPサーバのオプションと異なるのはfilenameというパラメータがあり、ここでNBP ( Network Boot Program ) ファイルを指定します。また、next-serverパラメータが省略された場合、自動的にDHCPサーバのIPにNBPを取得しにきますので、同一サーバで稼働していれば省略可能ですが別々に動いていたらこのパラメータを使用し、filenameを置いているTFTPサーバのIPを指定する必要があります。
# vi /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # allow booting; allow bootp; subnet 192.168.18.0 netmask 255.255.255.0 { option routers 192.168.18.1; option subnet-mask 255.255.255.0; option domain-name "kagawa-u.ac.jp"; option domain-name-servers 192.168.6.17; range 192.168.18.150 192.168.18.160; default-lease-time 21600; max-lease-time 43200; filename "/pxelinux.0"; next-server 192.168.18.10; } |
上記設定が完了すればDHCPサーバを起動します。
# systemctl enable dhcpd.service # systemctl start dhcpd.service |
この状態で対象のサーバを起動し、PXEブートをすると上で設定したDHCPでIPを取得し、PXEファイルをダウンロードして起動します。 実際にPXEブートするときはboot:というプロンプトになるのでpxelinux.cfg/defaultで設定したlabelのXを入力します。
インストーラーが起動してから各種ソフトウェアをインストールするときにはpxelinux.cfg/defaultで記載したhttp://ftp.riken.jp/Linux/centos/7/os/x86_64/からダウンロードを行います。