• 那是云首页
  • 快捷导航
  • 更多
    设为首页收藏本站
  • |

#楼主# 2026-1-12 01:58

跳转到指定楼层
提示: 该帖被管理员或版主屏蔽
最自然的一种表达方式,即是不写赞赏语,红色赞赏按钮就在那,大家懂的。

1人打赏

那是云论坛 - 国内知名的NAS交流平台
http://www.nasyun.com
分享淘帖
回复 印象

使用道具

16

精华

263

回帖

1000万

积分

技术达人

Rank: 6Rank: 6

云币
530
贡献
988
活跃
10000998
精华
16

NAS发烧友技术达人编辑能手突出贡献活跃会员

QQ
f541883216 发表于 2026-1-12 01:59 来自 加拿大

绿联UGOS Pro系统NAS的启动盘结构刨析


第四节
绿联UGOS Pro系统NAS的启动盘结构刨析

在第一节的UGOS回顾中,我们已经了解了UGOS系统的启动盘结构是由六个分区组成的。介绍UGOS系统回顾的时候,其实我已经顺便也对比讲了一下UGOSPro系统的启动盘结构。它是由七个分区组成。我破解的UGOSPro系统启动盘结构,我使用lsblk命令列出结果如下:

root@DX4600-C3A9:~# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   1G  0 disk
└─sda1        8:1    0 1023M 0 part
sdb           8:16   0  32G  0 disk
sdb1        8:17   0 15.3G 0 part
└─sdb2        8:18   0 16.7G 0 part
mmcblk0     179:0    0  16G  0 disk
mmcblk0p1 179:1    0  256M  0part /boot
mmcblk0p2 179:2    0    2G  0part /rom
mmcblk0p3 179:3    0   10M  0part /mnt/factory
mmcblk0p4 179:4    0    2G  0part
mmcblk0p5 179:5    0    2G  0part
mmcblk0p6 179:6    0    4G  0part /ugreen
└─mmcblk0p7 179:7    0  4.7G  0part /overlay
root@DX4600-C3A9:~#

我破解的机型是DX4600这个型号。其实绿联官方提供的ISO镜像,是可以适合第二节中列出的所有机型的。那么我为什么要用DX4600这个型号呢?原因很简单,我已经有了一个几年前破解的UGOS系统,给该系统破解升级为UGOSPro系统对我来说比较方便。不用再去找其它型号的有关绿联硬件的(sn)设备序列号等等信息了。

对比第一节讲解的关于QEMU虚拟模拟emmc/ssd盘,我这次仍然是为QEMU虚拟机创建如下的三个盘:

qemu-img create -f qcow2 UGOSPRO_BIOS_BOOT-1895.qcow21G
qemu-img create -f qcow2 UGOSPRO_SD.qcow2 16G
qemu-img create -f qcow2 UGOSPRO_DATA.qcow2 32G

其中:
/dev/sda1G辅助的启动盘。它只有一个分区,我把它做成BIOS  legacy_boot启动盘。
/dev/sdb32G数据盘。它有两个分区,绿联的数据盘都是两个分区的结构。
/dev/mmcblk0 16GUGOSPro系统SD卡启动盘。它是QEMU虚拟机的mmcblk0设备

注意:有些绿联硬件,使用的是nvmeXn1启动盘,例如:DXP6800 Pro硬件设备。

再看它的结构:
/dev/mmcblk0p1分区为256Mvfat格式分区内容为UEFI启动文件。启动后挂载到系统的/boot目录。
/dev/mmcblk0p2分区为2Gsquashfs 格式分区,内容为根文件系统。启动后挂载到系统的/rom目录。
/dev/mmcblk0p3分区为10Mext4 格式分区,内容为设备激活文件。启动后挂载到系统的/mnt/factory目录。
/dev/mmcblk0p4分区为2Gext4 格式分区,内容为空。启动后不挂载,备用。
/dev/mmcblk0p5分区为2Gext4 格式分区,内容为空。启动后不挂载,备用。
/dev/mmcblk0p6分区为4Gext4 格式分区,内容为绿联的应用服务程序包。启动后挂载到系统的/ugreen目录。
/dev/mmcblk0p7分区为4.7Gext4 格式overlay分区启动后挂载到系统的/overlay目录。

从启动盘结构看,UGOS Pro系统启动盘由三大部分组成,第一分区的UEFI启动文件,第二分区的squashfs根文件系统,和第六分区的绿联的应用服务程序包。只要能够破解/破译 UGOSPRO_INSTALL_1.0.0.1895.img文件获得这些东西。就能够破解UGOSPro系统了。

至于第三分区的设备激活文件,我可以使用以前的UGOS系统中已有的文件。第七分区的/overlay的内容,系统会随着启动,运行,自动生成和改变调整的。

接下来,就让我们继续破解/破译UGOSPRO_INSTALL_1.0.0.1895.img吧。

第五节
破解/破译UGOSPRO_INSTALL_1.0.0.1895.img文件

首先来查看UGOSPRO_INSTALL_1.0.0.1895.img的类型。依然使用file命令:

root@J1900-Ubuntu18:~/UGREEN$file UGOSPRO_INSTALL_1.0.0.1895.img
UGOSPRO_INSTALL_1.0.0.1895.img: gzip compressed data, from Unix

结果令人振奋,它是一个gzip compressed 的数据文件。根据以往的经验,猜想它是一个压缩的tar包。直接改名UGOSPRO_INSTALL_1.0.0.1895.tgz处理看看。

root@J1900-Ubuntu18:~/UGREEN$tar -tvf UGOSPRO_INSTALL_1.0.0.1895.tgz
-rw-r--r-- 0/0        42775617 2024-11-29 05:10ugospro-x86-64-usb-bios-squashfs-efi.img.gz
-rw-r----- 0/0       750682112 2024-11-28 00:49ugospro-rootfs.squashfs
-rw-r--r-- 0/0       428230296 2024-11-28 00:39 ugreen.bz2
-rw-r--r-- 0/0              49 2024-11-28 00:47 version.txt
-rw-r--r-- 0/0              33 2024-11-29 05:10 boot.md5sum
-rw-r--r-- 0/0              33 2024-11-29 05:10 rootfs.md5sum
-rw-r--r-- 0/0              33 2024-11-29 05:10 ugreen.md5sum
-rw-r----- 0/0               8 2024-11-28 00:49 rootfs.count

猜想正确!成功。

这里面有三个主要的大文件:(看来与我们上一节讲的启动盘结构是吻合的)
1.      ugospro-x86-64-usb-bios-squashfs-efi.img.gz
2.      ugospro-rootfs.squashfs
3.      ugreen.bz2

先来分析ugospro-x86-64-usb-bios-squashfs-efi.img.gz这个文件。它的文件名有点奇怪,可能隐含一些内部技术人员约定的信息。不用去管文件名了,先用gunzip解压该文件得到:ugospro-x86-64-usb-bios-squashfs-efi.img文件,再用file命令查看文件类型。

root@J1900-Ubuntu18:~/UGREEN$file ugospro-x86-64-usb-bios-squashfs-efi.img
ugospro-x86-64-usb-bios-squashfs-efi.img: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS(0x126,230,59), startsector 1, 4719135 sectors, extended partition table (last)

这也是一个DOS/MBR的磁盘镜像文件。显然,可以断定这个文件的内容就应当是第一分区的UEFI启动分区中的文件。

再来分析ugospro-rootfs.squashfs这个文件。从文件名可以非常明显地看出来,ugospro-rootfs.squashfs文件应当是第二分区的”squashfs”格式的根文件系统。

第三个文件ugreen.bz2是什么呢?我猜想它只能是第六分区的绿联的应用服务程序包了。附加名bz2显然是个压缩文件,解压一下看看?咦,不能用bz2工具解压。用file命令查一下吧:

root@J1900-Ubuntu18:~/UGREEN$file ugreen.bz2
ugreen.bz2: XZcompressed data

噢,这个文件其实是:XZ compressed data 格式的压缩文件啊。改名:ugreen.bz2ugreen.xz。猜想它也是一个压缩的tar

tar –tvf命令看看内容:

root@J1900-Ubuntu18:~/UGREEN$tar -tvf ugreen.xz
… [内容太多,删去一些无关紧要的部分]
drwxr-xr-xroot/root         0 2024-11-20 22:42./@appstore/
drwxr-xr-xroot/root         0 2024-11-28 00:30./wallpaper/
… [内容太多,删去一些无关紧要的部分]
drwxr-xr-xroot/root         0 2024-11-28 00:36./@cache/
-rw-r--r--root/root  59656498 2024-11-28 00:33./@cache/13_amd64_com.ugreen.thumb.upk
-rw-r--r--root/root   8516940 2024-11-28 00:33./@cache/12_amd64_com.ugreen.helpmgr.upk
-rw-r--r--root/root   7978434 2024-11-28 00:31./@cache/07_amd64_com.ugreen.appmgr.upk
-rw-r--r--root/root   8894109 2024-11-28 00:32./@cache/10_amd64_com.ugreen.taskmgr.upk
-rw-r--r--root/root   9853542 2024-11-28 00:32./@cache/11_amd64_com.ugreen.globalsearch.upk
-rw-r--r--root/root  33786572 2024-11-28 00:31./@cache/04_amd64_com.ugreen.desktop.upk
-rw-r--r--root/root   8297133 2024-11-28 00:30./@cache/02_amd64_com.ugreen.logmgr.upk
-rw-r--r--root/root   7261427 2024-11-28 00:32./@cache/09_amd64_com.ugreen.ctlmgr.index.upk
-rw-r--r--root/root  17014972 2024-11-28 00:32./@cache/08_amd64_com.ugreen.storagemgr.upk
-rw-r--r--root/root   5277161 2024-11-28 00:31./@cache/05_amd64_com.ugreen.wizard.upk
-rw-r--r--root/root 106449228 2024-11-28 00:34 ./@cache/01_amd64_com.ugreen.player.upk
-rw-r--r--root/root  83799861 2024-11-28 00:36./@cache/14_amd64_com.ugreen.transcode.upk
-rw-r--r--root/root  42264534 2024-11-28 00:32./@cache/03_amd64_com.ugreen.ctlmgr.upk
-rw-r--r--root/root  14812531 2024-11-28 00:31./@cache/06_amd64_com.ugreen.filemgr.upk
… [内容太多,删去一些无关紧要的部分]

这个文件从内容上看,应该是启动盘第六分区"UGREEN-SERVICE"的内容。在/@cache目录中的.upk文件是绿联的应用服务程序包。官方提供的ISO镜像中,仅仅含有最基础的14个应用服务程序包。这些upk包肯定是绿联自定义的格式,从文件附加名的命名可以认为是ugreenpackge的缩写upk吧。

下一步,就是如何制作UGOS Pro系统启动盘了。

现在我们也看到了,在ISO镜像中,没有包含用于第三分区的设备激活文件。

用破译获得的文件制作UGOS Pro系统启动盘可以有很多方法,也没有什么技术含量。大家可以使用自己熟悉的技术来制作。在下一节中讲的内容,是为小白们准备的。是众多方法之中的一种,仅供大家参考而已。并不是需要一定按我的方法,和我使用的工具来做启动盘哦。


第六节
制作UGOSPro系统启动盘

为了制作供QEMU虚拟机用的启动盘,也就是说前文提到的:UGOSPRO_BIOS_BOOT-1895. qcow2辅助的启动盘和UGOSPRO_SD.qcow2绿联UGOS Pro系统SD卡盘。让我们先使用QEMU提供的qemu-img工具创建三个空盘。

qemu-img create -f qcow2UGOSPRO_BIOS_BOOT-1895.qcow2 1G    [创建磁盘]
qemu-img create -f qcow2 UGOSPRO_SD.qcow2 16G              [创建磁盘]
qemu-img create -f qcow2 UGOSPRO_DATA.qcow2 32G            [创建磁盘]

第一步,对前两个空盘进行分区。,数据盘UGOSPRO_DATA.qcow2不用分区,以后安装系统时,绿联系统会给它分区的。我还是用我的老办法SystemRescueCD这个linux系统救援的iso映像,用如下简单脚本启动救援系统来给这两个盘做分区。当然,也顺便给UGOSPRO_BIOS_BOOT-1895.qcow2做成grub的启动盘。

sudo qemu-system-x86_64 -enable-kvm \
-machine pc-i440fx-bionic,accel=kvm,usb=off,vmport=off,dump-guest-core=off\
-name guest=UGOSPro_Bootdisk_Creat,debug-threads=on\
-cpu Nehalem-IBRS \
-m 2048 \
-boot d \
-cdrom ./systemrescuecd-x86-4.9.0.iso \
-hda ./UGOSPRO_BIOS_BOOT-1895.qcow2 \
-hdb ./UGOSPRO_SD.qcow2
我使用fdisk工具来分区。例如:fdisk /dev/sda。然后,输入o(创建dos分区表),再输入n,根据提示输入回车,最后输入w写盘完成对UGOSPRO_BIOS_BOOT-1895.qcow2的分区。请看截图:
003.jpg

后来想了一下,这个盘其实不应该创建dos分区表,也应该创建gpt分区表。已经这样做了,懒得再改,反正都是可以用的。你做的时候,建议创建gpt分区表。
UGOSPRO_SD.qcow2的分区也差不多。不过这次的命令是fdisk /dev/sdb。然后,输入g(创建gpt分区表),然后请看截图:
004.jpg

因为这次要做七个分区,命令一步一步地做,截图太长了。上面就截了到第三个分区,下面再继续截图直到输入w命令写盘就完成了:
005.jpg

lsblk查看一下:
006.jpg

两个盘的分区处理就完成了。顺便把UGOSPRO_BIOS_BOOT-1895.qcow2做成grub的启动盘。使用的命令也很简单,用mkfs.ext4 /dev/sda1先格式化分区。再把这个分区挂载到/mnt/floppy目录。
再执行命令:grub2-install--boot-directory=/mnt/floppy /dev/sda 就可以了。请看如下截图:
007.jpg

第二步,使用如下命令,格式化UGOSPRO_SD.qcow2磁盘的分区。第二分区因为是squashfs格式的根文件系统,所以不用格式化。命令非常简单,就不截图了。

mkfs.vfat -F 16 -n "kernel" /dev/sdb1           [格式化磁盘]
mkfs.ext4 -L "factory" /dev/sdb3                [格式化磁盘]
mkfs.ext4 -L "rootfs2" /dev/sdb4                [格式化磁盘]
mkfs.ext4 -L "reserved" /dev/sdb5               [格式化磁盘]
mkfs.ext4 -L "UGREEN-SERVICE" /dev/sdb6         [格式化磁盘]
mkfs.ext4 -L "USER-DATA" /dev/sdb7              [格式化磁盘]

做完这一步,我们需要暂时shutdown虚拟机,为下一步的操作做准备。
接下来我们要把破解/破译的文件按照绿联UGOS Pro系统启动盘的结构,安放到对应地分区中。

第三步,让我们来解决第一分区的这个ugospro-x86-64-usb-bios-squashfs-efi.img文件。

根据第四节的破解/破译分析,这是一个DOS/MBR的磁盘镜像文件。因此不能用简单的拷贝命令来处理。怎么办呢?

因为这是一个DOS/MBR的磁盘镜像文件,在绿联做映像的时候,我们并不知道它的实际映像寸。因此我用一个足够大像寸的临时盘来恢复这个映像文件。以免使用dd命令时失败。这个盘如果不够大,会出现不可预见的问题。我将暂时利用32G的已经创建数据盘UGOSPRO_DATA.qcow2充当临时盘的角色。

另外由于我使用简单的QEMU脚本启动SystemRescueCD这个linux系统救援系统,简单脚本只能支持两个盘,所有这次我把-hda./UGOSPRO_BIOS_BOOT-1895.qcow2的辅助启动盘暂时拿掉,换成了-hda ./UGOSPRO_DATA.qcow2数据盘。脚本如下:

sudo qemu-system-x86_64 -enable-kvm \
-machine pc-i440fx-bionic,accel=kvm,usb=off,vmport=off,dump-guest-core=off\
-name guest=UGOSPro_Bootdisk_Creat,debug-threads=on\
-cpu Nehalem-IBRS \
-m 2048 \
-boot d \
-cdrom ./systemrescuecd-x86-4.9.0.iso \
-hda ./UGOSPRO_DATA.qcow2\
-hdb ./UGOSPRO_SD.qcow2

重新启动救援系统后,我先把ugospro-x86-64-usb-bios-squashfs-efi.img文件上传到UGOSPRO_SD.qcow2盘的第七分区/dev/sdb7分区中。当然要先挂载第七分区/dev/sdb7/mnt/custom目录,然后再上传文件。用完之后,还要删掉它。做临时盘角色的UGOSPRO_DATA.qcow2也要清除残余数据。最好是删除重新创建。

这里还要说明一下,因为简单脚本启动的救援系统,网络是NAT用户模式的。上传文件时只能从虚拟机侧使用scp 命令来抓取宿主机的文件。虚拟机的IP固定为10.0.2.15,宿主机IP固定为10.0.2.2。抓取宿主机文件的命令:
mount /dev/sdb7 /mnt/custom                                                    [挂载分区]
cd /mnt/custom                                                                           [切换目录]
scp root@10.0.2.2:/root/UGREEN/ugospro-x86-64-usb-bios-squashfs-efi.img./        [上传文件]

因为文件比较大,建议抓取后用MD5验证一下是否与主机一致。
md5sumugospro-x86-64-usb-bios-squashfs-efi.img        [MD5验证]
208606cefb4d99601d34088bf2081c46  ugospro-x86-64-usb-bios-squashfs-efi.img
再用dd命令把它复制到临时盘。
ddif=ugospro-x86-64-usb-bios-squashfs-efi.img of=/dev/sda bs=1M
然后可以用fdisk–l /dev/sda检查一下。其结果如下:
root@sysresccd /mnt/custom %fdisk -l /dev/sda
GPT PMBR size mismatch(4719135 != 33554431) will be corrected by w(rite).
The backup GPT table iscorrupt, but the primary appears OK, so that will be used.
Disk /dev/sda: 16 GiB,17179869184 bytes, 33554432 sectors
Units: sectors of 1 * 512 = 512bytes
Sector size (logical/physical):512 bytes / 512 bytes
I/O size (minimum/optimal): 512bytes / 512 bytes
Disklabel type: gpt
Disk identifier:99009E79-D999-A659-32E5-993BFB698A00
Device       Start    End Sectors  Size Type
/dev/sda1      512 524799  524288  256M Linux filesystem
/dev/sda2   524800 4719103 4194304    2G Linux filesystem
/dev/sda128     34    511     478  239K BIOS boot
Partition table entries are notin disk order.
这次我给大家一个截图吧:
截图中可以看到,fdisk检查时发现ugospro-x86-64-usb-bios-squashfs-efi.img有些错误,不过我们可以忽略这些错误。并不影响我们获得第一分区的文件。
008.jpg

做完上述复制后。现在可以删去ugospro-x86-64-usb-bios-squashfs-efi.img文件了。还要卸载/dev/sdb7分区。

cd                      [离开挂载的目录]
umount  /dev/sdb7          [才能卸载的分区]

接下来,我会挂载临时盘的第一分区/dev/sda1到/mnt/floppy目录。挂载UGOSPRO_SD.qcow2盘的第一分区/dev/sdb1到/mnt/custom目录。准备拷贝该分区的内容。

mount /dev/sda1 /mnt/floppy     [挂载分区]
mount /dev/sdb1 /mnt/custom     [挂载分区]

拷贝临时盘第一分区的所有文件到UGOSPRO_SD.qcow2盘的第一分区。使用如下命令:

cp -a /mnt/floppy/. /mnt/custom/      [拷贝文件]

复制完第一分区的文件后,临时盘的使命就完成了。可以卸载临时盘的第一分区了。

umount  /dev/sda1               [卸载分区]

但现在还要一件非常重要的事情必须做。就是要根据UGOSPRO_SD.qcow2盘的第一分区中/EFI/debian/grub.cfg 的启动配置文件中的partuuid来修正第二分区的partuuid。因为我们创建的UGOSPRO_SD.qcow2盘第二分区的uuid是随机产生的,与grub.cfg配置文件中硬编码的uuid肯定不一致,不修改的话,启动时会找不到第二分区的” squashfs”格式的根文件系统。

查一下UGOSPRO_SD.qcow2盘第二分区的partuuid。使用命令:

root@sysresccd /root % blkid /dev/sdb2
/dev/sdb2: PARTUUID="2a2d42cc-b547-431b-9ed6-9a4a2712accb"

再查一下grub.cfg文件配置的根文件系统的partuuid。顺便也编辑修改grub.cfg文件。使用vi命令。顺便修改一下输出控制台的定位,把tty0改为ttyS0,115200n8串行口。以便以后跟踪启动输出信息。我使用vi命令:

vi /mnt/custom/EFI/debian/grub.cfg        [编辑修改]

编辑修改后grub.cfg配置文件是如下样子滴:

set default="0"
set timeout="2"

menuentry "UGOSPRO-NAS"{
        linux /boot/vmlinuz root=PARTUUID=99009e79-d999-a659-32e5-993bfb698a02 rootwait console=ttyS0,115200n8overlay=/dev/mmcblk0p7 overlayfs=ext4 net.ifnames=0 biosdevname=0
                echo    'Loading initial ramdisk ...'
                initrd  /boot/initrd.img
}

我们需要做的是,要把UGOSPRO_SD.qcow2盘第二分区的partuuid="2a2d42cc-b547-431b-9ed6-9a4a2712accb"改成:partuuid="99009e79-d999-a659-32e5-993bfb698a02"才可以。

这次我们需要使用gdisk命令来修改PARTUUID:

gdisk /dev/sdb          [输入gdisk /dev/sdb,按回车键]

GPT fdisk (gdisk) version 1.0.1
Partition table scan:
  MBR: protective
  BSD: notpresent
  APM: notpresent
  GPT: present

Found valid GPT with protective MBR; using GPT.
Command (? for help): x            [输入x,按回车键]
Expert command (? for help): c      [输入c,按回车键]
Partition number (1-7): 2          [输入2,按回车键]
Enter the partition's new unique GUID ('R' torandomize): 99009e79-d999-a659-32e5-993bfb698a02                        [输入新的uuid,按回车键]
New GUID is 99009E79-D999-A659-32E5-993BFB698A02

Expert command (? for help): m      [输入m,按回车键]
Command (? for help): w            [输入w,按回车键]
Final checks complete. About to write GPT data.THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y    [输入y,按回车键]
OK; writing new GUID partition table (GPT) to/dev/sdb.
Warning: The kernel is still using the oldpartition table.
The new table will be used at the next reboot orafter you
run partprobe(8) or kpartx(8)
The operation has completed successfully.

可以用blkid命令检查一下,如果正确,然后就可以卸载UGOSPRO_SD.qcow2的第一分区了。

umount  /dev/sdb1         [卸载分区]

到此为止,破解绿联UGOSPro系统的第一分区文件的复制改造工作全部完成了。

我们又要暂时shutdown虚拟机。恢复使用第一步的QEMU脚本启动SystemRescueCD这个linux系统救援系统。使用该脚本再次启动虚拟机。

继续解决,UGOSPRO_BIOS_BOOT-1895. qcow2辅助的启动盘,UGOSPRO_SD.qcow2的第二分区的”squashfs”格式的根文件系统复制,和UGOSPRO_SD.qcow2的第六分区绿联的应用服务程序包文件复制的问题了。

第四步,继续完成UGOSPRO_BIOS_BOOT-1895. qcow2辅助启动盘的制作。

在第一步中我们已经完成了辅助的启动盘的分区,和grub启动盘安装。我们还需要从UGOSPRO_SD.qcow2的第一分区了拷贝一些必要文件到辅助启动盘。其实就是三个文件而已。为了拷贝文件,先要挂载各自的第一分区。还是老样子吧,这次辅助启动盘的第一分区/dev/sda1到/mnt/floppy目录。挂载UGOSPRO_SD.qcow2盘的第一分区/dev/sdb1到/mnt/custom目录。

mount /dev/sda1 /mnt/floppy       [挂载分区]
mount /dev/sdb1 /mnt/custom       [挂载分区]

拷贝grub.cfg文件到辅助启动盘。命令如下:

cp/mnt/custom/EFI/debian/grub.cfg /mnt/floppy/grub/ [拷贝文件]

拷贝/boot/目录和它里面的initrd.img,vmlinuz两个文件到辅助启动盘。命令如下:

cp -r/mnt/custom/boot /mnt/floppy/    [拷贝文件]

好了,辅助启动盘的制作就完成了。可以卸载辅助启动盘的分区了。同时也卸载UGOSPRO_SD.qcow2盘的第一分区。

umount  /dev/sda1        [卸载分区]
umount  /dev/sdb1        [卸载分区]

第五步,UGOSPRO_SD.qcow2的第二分区的”squashfs”格式的根文件系统的复制

让我们再次利用UGOSPRO_SD.qcow2盘的第七分区/dev/sdb7分区做为临时存放文件的地方。与前面讲的一样,先要挂载这个分区到/mnt/custom目录。再上传”squashfs”格式的根文件系统ugospro-rootfs.squashfs文件。这个文件比较大,上传后最好用MD5验证一下是否与主机的文件一致。以免制作启动盘不成功。使用的命令大致如下:

挂载分区
mount /dev/sdb7 /mnt/custom                     [挂载分区]
上传文件
cd /mnt/custom                              [切换目录]
scp root@10.0.2.2:/root/UGREEN/ugospro-rootfs.squashfs./   [上传文件]
检验文件
md5sum ugospro-rootfs.squashfs[MD5验证]
a79e582722f5d186a7153383d61efc0e  ugospro-rootfs.squashfs

接着使用dd命令把它复制到UGOSPRO_SD.qcow2盘的第二分区,使用dd命令复制不需要挂载分区。

root@sysresccd /mnt/custom % ddif=ugospro-rootfs.squashfs of=/dev/sdb2 bs=1M
715+1 records in
715+1 records out
750682112 bytes (751 MB) copied,6.83664 s, 110 MB/s

把它挂载到/mnt/floppy检查一下吧:

root@sysresccd /mnt/custom % mount /dev/sdb2/mnt/floppy  [挂载分区]
root@sysresccd /mnt/custom % ls /mnt/floppy
bin etc   lib    lib64  media  opt      proc run   srv  tmp    usr
dev home  lib32  libx32 mnt    overlay  root sbin  sys  ugreen var

可以看到,已经成功复制了绿联的” squashfs”格式的根文件系统。删除上传的ugospro-rootfs.squashfs文件。我们就可以卸载相关的挂载分区了。

rm /mnt/custom/ugospro-rootfs.squashfs     [删除文件]
umount  /dev/sdb2                 [卸载分区]
umount  /dev/ sdb7                [卸载分区]

第六步,UGOSPRO_SD.qcow2的第六分区绿联的应用服务程序包文件复制

我们还是要次利用UGOSPRO_SD.qcow2盘的第七分区/dev/sdb7分区做为临时存放文件的地方。与前面讲的一样,先要挂载这个分区到/mnt/custom目录。再上传破译UGOSPRO_INSTALL_1.0.0.1895.img获得的ugreen.bz2文件,我已经把它改名为ugreen.xz了。使用的命令大致如下:

挂载分区
mount /dev/sdb7 /mnt/custom            [挂载分区]
上传文件
scp root@10.0.2.2:/root/UGREEN/ugreen.xz ./  [上传文件]

接下来,挂载UGOSPRO_SD.qcow2盘的第六分区/dev/sdb6/mnt/floppy目录。解压ugreen.xz文件到第六分区。使用的命令大致如下:

mount /dev/sdb6 /mnt/floppy    [挂载分区]
cd /mnt/floppy            [切换目录]
tar –xvf /mnt/custom/ugreen.xz  [解压文件]

查看一下吧:

root@sysresccd /mnt/floppy % ls -l
total 36
drwxr-xr-x 2 root root 4096 Nov 21  2024 @appstore
drwxr-xr-x 2 root root 4096 Nov 28  2024 @cache
drwxr-xr-x 2 root root 4096 Nov 21  2024 avatar
drwxr-xr-x 4 root root 4096 Nov 21  2024 factory
drwxr-xr-x 2 root root 4096 Nov 21  2024 language
drwxr-xr-x 3 root root 4096 Nov 28  2024 ssl
drwxr-xr-x 5 root root 4096 Nov 21  2024 static
drwxr-xr-x 2 root root 4096 Nov 28  2024 wallpaper
drwxr-xr-x 2 root root 4096 Nov 21  2024 www

做完后,第六分区就完成了。删除上传的文件。卸载相关的挂载分区。使用的命令大致如下:

rm /mnt/custom/ugreen.xz    [删除文件]
cd                  [切换目录]
umount  /dev/sdb6       [卸载分区]
umount  /dev/sdb7       [卸载分区]

第七步,UGOSPRO_SD.qcow2的第三分区中需要复制的文件

这个分区是一个很小的分区,主要用于存放一些绿联的私密授权文件。其实就一个factory.tar包。还有跟文件系统的md5校验等等。

这个factory.tar包的内容是这个样子滴,截图如下:
009.jpg

可以看出,里面都是私密的敏感信息。

第三分区还需要有rootfs根文件系统的校验文件,在第四节破解/破译的 UGOSPRO_INSTALL_1.0.0.1895.img文件中是包含的。两个文件rootfs.md5sum和rootfs.count。我们需要把这两个文件上传到第三分区里。rootfs.md5sum很容易理解如何计算出来。那么这个rootfs.count是如何计算出来的呢?读了一下程序,发现它的算法也很简单。就是:rootfs.count = sizeof(ugospro-rootfs.squashfs)/512。

挂载分区
mount /dev/sdb3 /mnt/custom              [挂载分区]
上传文件
cd /mnt/custom                       [切换目录]
scp root@10.0.2.2:/root/UGREEN/rootfs.md5sum ./  [上传文件]
scp root@10.0.2.2:/root/UGREEN/rootfs.count ./  [上传文件]
卸载分区
cd                        [切换目录]
umount /dev/sdb3               [卸载分区]

至于factory.tar这个文件吗,如果你有的话,是需要上传的。我使用的是2022年破解UGOS时的旧版本的factory.tar认证文件。它还是可以用作破解UGOSPRO的认证文件。

如果没有,启动盘也是可以启动的。但是通过Web界面进行系统初始化的时候,就会出错了。请看我做实验得到的截图:
010.jpg

但这并不表示制作的启动盘有问题。你可以保留着启动盘,等到找到一个factory.tar认证文件,把它上传到第三分区中,启动盘就能正常进行绿联UGOSPRO系统的初始化了。

后来我又仔细分析了factory.tar认证文件。发现,其实它是旧的UGOS版本的遗留物。虽然在UGOSPro系统中还会检查它的存在,但对它的内容检查已经退化了。如果你实在找不到factory.tar文件,不妨可以自行制作一个假的试试。

到此为止,我们的UGOSPRO_BIOS_BOOT-1895. qcow2辅助的启动盘和UGOSPRO_SD.qcow2绿联UGOS Pro系统SD卡盘就制作完成了。

其实,在真正使用自制的绿联UGOS Pro系统启动盘之前,还有一个可做,可不做的小窍门。
如果你非常自信,可不做这个小窍门。

绿联系统在启动过程中,如果出现致命错误,就会进入“emergency mode”模式。这是绿联开发人员留的调试接口。会在控制台提示出如下信息:

You are inemergency mode. After logging in, type "journalctl -xb" to view
system logs,"systemctl reboot" to reboot, "systemctl default" or"exit"
to boot intodefault mode.
Give root passwordfor maintenance
(or press Control-Dto continue):

当发生这种情况时,启动肯定是不能继续下去了。如果你想用工具“journalctl -xb" to view
system logs”查看,就需要“Give root password for maintenance”账号的密码。而root密码我们是不可能知道的。怎么办呢?只能是修改根文件系统中/etc目录中的shadow文件。绿联的根文系统是只读的”squashfs”格式根文件系统。但我们可以通过启动盘overlay分区,来修改它。在最初始时,启动盘的overlay分区是空的。我们需要把它挂载,和以前一样,把它挂载到/mnt/custom目录。这个修改与直接修改根文件系统中文件稍有不同。我们要先创建一个upper的目录,再创建etc子目录,然后,把根文件系统的shadow文件拷贝过来,在修改。使用的命令大致如下:

挂载分区
mount /dev/sdb2 /mnt/floppy      [挂载分区]
mount /dev/sdb7 /mnt/custom      [挂载分区]
创建目录
cd /mnt/custom              [切换目录]
mkdir upper               [创建目录]
cd upper                   [切换目录]
mkdir etc                 [创建目录]
拷贝文件
cd /mnt/custom/upper/etc       [切换目录]
cp /mnt/floppy/etc/shadow ./     [复制文件]
使用vi编辑shadow文件,将root后面用::隔开的第一节中的密码改为如下密码:
: $1$abc$BxiGbxY.yOmCDbNurq3SH0: [=== > ugreen]
以上的密文字符串代表密码为:ugreen 改好后,存盘即可。
卸载分区
cd                   [切换目录]
umount /dev/sdb2          [卸载分区]
umount /dev/sdb7          [卸载分区]

这样的修改,使得进入“emergency mode”模式时,你可以查看和调试。来启动一下试试吧。祝大家好运!

由于NASYUN的篇幅限制,请看楼下,第七节 【使用破解的UGOS Pro系统启动盘】,精彩继续!

点评

提示: 该帖被管理员或版主屏蔽  详情 回复 发表于 2026-1-17 10:32
回复 支持 反对 印象

使用道具 举报

16

精华

263

回帖

1000万

积分

技术达人

Rank: 6Rank: 6

云币
530
贡献
988
活跃
10000998
精华
16

NAS发烧友技术达人编辑能手突出贡献活跃会员

QQ
f541883216 发表于 2026-1-12 01:59 来自 加拿大
提示: 该帖被管理员或版主屏蔽
回复 支持 反对 印象

使用道具 举报

16

精华

263

回帖

1000万

积分

技术达人

Rank: 6Rank: 6

云币
530
贡献
988
活跃
10000998
精华
16

NAS发烧友技术达人编辑能手突出贡献活跃会员

QQ
f541883216 发表于 2026-1-12 01:59 来自 加拿大
提示: 该帖被管理员或版主屏蔽
回复 支持 反对 印象

使用道具 举报

0

精华

37

回帖

212

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
193
精华
0
jssk 发表于 2026-1-13 08:42 来自 中国山东烟台
感谢大佬的无私奉献,科普很详细,让菜鸟容易理解
回复 支持 反对 印象

使用道具 举报

0

精华

113

回帖

1557

积分

发烧玩家

Rank: 2

云币
0
贡献
1
活跃
1495
精华
0
cxx0233 发表于 2026-1-13 08:56 来自 中国广东广州
感谢大佬的无私奉献。。。。
回复 支持 反对 印象

使用道具 举报

0

精华

83

回帖

854

积分

入门用户

Rank: 1

云币
0
贡献
59
活跃
516
精华
0
naoki66 发表于 2026-1-13 08:57 来自 中国重庆
感谢大佬 学习一下   很详细
回复 支持 反对 印象

使用道具 举报

0

精华

426

回帖

2013

积分

搞机大神

Rank: 3Rank: 3

云币
0
贡献
35
活跃
1621
精华
0
茄子jun 发表于 2026-1-13 09:12 来自 中国天津
感谢大佬的分享!感谢大佬的分享!
回复 支持 反对 印象

使用道具 举报

0

精华

12

回帖

2660

积分

搞机大神

Rank: 3Rank: 3

云币
0
贡献
394
活跃
683
精华
0
10467106 发表于 2026-1-13 09:49 来自 中国山东济南
啥也不说了,感谢楼主分享哇!
回复 支持 反对 印象

使用道具 举报

0

精华

83

回帖

785

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
743
精华
0
az101010 发表于 2026-1-13 11:30 来自 中国广东深圳
辛苦了,多谢大佬分享。
回复 支持 反对 印象

使用道具 举报

123下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群
懒人地图| 手机版|小黑屋| 智能生活 , 上那是云 |闽ICP备2020018196号-1 |网站地图