
Xen 서버에서 실행되는 Debian7 VM의 전체 디스크를 복사했습니다(dd 명령 사용). 원시 이미지를 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
runnig VM에 대한 루트 액세스 권한이 있지만 xen 하이퍼바이저에 대한 액세스 권한은 전혀 없습니다.
내 KVM/virtualbox/ESXi에서 이 VM을 부팅하기 위해 할 수 있는 일이 있습니까?
마지막으로 이것을 VMware에 넣을 것이기 때문에 질문에는 VMware 태그가 표시되어 있습니다. 저는 Xen에서 가져오기 규칙을 이해하기 위해 kvm을 사용하고 있습니다(para vs virtualization).
편집 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-guest Debian VM(현재 CD에서 복구 모드로 실행 중)에 로드된 모듈이 표시됩니다(아래 그림, 불행히도 KVM 화면에서 텍스트를 복사하여 붙여 넣을 수는 없습니다).
그러나 여전히 VM을 부팅하는 데에는 운이 없습니다. :( 내가 얻는 것은 다음과 같습니다.
Decompressing Linux... Parsing ELF Done
Booting the kernel...
내가 시도해야 할 다른 것이 있나요? 내장된 virtio 모듈로 커널을 컴파일하시나요?
답변1
모든 것이 정상입니다. VM은 모든 서비스(상당수)를 올바르게 시작하면서 부팅됩니다. 알고 보니 eblock이 옳았습니다. 커널과 initrd에 모듈을 추가하는 것만으로도 충분했습니다. 누락된 부분 중 하나는 grub에 구성된 tty0(xen이 'S' 포트를 통해 연결하는 "xen 방식") 대신 ttyS0이었는데, 이는 일반적인 부팅 단계 목록이 부족한 원인이었습니다. Mingetty가 너무 빨리 재생성되는 문제(끝까지 '5분 지연' 발생)도 있어서 /etc/inittab에서 tty로 전환했습니다.
1:2345:respawn:/sbin/getty tty1
2:2345:respawn:/sbin/getty tty2
....
다 괜찮아요, eblock 고마워요