利用闲置 SSD 打造 WTG + Linux + PE 多合一移动系统硬盘

写在前面:本文大量复制和借鉴了无忧启动论坛 @ddsony 的教程内容,没有他的帖子就没有我的这篇折腾笔记,十分感谢他帖子的详细指引!

手上有一块闲置 SSD(建兴 T9,128G),想将它利用上来做一块多合一移动系统盘方便随身应急使用。

上网冲浪偶然发现还有系统 All in One 移动硬盘的玩法,于是打算折腾一下

实现目标

  1. 同时兼容 UEFI 和 Legacy 启动
  2. 隐藏系统分区和启动分区,可以当作普通移动硬盘使用
  3. WTG
  4. Linux(这里使用 Ubuntu)
  5. WIN PE(这里使用 chiannet 制作的 USBOS V3

制作过程

准备资料

一个移动硬盘 / U 盘(固态 U 盘或者 WTG 认证 U 盘),用来安装

另一个空白 U 盘,大小最好 4G 以上,用作装 Linux 的启动盘

我整理的资料包

镜像

Ubuntu

Win10 使用官方 1909

chiannet 制作的 USBOS V3

软件

MBROSTool 本文主要工具

WinNTSetup 安装 WTG 用

ExtFS for Windows 在 windows 下读写 ext4 的分区,10 天免费试用,到期后限制向 Ext4 分区读写的性能。

安装流程

处理硬盘分区 & 安装 PE

  1. 连接移动硬盘,打开 MBROSTool,在选项中把显示所有磁盘打勾

然后在下方磁盘处选择要制作的移动硬盘

打开选项 - 格式化,按如下设置

右上角下拉栏选 3 个分区

50G 用作 WTG 的 win10,选择 VHD,暂时空着路径信息

50G 用作 Linux,选择 VHD,同样暂时空着路径信息

下文步骤 4Winntsetup 安装结束后,由于是空分区,软件默认不在启动菜单里显示 WTG 菜单项标题,必须修改 “多 UDm 菜单 " 才能显示,修改方法见下文

直接拖入 PE 的镜像文件到分区 3 的路径输入处,选择 “解开”,然后分区大小扩容到 1G(1024M)用作 PE

右下方用户区打勾,剩余的容量将作为普通的移动硬盘使用

左下方重建分区表打勾

其他设置默认,随后点击最下方格式化

在格式化完成的同时,PE 也一并安装好了

  1. 回到主界面,点击高级 - 备份到MOS,备份 U 盘前 8M 到 BACK.MOS,备份默认保存在 MBROSTool 软件目录下,这个东西留着备用

图片来自 无忧启动论坛@ddsony

  1. 回到主界面去掉只读的勾选,列表框选择第二分区来挂写子盘

图片来自 无忧启动论坛@ddsony

挂载后打开子盘 /udm/udmsmenu.sh,找到如图所示位置,去掉 #defudmmenu 1 和 #defudmmenu 2 两行前面的#(去除注释),并且顺手改掉后面的 "" 里面的内容

比如这里,前面格式化的时候把分区 1 作为 WTG 用的 Win10 盘,分区 2 作为 Deepin 用的盘,这里就改成了

修改完后记得保存

同样的方法修改 /EFI/mbrosefis.cfg

到这里硬盘就处理好了,下面我们来进行 WTG 的安装

删掉子盘 /udm/pic/bubble.png 可以关闭掉 MBR 引导时菜单的泡泡动画

WTG 安装

  1. 回到主界面,打开高级 -BootICE 按下图操作

图片来自 无忧启动论坛@ddsony

  1. 回到主界面,点击常用 - 加载,选择刚才分出的 50G 的 VHD 分区,点高级再点击分区表加载

批注 2020-03-23 000143

  1. 点击’高级’-‘分区管理’,去掉用户区 MBSuDATA 的激活状态,同时激活安装分区;

如图,如果安装分区类型不是 0x07 的话,选中后点 修改,把分区类型改为 0x07。如果以后又卸载再重新挂载的,仍旧要改

  1. 打开 WinNTSetup,填好安装源路径和其他信息,引导驱动器和安装磁盘的位置是同一个,即上面分区表加载的要安装 WTG 的分区,先点 F 格式化一遍,再点开始安装,弹出的窗口选择默认的使用bootsect.exe更新启动代码,然后点确认

WinNtSetup 安装完成后,提示系统重启时以 BIOS 方式重启;

  1. 安装完成后,提示系统重启。重启时再引导界面选择移动硬盘引导,重启到到 “多 UDm 菜单”,点击 WTG 启动菜单项。

    等待 WTG 系统配置好设备信息,还有一次重启,同样重启到 “多 UDm 菜单”,点击 WTG 启动菜单项,一直到 WTG 安装完毕进入桌面;

    进入桌面后进行系统激活,然后重启回到本机系统

  2. **(可选,非必要)** 打开 MBROSTool 工具文件夹下的 ghost32w.exe 进行 GHOST 备份

打开程序

选择移动硬盘

选择WTG的分区(这里是第一个)

选择备份文件保存位置,路径最好不要有中文

是否压缩备份文件以及压缩的级别

选Yes

选 Force lock

以后 WTG 的系统如果坏了,就可以再用工具分区表加载同一个分区,用 GHOST 恢复文件到安装分区后再进行以下的步骤就能轻松修复。

  1. 打开 MBROStool,先参照准备工作中的步骤 1 切换磁盘到当前的移动硬盘,然后参照下图深度卸载掉 WTG 的安装分区,这样就隐藏好安装分区了

  1. 如图所示恢复一开始备份的 MOS

然后点高级 - 分区管理,恢复原来用户区 MBSuDATA 的激活状态(有些古怪电脑用户区不激活就无法启动);
9. 软件右上角去掉只读,点旁边 UDm 下拉列表框选择挂载 WTG 的安装分区;
挂载后软件界面右键该分区,菜单选择快启处理。生成完毕后,WTG 就算装好了。

Linux 的安装(Ubuntu、Deepin 等 Debian 系发行版)

安装系统镜像(以 Deepin 为例)

  1. 保险起见,再备份一次 MOS

    图片来自 无忧启动论坛@ddsony

  2. 挂载 Linux 的安装分区

  3. 拿出另一个 U 盘,用 Easy2Boot 制作 ISO 启动盘。如图:

    图片来自 无忧启动论坛@ddsony

    制作完成后,在_ISO\Linux\ 目录下拷入 Deepin 的镜像文件:

    图片来自 无忧启动论坛@ddsony

    关机,重启引导进入 U 盘,选 Linux 菜单项进入,再选择你的镜像启动 ISO:

    图片来自 无忧启动论坛@ddsony

    图片来自 无忧启动论坛@ddsony

    图片来自 无忧启动论坛@ddsony

    图片来自 无忧启动论坛@ddsony

    进入安装界面,跟着安装流程走就好。

    需要注意的是,在选择安装位置的页面,我们需要选择选择高级安装,找到上文事先分挂载好的安装分区,点击设定其文件系统为 ext4、挂载点为 \

    我们还需要点击左下角修改引导器,把引导器也同样设为这个分区,之后就可以点击安装了。

    选择界面如图所示

    以Deepin为例

  4. 安装完成后,系统将会自动重启。我们回到本机系统。

    如果你已经装好 ExtFS for Windows 的话,我们应该就能看到刚安装完 deepin 的分区了

    如果你不想安装这个软件,你还可以在刚才用来装 Linux 镜像的 LU 盘里操作(进试用)

    我们打开这个分区,复制 Ubuntu-UDm深隐资料包里的 grldr 文件和 /efi 文件夹到根目录。

    然后打开 /boot/grub ,将下面的 /grub.cfg 复制到 根目录的 /efi 下,并更名为 mbrosefi_qk.menu.cfg

    需要注意的是,工具内原有提供的 grldr/efi/boot/bootia32/efi/boot/bootia32 存在问题,我这里使用工具提供的文件无法正常启动 Linux。

    我已经在自行打包的 Ubuntu-UDm深潜资料包中提供了我个人使用后成功安装 Ubuntu 的替换文件。其他发行版可以自行尝试使用。

  5. 我们打开更名好的 mbrosefi_qk.menu.cfg,按照以下规则对其进行修改

    • 在所有 set root='hdX,msdosY' (X,Y 代表数字)类似的行 的前面加上 #注释掉,或者直接删掉该行

    • 所有以 linux 开始的行,须在该行代码末尾添加空格 + $udmboot

    • linux /boot/vmlinuz-...initrd /boot/initrd....loadfont /boot/... 等开始的行,需要在 /boot 字段前加入 ($rooti) 字段。

    ↓↓↓↓↓↓↓↓↓↓↓↓

  6. 打开资料包中的 menu.lstmenu0.lst,对照着刚刚修改的 /efi/mbrosefi_qk.menu.cfg 里的信息对 menu.lstmenu0.lst 进行以下修改

    • menu.lstmenu0.lst 里所有的 ``–set=root 后面的一大串数字(UUID)全部修改为 /efi/mbrosefi_qk.menu.cfg root=UUID=` 后面的一大串数字

      这样的一串数字

      然后,修改以下内容:

    • 修改 menu.lstmenu0.lst 里所有的内核版本号数字为 /efi/mbrosefi_qk.menu.cfg 里的内核版本号数字

      /efi/mbrosefi_qk.menu.cfg 里的内核版本号数字

      要修改的 menu.lst 和 menu0.lst 里的内核版本号

      完成后保存并复制到 Linux 的安装分区根目录 /

设置深度隐藏

  1. 重启电脑,用 MBR 或 UEFI 引导移动硬盘进入 UDm 菜单,然后尝试进入安装好的 Linux。

  2. 如果 Linux 能正常启动,在简单配置 Linux 后重启回到主机系统,把 udmUDm-hook.sh 复制到 移动硬盘普通储存区或另一个 U 盘,然后重启到 Linux 按步骤进行以下修改:

    1. 复制 udm/usr/bin
    2. /etc/initramfs-tools/hooks 下新建脚本 UDm-hook.sh(名字可随意),代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/sh

    PREREQ=""

    prereqs()
    {
    echo "$PREREQ"
    }

    case $1 in
    # get pre-requisites
    prereqs)
    prereqs
    exit 0
    ;;
    esac

    . /usr/share/initramfs-tools/hook-functions

    copy_exec /usr/bin/udm /bin

    如果你找不到 /etc/initramfs-tools,请先安装工具

    1
    $ sudo apt-get install initramfs-tools
    1. 编辑 /usr/initramfas-tools/init

    在打开的文档中寻找 run_scripts /scripts/init-top 一行,并在该行代码下新增两条代码

    1
    2
    udmboot=`udm 2>/dev/null`; udmdev=`echo $udmboot | cut -d" " -f1`; udmroot=`echo $udmboot | cut -d" " -f2`
    if [ -n "${udmdev}" ]; then ROOT=${udmdev}; umount ${udmdev} 2>/dev/null;fi

    然后保存。

    1. 打开终端,运行

      完成后重启回本机系统

      1
      $ sudo update-initramfs -u
    2. 打开 MBMBROSTool 工具,跟刚才一样深度卸载掉 Linux 的安装分区

注意:不用再恢复 MOS!!!

  • 总结下 Linux 深度隐藏的操作
    1. 添加 udm/boot/initrd.img-xxx/bin
    2. 修改 /boot/initrd.img-xxx 里的 init,加入脚本
    3. MBROSTool 上把 Linux 安装分区深度卸载
  • 该方法仅在 Ubuntu 19.10 上测试成功,其他 Debian 系请自行测试,非 Debian 系可以参考一下上面的总结和资料包里的 UDM对linux的支持.txt。Arch 系发行版可以参考下这篇文档来修改

后记

升级 Ubuntu 内核后的操作

先进行升级

1
2
sudo apt update
sudo upgrade

提示 linux 的内核有更新,可以在更新的时候记一下新内核的版本号

升级后用 root 打开文件管理器

1
sudo nautilus

更新内核时如果没有留意版本号,可以打开 /boot/grub/grub.cfg 参照安装时的步骤找找

知道新内核版本号后打开根目录下的 menu.lstmenu0.lst 以及 /efi/mbrosefi_qk.menu.cfg,把里面旧的版本号全部查找替换为新的版本号

保存,重启查看效果

美化启动项

先读写挂载子盘(参考 安装流程 - 处理硬盘分区)

这里只展示一些我作的修改,详细的美化指南请看工具内的补充帮助

  • 删掉 /udm/pic/bubble.png 可以关闭 MBR 启动菜单里的泡泡动画

  • /efi/theme 修改 EFI 启动下引导菜单的主题,加载的是 grub 的主题,但是主题的加载效果有些奇怪,同时要注意子盘大小限制

    这里我使用的是自行魔改了的 Atomic GRUB Theme,加入了原主题没有的 udm.png,修改 reastar.pngreboot.png 来让它奇怪的 grub 能够识别。资料包里会提供我自用的魔改主题

VMWare 加载

其他默认或自行调整

参考链接

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=410612&extra=page%3D1

https://bbs.luobotou.org/thread-43549-1-1.html

https://bbs.luobotou.org/forum.php?mod=viewthread&tid=44272&extra=page%3D&page=1

https://bbs.luobotou.org/thread-45230-1-1.html

http://manpages.ubuntu.com/manpages/bionic/en/man8/initramfs-tools.8.html