Quantcast
Channel: VMware Communities : Blog List - All Communities
Viewing all articles
Browse latest Browse all 3135

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

$
0
0

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 してみる話でした。


Viewing all articles
Browse latest Browse all 3135

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>