写在前面

能凑出这么长的标题我也是蛮厉害的2333

为什么会有这个需求呢?主要是因为出门在外不可能总带着电脑出去,但是就是想搞事情。那么随身带个系统出去就会很方便。考虑到自己的 Surface Pro 4 是 UEFI 且不支持 Legacy Boot,但是很多机器又没有 UEFI,所以考虑做成 UEFI+BIOS 双启动的。我平时也需要用到U盘去交换文件,所以必须保留一个分区让 Windows 可以识别并且读取。

那么开工把。

准备

首先准备一个 8G 以上的U盘。为了你的正常体验我觉得不能再小了

使用你喜欢的分区工具对U盘进行分区(这里记得要备份数据)

这里参考文章[grub实现]U盘引导多个linux镜像安装,同时支持BIOS和UEFI模式

为了避免重启机器的麻烦,我在虚拟机中完成所有的流程。

具体步骤如下:

  • 重建分区表为 GPT 格式

  • 创建第一个分区,分区格式化为 fat32,这个分区就是 Windows 下可见且可读写的分区了,同时也是 EFI 的 ESP 分区。

    注意要留下足够的空间给 Debian 使用。

    然后给这个分区打上 bootesp 的标志

  • 创建第二个分区,这个分区创建后最好还预留空间给 swapbios 标志分区。我就创建成 Ext4,后面保留 1GB 的空间。

  • 创建第三个分区,这个分区格式化成 swap,后面保留 1MB 整的空间。

  • 对最后 1MB 的空间创建分区,但不格式化,打上 bios 的标志。

  • 应用以上修改,准备工作就完成了。

GParted 截图如下:

GParted

安装 Debian

  • 使用 ISO 引导机器启动。

  • /挂载到 Ext4 分区(如果不能挂载,可以尝试在安装向导中重新格式化这个分区)

  • 按照你的喜好走完整个流程

  • 将 grub 安装到U盘的根分区

    虚拟机是 BIOS 的,所以这一步会直接配置好 BIOS 引导的支持,如果你在 UEFI 下安装 Debian,这一步请把 grub 安装到 sdx1 (也就是那个 ESP 分区),这会自动配置好对 UEFI 引导的支持

  • 重启进入安装在U盘上的 Debian

安装 UEFI (或 BIOS)的 grub

打开终端使用 su 切换到 root 账号

如果你在上一步安装的是 BIOS 的 grub,那么进入系统执行如下命令。

$ apt-get install grub-efi
$ mkdir /mnt/sdx1
$ mount /dev/sdx1 /mnt/sdx1
$ grub-install --target x86_64-efi --efi-directory /mnt/sdx1 --boot-directory=/boot --removable

如果你上一步安装的是 UEFI 的 grub,那么执行

$ apt-get install grub-pc
$ sudo grub-install --target=i386-pc --recheck --boot-directory=/boot /dev/sdx

对于 Fedora ,推荐你先在 EFI 模式下进行完整安装,分区时留出空间,进入系统后创建 bios_grub 分区,并进行 BIOS 的 grub2 的安装操作,最后创建配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg

结束

这个流程基本就结束了。折腾的过程还是挺有乐趣的。