目次

Mac OSをインストール可能なESXi7環境を構築する


はじめに

この手順はApple社が認めているものではありません。

またVMware社が公式に認めているものでもありません。行う場合は自己責任でお願いいたします。

経緯

Mac OSはApple社が公式に販売しているハード以外で動作させることを認めておらず、VMwareのWorkstationなどはMac OSの仮想環境を構築することはできない。

※Apple社のソフトウェア使用許諾上認められていない。

ESXi6環境のホームラボの環境が厳しく、特に「おうちKubernetes」が厳しくなってきたので、増設することにした。

構成

VMware Compatibility Guideによると、MacMini 2018はESXi7.0b以降で(内蔵SSDが利用できない、Thunderbolt 3デバイスはSSDなど一部のデバイスのみ対応、といった)一部機能制限はあるが対応している。

MacMini 2014, 2012などの過去のデバイスであれば制限はない。

ちなみにそれぞれMac 8,1やMac7,1といった型番が設定されているがどれがどの端末であるかはAppleのサイトに確認方法が用意されている。

M1 MacMiniは9,1のようだ。

用意したもの

<th style="text-align: center;">
  デバイス
</th>

<th style="text-align: center;">
  年式
</th>

<th style="text-align: center;">
  CPU
</th>

<th style="text-align: center;">
  メモリ
</th>

<th style="text-align: center;">
  OS
</th>
<td style="text-align: center;">
  MacBook Pro 13-inch
</td>

<td style="text-align: center;">
  2016
</td>

<td style="text-align: center;">
  Intel Core i5 2.9GHz
</td>

<td style="text-align: center;">
  8GB
</td>

<td style="text-align: center;">
  Big Sur (11.1)
</td>
<td style="text-align: center;">
  Mac Mini 2018
</td>

<td style="text-align: center;">
  2018
</td>

<td style="text-align: center;">
  Intel Core i3 3.6GHz
</td>

<td style="text-align: center;">
  64GB
</td>

<td style="text-align: center;">
  Catalina (10.15.7)
</td>
種別
作業PC
インストール先
ブート用USB

  <p>
    (&ESXiインストール先)</td> 
    
    <td style="text-align: center;">
      Buffalo 16GB
    </td>
    
    <td style="text-align: center;">
      &#8212;
    </td>
    
    <td style="text-align: center;">
      &#8212;
    </td>
    
    <td style="text-align: center;">
      &#8212;
    </td>
    
    <td style="text-align: center;">
      &#8212;
    </td></tr> </tbody> </table> 
    
    <p>
      USBデバイスは稼働中はずっと差しっぱなしになるデバイスのため、容量よりもできるだけ小さいものを選ぶのが良い。8GBあれば足りるはず。
    </p>
    
    <p>
      つい先日、Mac Mini の内蔵SSDが認識できるベータ版がflingsに登録されたらしいが、とりあえずはVMwareからダウンロードできるISOだけで行う(=内蔵SSDが認識されない状態で構築する)
    </p>
    
    <h2>
      ブート可能なUSBディスクをMac (OSX Big Sur)で作成する
    </h2>
    
    <div>
      <div>
        <div>
          Windowsから作成するときは<a href="https://en.wikipedia.org/wiki/Rufus_(software)">Rufus</a>というアプリが定番のようだが、Macから作成するためにコマンドでブータブルUSBを作成する。
        </div>
        
        <div>
          全体的に<a href="https://virtuallywired.io/2020/08/01/create-a-bootable-esxi-7-usb-installer-on-macos/">VIRTUALLYWIRED</a>を参考にさせてもらった。
        </div>
      </div>
      
      <a rel="noopener" href="https://virtuallywired.io/2020/08/01/create-a-bootable-esxi-7-usb-installer-on-macos/" title="Create a Bootable ESXi 7 USB Installer on macOS - VirtuallyWired" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank">
      
      <div class="blogcard external-blogcard eb-left cf">
        <div class="blogcard-label external-blogcard-label">
          <span class="fa"></span>
        </div><figure class="blogcard-thumbnail external-blogcard-thumbnail">
        
        <img src="/images/cocoon-resources/blog-card-cache/38e59bbb55b8ad37e1de5ef9e34c2151.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure>
        
        <div class="blogcard-content external-blogcard-content">
          <div class="blogcard-title external-blogcard-title">
            Create a Bootable ESXi 7 USB Installer on macOS - VirtuallyWired
          </div>
          
          <div class="blogcard-snippet external-blogcard-snippet">
            Create a bootable ESXi 7 USB Installer on macOS without 3rd party software in under 5 minutes.
          </div>
        </div>
        
        <div class="blogcard-footer external-blogcard-footer cf">
          <div class="blogcard-site external-blogcard-site">
            <div class="blogcard-favicon external-blogcard-favicon">
              <img src="https://www.google.com/s2/favicons?domain=virtuallywired.io" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" />
            </div>
            
            <div class="blogcard-domain external-blogcard-domain">
              virtuallywired.io
            </div>
          </div>
        </div>
      </div></a> 
      
      <h3>
        USBをMacに接続し、マウントポイントを確認する
      </h3>
      
      <pre class="shell">&gt;diskutil list</pre>
      
      <div>
        <div>
          今回は /dev/disk2 として認識されているUSBを利用する。外部デバイスは <strong>(external, physical)</strong> として認識されるようだ
        </div>
        
        <div>
        </div>
      </div>
      
      <div>
        <img class="aligncenter size-large wp-image-1684" src="/images/esxi_install_usb01-1024x640.jpg" alt="disk2" width="1024" height="640" srcset="/images/esxi_install_usb01-1024x640.jpg 1024w, /images/esxi_install_usb01-300x188.jpg 300w, /images/esxi_install_usb01-768x480.jpg 768w, /images/esxi_install_usb01.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
      </div>
    </div>
    
    <div>
    </div>
    
    <div>
    </div>
    
    <div>
      ※Install macOS Big Sur となっているのは、年末に<strong>OSアップデートに失敗して文鎮</strong>になってしまい、復旧のために作成したMac OSインストール用途USBだからです。
    </div>
    
    <div>
    </div>
    
    <h3>
      接続されているUSBをMS-DOS(FAT32)で初期化する
    </h3>
    
    <div>
      <div>
        <div>
          ※事故防止のため、以下は#にしている。自分の環境では#->2に置き換える
        </div>
        
        <div>
        </div>
        
        <div>
          <pre class="shell">&gt;diskutil eraseDisk MS-DOS "ESXI" MBR disk#

    <div>
      <img class="aligncenter size-large wp-image-1687" src="/images/esxi_install_usb02-1024x640.jpg" alt="esxiインストール用USB" width="1024" height="640" srcset="/images/esxi_install_usb02-1024x640.jpg 1024w, /images/esxi_install_usb02-300x188.jpg 300w, /images/esxi_install_usb02-768x480.jpg 768w, /images/esxi_install_usb02.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
    </div>
    
    <div>
    </div>
    
    <div>
      <strong>くれぐれもディスクIDを間違えないように注意</strong>。
    </div>
    
    <div>
    </div>
    
    <h3>
      コマンドからUSBをアンマウントする
    </h3>
    
    <p>
      物理的には接続解除はしない。この後作業するため、再度前ステップと同じマウントポイントを指定すること。
    </p>
    
    <pre class="shell">&gt;diskutil unmountDisk /dev/disk#</pre>
    
    <p>
      <img class="aligncenter size-large wp-image-1691" src="/images/esxi_install_usb03-1024x640.jpg" alt="" width="1024" height="640" srcset="/images/esxi_install_usb03-1024x640.jpg 1024w, /images/esxi_install_usb03-300x188.jpg 300w, /images/esxi_install_usb03-768x480.jpg 768w, /images/esxi_install_usb03.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
    </p>
    
    <h3>
      USBにパーティションを作成する 要:管理者権限
    </h3>
    
    <pre class="shell">&gt;sudo fdisk -e /dev/disk#</pre>
    
    <div>
      <h3>
        パーティション1を作成(f 1)し、書き込み(write)、終了する(quite)
      </h3>
      
      <pre class="shell">&gt;f 1

>write >quite

      <p>
        <img class="aligncenter size-large wp-image-1692" src="/images/esxi_install_usb04-1024x640.jpg" alt="" width="1024" height="640" srcset="/images/esxi_install_usb04-1024x640.jpg 1024w, /images/esxi_install_usb04-300x188.jpg 300w, /images/esxi_install_usb04-768x480.jpg 768w, /images/esxi_install_usb04.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
      </p>
      
      <h3>
        ESXiのインストールISOをマウントし、中身をUSBディスクにコピーする
      </h3>
      
      <div>
        <div>
          展開したファイルを全てUSBにペーストする。コピーアンドペーストで良い。
        </div>
        
        <div>
          ダウンロードしたファイルが破損していないかをを確認するためには、sha256チェックを行うと良い。
        </div>
        
        <div>
        </div>
      </div>
    </div>
    
    <div>
      <pre class="shell">&gt;shasum -a 256 &lt;FILE_PATH&gt;

    <div>
      <div>
        <h3>
          USB上のISOLINUX.CFG を SYSLINUX.CFG にリネームし編集する
        </h3>
      </div>
      
      <div>
        SYSLINUX.CFGを編集する。OS標準のノートアプリなどを利用するのはNG。
      </div>
      
      <div>
        今回はVSCodeを利用する
      </div>
      
      <pre class="shell">&gt;code /Volumes/ESXI/SYSLINUX.CFG</pre>
      
      <p>
        以下、設定変更内容
      </p>
      
      <pre class="shell">&gt;diff -u /Volumes/ESXI-7.0B-16324942-STANDARD/ISOLINUX.CFG /Volumes/ESXI/SYSLINUX.CFG

— /Volumes/ESXI-7.0B-16324942-STANDARD/ISOLINUX.CFG 2020-06-03 02:28:32.000000000 +0900 +++ /Volumes/ESXI/SYSLINUX.CFG 2021-02-19 18:14:32.000000000 +0900 @@ -5,7 +5,7 @@ TIMEOUT 80 LABEL install KERNEL mboot.c32

  • APPEND -c boot.cfg
  • APPEND -c boot.cfg -p 1 MENU LABEL ESXi-7.0b-16324942-standard ^Installer LABEL hddboot LOCALBOOT 0x80

      <p>
        <img class="aligncenter size-large wp-image-1693" src="/images/esxi_install_usb05-1024x640.jpg" alt="" width="1024" height="640" srcset="/images/esxi_install_usb05-1024x640.jpg 1024w, /images/esxi_install_usb05-300x188.jpg 300w, /images/esxi_install_usb05-768x480.jpg 768w, /images/esxi_install_usb05.jpg 1280w" sizes="(max-width: 1024px) 100vw, 1024px" />
      </p>
      
      <div>
        <h3>
          自動インストール対応
        </h3>
        
        <p>
          ESXiの自動インストール対応を行う。
        </p>
        
        <pre class="shell">code /Volumes/ESXI/BOOT.CFG</pre>
        
        <p>
          以下のような設定にする
        </p>
        
        <pre class="shell">❯ diff -u /Volumes/ESXI-7.0B-16324942-STANDARD/BOOT.CFG /Volumes/ESXI/BOOT.CFG

— /Volumes/ESXI-7.0B-16324942-STANDARD/BOOT.CFG 2020-06-03 02:28:32.000000000 +0900 +++ /Volumes/ESXI/BOOT.CFG 2021-02-19 22:03:48.000000000 +0900 @@ -3,7 +3,7 @@ timeout=5 prefix= kernel=/b.b00 -kernelopt=cdromBoot runweasel +kernelopt=ks=usb:/KS.CFG

        <p>
          上記ESXiインストールガイドに記載されているが、ファイルパスを大文字にしないといけない。
        </p>
        
        <blockquote>
          <p>
            スクリプトのパスを入力するには、大文字を使用する必要があります。
          </p>
          
          <p style="text-align: right;">
            参考:ESXi のインストールとセットアップ &#8211; VMware Docs
          </p>
        </blockquote>
        
        <p>
          https://docs.vmware.com/jp/VMware-vSphere/7.0/vsphere-esxi-70-installation-setup-guide.pdf
        </p>
        
        <p>
          KS.CFGの設定内容は以下を参考にさせていただいた。
        </p>
        
        <a rel="noopener" href="https://blog.vpantry.net/2020/03/esxi-automated-install/" title="ESXi &#12398;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;&#12434;&#33258;&#21205;&#21270;&#12377;&#12427; &#8211; virtual pantry" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank">
        
        <div class="blogcard external-blogcard eb-left cf">
          <div class="blogcard-label external-blogcard-label">
            <span class="fa"></span>
          </div><figure class="blogcard-thumbnail external-blogcard-thumbnail">
          
          <img src="https://s0.wordpress.com/mshots/v1/https%3A%2F%2Fblog.vpantry.net%2F2020%2F03%2Fesxi-automated-install%2F?w=160&#038;h=90" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure>
          
          <div class="blogcard-content external-blogcard-content">
            <div class="blogcard-title external-blogcard-title">
              ESXi &#12398;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;&#12434;&#33258;&#21205;&#21270;&#12377;&#12427; &#8211; virtual pantry
            </div>
            
            <div class="blogcard-snippet external-blogcard-snippet">
            </div>
          </div>
          
          <div class="blogcard-footer external-blogcard-footer cf">
            <div class="blogcard-site external-blogcard-site">
              <div class="blogcard-favicon external-blogcard-favicon">
                <img src="https://www.google.com/s2/favicons?domain=blog.vpantry.net" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" />
              </div>
              
              <div class="blogcard-domain external-blogcard-domain">
                blog.vpantry.net
              </div>
            </div>
          </div>
        </div></a> 
        
        <a rel="noopener" href="https://www.virtuallyghetto.com/2019/07/automated-esxi-installation-to-usb-using-kickstart.html" title="Automated ESXi Installation to USB using Kickstart" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank">
        
        <div class="blogcard external-blogcard eb-left cf">
          <div class="blogcard-label external-blogcard-label">
            <span class="fa"></span>
          </div><figure class="blogcard-thumbnail external-blogcard-thumbnail">
          
          <img src="/images/cocoon-resources/blog-card-cache/52cdb8c4798d2f392625c432c56316ad.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure>
          
          <div class="blogcard-content external-blogcard-content">
            <div class="blogcard-title external-blogcard-title">
              Automated ESXi Installation to USB using Kickstart
            </div>
            
            <div class="blogcard-snippet external-blogcard-snippet">
              I frequently re-install ESXi on my physical host for various types of testing as I normally work with a number of future releases. Although the process just tak...
            </div>
          </div>
          
          <div class="blogcard-footer external-blogcard-footer cf">
            <div class="blogcard-site external-blogcard-site">
              <div class="blogcard-favicon external-blogcard-favicon">
                <img src="https://www.google.com/s2/favicons?domain=williamlam.com" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" />
              </div>
              
              <div class="blogcard-domain external-blogcard-domain">
                williamlam.com
              </div>
            </div>
          </div>
        </div></a>
      </div>
      
      <h3>
        インストール前にOSXの起動設定を変更する
      </h3>
      
      <p>
        ここまで来るとあとはUSBメモリを指してブートオプションからUSBデバイスでブートするだけ。の認識だったのだが、ESXiを利用する前提でキーボード・マウスを用意していなかったので、<strong>Mac Mini のブートオプションを変えられない</strong>という痛恨のミスがあった(笑)
      </p>
      
      <p>
        さらには別の端末のマウスとキーボードを利用してブートオプションを変えたものの、USBデバイスの中に入っているはずのESXiを起動できないことが発生し、少し悩んだ。
      </p>
      
      <p>
        結論から言うと、<a href="https://ascii.jp/elem/000/001/715/1715494/">こちらのページ</a>で紹介されているT2チップのセキュアブートの設定がデフォルトでONになっているため、「command」+「R」キーを押しながら電源をオンにすして、復元ボリュームを起動し、起動セキュリティユーティリティから、<strong>「安全な起動」を「セキュリティなし」</strong>に、<strong>「外部起動」を「外部メディアからの起動を許可」</strong>してあげる必要があった。
      </p>
      
      <p>
        この設定はスクリーンショットが取れない(OS起動前の画面なのでディスプレイを撮影するしかない)ので、細かな手順は以下のAsciiのサイトを参考にするのが良い。
      </p>
    </div>
    
    <a rel="noopener" href="https://ascii.jp/elem/000/001/715/1715494/" title="T2チップ搭載の新MacBook Pro強固すぎるセキュアブートとは?" class="blogcard-wrap external-blogcard-wrap a-wrap cf" target="_blank">
    
    <div class="blogcard external-blogcard eb-left cf">
      <div class="blogcard-label external-blogcard-label">
        <span class="fa"></span>
      </div><figure class="blogcard-thumbnail external-blogcard-thumbnail">
      
      <img src="/images/cocoon-resources/blog-card-cache/e37a682caa649cf9cdd94f748202ab1e.jpg" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="160" height="90" /></figure>
      
      <div class="blogcard-content external-blogcard-content">
        <div class="blogcard-title external-blogcard-title">
          T2チップ搭載の新MacBook Pro強固すぎるセキュアブートとは?
        </div>
        
        <div class="blogcard-snippet external-blogcard-snippet">
          新MacBook Proシリーズが搭載するApple T2チップは、内蔵SSDの瞬時暗号化やセキュアブートなどの機能を提供している。その詳細を見ていこう。
        </div>
      </div>
      
      <div class="blogcard-footer external-blogcard-footer cf">
        <div class="blogcard-site external-blogcard-site">
          <div class="blogcard-favicon external-blogcard-favicon">
            <img src="https://www.google.com/s2/favicons?domain=ascii.jp" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" />
          </div>
          
          <div class="blogcard-domain external-blogcard-domain">
            ascii.jp
          </div>
        </div>
      </div>
    </div></a> 
    
    <p>
      これらの設定を変更した上で再度USBデバイスから起動すると、無事にESXiがインストールできているはず。
    </p>
    
    <p>
      <img class="aligncenter size-full wp-image-1694" src="/images/esxi_install_usb06.png" alt="" width="636" height="242" srcset="/images/esxi_install_usb06.png 636w, /images/esxi_install_usb06-300x114.png 300w" sizes="(max-width: 636px) 100vw, 636px" />
    </p>