ESXi を PXE Boot でインストールしてみる。(dnsmasq)



  • ESXi は、PXE でインストーラからブートしてインストールすることができます。

    PXE 環境を用意するには、DHCP や TFTP といったサービスが必要です。

    ESXi インストーラの PXE ブート

     

    今回は、PXE 環境を Linux と dnsmasq を利用して構築してみます。

    dnsmasq は簡易的な DNS サーバとして利用されることが多いですが、

    PXE に必要な DHCP サービスと TFTP サービスも提供できます。

     

    今回の環境。

    使用するソフトウェアは下記です。

    • OS: Oracle Linux 7
    • DHCP / TFTP サーバ: OS 標準提供の dnsmasq RPM
    • syslinux ブートローダ: OS 標準提供の syslinux-tftpboot RPM

     

    ちなみに、今回の PXE サーバとインストール対象サーバは

    VMware Workstation Pro 15 に VM で作成しています。

     

    PXE サーバにする OS の準備。

    Linux は、Oracle Linux 7.6 を利用しています。

    ※ちなみに RHEL や CentOS でも同様の手順で構築可能なはずです。

    [root@pxe01 ~]# cat /etc/oracle-release

    Oracle Linux Server release 7.6

     

    わかりやすく、ホスト名を変更しておきます。

    そして OS にログインしなおしてプロンプトの文字列を変更しておきます。

    [root@localhost ~]# hostnamectl set-hostname pxe01

     

    手順を簡略化するため、firewalld は停止しています。

    [root@pxe01 ~]# systemctl stop firewalld

    [root@pxe01 ~]# systemctl disable firewalld

     

    DHCP / TFTP サーバの構築。

    dnsmasq をインストールします。

    [root@pxe01 ~]# yum install -y dnsmasq

    [root@pxe01 ~]# yum list dnsmasq

    読み込んだプラグイン:ulninfo

    インストール済みパッケージ

    dnsmasq.x86_64                      2.76-7.el7                       @ol7_latest

     

    あわせて、TFTP Boot むけ syslinux ブートローダの RPM(syslinux-tftpboot)も

    インストールしておきます。

    [root@pxe01 ~]# yum install -y syslinux-tftpboot

    [root@pxe01 ~]# yum list syslinux-tftpboot

    読み込んだプラグイン:ulninfo

    インストール済みパッケージ

    syslinux-tftpboot.noarch                 4.05-15.el7                 @ol7_latest

     

    ちなみに、syslinux-tftpboot をインストールすると、下記のように

    /var/lib/tftpboot/ ディレクトリ配下にブートローダ関連のファイルが配置されます。

    [root@pxe01 ~]# rpm -ql syslinux-tftpboot

    /var/lib/tftpboot

    /var/lib/tftpboot/cat.c32

    /var/lib/tftpboot/chain.c32

    /var/lib/tftpboot/cmd.c32

    /var/lib/tftpboot/config.c32

    /var/lib/tftpboot/cpuid.c32

    /var/lib/tftpboot/cpuidtest.c32

    /var/lib/tftpboot/disk.c32

    /var/lib/tftpboot/dmitest.c32

    /var/lib/tftpboot/elf.c32

    /var/lib/tftpboot/ethersel.c32

    /var/lib/tftpboot/gfxboot.c32

    /var/lib/tftpboot/gpxecmd.c32

    /var/lib/tftpboot/gpxelinux.0

    /var/lib/tftpboot/hdt.c32

    /var/lib/tftpboot/host.c32

    /var/lib/tftpboot/ifcpu.c32

    /var/lib/tftpboot/ifcpu64.c32

    /var/lib/tftpboot/ifplop.c32

    /var/lib/tftpboot/int18.com

    /var/lib/tftpboot/kbdmap.c32

    /var/lib/tftpboot/linux.c32

    /var/lib/tftpboot/ls.c32

    /var/lib/tftpboot/lua.c32

    /var/lib/tftpboot/mboot.c32

    /var/lib/tftpboot/memdisk

    /var/lib/tftpboot/memdump.com

    /var/lib/tftpboot/meminfo.c32

    /var/lib/tftpboot/menu.c32

    /var/lib/tftpboot/pcitest.c32

    /var/lib/tftpboot/pmload.c32

    /var/lib/tftpboot/poweroff.com

    /var/lib/tftpboot/pwd.c32

    /var/lib/tftpboot/pxechain.com

    /var/lib/tftpboot/pxelinux.0

    /var/lib/tftpboot/reboot.c32

    /var/lib/tftpboot/rosh.c32

    /var/lib/tftpboot/sanboot.c32

    /var/lib/tftpboot/sdi.c32

    /var/lib/tftpboot/sysdump.c32

    /var/lib/tftpboot/ver.com

    /var/lib/tftpboot/vesainfo.c32

    /var/lib/tftpboot/vesamenu.c32

    /var/lib/tftpboot/vpdtest.c32

    /var/lib/tftpboot/whichsys.c32

    /var/lib/tftpboot/zzjson.c32

     

    dnsmasq に DHCP / TFTP サービス関連の設定をします。vi エディタなどで、

    /etc/dnsmasq.conf ファイルの末尾に下記を追記します。

    • interface は ens33 としていますが、環境によって eth0 や ens192 といった名前になります。
    • dhcp-range は、ESXi インストール対象のマシンが PXE サーバにアクセスする際に利用する IP アドレス レンジを指定します。

    interface=ens33

    dhcp-range=192.168.163.200,192.168.163.209,6h

    dhcp-boot=pxelinux.0

    enable-tftp

    tftp-root=/var/lib/tftpboot

     

    dnsmasq のサービスを起動しておきます。

    [root@pxe01 ~]# systemctl start dnsmasq

    [root@pxe01 ~]# systemctl enable dnsmasq

     

    syslinux での PXE 設定ファイルの用意。

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

    [root@pxe01 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg

     

    /var/lib/tftpboot/pxelinux.cfg/default ファイルを、下記のような内容で作成します。

    • 「LABEL ESXi67u2」以降には、今回インストールで利用する ESXi 6.7 U2 のメニューを追加しています。
    • (必須ではありませんが)メニュー画面の見栄えをよくするために「MENU INCLUDE pxelinux.cfg/pxe.conf」といった設定をしています。

    DEFAULT vesamenu.c32

    TIMEOUT 800

    ONTIMEOUT 1

    PROMPT 0

    MENU INCLUDE pxelinux.cfg/pxe.conf

    NOESCAPE 1

    LABEL 1

      MENU LABEL Local Boot

      localboot 0

      TEXT HELP

      Boot to local hard disk

      ENDTEXT

     

    LABEL ESXi67u2

      KERNEL /ESXi67u2/mboot.c32

      APPEND -c /ESXi67u2/boot.cfg

      MENU LABEL ESXi67 Update 2 ^Installer

     

    MENU INCLUDE で指定している pxe.conf ファイルは、下記の内容で作成しています。

     

    /var/lib/tftpboot/pxelinux.cfg/pxe.conf

    MENU TITLE  PXE Server pxe01

    NOESCAPE 1

    ALLOWOPTIONS 1

    PROMPT 0

    menu width 80

    menu rows 14

    MENU TABMSGROW 24

    MENU MARGIN 10

    menu color title 1;36;44 #ff008080 #00000000 std

     

    PXE サーバへの ESXi インストーラの配置。

    今回は、ESXi 6.7 U2 のインストーラを利用します。

    My VMware サイトから、下記のファイルを入手しておきます。

    VMware-VMvisor-Installer-6.7.0.update02-13006603.x86_64.iso

     

    PXE サーバに ISO ファイルを転送ずみです。

    [root@pxe01 ~]# ls -1

    VMware-VMvisor-Installer-6.7.0.update02-13006603.x86_64.iso

    anaconda-ks.cfg

     

    インストーラを /mnt ディレクトリにマウントします。

    [root@pxe01 ~]# mount -o loop ./VMware-VMvisor-Installer-6.7.0.update02-13006603.x86_64.iso /mnt

    mount: /dev/loop0 is write-protected, mounting read-only

     

    TFTP サーバが公開しているディレクトリの配下にディレクトリを作成して、

    ISOファイルからファイルをコピーします。

    [root@pxe01 ~]# mkdir /var/lib/tftpboot/ESXi67u2

    [root@pxe01 ~]# cp -pr /mnt/* /var/lib/tftpboot/ESXi67u2/

     

    通常の CD ブートから PXE ブートに変更するため、boot.cfg ファイルを編集します。

    • boot.cfg で指定されているファイル名から、先頭の「/」を削除。
    • それらのファイル名の先頭に、TFTP のディレクトリ名をつける。(prefix=ESXi67u2)

    編集箇所が多いため、sed コマンドで置換をしています。

    [root@pxe02 ~]# sed -i 's|/||g' /var/lib/tftpboot/ESXi67u2/boot.cfg

    [root@pxe02 ~]# sed -i 's|prefix=|prefix=ESXi67u2|' /var/lib/tftpboot/ESXi67u2/boot.cfg

     

    インストール対象マシンのパワーオン。

    インストール対象となるマシン(VM でも可)をパワーオンすると、

    ここまでで設定した PXE Boot のメニューが表示されます。

    esxi-pxeboot-01.png

     

    メニューを選択してブートすると、

    通常の ISO ブートとはファイルのパスが変更されていることがわかります。

    esxi-pxeboot-02.png

     

    これで、PXE Boot で ESXi のインストールが開始できるようになり、

    このあとは通常どおりインストールを進めることになります。

     

    以上、ESXi を PXE Boot してみる話でした。



    https://communities.vmware.com/people/gowatana/blog/2019/05/30/esxi-pxe-tftp

Log in to reply
 

© Lightnetics 2024