【Proxmox】バージョンアップでboot出来なくなり修復した

Proxmox

ProxmoxをVer.8.4→Ver.9.1にアップデートをしたところ、あろうことかブートができなくなったなったので、慌てて修復しました。

いろいろ他のツールなどを使って試しましたが、どれもうまくいかず、最終的にはProxmox公式に記載されている方法で対処できました。灯台下暗し...

症状

Proxmox VE8で稼働している仮想サーバーを公式の手順通りにVE9にバージョンアップしました。

手順通りに従いシステムは無事アップデートできましたが、再起動するとGRUB画面に遷移せず、起動→リセットを繰り返すようになってしまいました。

[grub rescue >]も出てこない。

詰んだか...と思いましたが、Proxmoxツールで1日程度で復旧できました。

修復手順

[手順1]ProxmoxインストールUSBの作成

システムが起動できないため、USBのブートディスクを作成します。

Proxmoxの公式ページから最新のISOファイルをダウンロードします。

RufusでUSBに書き込みます。

USBサイズは8GB以上必要だったと思います。

SDカードリーダーは先日購入したUGREEN製のカードリーダーを使用。

USB-Cですが、変換アダプタでUSB-Aも普通に使えます。

Magsafe磁石でサーバーの筐体にも張り付くので固定も楽です。

[手順2]インストールUSBを使ってシステム起動

Proxmoxマシンにモニターとキーボードを接続し、作成したUSB起動デバイスを挿入し、USBブートします。

Delキー連打でマザボのUEFI画面に入り、起動デバイスをUSBに設定します。

起動後、ProxmoxのGUIメニューで「Rescue Boot」を選択します。

Rescue Bootは、ストレージ内のProxmoxシステムを自動マウントして、通常のProxmoxシステムを起動してくれました!

まさに神ツールです。

Windows端末から[http:(サーバーアドレス):8006/]に接続できるようになり、Proxmoxコンソールに入れるようになります。

[手順3]GRUBの再構築

Proxmoxコンソールから[>シェル]を起動し、コマンド操作をします。

lsblkでストレージを確認します。

root@falconblog:~# lsblk
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                            8:0    0 931.5G  0 disk 
├─sda1                         8:1    0  1007K  0 part 
├─sda2                         8:2    0     1G  0 part 
└─sda3                         8:3    0 930.5G  0 part 
  ├─pve-swap                 252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root                 252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta           252:2    0   8.1G  0 lvm  
  │ └─pve-data-tpool         252:4    0 794.3G  0 lvm  
  │   ├─pve-data             252:5    0 794.3G  1 lvm  
  │   ├─pve-vm--106--disk--0 252:6    0    64G  0 lvm  
  │   ├─pve-vm--107--disk--0 252:7    0   100G  0 lvm  
  │   ├─pve-vm--108--disk--0 252:8    0    90G  0 lvm  
  │   ├─pve-vm--109--disk--0 252:9    0    32G  0 lvm  
  │   ├─pve-vm--140--disk--0 252:10   0   120G  0 lvm  
  │   ├─pve-vm--139--disk--0 252:11   0    64G  0 lvm  
  │   ├─pve-vm--120--disk--0 252:12   0    96G  0 lvm  
  │   ├─pve-vm--121--disk--0 252:13   0   100G  0 lvm  
  │   └─pve-vm--124--disk--0 252:14   0    64G  0 lvm  
  └─pve-data_tdata           252:3    0 794.3G  0 lvm  
    └─pve-data-tpool         252:4    0 794.3G  0 lvm  
      ├─pve-data             252:5    0 794.3G  1 lvm  
      ├─pve-vm--106--disk--0 252:6    0    64G  0 lvm  
      ├─pve-vm--107--disk--0 252:7    0   100G  0 lvm  
      ├─pve-vm--108--disk--0 252:8    0    90G  0 lvm  
      ├─pve-vm--109--disk--0 252:9    0    32G  0 lvm  
      ├─pve-vm--140--disk--0 252:10   0   120G  0 lvm  
      ├─pve-vm--139--disk--0 252:11   0    64G  0 lvm  
      ├─pve-vm--120--disk--0 252:12   0    96G  0 lvm  
      ├─pve-vm--121--disk--0 252:13   0   100G  0 lvm  
      └─pve-vm--124--disk--0 252:14   0    64G  0 lvm  
sdb                            8:16   1  59.5G  0 disk 
├─sdb1                         8:17   1   286K  0 part 
├─sdb2                         8:18   1     8M  0 part 
├─sdb3                         8:19   1   1.7G  0 part 
└─sdb4                         8:20   1   300K  0 part 
sdc                            8:32   1     0B  0 disk 
sr0                           11:0    1  1024M  0 rom  
root@falconblog:~# cd /dev/sda2
-bash: cd: /dev/sda2: Not a directory

通常は/dev/sda2/が起動ストレージに設定されています。

公式にあるとおり、/dev/sda2に/boot/efiをマウントします。

lsblkで/boot/efiがマウント出来ていることが確認しておきます。

root@falconblog:/boot/efi# mount /dev/sda2 /boot/efi
root@falconblog:/boot/efi# lsblk
NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda                            8:0    0 931.5G  0 disk 
├─sda1                         8:1    0  1007K  0 part 
├─sda2                         8:2    0     1G  0 part /boot/efi
└─sda3                         8:3    0 930.5G  0 part 
  ├─pve-swap                 252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root                 252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta           252:2    0   8.1G  0 lvm  
  │ └─pve-data-tpool         252:4    0 794.3G  0 lvm  
  │   ├─pve-data             252:5    0 794.3G  1 lvm  
  │   ├─pve-vm--106--disk--0 252:6    0    64G  0 lvm  
  │   ├─pve-vm--107--disk--0 252:7    0   100G  0 lvm  
  │   ├─pve-vm--108--disk--0 252:8    0    90G  0 lvm  
  │   ├─pve-vm--109--disk--0 252:9    0    32G  0 lvm  
  │   ├─pve-vm--140--disk--0 252:10   0   120G  0 lvm  
  │   ├─pve-vm--139--disk--0 252:11   0    64G  0 lvm  
  │   ├─pve-vm--120--disk--0 252:12   0    96G  0 lvm  
  │   ├─pve-vm--121--disk--0 252:13   0   100G  0 lvm  
  │   └─pve-vm--124--disk--0 252:14   0    64G  0 lvm  
  └─pve-data_tdata           252:3    0 794.3G  0 lvm  
    └─pve-data-tpool         252:4    0 794.3G  0 lvm  
      ├─pve-data             252:5    0 794.3G  1 lvm  
      ├─pve-vm--106--disk--0 252:6    0    64G  0 lvm  
      ├─pve-vm--107--disk--0 252:7    0   100G  0 lvm  
      ├─pve-vm--108--disk--0 252:8    0    90G  0 lvm  
      ├─pve-vm--109--disk--0 252:9    0    32G  0 lvm  
      ├─pve-vm--140--disk--0 252:10   0   120G  0 lvm  
      ├─pve-vm--139--disk--0 252:11   0    64G  0 lvm  
      ├─pve-vm--120--disk--0 252:12   0    96G  0 lvm  
      ├─pve-vm--121--disk--0 252:13   0   100G  0 lvm  
      └─pve-vm--124--disk--0 252:14   0    64G  0 lvm  
sdb                            8:16   1  59.5G  0 disk 
├─sdb1                         8:17   1   286K  0 part 
├─sdb2                         8:18   1     8M  0 part 
├─sdb3                         8:19   1   1.7G  0 part 
└─sdb4                         8:20   1   300K  0 part 
sdc                            8:32   1     0B  0 disk 
sr0                           11:0    1  1024M  0 rom

マウントが出来たら/dev/sdaにgrubをインストールします。

インストールは一瞬で終わります。

/boot/efi/EFI/にファイルが保存されていたらインストール成功です。

# grub-install /dev/sda2
Installing for x86_64-efi platform.
Installation finished. No error reported.
# ls /boot/efi
EFI
# ls /boot/efi/EFI/
BOOT  proxmox

再起動して、通常起動するようになれば、修復は完了です。

Linuxのメジャーバージョンアップはリスクあり

筆者の経験では、Linuxのメジャーバージョンアップは、Boot領域の書き換えがあるため、よく起動しなくなります。

ディストリビューションの差もあまりなく、Ubuntu(Debian)でもRocky Linux(RedHat)でも同様の傾向があるように思います。

ProxmoxにおいてもDebianベースのため、Ubuntuと同じ症状になる傾向があります。

メジャーバージョンアップをする場合は、必ずVMのイメージバックアップを取っておき、最悪、再インストールで対処できるようにしておくのが良いと思います。

タイトルとURLをコピーしました