PVE软盘安装系统Tips
PVE软盘安装系统Tips
迷失的小K前言
在我尝试 PVE 的过程中发现了很多问题,包括但不限于自定义性不足,不支持软盘 (Floppy) 引导等等,但好在 PVE 是基于 qemu-kvm
的, 如此一来,我们利用 Shell 就有很大的操作空间。为此,我通过软盘安装了 MS DOS 7.1
,以下是安装过程记录。
过程记录
软盘镜像下载
分享一个很好的镜像站,收录了很多网上较难找的旧系统、软件、游戏等:WinWorld
由于是公益性质网站,每天下载限额25次。
PVE 安装软盘系统
上传软盘镜像
由于 PVE 不支持 img 文件,我们可以用
scp
或sftp
将镜像上传到 PVE 系统上。在 PVE 系统中,
/var/lib/vz/template/iso
文件夹是 PVE 镜像模版的默认存储位置,建议统一存储在同一位置。以下是指令示例:
# SCP
scp -O /path/to/file/xxx.img username@remote_ip:/var/lib/vz/template/iso
# SFTP
sftp username@remote_ip
sftp> lcd /path/to/file
sftp> put -r xxx.img /var/lib/vz/template/iso
sftp> exit创建新的虚拟机
PVE 右上角创建虚拟机,常规按自己喜好设置,操作系统不使用任何介质,系统默认,硬盘2G,CPU类别保持默认,内存512M,网络无网络设备。
PVE Shell 基本操作
进入 PVE Shell,PVE 包含操作虚拟机的指令
qm
,如下是本文将用到的指令:# 显示虚拟机启动指令
qm showcmd <vmid> [options]
# 进入虚拟机 kvm 控制台
qm monitor <vmid> [options]
# 显示虚拟机列表(包含虚拟机PID等基本信息)
qm list挂载软盘并引导
使用
qm list
指令,查看刚刚创建的虚拟机的VMID(本文以102举例,请自行替换)root@truenas[~]# qm list
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 HAOS running 2048 32.00 1853288
101 xenix stopped 256 0.00 0
102 MSDOS7.1 stopped 512 2.00 0
103 PureDarwin running 2048 32.00 139604
104 pdxmas stopped 2048 32.00 0使用
qm showcmd <vmid>
查看 kvm 命令root@truenas[~]# qm showcmd 102
/usr/bin/kvm -id 102 -name 'MSDOS7.1,debug-threads=on' -no-shutdown -chardev 'socket,id=qmp,path=/var/run/qemu-server/102.qmp,server=on,wait=off' -mon 'chardev=qmp,mode=control' -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' -mon 'chardev=qmp-event,mode=control' -pidfile /var/run/qemu-server/102.pid -daemonize -smbios 'type=1,uuid=464448a0-979e-4af4-9cb6-bf4755594c7b' -smp '2,sockets=1,cores=2,maxcpus=2' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vnc 'unix:/var/run/qemu-server/102.vnc,password=on' -cpu qemu64,+aes,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+pni,+popcnt,+sse4.1,+sse4.2,+ssse3 -m 512 -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'pci-bridge,id=pci.3,chassis_nr=3,bus=pci.0,addr=0x5' -device 'vmgenid,guid=4c87b94b-3216-480b-8308-6c5f5ed9c435' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'VGA,id=vga,bus=pci.0,addr=0x2' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:33a44c1b79b' -drive 'file=/dev/zvol/Hack1n-Disk/vm-102-disk-0,if=none,id=drive-ide0,format=raw,cache=none,aio=io_uring,detect-zeroes=on' -device 'ide-hd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100' -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=101' -machine 'type=pc+pve0'在 kvm 中, 软盘挂载参数为
-fda /path/to/file/xxx.img
, 如果为 UNIX 系统软盘可能出现无法校验软盘是否存在引导的问题,可以添加参数-no-fd-bootchk
以跳过软盘引导项检查。由于 MS DOS 7.1 的加载项可以直接读出,我们不必跳过加载项,直接添加
-fda
参数即可,后面改成自己的软盘镜像目录。环境因人而异!切勿复制指令!
/usr/bin/kvm -id 102 -name 'MSDOS7.1,debug-threads=on' -no-shutdown -chardev 'socket,id=qmp,path=/var/run/qemu-server/102.qmp,server=on,wait=off' -mon 'chardev=qmp,mode=control' -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' -mon 'chardev=qmp-event,mode=control' -pidfile /var/run/qemu-server/102.pid -daemonize -smbios 'type=1,uuid=464448a0-979e-4af4-9cb6-bf4755594c7b' -smp '2,sockets=1,cores=2,maxcpus=2' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vnc 'unix:/var/run/qemu-server/102.vnc,password=on' -cpu qemu64,+aes,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+pni,+popcnt,+sse4.1,+sse4.2,+ssse3 -m 512 -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'pci-bridge,id=pci.3,chassis_nr=3,bus=pci.0,addr=0x5' -device 'vmgenid,guid=4c87b94b-3216-480b-8308-6c5f5ed9c435' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'VGA,id=vga,bus=pci.0,addr=0x2' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3,free-page-reporting=on' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:33a44c1b79b' -drive 'file=/dev/zvol/Hack1n-Disk/vm-102-disk-0,if=none,id=drive-ide0,format=raw,cache=none,aio=io_uring,detect-zeroes=on' -device 'ide-hd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100' -drive 'if=none,id=drive-ide2,media=cdrom,aio=io_uring' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=101' -machine 'type=pc+pve0' -fda /var/lib/vz/template/iso/msdos/disk01.img
回车执行,进入我们虚拟机的控制台,在 BIOS 引导画面出现时进入引导菜单,选择 Floppy [drive A]
进入qm系统管理器
进入 PVE 的 Shell,使用
qm monitor <vmid>
进入 qm 系统管理器root@truenas[~]# qm monitor 102
Entering QEMU Monitor for VM 102 - type 'help' for help
qm>查看设备树以查找软盘挂载点
指令:
info qtree
qm> info
bus: main-system-bus
type System
dev: ps2-mouse, id ""
gpio-out "" 1
dev: ps2-kbd, id ""
gpio-out "" 1
dev: hpet, id ""
gpio-in "" 2
gpio-out "" 1
gpio-out "sysbus-irq" 32
timers = 3 (0x3)
msi = false
hpet-intcap = 4 (0x4)
hpet-offset-saved = true
mmio 00000000fed00000/0000000000000400
dev: kvm-ioapic, id ""
......会生成许多行,耐心找到
floppy
字段,一般在 ISA 总线下的 floppy 总线,案例结果如下。dev: isa-fdc, id ""
iobase = 1008 (0x3f0)
irq = 6 (0x6)
dma = 2 (0x2)
fdtypeA = "auto"
fdtypeB = "auto"
fallback = "288"
bus: floppy-bus.0
type floppy-bus
dev: floppy, id ""
unit = 0 (0x0)
drive = "floppy0"
backend_defaults = "auto"
logical_block_size = 512 (512 B)
physical_block_size = 512 (512 B)
min_io_size = 0 (0 B)
opt_io_size = 0 (0 B)
discard_granularity = 4294967295 (4 GiB)
write-cache = "auto"
share-rw = false
account-invalid = "auto"
account-failed = "auto"
drive-type = "144"我们需要的字段位于设备下的驱动器名,即
drive = "floppy0"
,现在它挂载的内容为我们引导时-fda
参数后面的镜像,我们利用将其更改为系统安装时需要的另一个附加镜像。qm> change floppyID /path/to/file/another_file.img
对于案例,我们应当执行如下指令:
qm> change floppy0 /var/lib/vz/template/iso/msdos/disk02.img
该指令若执行正确无任何返回内容,我们直接返回系统,继续安装步骤即可,如此换盘完成。
完成安装
按照提示继续后续的安装步骤,重启并通过硬盘引导入 MS DOS。
TroubShooting
暂无,欢迎在评论区留言指出。
结语
MS DOS 还是很经典而且好玩滴,嘿嘿.
后续更新如何在 PVE 安装基于 macOS 开源内核的社区版本 PureDarwin 预览版系统的教程,欢迎收藏网站关注后续更新。