🌀

Proxmox 7.0をインストールするメモ (Hyper-Vからの移行)

2021/11/01に公開

  • Ryzen 1700
  • ASRock X370 Gaming K4
  • Dell PERC h740p
  • GeForce GTX 1060

Proxmox自体のインストール

  • isoをダウンロードして balenaEtherでUSBメモリに書いてそこから起動してインストール。
  • 特にむずかしいところはないので省略
  • ちなみにHyper-Vからの移行なのでそのための覚書も含む
  • ProxmoxはDebianベースということを覚えておくと吉

MegaRAID CLIのインストール

Broadcomのサイトがあまりに使いにくいので以下の手順にしたがう。
元:https://gist.github.com/fxkraus/595ab82e07cd6f8e057d31bc0bc5e779

ようやくすると、必要なツール類を入れて、BroadcomからMegaCLIをダウンロードして展開。
展開した結果RPMファイルが得られるが、ProxmoxはdebianベースなのでRPM->DEBに変換する。
DEBファイルをインストールして、動作確認。という流れ。

  • apt install libncurses5 unzip alien
  • wget https://docs.broadcom.com/docs-and-downloads/raid-controllers/raid-controllers-common-files/8-07-14_MegaCLI.zip
  • unzip 8-07-14_MegaCLI.zip
  • cd Linux
  • alien MegaCli-8.07.14-1.noarch.rpm
  • dpkg -i megacli_8.07.14-2_all.deb
  • /opt/MegaRAID/MegaCli/MegaCli64 -h
  • /opt/MegaRAID/MegaCli/MegaCli64 -AdpCount
  • /opt/MegaRAID/MegaCli/MegaCli64 -AdpAllInfo -aALL

VHDX からのコンバート

接続先VMの作成

必要なVMをWeb GUIから作成する。
ディスクはあとで正式なものを接続するが、作成しないと先に進めないため、容量は0.1GBのような小さい値で作成する。
VMの作成が完了したら、

  • 作成したVMのハードウェアからディスクを選択して Detachする。
  • ハードウェア一覧の一番下に未使用:〜〜のようにディスクが表示されるので更にそれを選択して、削除 しておく。これでコンバートの下準備が完了。

VHDXからコンバートする

qm importdisk 100 Windows10_c.vhdx SUM980EVO

  • 100 -> VMID。Proxmoxのツリー表示で表示される数字。VMを作ったときに採番される。100からの連番
  • Windows_10_c.vhdx -> 変換元VHDX
  • SUM980EVO -> ストレージの名前。 Proxmoxのツリーでデータセンターを選択して真ん中の選択でストレージを選んだ時に表示される一覧の、IDを指定する。
root@proxmox:~/hyper-v/Windows10# qm importdisk 100 Windows10_c.vhdx SUM980EVO
importing disk 'Windows10_c.vhdx' to VM 100 ...
  Logical volume "vm-100-disk-0" created.
transferred 0.0 B of 59.0 GiB (0.00%)
transferred 604.2 MiB of 59.0 GiB (1.00%)
transferred 1.2 GiB of 59.0 GiB (2.01%)
transferred 1.8 GiB of 59.0 GiB (3.01%)
transferred 2.4 GiB of 59.0 GiB (4.01%)
~~~~~~~~~~~
transferred 58.6 GiB of 59.0 GiB (99.30%)
transferred 59.0 GiB of 59.0 GiB (100.00%)
transferred 59.0 GiB of 59.0 GiB (100.00%)
Successfully imported disk as 'unused0:SUM980EVO:vm-100-disk-0'

メッセージの通り、VMに未使用のディスクとして追加されている。
アタッチには、 VMのハードウェアから未使用のディスクを選択して編集ボタンを押す。

起動順設定

アタッチしたディスクが起動ディスクの場合、VM オプション ブート順 の設定で今追加したディスクからのブートを有効にして(チェックを入れる)、ブート順の優先順位を上げておく(三 をドラッグ)

ディスクパススルー (RDM)

物理ディスク全体をVMに見せるには以下のコマンドを使用する。

qm set 100 -virtio0 /dev/disk/by-id/scsi-36d0946606c11150028b3e11557046428

  • 100 -> VMID
  • -virtio0 接続するバス sataN virtioN ideN 既存のを指定すると上書きされる。適当に空いているところをセットしておいて、Web GUIからデタッチすれば接続先を変更できる。
  • /dev/disk〜 デバイス

by-id の次がわからない場合は、 ls -l /dev/disk/by-id/ でリンク先を表示させるとわかりやすくなると思う。 (/sdaとかその名前が表示される)

TrueNAS

TrueNASはKVMのエージェントが入っていないので、Web GUIからのシャットダウン・リブートに一切応答しない。これでは困るのでどうにかする。

https://www.truenas.com/community/resources/qemu-guest-agent.167/

手順的には上記の通りと言いたいところだが、 virtio_console.ko はリンク先のGitHubに存在しない。というよりFreeBSD由来のファイルなのでFreeBSDのisoから持ってくる必要がある(と思われる。) 使用しているTrueNAS 12-U6 はFreeBSD 12ベースなので、
https://download.freebsd.org/ftp/releases/amd64/amd64/ISO-IMAGES/12.2/FreeBSD-12.2-RELEASE-amd64-disc1.iso
のisoの /boot/kernel/virtio_console を持ってくる。

UEFIのDebian VMが自動起動できない(Linux全般?)

VHDXから変換をかけて起動させると、EFI Shellが起動してしまう。
EFI Shellで以下のようにすると起動させることができる。

FS0:
cd EFI
cd debian
grubx64.efi

この原因は、EFIブートエントリにgrubがないことが原因と思われる。

# efibootmgr
efibootmgr 
BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0001,0000,0002
Boot0000* UiApp
Boot0001* UEFI QEMU QEMU HARDDISK 
Boot0002* EFI Internal Shell

Debianの場合、debianという名前のブートエントリがなければ起動してこない。

修正方法

VMの設定を確認した上で grub-install で修復可能。

  • BIOS の設定が OVMF(UEFI) に設定されている
  • ハードウェアに EFIディスク が存在している
$ sudo grub-install 
Installing for x86_64-efi platform.
Installation finished. No error reported.
$ efibootmgr 
BootCurrent: 0003
Timeout: 3 seconds
BootOrder: 0004,0001,0002,0000,0003  ※ 0004が先頭になっている
Boot0000* UiApp
Boot0001* UEFI QEMU DVD-ROM QM00003 
Boot0002* UEFI QEMU HARDDISK QM00005 
Boot0003* EFI Internal Shell
Boot0004* debian                  ※ 追加されたエントリ

蛇足

WindowsとFreeBSD(TrueNAS)は同じUEFIなのに問題が発生していない理由がよくわからない。
startup.nsh でも置いてるのかなぁ

Discussion