把 Ubuntu 装到U盘里随身携带,并同时支持 BIOS 和 UEFI 启动

GGAutomaton

2019-09-29 21:42:48

Personal

您是否为经常使用不同的电脑,但编程环境无法简单迁移而苦恼呢? 别急,看看这篇文章 : ) 把系统装到U盘里,随身携带。 ~~其实就是为了解决学校没有个人专用电脑,也不允许自带电脑的问题。~~ 因为有些老机器只支持 BIOS+MBR,有些新机器只支持 UEFI+GPT,所以需要同时支持 BIOS 和 UEFI。**此方法可能不适用于硬件资源虚拟化或者锁USB端口的机器。** 本文部分内容需要一定的知识储备,不适合纯小白。 **乱搞可能会造成数据丢失,请严格按照本教程操作。** ___ # 使用体验 1. 开机即可写代码,免去调配置的繁琐。 2. 代码写了一半要离开,按下 Ctrl+s 保存代码,然后关机。再也不用复制到U盘或者发邮箱。 3. 可以把系统调成最舒服的样子。 # 一、准备工作 1. Vmware Workstation(如何安装请自行百度) 2. **64位** Ubuntu ISO 文件(UEFI 不支持 32 位系统) 3. **高性能**U盘,至少 USB 3.0 32G,推荐 64G 及以上。如果用固态硬盘就更好了。U盘速度直接影响使用体验,请务必使用能够长时间保持写入速度的U盘。~~(用了两年,每次 ```apt upgrade``` 都怀疑人生,问自己为什么不买一个更好的U盘)~~ # 二、新建虚拟机并编辑配置 新建虚拟机 -> 典型 -> 稍后安装操作系统 -> Linux(Ubuntu 64位) -> 最大磁盘大小0.001GB -> 按照需要调整虚拟机硬件配置 1. CD/DVD 选择 Ubuntu ISO 文件位置,启动时连接 2. USB控制器 USB兼容性:USB 3.0 3. 添加硬盘 计算机管理 -> 磁盘管理 ![](https://cdn.luogu.com.cn/upload/image_hosting/l4j0zfbi.png) 记住自己的U盘的磁盘编号(比如我这里是磁盘3) 虚拟机设置 -> 添加 -> 硬盘 -> SCSI -> 使用物理磁盘 -> 选择自己的U盘,并使用整个磁盘 ![](https://cdn.luogu.com.cn/upload/image_hosting/vbq7afts.png) 4. 设置 UEFI 启动 虚拟机设置 -> 选项 -> 高级 -> 固件类型 -> UEFI ![](https://cdn.luogu.com.cn/upload/image_hosting/4gf8b5xv.png) [还是没有找到的看这里](https://jingyan.baidu.com/article/d8072ac4a33ac6ec94cefd5e.html) # 三、U盘分区 **这会删除U盘里所有的数据。** 开启虚拟机。如果提示“物理磁盘已被使用”,请关闭所有可能使用这个U盘的程序,拔出U盘后重新插入。 成功设置 UEFI 后,开机应该看到这个画面。如果没有看到,请检查之前的步骤。 ![](https://cdn.luogu.com.cn/upload/image_hosting/71044gtn.png) 选择"Try Ubuntu without installing"。开机后启动 Gparted。 此时U盘应该是 sdb。如果不是,请把下面所有的 sdb 换成您自己的 sdX。 在 sdb 建立 GPT 分区表。 ![](https://cdn.luogu.com.cn/upload/image_hosting/38f8rmda.png) ![](https://cdn.luogu.com.cn/upload/image_hosting/msbnll76.png) **第一个分区**设置 fat32,用来拷贝文件。(因为win7似乎只能识别第一个分区) **ESP分区(下图第三个)**至少 100MB,设置 boot 和 esp 标识。 **在分区上右键可以修改标识(Manage Flags)。** [如果您真的不会使用 Gparted,看这里](http://people.ubuntu.com/~happyaron/udc-cn/karmic-html/ch10s02.html) 下图仅供参考。**如果不需要在 Windows 下拷贝文件,可以不设置第一个 fat32 分区。** ![](https://cdn.luogu.com.cn/upload/image_hosting/wo953xjp.png) **注意**: 1. 虚拟机关闭后,win10 会提醒格式化所有无法识别的分区,千万不要手抖点确定。 2. 分区设置请**慎重考虑**,之后更改会很麻烦。系统分区尽量划分得大一些。如果内存充足,可以不设置 swap。 您是不是被最后的 1MB 折磨,强迫症发作了?![滑稽](https://s2.ax1x.com/2019/04/29/E3L2mF.gif) 现在我们来解决这个问题,向这个空间添加 bios_grub 标记。 这里简单提及一下这个标记的作用。GPT 兼容 MBR,如果要让 grub 在 GPT 上使用 MBR 模式安装的话,需要设置这个标记。这个分区有以下三个特点:1MB 容量,不需要格式化,设置 bios_grub 标记。(https://my.oschina.net/abcfy2/blog/491140) 在虚拟机中打开终端 ```bash sudo gdisk /dev/sdb n # 默认编号,回车就行 # 默认开始位置,回车 # 默认结束位置,回车 EF02 # EF02 就是 bios_grub p # 看到 Name 有 BIOS boot partition 就可以了 w y ``` 最终是这样的。 ![](https://cdn.luogu.com.cn/upload/image_hosting/lbobzs1y.png) # 四、开始 UEFI 安装 双击桌面上的"Install Ubuntu"。 [如果您没有安装 Ubuntu 的经历,点击这里了解流程。](https://www.sysgeek.cn/install-ubuntu-18-04-lts/) 安装过程中下载更新很慢,建议断网。其他设置默认,直到这一步。 ![](https://cdn.luogu.com.cn/upload/image_hosting/oui48h2e.png) ![](https://cdn.luogu.com.cn/upload/image_hosting/3va83bfu.png) 把 ext4 挂载到 /。也可以按照自己的需要来设置。 **启动引导器**一定要装在 /dev/sdb 上,不能装在别的硬盘(比如 sda),也不能装在单个分区上。 之后设置用户名和密码。~~尝试在等待安装的时间里切一道题。~~ 安装好后,试一下能不能 UEFI 启动。 **再次提醒**: 关闭虚拟机后,如果您的电脑突然多了一堆盘符,提醒格式化,**千万不要点击确定**。可以使用 DiskGenius,在不明分区上右键,删除驱动器号(盘符)。那么在这台电脑上,就不会再显示这些分区了。 # 五、添加 BIOS 启动 模仿切换 UEFI 的步骤,切换回 BIOS。 虚拟机设置 -> 选项 -> 高级 -> 固件类型 -> BIOS 重新连接 CD/DVD,启动虚拟机。 刚启动应该看见紫黑色背景,下方有一个小人和键盘图标。没有任何选项,自动进入这个画面。如果没有看到,请检查是否已经切换回 BIOS。 ![](https://cdn.luogu.com.cn/upload/image_hosting/72oj3upx.png) 选择 Try Ubuntu。 现在假设您的系统安装在 sdbX(本文为 sdb2)。 ```bash sudo mount /dev/sdbX /mnt sudo grub-install --target=i386-pc --recheck --boot-directory=/mnt/boot /dev/sdb ``` 如果报错: ```bash Installing for i386-pc platform. grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible. grub-install: warning: 无法嵌入。在此次安装中 GRUB 只能通过使用块列表安装。但是块列表是不可信赖的,不推荐使用。. grub-install:错误: will not proceed with blocklists. ``` 请检查是否正确标记了 bios_grub。 重启一下,看看能不能 BIOS 启动,然后尝试 UEFI 启动。 如果没有问题,那么,完结撒花! ___ # 后记 1. 如果您不知道如何设置电脑从U盘启动。https://zhidao.baidu.com/question/416256793.html 2. 如果您的学校采用全虚拟机教学,那么是没有办法使用自己的系统的(为什么我的锐捷云课堂不行,别人可以?),为您默哀三秒钟。 ___ 参考文章: https://my.oschina.net/abcfy2/blog/491140 https://help.ubuntu.com/community/Installation/UEFI-and-BIOS/original-attempt#Make_a_system_bootable_in_UEFI_as_well_as_BIOS https://help.ubuntu.com/community/UEFI ___ 如果您在安装过程中遇到**无法百度解决**的问题,可以在万谷群私聊我。