CentOS7 PXEブート

スポンサーリンク

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/からダウンロードを行います。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする