硬件: 旧笔记本电脑
系统环境:Debian 12 安装 QEMU KVM 虚拟机
镜像和教程来自恩山论坛
MikroTik-RouterOS-7.13永久L6授权 (支持各种ESXI PVE 2.5G i225 i226网卡直通)
【23-12-14新增Key】自己做最纯净的ROS 7.12.1 L6授权,随意升级, 不用担心有后门
下载的镜像里面也有使用说明,包含了大部分虚拟机系统,PVE,VMware, ESXI,unRaid,VirtualBox
我比较喜欢用QEMU KVM 的虚拟机就尝试折腾下能否安装成功带授权的以后也买个多网口小主机来折腾,安装期间也遇到不少坑,启动镜像后一直是没有授权的。也尝试QEMU套娃安装了PVE在按说明安装RouterOS,用PVE是能成功启动好带授权的。后面查阅外网的资料:https://forums.unraid.net/topic/139503-changing-the-harddrive-model-number-possible/
QEMU终于弄好启动后带授权了的。下面是过程。
1.创建虚拟机
我使用的 MikroTik-RouterOS-7.13永久L6授权 (支持各种ESXI PVE 2.5G i225 i226网卡直通) 这个镜像
下载解压出.vmdk
的镜像上传到 /var/lib/libvirt/images/
目录
在当前目录将镜像转换成.qcow2
格式
cd /var/lib/libvirt/images/
qemu-img convert -p -f vmdk -O qcow2 ROS7-6G-disk1.vmdk ROS7-6G-disk1.qcow2
输入virt-manager
打开虚拟机管理器创建虚拟机,选择刚才转换的镜像。
芯片组选择:Q35
因为在Virtual Machine Manager这个虚拟机管理器,Q35无法使用IDE总线类型启动会报错
所以磁盘总线选择 SATA 或者 SCSI
固件选择:OVMF
2.修改配置文件
在创建虚拟机界面,点击开始安装,确定能进入RouterOS系统登录界面后关机。
在 /etc/libvirt/qemu/
目录会生成对应的虚拟机.xml
配置文件,拖到本地进行修改。
1.修改头部
将下面的头部
<domain type='kvm'>
修改为
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
添加这个头部信息后,你可以在配置文件中使用一些特定于QEMU的选项,例如,可以通过<qemu:commandline>
元素来传递一些特定的QEMU命令行参数
2.添加磁盘序列号和别名
给磁盘添加 serial
序列号 和 alias
别名
<serial>00000000000000000001</serial>
<alias name='ua-mydisk'/>
下面是我添加后的示例,disk
块内就是磁盘信息
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/Router/ROS7-6G-disk1.qcow2'/>
<target dev='sda' bus='sata'/>
<serial>00000000000000000001</serial>
<alias name='ua-mydisk'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
这是一个在libvirt的XML配置文件中定义虚拟机磁盘的部分。下面是每个元素的解释:
<disk type='file' device='disk'>
:定义一个磁盘设备,其数据存储在一个文件中。
<driver name='qemu' type='qcow2'/>
:指定使用QEMU作为驱动程序,磁盘镜像的格式为QCOW2。
<source file='/var/lib/libvirt/images/Router/ROS7-6G-disk1.qcow2'/>
:指定磁盘镜像文件的路径。
<target dev='sda' bus='sata'/>
:在虚拟机中,该磁盘设备将被识别为SATA总线上的sda
设备。
<serial>00000000000000000001</serial>
:磁盘的序列号。
<alias name='ua-mydisk'/>
:设备的别名,这在libvirt的内部使用,可以用于更容易地识别设备。
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
:定义设备在虚拟机中的地址。这里,设备被连接到控制器0,总线0,目标0,单元0。
3.使用QEMU命名空间来覆盖磁盘配置
在配置文件尾部devices
和 domain
之间添加下面的参数
<qemu:override>
<qemu:device alias='ua-mydisk'>
<qemu:frontend>
<qemu:property name='model' type='string' value='VMware Virtual IDE Hard Drive'/>
</qemu:frontend>
</qemu:device>
</qemu:override>
这是一个在libvirt的XML配置文件中使用QEMU命名空间来覆盖设备配置的部分。下面是每个元素的解释:
<qemu:override>
:这个元素用于包含所有的设备覆盖配置。
<qemu:device alias='ua-mydisk'>
:这个元素定义了一个设备覆盖,alias
属性指定了要覆盖的设备的别名,这里是ua-mydisk
。
<qemu:frontend>
:这个元素用于包含设备的前端配置,也就是虚拟机看到的部分。
<qemu:property name='model' type='string' value='VMware Virtual IDE Hard Drive'/>
:这个元素定义了一个设备属性的覆盖。name
属性指定了要覆盖的属性的名称,这里是model
;type
属性指定了属性的类型,这里是string
;value
属性指定了属性的新值,这里是VMware Virtual IDE Hard Drive
。
总的来说,这个配置将ua-mydisk
设备的model
属性覆盖为VMware Virtual IDE Hard Drive
。这意味着在虚拟机中,这个设备将被识别为一个VMware的虚拟IDE硬盘驱动器。
4.上传修改后的配置
上传后在配置文件目录使用命令重新加载配置文件
virsh define 虚拟机名称.xml
执行后没有报错,启动虚拟机,显示带授权成功
之前一直尝试启动后没授权的原因是磁盘那里没有添加 alias 别名,所以磁盘那里的别名名称要和下面的qemu:override 配置中的qemu:device alias别名对上。
使用下面命令行启动虚拟机也可以启动带授权的
qemu-system-x86_64 \
-m 1024 \
-smp 2 \
-enable-kvm \
-drive if=none,id=disk00,format=qcow2,file=/var/lib/libvirt/images/Router/ROS7-6G-disk1.qcow2 \
-device "ide-hd,drive=disk00,bus=ide.0,serial=00000000000000000001,model=VMware Virtual IDE Hard Drive" \
-nic tap \
-bios /usr/share/OVMF/OVMF_CODE.fd
ROS 常用命令和帮助文档
ROS 常用命令
1、查看网卡接口: /interface print
2、给网口添加IP地址: /ip address add address=10.0.0.1/24 interface=ether1
3、移除接口IP地址: /ip address remove 0
4、重启系统: /system reboot
5、关闭系统: /system shutdown
6、恢复原始状态: /system reset-configuration no-defaults=yes skip-backup=yes
7、查看IP配置: /ip address print
8、查看授权: /system license print
官方帮助文档页面https://help.mikrotik.com/docs/display/ROS/
余松的博客http://www.irouteros.com/?page_id=186
RouterOS脚本生成器(测试)http://www.irouteros.com/?p=2448
RosZ云路由管理(内置部分脚本)https://rosz.cn/index.html
https://gitee.com/callmer/routeros_toss_notes/tree/master
参考:
https://forums.unraid.net/topic/139503-changing-the-harddrive-model-number-possible/
https://gist.github.com/ndunks/39bbf227f53fcaac5c1e7bf8fa53d930