CentOS7でトラブりました。
ESXiなどの他ハイパーバイザーからProxmox VEへ仮想マシン(VM)を移行した際、CentOSやRHEL系のOSで最も遭遇しやすいトラブルがこれです。起動直後に黒い画面で大量のログが流れ、最後に以下のメッセージで止まってしまう現象。
Warning: /dev/centos/root does not exist Starting Dracut Emergency Shell…
「ルートパーティションが見つからない」と言われても、ディスクは移行したはず…。 SATA接続を試しても直らない…。
この記事では、このエラーの真の原因と、誰でもできる3ステップの解決法(IDE経由での復旧)を解説します。特に最後の「コントローラー設定」は落とし穴になりやすいので要注意です。
原因:ストレージドライバと「コントローラー」の不一致
結論から言うと、原因は以下の2点です。
- OS側の準備不足: CentOSが「VirtIO」ドライバを持っていない(ESXi用のドライバしか読み込んでいない)。
- Proxmox側の設定ミス: Proxmoxの「SCSIコントローラー」の設定が、OSが期待するものと違っている。
移行直後は、OSは「ディスクが見えない」とパニックを起こします。 「ドライバを入れたのに動かない!」という場合、コントローラーの設定が旧式のままであることが多いです。
解決手順
SATAでも起動しない場合の「最終奥義」であるIDE接続を使って復旧させます。
ステップ1:ディスクを「IDE」として接続する
まずは無理やりOSを起動させます。最も古く、どんなOSでも標準ドライバを持っている「IDE」規格を使います。
- Proxmox管理画面で対象VMの [ハードウェア] を開く。
- 現在のハードディスク(scsi0 や sata0)を選択し、[デタッチ (Detach)] をクリック(データは消えません)。
- 出現した「未使用のディスク」をダブルクリック。
- バス/デバイス の項目で 「IDE」 を選択して [追加]。
- [オプション] タブの [ブート順序] を開き、
ide0を有効にして一番上に移動。
これでVMを起動してください。IDEは低速ですが、互換性は最強です。これで無事にログイン画面まで辿り着けるはずです。
ステップ2:VirtIOドライバをインストールする
無事にログインできたら、次は本来の性能を出すための準備です。現在はIDEで動いていますが、これを高速な「VirtIO」で動かせるようにドライバをOSに組み込みます。
ターミナル(SSHやコンソール)を開き、以下のコマンドを実行します。
# 現在のカーネルに対応したinitramfsを再構築し、VirtIOドライバを強制的に追加する
dracut -f --add-drivers "virtio virtio_pci virtio_blk virtio_scsi"
数秒〜数十秒で完了します。エラーが出なければ成功です。 一度VMをシャットダウンしてください。
ステップ3:【重要】コントローラーとディスク設定を戻す
ここが最重要ポイントです。単にディスクをSCSIに戻すだけでは起動しません。コントローラーの種類も合わせる必要があります。
- Proxmoxの [ハードウェア] タブへ移動。
- [SCSIコントローラ] の行を確認してください。
- ここが
LSI 53C895AやVMware PVSCSIになっていませんか? - ダブルクリックして
VirtIO SCSIに変更してください。
- ここが
- 「IDE」接続になっているハードディスクを [デタッチ]。
- 「未使用のディスク」を編集し、バス/デバイスを 「SCSI」 に変更して追加。
- [オプション] タブで [ブート順序] を確認(
scsi0を有効化)。
これでVMを起動します。 OS側に入れた virtio_scsi ドライバと、Proxmox側の VirtIO SCSI コントローラーが一致し、爆速で起動するはずです!
まとめ
- 症状:
/dev/centos/root does not existはディスクが見えていない証拠。 - 手順:
- IDE でとりあえず起動させる。
dracutコマンドでVirtIOドライバを注入。- Proxmox側で SCSIコントローラを
VirtIO SCSIに変更 してからディスクを戻す。
この3ステップで、CentOS 7/8/9、AlmaLinux、Rocky Linuxなど、RHEL系OSの移行トラブルはほぼ解決できます。
まとめ記事はこちら


