这个后面涉及到授权,我估计是通过串口通信来传输授权信息的。

可以尝试提取它的内核内的驱动,来完善现有黑群晖。
或者通过串口注入的方式,来绕过授权,只不过这就超出了我的能力范围了。
总之,vdsm的串口root账户密码不是 空。

获取qcow2

1.创建vdsm
按照普通方式创建vdsm,是否开机无所谓,我试过使用免费授权,安装完系统后,再进行提取,直接进入了无授权的安装页面。
2.导出
导出
不要吐槽我的命名方式,我经常搞混啦
3.转换
使用解压软件打开ddsm.ova,可以发现一个ddsm.ovf与三个vmdk文件,直接解压到新的文件夹。
使用命令:

qemu-img convert -p -f vmdk -O qcow2 ddsm-disk3.vmdk ddsm-disk3.qcow2

将三个vmdk文件转化为qcow2格式,并用vscode打开ddsm.ovf查看下配置。

创建

可以使用原生qemu-img,也可以使用unraid,使用pc-i440fx的machine模式,bios引导,scsi硬盘模式即可,还可以使用virtio网卡,创建虚拟机。
然后使用virsh console ddsm进入调试串口,监控启动进度。
当然,启动正常,但如果安装最新的dsm7.0就提示需要有授权。
无授权

研究

直接开启

当使用dsm 6.2.4-25556 Update 2 synology_kvmx64_virtualdsm.pat进行安装时,会报损毁而非无法授权。
再次重启后就无法引导了,有点类似于将系统安装到引导盘内。
因此,可以尝试想办法只处理单个硬盘,而非将整个硬盘格掉。
选择硬盘
无法安装
引导丢失

硬盘分区

使用qemu-nbd进行挂载,如下所示:

nbd0      43:0    0    10G  0 disk 
├─nbd0p1  43:1    0  15.7M  0 part 
└─nbd0p2  43:2    0  94.1M  0 part 
nbd2      43:64   0    10G  0 disk 
├─nbd2p1  43:65   0   2.4G  0 part 
└─nbd2p2  43:66   0     2G  0 part 
nbd3      43:96   0   100G  0 disk 
└─nbd3p1  43:97   0   100G  0 part 

ddsm-disk2

root@ubuntu:/home/ubuntu/ddsm# mount /dev/nbd0p1 /mnt
root@ubuntu:/home/ubuntu/ddsm# ll /mnt
总用量 9310
drwxr-xr-x  3 root root    1024 3月   4  2021 ./
drwxr-xr-x 20 root root    4096 11月  9 15:12 ../
drwxr-xr-x  3 root root    1024 3月   4  2021 boot/
-rw-r--r--  1 root root      99 3月   4  2021 GRUB_VER
-rw-r--r--  1 root root 6136768 3月   4  2021 rd.gz
-rw-r--r--  1 root root 3349488 3月   4  2021 zImage
root@ubuntu:/home/ubuntu/ddsm# umount /mnt
root@ubuntu:/home/ubuntu/ddsm# mount /dev/nbd0p2 /mnt
root@ubuntu:/home/ubuntu/ddsm# ll /mnt
总用量 9401
drwxr-xr-x  2 root root    1024 12月  4 20:37 ./
drwxr-xr-x 20 root root    4096 11月  9 15:12 ../
-rw-r--r--  1 root root      87 12月  4 20:38 grub_cksum.syno
-rw-r--r--  1 root root 6162128 12月  4 20:38 rd.gz
-r--------  1 root root     512 12月  4 20:37 Sone.9
-rw-r--r--  1 root root   65536 3月   4  2021 vender
-rw-r--r--  1 root root 3349632 12月  4 20:38 zImage

ddsm-disk2

root@ubuntu:/home/ubuntu/ddsm# mount /dev/nbd2p1 /mnt
root@ubuntu:/home/ubuntu/ddsm# ll /mnt
总用量 88
drwxr-xr-x 21 root root 4096 12月  4 20:44 ./
drwxr-xr-x 20 root root 4096 11月  9 15:12 ../
lrwxrwxrwx  1 root root    7 3月   4  2021 bin -> usr/bin/
drwx------  2 root root 4096 12月  4 20:37 config/
drwxr-xr-x  3 root root 4096 3月   4  2021 dev/
drwxr-xr-x 44 root root 4096 12月  4 20:45 etc/
drwxr-xr-x 42 root root 4096 12月  4 20:42 etc.defaults/
drwxr-xr-x  2 root root 4096 3月   4  2021 initrd/
lrwxrwxrwx  1 root root    7 3月   4  2021 lib -> usr/lib/
lrwxrwxrwx  1 root root    9 3月   4  2021 lib32 -> usr/lib32/
lrwxrwxrwx  1 root root    7 3月   4  2021 lib64 -> usr/lib/
drwx------  2 root root 4096 3月   4  2021 lost+found/
drwxr-xr-x  2 root root 4096 3月   4  2021 mnt/
drwxr-xr-x  2 root root 4096 3月   4  2021 proc/
-rw-------  1 root root 1024 12月  4 20:36 .rnd
drwx------  3 root root 4096 12月  4 20:38 root/
drwxr-xr-x  8 root root 4096 12月  4 20:35 run/
lrwxrwxrwx  1 root root    8 3月   4  2021 sbin -> usr/sbin/
drwxr-xr-x  4 root root 4096 12月  4 20:38 .syno/
dr-xr-xr-x  2 root root 4096 3月   4  2021 sys/
drwxr-xr-x  2 root root 4096 12月  4 20:36 .system_info/
drwxrwxrwx  2 root root 4096 12月  4 20:40 tmp/
drwxr-xr-x  2 root root 4096 12月  4 20:38 tmpRoot/
drwxr-xr-x 10 root root 4096 3月   4  2021 usr/
drwxr-xr-x 15 root root 4096 12月  4 20:44 var/
drwxr-xr-x 13 root root 4096 3月   4  2021 var.defaults/
drwxrwxrwx  2 root root 4096 3月   4  2021 volume1/
root@ubuntu:/home/ubuntu/ddsm# umount /mnt
root@ubuntu:/home/ubuntu/ddsm# mount /dev/nbd2p2 /mnt
mount: /mnt: 未知的文件系统类型“swap”.

ddsm-disk3

root@ubuntu:/home/ubuntu/ddsm# mount /dev/nbd3p1 /mnt
root@ubuntu:/home/ubuntu/ddsm# ll /mnt
总用量 4
drwxr-xr-x  1 root   root    108 12月  4 20:44  ./
drwxr-xr-x 20 root   root   4096 11月  9 15:12  ../
drwxr-xr-x  1   1024 users    76 12月  4 20:41 '@database'/
drwxr-xr-x  1 root   root     24 12月  4 20:44 '@S2S'/
drwxr-xr-x  1 195341 195341   26 12月  4 20:44 '@SynoFinder-etc-volume'/
drwxr-xr-x  1 195341 195341   84 12月  4 20:44 '@SynoFinder-log'/
drwxrwxrwt  1 root   root     10 12月  4 20:43 '@tmp'/

总结

可以观察到这三块硬盘分别是:
引导盘、挂载点+swap、数据盘
和skynas类似,只不过在这里引导盘与挂载点分为两个硬盘,这两个硬盘为核心硬盘,而数据盘则被挂载到挂载硬盘上了。

可能需要和阿里云的skynas的破解方式一样进行破解,但我目前还没头绪。我就研究到这吧,看有没有大佬对这个有兴趣进一步研究。

尝试

将第一块硬盘改为USB引导,第二第三块依然是scsi后,部署界面就只有一块硬盘提示需要格式化了。然后进行部署,现在就不会报损毁而是卡40%了:

卡40%
卡40%

后面我一直无法解决卡40%这个问题,具体解决方法还希望大家一起来研究下。


补一个vdsm的原生配置:

ash-4.3# virsh dumpxml 11
<domain type='kvm' id='11' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>9a9dff46-b3e1-41c0-8003-1164badee095</name>
  <uuid>9a9dff46-b3e1-41c0-8003-1164badee095</uuid>
  <title>DSM instance: ddsm</title>
  <memory unit='KiB'>1048576</memory>
  <currentMemory unit='KiB'>1048576</currentMemory>
  <memoryBacking>
    <hugepages/>
    <locked/>
  </memoryBacking>
  <vcpu placement='static'>1</vcpu>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.2'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
    <hap/>
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='1' threads='1'/>
  </cpu>
  <clock offset='variable' adjustment='-4' basis='utc'>
    <timer name='rtc' tickpolicy='catchup' track='guest'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/local/bin/qemu-system-x86_64</emulator>
    <controller type='usb' index='0' model='piix3-uhci'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pci-root'>
      <alias name='pci.0'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </controller>
    <interface type='ethernet'>
      <mac address='02:11:32:23:76:dd'/>
      <script path='no'/>
      <target dev='tap0211322376dd'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/35'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/35'>
      <source path='/dev/pts/35'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/tmp/synohostvmcomm/guest_interface/9a9dff46-b3e1-41c0-8003-1164badee095'/>
      <target type='virtio' name='vchannel' state='disconnected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='vhost-scsi-pci,wwpn=naa.4ab233f4-33c3-410b-b419-55a1d26629f0,addr=0xa,id=vdisk_4ab233f4-33c3-410b-b419-55a1d26629f0,set_driverok=off,max_sectors=16384,boot_tpgt=1,bootindex=1'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vhost-scsi-pci,wwpn=naa.42ad3b88-f963-4551-b15a-7b7706f0bb14,addr=0xb,id=vdisk_42ad3b88-f963-4551-b15a-7b7706f0bb14,set_driverok=off,max_sectors=16384,boot_tpgt=1,bootindex=2'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='vhost-scsi-pci,wwpn=naa.c312c6fd-25c4-4dd2-a4b3-63d7a44a0d21,addr=0xc,id=vdisk_c312c6fd-25c4-4dd2-a4b3-63d7a44a0d21,set_driverok=off,max_sectors=16384,boot_tpgt=1,bootindex=3'/>
  </qemu:commandline>
</domain>
最后修改:2021 年 12 月 05 日
如果觉得我的文章对你有用,请随意赞赏