一、问题背景
在 FPGA 开发中,很多基于 Xilinx 开发的项目都是使用的 Linux (Ubuntu) 系统,通常我们使用 Linux 系统的方法有如下几种:
- 虚拟机安装 Linux 系统
- WSL
- 双系统
- Ubuntu to Go
这四种方式各有优缺点:其中前两种方式可能会导致开发工具链的一系列兼容问题,第三种方式的缺点是不可移动,便携性较差,第四种方式提供了把 Linux (Ubuntu) 系统装入移动硬盘的解决方案,只需要一个移动硬盘,便能插入电脑里进行开发,移动性和便携性都很高。本文主要介绍如何从头制作一个便携式的 Ubuntu 启动硬盘。
注:本文主要基于 Windows x86 来进行 Ubuntu to Go 的制作,制作出的 Linux 系统也是基于 x86 架构,如需其他架构,则在电脑和镜像的使用作出调整即可。
二、工具准备
硬件
- 移动硬盘 (考虑到传输速度,最好是固态硬盘/SSD,e.g., Samsung T7)
- 连接移动硬盘和电脑的线 (最好是可以跑满传输速度的线)
- 4G 以上的 U 盘 (作为 Ubuntu 启动盘)
- 一台 Windows x86 系统的电脑
软件 (Windows x86 版本)
- DiskGenius (数据恢复软件,硬盘分区工具,系统备份软件 - DiskGenius官方网站)
- Rufus (Index of /downloads)
三、格式化与制作启动盘
先使用 DiskGenuis 对移动硬盘和 U 盘进行格式化 (如有需要记得备份盘里的数据),格式化的格式均选 FAT32 即可。
去 Ubuntu 官网 下载需要的镜像 (Xilinx 开发推荐使用 Ubuntu 18.04 LTS - Bionic),使用 Rufus 对准备的 U 盘进行启动盘制作,设置使用默认设置即可,引导类型选择下载好的镜像。
四、在移动硬盘安装系统
将制作好启动盘的 U 盘与移动硬盘均插入电脑里,重启电脑,进入 BIOS (这里最好在 BIOS 可以禁用一下 Secure Boot 以免后续出现 WiFi 适配器的问题),选择 USB 启动 - Try Ubuntu without install,会进入试用的 Ubuntu 系统里,点击桌面上的 Install Ubuntu xx.xx LTS 开始安装系统,会进入一步步的安装菜单选项,按照需求选择即可。
其中,在安装类型的选项中选择 其他选项 (Something else),进入硬盘分区界面,选择系统检测到的移动硬盘,将 Linux 系统需要的东西挂载到上面,为了简洁,本文只介绍三个分区:
- EFI 分区: 分配 200-300 MB,类型是 efi.
- Swap area: 分配与电脑内存相近的大小 (16/32 G),类型是 swap area.
- 根目录 (/): 硬盘剩余的全部空间,类型是 ext4.
在菜单的最下方 boot loader 的安装路径选择移动硬盘
注:如果想详细分 /home,/usr 等目录自由分配即可 (他们全都在 / 下),类型均为 ext4.
接下来就是格式化这些分区,等待 Ubuntu 系统成功安装到移动硬盘上。
五、关于移动硬盘的引导问题及解决方案
按以上步骤,在移动硬盘上成功安装完 Ubuntu 系统后:拔掉作为启动盘的 U 盘,仍插入移动硬盘,重启电脑,会进入 Ubuntu 系统和 Windows 系统的选择,用户可以自由选择从 Linux 还是 Windows 启动。
但以上步骤可能存在的问题是:移动硬盘的 Ubuntu 的系统引导会装载在 Windows 系统盘的引导中,导致当装有该 Ubuntu 系统的移动硬盘插入另一台电脑时,另一台电脑无法检测到该移动硬盘的 Ubuntu 系统并成功引导。因此,并没有实现真正的 “移动” Ubuntu 系统。
本文提出的解决方案基于 Ubuntu 的 boot-repair 程序,因为他可以比较便捷地解决系统盘的引导问题。具体方案如下:
将 U 盘与移动硬盘均插入原电脑里,进入 BIOS (这里最好在 BIOS 可以禁用一下 Secure Boot 以免后续出现 WiFi 适配器的问题),选择 USB 启动 - Try Ubuntu without install,进入试用的 Ubuntu 系统中,连接好网络 (不联网会报错),在 Terminal 中依次输入如下命令:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
这些命令会在试用的 Ubuntu 系统中安装 boot-repair 程序,待这三条命令执行完后在 Terminal 中输入:
boot-repair
等待 boot-repair 的启动,启动成功后会进入 GUI 界面,选择推荐的 boot-repair 方式,等待修复,待修复完成后,关闭系统。该移动硬盘便可在其他电脑中成功引导(若目标电脑还装了另一个 Ubuntu 系统,可以进 BIOS - Boot Menu 查找该移动硬盘的 UEFI 启动,从移动硬盘启动即可)
六、总结
本文主要介绍了一种 “移动式 Linux 系统的制作方式“, 将 Ubuntu 系统成功安装到了移动硬盘中,实现了 Ubuntu 系统在电脑上的即插即用,提高了 FPGA 开发的效率。当移动硬盘是电脑里的固态硬盘时 (非移动式情景),文章的前四部分也可作为安装双系统的合适参考,最后部分介绍了解决移动硬盘可能缺失系统引导问题的方案。
For questions encountered when referencing this blog to make Ubuntu to Go, feel free to ask ^_^