
Xen サーバーで実行中の Debian7 VM のディスク全体をコピーしました (dd コマンドを使用)。raw イメージを kvm 形式 (qemu-img) に変換できました。次に、新しい VM を作成し、ディスク イメージを添付しました (KVM を使用)。起動に失敗した後 (画面が真っ黒)、iso (Debian7) をダウンロードしてレスキュー モードで起動することにしました。レスキュー モードを使用して、カーネル (3.2.0-4-amd64) を再インストールし、initramfs を更新しました。また、/etc/modules にいくつかの行を追加しました:
alias eth0 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter2 mptspi
alias scsi_hostadapter3 ata_piix
alias scsi_hostadapter4 virtio_blk
しかし、起動しようとすると、次のメッセージしか表示されません。
Loading Linux 3.2.0-4-amd64
Loading initial ramdisk
実行中のVMへのルートアクセス権はありますが、Xenハイパーバイザーにはまったくアクセスできません
KVM/virtualbox/ESXi でこの VM を起動するために何かできることはありますか?
質問には VMware タグが付けられています。これは、最終的にこれを VMware に載せるつもりだからです。私は、Xen からのインポートのルール (パラレル vs 仮想化) を理解するために kvm を使用しています。
編集 01.04.2020
こんにちは、Eblock さん。アドバイスありがとうございます。あなたの記事に従って、ソース VM で利用可能な virtio モジュールのリストを確認しました。リストは次のとおりです。
# find /lib/modules/ -name *virt*
/lib/modules/3.2.0-4-amd64/kernel/net/9p/9pnet_virtio.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/net/virtio_net.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/scsi/virtio_scsi.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/block/virtio_blk.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/virtio
/lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio_pci.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio_ring.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/virtio/virtio_balloon.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/char/virtio_console.ko
/lib/modules/3.2.0-4-amd64/kernel/drivers/char/hw_random/virtio-rng.ko
/lib/modules/3.2.0-4-amd64/kernel/sound/pci/oxygen/snd-virtuoso.ko
次に、これらの virtio モジュールを /etc/modules と /etc/initramfs-tools/modules の両方に追加し、initramfs-update コマンド (レスキュー モードで) を使用して initramfs を更新しました。これで、KVM ゲスト Debian VM (現在 CD からレスキュー モードで実行中) にロードされたモジュールが表示されます (下の画像、残念ながら KVM 画面からテキストをコピーして貼り付けることはできません)。
しかし、まだ VM を起動できません :( 表示されるのは次のとおり:
Decompressing Linux... Parsing ELF Done
Booting the kernel...
他に試すべきことはありますか? 組み込みの virtio モジュールを使用してカーネルをコンパイルしますか?
答え1
すべて順調で、VM が起動してすべてのサービス (かなりの数) を適切に開始します。eblock は正しかったことが分かりました。カーネルと initrd にモジュールを追加するだけで十分でした。不足していたのは、grub で構成された tty0 ではなく ttyS0 でした (xen は 'S' ポート経由で接続するため、"xen の方法" です)。これが、通常の起動手順のリストが不足していた原因です。また、mingetty の再生成が速すぎる (結果として無限の '5 分遅延' が発生する) という問題もあったため、/etc/inittab で tty に切り替えました。
1:2345:respawn:/sbin/getty tty1
2:2345:respawn:/sbin/getty tty2
....
すべて順調です。eblockに感謝します