vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

ESXiインストールメディアにUSBメモリを使う

VMware ESXi 6.7 のインストールイメージは iso で配布されています。
何も考えなければ光学メディアに焼いてインストールですが、
昨今だと CD/DVD ドライブがついてなかったりなので、代わりに USB メモリをインストールメディアとしてイメージ焼き込みを行います。

Linux(Ubuntu 18.04 LTS)の場合

公式 Doc に載ってたりします。
USB フラッシュ ドライブのフォーマットによる ESXi インストールまたはアップグレードの起動
とりあえず適当な Linux PC に USB メモリを挿し、/dev/sdb として認識したとして作業。

1. fdisk

% sudo fdisk /dev/sdb

fdisk (util-linux 2.31.1) へようこそ。
ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。
書き込みコマンドを使用する際は、注意して実行してください。

とりあえずヘルプ見てみる。

コマンド (m でヘルプ): m

ヘルプ:

  DOS (MBR)
   a   起動可能フラグを切り替えます
   b   入れ子の BSD ディスクラベルを編集します
   c   DOS 互換フラグを切り替えます

  一般
   d   パーティションを削除します
   F   パーティションのない領域を一覧表示します
   l   既知のパーティションタイプを一覧表示します
   n   新しいパーティションを追加します
   p   パーティション情報を表示します
   t   パーティションタイプを変更します
   v   パーティション情報を検証します
   i   パーティションの情報を表示します

  その他
   m   このメニューを表示します
   u   表示項目の単位を変更します
   x   特殊機能に移動します (熟練者向け機能)

  スクリプト
   I   ディスクのレイアウトを sfdisk 互換のスクリプトから読み込みます
   O   ディスクのレイアウトを sfdisk 互換のスクリプトに書き出します

  保存と終了
   w   パーティション情報をディスクに書き込んで終了します
   q   変更点を保存せずに終了します

  新しいラベルを作成します
   g   新しい (何もない) GPT パーティションテーブルを作成します
   G   新しい (何もない) SGI (IRIX) パーティションテーブルを作成します
   o   新しい (何もない) DOS パーティションテーブルを作成します
   s   新しい (何もない) Sun パーティションテーブルを作成します

ほーん。
公式 Doc に沿ってパーティション初期化。

コマンド (m でヘルプ): d
パーティション 1 を選択
パーティション 1 を削除しました。

パーティション作成。
全部規定値でおけ。

コマンド (m でヘルプ): n
パーティションタイプ
   p   基本パーティション (0 プライマリ, 0 拡張, 4 空き)
   e   拡張領域 (論理パーティションが入ります)
選択 (既定値 p): p
パーティション番号 (1-4, 既定値 1): 
最初のセクタ (2048-60620799, 既定値 2048): 
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (2048-60620799, 既定値 60620799): 

新しいパーティション 1 をタイプ Linux、サイズ 28.9 GiB で作成しました。

タイプ指定。

コマンド (m でヘルプ): t
パーティション 1 を選択
16 進数コード (L で利用可能なコードを一覧表示します): L

 0  空              24  NEC DOS         81  Minix / 古い Li bf  Solaris        
 1  FAT12           27  隠し NTFS WinRE 82  Linux スワップ  c1  DRDOS/sec (FAT-
 2  XENIX root      39  Plan 9          83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       3c  PartitionMagic  84  隠し OS/2 また  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      40  Venix 80286     85  Linux 拡張領域  c7  Syrinx         
 5  拡張領域        41  PPC PReP Boot   86  NTFS ボリューム da  非 FS データ   
 6  FAT16           42  SFS             87  NTFS ボリューム db  CP/M / CTOS / .
 7  HPFS/NTFS/exFAT 4d  QNX4.x          88  Linux プレーン  de  Dell ユーティリ
 8  AIX             4e  QNX4.x 第2パー  8e  Linux LVM       df  BootIt         
 9  AIX 起動可能    4f  QNX4.x 第3パー  93  Amoeba          e1  DOS access     
 a  OS/2 ブートマネ 50  OnTrack DM      94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       51  OnTrack DM6 Aux 9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 52  CP/M            a0  IBM Thinkpad ハ ea  Rufus alignment
 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a5  FreeBSD         eb  BeOS fs        
 f  W95 拡張領域 (L 54  OnTrackDM6      a6  OpenBSD         ee  GPT            
10  OPUS            55  EZ-Drive        a7  NeXTSTEP        ef  EFI (FAT-12/16/
11  隠し FAT12      56  Golden Bow      a8  Darwin UFS      f0  Linux/PA-RISC  
12  Compaq 診断     5c  Priam Edisk     a9  NetBSD          f1  SpeedStor      
14  隠し FAT16 <32M 61  SpeedStor       ab  Darwin ブート   f4  SpeedStor      
16  隠し FAT16      63  GNU HURD または af  HFS / HFS+      f2  DOS セカンダリ 
17  隠し HPFS/NTFS  64  Novell Netware  b7  BSDI fs         fb  VMware VMFS    
18  AST SmartSleep  65  Novell Netware  b8  BSDI スワップ   fc  VMware VMKCORE 
1b  隠し W95 FAT32  70  DiskSecure Mult bb  隠し Boot Wizar fd  Linux raid 自動
1c  隠し W95 FAT32  75  PC/IX           bc  Acronis FAT32 L fe  LANstep        
1e  隠し W95 FAT16  80  古い Minix      be  Solaris ブート  ff  BBT            
16 進数コード (L で利用可能なコードを一覧表示します): c
パーティションのタイプを 'Linux' から 'W95 FAT32 (LBA)' に変更しました。

フラグ立て。

コマンド (m でヘルプ): a
パーティション 1 を選択
パーティション 1 の起動フラグを有効にしました。

確認。

コマンド (m でヘルプ): a
パーティション 1 を選択
パーティション 1 の起動フラグを有効にしました。

コマンド (m でヘルプ): p
ディスク /dev/sdb: 28.9 GiB, 31037849600 バイト, 60620800 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x41150269

デバイス   起動 開始位置 最後から   セクタ サイズ Id タイプ
/dev/sdb1  *        2048 60620799 60618752  28.9G  c W95 FAT32 (LBA)

実際に書き込んで終了する。

コマンド (m でヘルプ): w
パーティション情報が変更されました。
ioctl() を呼び出してパーティション情報を再読み込みします。
ディスクを同期しています。

2. mkfs.vfat

FAT32 ファイルシステムを作成。

% sudo mkfs.vfat -F 32 -n USB /dev/sdb1
mkfs.fat 4.1 (2017-01-24)
%

Ubuntu 18.04 LTS だとデフォで入っていたが、入ってないディストリだと dosfstools をインストールすればよい。

3. syslinux

syslinux ブートローダーを設定。

% sudo syslinux /dev/sdb1
%

4. mbr

MBRを書き込む。
公式 Doc だとcatをリダイレクトしているが、何故か権限で怒られるのでddする。

% sudo dd if=/usr/lib/SYSLINUX/mbr.bin of=/dev/sdb
0+1 レコード入力
0+1 レコード出力
440 bytes copied, 0.00176266 s, 250 kB/s
%

5. isoの中身をコピー

iso をmountして中身を USB メモリへコピーする。

% sudo mount /dev/sdb1 /mnt/usb
% sudo mount -t iso9660 VMware-VMvisor-Installer-6.7.0.update01-10302608.x86_64.iso /mnt/cdrom
mount: /mnt/cdrom: WARNING: device write-protected, mounted read-only. 
% sudo cp -r /mnt/cdrom/* /mnt/usb/
% ls /mnt/usb/
ata_liba.v00*  k.b00*         nmlx4_co.v00*  scsi_mpt.v01*
ata_pata.v00*  ldlinux.c32*   nmlx4_en.v00*  scsi_mpt.v02*
ata_pata.v01*  ldlinux.sys*   nmlx4_rd.v00*  scsi_qla.v00*
ata_pata.v02*  lpfc.v00*      nmlx5_co.v00*  shim_isc.v00*
ata_pata.v03*  lpnic.v00*     nmlx5_rd.v00*  shim_isc.v01*
ata_pata.v04*  lsi_mr3.v00*   ntg3.v00*      shim_lib.v00*
ata_pata.v05*  lsi_msgp.v00*  nvme.v00*      shim_lib.v01*
ata_pata.v06*  lsi_msgp.v01*  nvmxnet3.v00*  shim_lib.v02*
ata_pata.v07*  lsi_msgp.v02*  nvmxnet3.v01*  shim_lib.v03*
b.b00*         lsu_hp_h.v00*  ohci_usb.v00*  shim_lib.v04*
block_cc.v00*  lsu_inte.v00*  procfs.b00*    shim_lib.v05*
bnxtnet.v00*   lsu_lsi_.v00*  pvscsi.v00*    shim_vmk.v00*
bnxtroce.v00*  lsu_lsi_.v01*  qcnic.v00*     shim_vmk.v01*
boot.cat*      lsu_lsi_.v02*  qedentv.v00*   shim_vmk.v02*
boot.cfg*      lsu_lsi_.v03*  qfle3.v00*     smartpqi.v00*
brcmfcoe.v00*  lsu_smar.v00*  qfle3f.v00*    tools.t00*
btldr.t00*     mboot.c32*     qfle3i.v00*    uc_amd.b00*
char_ran.v00*  menu.c32*      qflge.v00*     uc_hygon.b00*
chardevs.b00*  misc_cni.v00*  qlnative.v00*  uc_intel.b00*
efi/           misc_dri.v00*  rste.v00*      uhci_usb.v00*
efiboot.img*   mtip32xx.v00*  s.v00*         upgrade/
ehci_ehc.v00*  native_m.v00*  safeboot.c32*  usb_stor.v00*
elx_esx_.v00*  ne1000.v00*    sata_ahc.v00*  usbcore_.v00*
elxiscsi.v00*  nenic.v00*     sata_ata.v00*  user.b00*
elxnet.v00*    net_bnx2.v00*  sata_sat.v00*  useropts.gz*
esx_dvfi.v00*  net_bnx2.v01*  sata_sat.v01*  vim.v00*
esx_ui.v00*    net_cdc_.v00*  sata_sat.v02*  vmkata.v00*
esxupdt.v00*   net_cnic.v00*  sata_sat.v03*  vmkfcoe.v00*
features.gz*   net_e100.v00*  sata_sat.v04*  vmkplexe.v00*
hid_hid.v00*   net_e100.v01*  sb.v00*        vmkusb.v00*
i40en.v00*     net_enic.v00*  scsi_aac.v00*  vmw_ahci.v00*
iavmd.v00*     net_fcoe.v00*  scsi_adp.v00*  vmware-esx-base-osl.txt*
igbn.v00*      net_forc.v00*  scsi_aic.v00*  vmware-esx-base-readme*
ima_qla4.v00*  net_igb.v00*   scsi_bnx.v00*  vmware_e.v00*
imgdb.tgz*     net_ixgb.v00*  scsi_bnx.v01*  vmx.v00*
imgpayld.tgz*  net_libf.v00*  scsi_fni.v00*  vsan.v00*
ipmi_ipm.v00*  net_mlx4.v00*  scsi_hps.v00*  vsanheal.v00*
ipmi_ipm.v01*  net_mlx4.v01*  scsi_ips.v00*  vsanmgmt.v00*
ipmi_ipm.v02*  net_nx_n.v00*  scsi_isc.v00*  weaselin.t00*
iser.v00*      net_tg3.v00*   scsi_lib.v00*  xhci_xhc.v00*
isolinux.bin*  net_usbn.v00*  scsi_meg.v00*  xorg.v00*
isolinux.cfg*  net_vmxn.v00*  scsi_meg.v01*
ixgben.v00*    nfnic.v00*     scsi_meg.v02*
jumpstrt.gz*   nhpsa.v00*     scsi_mpt.v00*

6. syslinux.cfgを設定

isolinux.cfg をリネームし、中身を書き換え。

% sudo mv isolinux.cfg syslinux.cfg
% sudo vi syslinux.cfg 
# 変更前
DEFAULT menu.c32
MENU TITLE ESXi-6.7.0-20181002001-standard Boot Menu
NOHALT 1
PROMPT 0
TIMEOUT 80
LABEL install
  KERNEL mboot.c32
  APPEND -c boot.cfg
  MENU LABEL ESXi-6.7.0-20181002001-standard ^Installer
LABEL hddboot
  LOCALBOOT 0x80
  MENU LABEL ^Boot from local disk

# 変更後
DEFAULT menu.c32
MENU TITLE ESXi-6.7.0-20181002001-standard Boot Menu
NOHALT 1
PROMPT 0
TIMEOUT 80
LABEL install
  KERNEL mboot.c32
  APPEND -c boot.cfg -p 1 ※ この行
  MENU LABEL ESXi-6.7.0-20181002001-standard ^Installer
LABEL hddboot
  LOCALBOOT 0x80
  MENU LABEL ^Boot from local disk

7. usbメモリをアンマウント

最後に USB メモリをアンマウント。

% sudo umount /mnt/usb

これで終わり。
あとは USB メモリをブートデバイスに指定すれば ESXi のインストーラが起動するはず。

Windows の場合

一方 Windows 上では Rufus でイメージを焼いた。
Rufus

Rufus
該当 ISO 選んで、MBR/FAT32 でスタートすればおけ。

menu.c32置換確認
スタートすると menu.c32 の置換確認が出てくるが、そのままで動いたので"いいえ"で。

削除確認
GoGo!

USB メモリ次第ではあるが、おそらく1分もかからず書き込み完了し、インストールメディアとして使える。