银河麒麟物理机p2v迁移需采用“备份→还原到虚拟机”两段式路径,核心是确保uefi启动结构、lvm/加密分区及国产固件驱动在虚拟环境可识别、可引导,否则易致黑屏或grub rescue。

银河麒麟物理机系统迁移成虚拟机镜像(P2V)需绕过官方不直接支持P2V的限制,采用“备份→还原到虚拟机”两段式路径,核心在于确保UEFI启动结构、LVM/加密分区、国产固件驱动等关键要素在虚拟环境中可识别、可引导。这不是点几下就能完成的操作,稍有疏忽就会导致还原后黑屏或grub rescue。
第一步:用再生龙(Clonezilla)完整备份物理机系统
这一步必须在物理机上离线执行,不能在银河麒麟桌面环境下运行备份——否则无法捕获启动分区和LVM元数据。
将Ventoy制作好的U盘插入物理机→重启→反复按F12/F2/DEL(依主板品牌而定)进入启动菜单→选择「Clonezilla live (UEFI mode)」→等待加载完毕后,选「Start Clonezilla」→语言选「Chinese (zh_CN)」→键盘保持默认→选择「device-image」→选择「savedisk」→给本次备份起名,如kylin-p2v-20261001(【名称中严禁含空格或中文标点】)→确认目标位置为U盘根目录下的images文件夹→回车后会列出所有磁盘,【务必核对/dev/sda还是/dev/nvme0n1——看容量和型号,别选错系统盘!】→选中后按空格打钩→回车继续→选择「expert」模式→勾选「-k1」(保留分区表原始扇区)和「-j2」(启用多线程压缩)→最后确认执行备份。
备份过程耗时取决于硬盘大小和U盘写入速度,100GB SSD约需15分钟。完成后不要直接拔U盘,先选「poweroff」关机。
第二步:在虚拟机中创建匹配的磁盘结构
打开VMware Workstation或VirtualBox,新建虚拟机时注意三点:CPU必须勾选「虚拟化引擎」,内存不低于4GB,网络适配器选「Intel E1000E」(银河麒麟内核对vmxnet3支持不稳定)。
硬盘类型选「SCSI」(非SATA),控制器选「LSI Logic (Recommended)」——这是再生龙还原时能正确识别的关键前提;硬盘大小必须≥物理机系统分区总和,且不能启用「将虚拟磁盘拆分成多个文件」(否则Clonezilla无法写入)。
创建完成后,不要安装系统,直接关闭虚拟机设置窗口。接下来要手动编辑.vmx文件(VMware)或.ovf(VirtualBox),在末尾添加一行:firmware = "efi"。这一步漏掉,后续还原的系统将无法在UEFI虚拟机中启动。
第三步:用再生龙将备份还原进虚拟机
把刚才那支U盘插进宿主机→启动虚拟机→在BIOS启动项里强制选择「UEFI: Ventoy」→进入Clonezilla后,选「Start Clonezilla」→语言→键盘→选「device-image」→这次选「restoredisk」→找到U盘里的images/kylin-p2v-20261001目录→回车→它会列出源备份中的磁盘结构,此时【必须手动将目标磁盘指定为虚拟机里唯一的那块SCSI硬盘,通常是/dev/sda】→确认后选「beginner」模式→接受默认参数→开始还原。
还原完成后,虚拟机自动关机。此时不要急着启动——还需修复引导。
第四步:挂载并重装GRUB2至虚拟机EFI分区
方法一:用银河麒麟安装ISO启动虚拟机→选「试用银河麒麟」→打开终端→依次执行:
sudo fdisk -l #确认EFI分区是/dev/sda1,系统根分区是/dev/sda2(若用LVM,根分区可能是/dev/mapper/kylin--vg-root)
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=kylin
update-grub2
exit && sudo reboot -f
方法二:若上述chroot失败(常见于加密LUKS分区),改用Live环境中的boot-repair工具:在试用桌面中打开「启动修复」应用→点击「推荐修复」→等待完成→重启。
启动后若卡在grub命令行,说明EFI变量未写入成功,需回到Live环境,用efibootmgr -v查看启动项,再用efibootmgr -c -d /dev/sda -p 1 -L "Kylin" -l "\EFI\kylin\grubx64.efi" 手动注册。











