利用闲置 SSD 打造 WTG + Linux + PE 多合一移动系统硬盘
写在前面:本文大量复制和借鉴了无忧启动论坛 @ddsony 的教程内容,没有他的帖子就没有我的这篇折腾笔记,十分感谢他帖子的详细指引!
手上有一块闲置 SSD(建兴 T9,128G),想将它利用上来做一块多合一移动系统盘方便随身应急使用。
上网冲浪偶然发现还有系统 All in One 移动硬盘的玩法,于是打算折腾一下
实现目标
- 同时兼容 UEFI 和 Legacy 启动
- 隐藏系统分区和启动分区,可以当作普通移动硬盘使用
- WTG
- Linux(这里使用 Ubuntu)
- WIN PE(这里使用 chiannet 制作的 USBOS V3)
制作过程
准备资料
一个移动硬盘 / U 盘(固态 U 盘或者 WTG 认证 U 盘),用来安装
另一个空白 U 盘,大小最好 4G 以上,用作装 Linux 的启动盘
我整理的资料包
镜像:
Ubuntu
Win10 使用官方 1909
软件:
MBROSTool 本文主要工具
WinNTSetup 安装 WTG 用
ExtFS for Windows 在 windows 下读写 ext4 的分区,10 天免费试用,到期后限制向 Ext4 分区读写的性能。
安装流程
处理硬盘分区 & 安装 PE
- 连接移动硬盘,打开 MBROSTool,在
选项
中把显示所有磁盘
打勾
然后在下方磁盘处选择要制作的移动硬盘
打开选项
- 格式化
,按如下设置
右上角下拉栏选 3 个分区
50G 用作 WTG 的 win10,选择 VHD
,暂时空着路径信息
50G 用作 Linux,选择 VHD
,同样暂时空着路径信息
下文步骤 4Winntsetup 安装结束后,由于是空分区,软件默认不在启动菜单里显示 WTG 菜单项标题,必须修改 “多 UDm 菜单 " 才能显示,修改方法见下文
直接拖入 PE 的镜像文件到分区 3 的路径输入处,选择 “解开”,然后分区大小扩容到 1G(1024M)用作 PE
右下方用户区
打勾,剩余的容量将作为普通的移动硬盘使用
左下方重建分区表
打勾
其他设置默认,随后点击最下方格式化
在格式化完成的同时,PE 也一并安装好了
- 回到主界面,点击
高级
-备份到MOS
,备份 U 盘前 8M 到 BACK.MOS,备份默认保存在 MBROSTool 软件目录下,这个东西留着备用
- 回到主界面去掉
只读
的勾选,列表框选择第二分区来挂写子盘
挂载后打开子盘 /udm/udmsmenu.sh
,找到如图所示位置,去掉 #defudmmenu 1 和 #defudmmenu 2 两行前面的#
(去除注释),并且顺手改掉后面的 ""
里面的内容
比如这里,前面格式化的时候把分区 1 作为 WTG 用的 Win10 盘,分区 2 作为 Deepin 用的盘,这里就改成了
修改完后记得保存
同样的方法修改 /EFI/mbrosefis.cfg
到这里硬盘就处理好了,下面我们来进行 WTG 的安装
删掉子盘
/udm/pic/bubble.png
可以关闭掉 MBR 引导时菜单的泡泡动画
WTG 安装
- 回到主界面,打开
高级
-BootICE
按下图操作
- 回到主界面,点击
常用
-加载
,选择刚才分出的 50G 的 VHD 分区,点高级
再点击分区表加载
- 点击’高级’-‘分区管理’,去掉用户区 MBSuDATA 的激活状态,同时激活安装分区;
如图,如果安装分区类型不是 0x07 的话,选中后点 修改
,把分区类型改为 0x07。如果以后又卸载再重新挂载的,仍旧要改
- 打开 WinNTSetup,填好安装源路径和其他信息,引导驱动器和安装磁盘的位置是同一个,即上面分区表加载的要安装 WTG 的分区,先点
F
格式化一遍,再点开始安装
,弹出的窗口选择默认的使用bootsect.exe更新启动代码
,然后点确认
WinNtSetup 安装完成后,提示系统重启时以 BIOS 方式重启;
-
安装完成后,提示系统重启。重启时再引导界面选择移动硬盘引导,重启到到 “多 UDm 菜单”,点击 WTG 启动菜单项。
等待 WTG 系统配置好设备信息,还有一次重启,同样重启到 “多 UDm 菜单”,点击 WTG 启动菜单项,一直到 WTG 安装完毕进入桌面;
进入桌面后进行系统激活,然后重启回到本机系统
-
**(可选,非必要)** 打开 MBROSTool 工具文件夹下的 ghost32w.exe 进行 GHOST 备份
以后 WTG 的系统如果坏了,就可以再用工具分区表加载
同一个分区,用 GHOST 恢复文件到安装分区后再进行以下的步骤就能轻松修复。
- 打开 MBROStool,先参照准备工作中的步骤 1 切换
磁盘
到当前的移动硬盘,然后参照下图深度卸载掉 WTG 的安装分区,这样就隐藏好安装分区了
- 如图所示恢复一开始备份的 MOS
然后点高级
- 分区管理
,恢复原来用户区 MBSuDATA 的激活状态(有些古怪电脑用户区不激活就无法启动);
9. 软件右上角去掉只读,点旁边 UDm 下拉列表框选择挂载 WTG 的安装分区;
挂载后软件界面右键该分区,菜单选择快启处理
。生成完毕后,WTG 就算装好了。
Linux 的安装(Ubuntu、Deepin 等 Debian 系发行版)
安装系统镜像(以 Deepin 为例)
-
保险起见,再备份一次 MOS
-
挂载 Linux 的安装分区
-
拿出另一个 U 盘,用 Easy2Boot 制作 ISO 启动盘。如图:
制作完成后,在_ISO\Linux\ 目录下拷入 Deepin 的镜像文件:
关机,重启引导进入 U 盘,选
Linux
菜单项进入,再选择你的镜像启动 ISO:进入安装界面,跟着安装流程走就好。
需要注意的是,在选择安装位置的页面,我们需要选择选择
高级安装
,找到上文事先分挂载好的安装分区,点击设定其文件系统为ext4
、挂载点为\
。我们还需要点击左下角
修改引导器
,把引导器也同样设为这个分区,之后就可以点击安装
了。选择界面如图所示
-
安装完成后,系统将会自动重启。我们回到本机系统。
如果你已经装好 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 的替换文件。其他发行版可以自行尝试使用。 -
我们打开更名好的
mbrosefi_qk.menu.cfg
,按照以下规则对其进行修改- 在所有
set root='hdX,msdosY'
(X,Y 代表数字)类似的行 的前面加上 #注释掉,或者直接删掉该行
- 所有以
linux
开始的行,须在该行代码末尾添加空格 + $udmboot
。
linux /boot/vmlinuz-...
、initrd /boot/initrd....
和loadfont /boot/...
等开始的行,需要在/boot
字段前加入($rooti)
字段。
↓↓↓↓↓↓↓↓↓↓↓↓ - 在所有
-
打开资料包中的
menu.lst
和menu0.lst
,对照着刚刚修改的/efi/mbrosefi_qk.menu.cfg
里的信息对menu.lst
和menu0.lst
进行以下修改-
把
menu.lst
和menu0.lst
里所有的 ``–set=root后面的一大串数字(UUID)全部修改为
/efi/mbrosefi_qk.menu.cfg里
root=UUID=` 后面的一大串数字然后,修改以下内容:
-
修改
menu.lst
和menu0.lst
里所有的内核版本号数字为/efi/mbrosefi_qk.menu.cfg
里的内核版本号数字完成后保存并复制到 Linux 的安装分区根目录
/
-
设置深度隐藏
-
重启电脑,用 MBR 或 UEFI 引导移动硬盘进入 UDm 菜单,然后尝试进入安装好的 Linux。
-
如果 Linux 能正常启动,在简单配置 Linux 后重启回到主机系统,把
udm
和UDm-hook.sh
复制到 移动硬盘普通储存区或另一个 U 盘,然后重启到 Linux 按步骤进行以下修改:- 复制
udm
到/usr/bin
- 在
/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
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
- 编辑
/usr/initramfas-tools/init
,
在打开的文档中寻找
run_scripts /scripts/init-top
一行,并在该行代码下新增两条代码1
2udmboot=`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
$ sudo update-initramfs -u
-
打开
MBMBROSTool
工具,跟刚才一样深度卸载掉 Linux 的安装分区
- 复制
注意:不用再恢复 MOS!!!
- 总结下 Linux 深度隐藏的操作
- 添加
udm
到/boot/initrd.img-xxx
的/bin
里- 修改
/boot/initrd.img-xxx
里的init
,加入脚本- 在
MBROSTool
上把 Linux 安装分区深度卸载- 该方法仅在 Ubuntu 19.10 上测试成功,其他 Debian 系请自行测试,非 Debian 系可以参考一下上面的总结和资料包里的
UDM对linux的支持.txt
。Arch 系发行版可以参考下这篇文档来修改
后记
升级 Ubuntu 内核后的操作
先进行升级
1 | sudo apt update |
提示 linux 的内核有更新,可以在更新的时候记一下新内核的版本号
升级后用 root 打开文件管理器
1 | sudo nautilus |
更新内核时如果没有留意版本号,可以打开 /boot/grub/grub.cfg
参照安装时的步骤找找
知道新内核版本号后打开根目录下的 menu.lst
、menu0.lst
以及 /efi/mbrosefi_qk.menu.cfg
,把里面旧的版本号全部查找替换为新的版本号
保存,重启查看效果
美化启动项
先读写挂载子盘(参考 安装流程 - 处理硬盘分区)
这里只展示一些我作的修改,详细的美化指南请看工具内的补充帮助
-
删掉
/udm/pic/bubble.png
可以关闭 MBR 启动菜单里的泡泡动画 -
/efi/theme
修改 EFI 启动下引导菜单的主题,加载的是 grub 的主题,但是主题的加载效果有些奇怪,同时要注意子盘大小限制这里我使用的是自行魔改了的 Atomic GRUB Theme,加入了原主题没有的
udm.png
,修改reastar.png
为reboot.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