|
第四节 绿联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/sda为1G的辅助的启动盘。它只有一个分区,我把它做成BIOS legacy_boot启动盘。 /dev/sdb为32G的数据盘。它有两个分区,绿联的数据盘都是两个分区的结构。 /dev/mmcblk0 为16G的UGOSPro系统SD卡启动盘。它是QEMU虚拟机的mmcblk0设备
注意:有些绿联硬件,使用的是nvmeXn1启动盘,例如:DXP6800 Pro硬件设备。
再看它的结构: /dev/mmcblk0p1分区为256M的vfat格式分区,内容为UEFI启动文件。启动后挂载到系统的/boot目录。 /dev/mmcblk0p2分区为2G的squashfs 格式分区,内容为根文件系统。启动后挂载到系统的/rom目录。 /dev/mmcblk0p3分区为10M的ext4 格式分区,内容为设备激活文件。启动后挂载到系统的/mnt/factory目录。 /dev/mmcblk0p4分区为2G的ext4 格式分区,内容为空。启动后不挂载,备用。 /dev/mmcblk0p5分区为2G的ext4 格式分区,内容为空。启动后不挂载,备用。 /dev/mmcblk0p6分区为4G的ext4 格式分区,内容为绿联的应用服务程序包。启动后挂载到系统的/ugreen目录。 /dev/mmcblk0p7分区为4.7G的ext4 格式的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.bz2为ugreen.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的分区。请看截图:
后来想了一下,这个盘其实不应该创建dos分区表,也应该创建gpt分区表。已经这样做了,懒得再改,反正都是可以用的。你做的时候,建议创建gpt分区表。 对UGOSPRO_SD.qcow2的分区也差不多。不过这次的命令是fdisk /dev/sdb。然后,输入g(创建gpt分区表),然后…请看截图:
因为这次要做七个分区,命令一步一步地做,截图太长了。上面就截了到第三个分区,下面再继续截图直到输入w命令写盘就完成了:
用lsblk查看一下:
两个盘的分区处理就完成了。顺便把UGOSPRO_BIOS_BOOT-1895.qcow2做成grub的启动盘。使用的命令也很简单,用mkfs.ext4 /dev/sda1先格式化分区。再把这个分区挂载到/mnt/floppy目录。 再执行命令:grub2-install--boot-directory=/mnt/floppy /dev/sda 就可以了。请看如下截图:
第二步,使用如下命令,格式化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有些错误,不过我们可以忽略这些错误。并不影响我们获得第一分区的文件。
做完上述复制后。现在可以删去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 [切换目录] 检验文件 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 [挂载分区] 上传文件
接下来,挂载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包的内容是这个样子滴,截图如下:
可以看出,里面都是私密的敏感信息。
第三分区还需要有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 [切换目录] 卸载分区 cd [切换目录] umount /dev/sdb3 [卸载分区]
至于factory.tar这个文件吗,如果你有的话,是需要上传的。我使用的是2022年破解UGOS时的旧版本的factory.tar认证文件。它还是可以用作破解UGOSPRO的认证文件。
如果没有,启动盘也是可以启动的。但是通过Web界面进行系统初始化的时候,就会出错了。请看我做实验得到的截图:
但这并不表示制作的启动盘有问题。你可以保留着启动盘,等到找到一个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系统启动盘】,精彩继续!
|