制作一个Ubuntu Desktop启动盘, 使用这个U盘启动系统
备份全盘内容
1 | dd if=/dev/nvme1n1 of=/mnt/download/diskbackup/diskc.raw bs=4M |
其中 of
参数指定的输出文件位置可以在网络上, 例如SMB共享. 需要提前通过类似这样的命令 mount
1 | sudo mkdir /mnt/download |
如果中间不小心中断了的话, 也可以重新引导进入Ubuntu Desktop, 使用如下命令继续备份
1 | dd if=/dev/nvme1n1 of=/mnt/download/diskbackup/diskc.raw bs=4M seek=123456789 skip=123456789 iflag=skip_bytes oflag=seek_bytes |
其中 123456789
是已经备份生成出来的文件的长度, 建议稍微减小一些数值, 比如已经备份了157GiB (168577466368), 那就可以选择 150GiB作为继续点 (161061273600)
skip_bytes
, seek_bytes
表示skip
和seek
的数值是字节, 而不是bs
的数量. 否则实际上跳过的字节会变成 123456789 * 4M
. iflag
, oflag
不要写反了
- (可选) 生成出来的文件可以转换成 qcow2 格式, 占用空间更小. 源文件越大转换时间越长.
1 | qemu-img convert -O qcow2 diskc.raw diskc.qcow2 |
- 创建Proxmox VM
因为源物理机是Windows系统, 此处按照Windows系统创建.
不挂载ISO, BIOS选择OVMF (UEFI), EFI Disk 正常创建即可.
把文件放到Proxmox指定路径下. 如果该路径在SMB上则需要保证磁盘文件的owner正确, 而且权限正确, 否则vm无法启动报错Permission denied
(此处跟stackexchange上遇到的情况不太一样, 我只需要chown+chmod 644就可以让vm正常启动了)
- 直接使用raw镜像启动, 进入Grub且退出后无法自动进入系统
虽然不知道是什么原因导致的, 但是可以通过在Grub下输入这些来引导windows. 其中 (hd0,gpt1)
是通过grub下 ls
命令得到的.
1 | insmod part_gpt |
参考
Translating bash to python; “dd” command “iflag=skip_bytes” how can be converted?
Determine the size of a block device
Resuming a DD of an entire disk
How to output file from the specified offset, but not “dd bs=1 skip=N”?
2.4. Converting Between RAW and QCOW2
How to use QEMU/KVM virtual machine disk image on SMB/CIFS network share: Permission denied