【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装/引导文件迁移/显卡驱动安装等问题

0.写在前面

如果不想看前面的废话😭,请跳转到 1.准备工具 处开始阅读。

关于教程

制作基于PSSD的Linux to go系统是我很早就打算做的事情,但这毕竟不是常规的装系统,因此在这之前我也调研了许多经验贴,不过我的思路是找到一个看起来最靠谱而且步骤相对简单的帖子,然后一路跟着走下去。

不过,当我真正实操时,就发现这几乎是不可能的了;倒不是网上的帖子不靠谱,只是每个人的环境都千差万别,遇到的问题也各有不同,倒腾电脑更像是一个“小马过河”的问题,不能依靠一个人的步骤解决所有问题;但我们也不能全靠自己解决问题,我们大部分人使用Linux系统是为了满足自己领域的开发对特定软件的需求,并没有必要专精于Linux,以至于成为Linux高手自己解决所有的问题。

好吧,说了这么多废话,我想表达的意思是没有一个万能的帖子能保证只要全部按着走就一定不会出问题,但同样,面对未知的问题最好的方法就是先去网络上寻求他人的经验。对于这篇帖子,我提供了一个在我的环境下能完美运行的方案,同时作为一个面对软硬件总会比别人遇到更多问题的“老倒霉蛋”,我也会尽可能列举一些我遇到的困难(这个Linux to go让我整整做了两天牢😭),无论是能解决还是不能解决的(不能解决的也给大家当做一个死路的示例吧)。

Why Linux to go?

首先是为什么要用Linux。毫无疑问,大部分同学对Linux的使用需求来自于课程要求:无论你是计算机专业的学生,在OS、ICS、计网甚至于专门的Linux课程中都可能有必须在Linux环境下才能完成的学习任务;还是其他理工科专业的学生,许多专业软件(例如我们电子专业IC方向常用的Cadence、Vivado等)同样只能在Linux操作系统中运行。抛开课程需求不谈,Linux操作系统本身也是适合开发的,相较于Windows、MacOS能够给用户提供更多的权限,同时熟悉Linux终端中常用的命令也能更加轻易地完成许多操作;除此以外,Ubuntu本身的UI界面也让人赏心悦目,和MacOS不相上下,都是碾压Windows的存在(个人认为)。

那为什么要to go呢?目前,除了MacBook外,几乎所有PC出厂自带的都是Windows系统,如果需要使用Linux系统就只有双系统或者虚拟机两种选择。

大部分人会选择虚拟机,这种方法的成本是最为低廉的,但这样的Linux却是不完整的,且不说在虚拟机上计算机的性能会大打折扣,并且因为虚拟机独特的运行环境,在实际操作过程中你会比其他使用原生Linux系统的同学更加容易遇到各种各样的问题(例如IP地址的映射);不仅如此,还有一种说法是装有Windows操作系统的电脑在安装过虚拟机后,其本身运行时的性能都会打折扣。

从我们学校ICS实验手册上抄下来的一段
(从我们学校ICS实验手册上抄下来的一段)

那么另外一种选择就是双系统,听起来这种方式对电脑性能的拖累似乎还要更大一些,毕竟谁也不希望每次开机都要进到BIOS界面手动选择启动的操作系统,并且在许多帖子中也提到了双系统之间可能存在互相干扰的现象;除此之外,这对许多电脑存储空间本来就爆红的同学更是无法接受,目前电脑主流的存储空间都在512G,两个系统就要占去100G,哪里还有地方装其他学习资料。由此看来,双系统能带来原生Linux的体验,成本又似乎有些过于高昂,毕竟咱们大部分人只是想做个作业。

由此Linux to go就应运而生,一方面Linux to go本身就是原生的Linux操作系统,在功能性上完全不存在问题;另一方面Linux to go装载在移动硬盘上,在硬盘拔除的情况下,不会对本来计算机的软硬件造成影响(几乎雁过无痕,但似乎还是会有一些影响,后面会再提及),同时装载在外接硬盘上也让使用者不必再绞尽脑汁释放本机的存储空间或承受硬盘爆红带来的焦虑,只要稍微花点小钱买一个外接硬盘(目前最顶级的基于USB3.2gen2的PSSD三星T7,一个t的存储也只要600RMB左右),硬盘除了装系统外还能拿来装其他学习资料(。最后,Linux to go可能还具有随插随用的特性,即使硬盘插的并不是你的电脑(对这个功能存疑,毕竟硬件不同,驱动不同,不一定能稳定地移植)——行文至此,我突然想到在Linux to go的形态下,电脑本身的硬盘可以通过挂载的方式进行访问,也就是说即使你不知道这台电脑(Windows操作系统下)的密码,也有可能通过外接硬盘启动Linux to go,通过另一个系统访问这台电脑原来系统中的内容,真是一个细思极恐的发现。

总结来说,我认为Linux to go是大部分不以Linux操作系统为主力,同时又有原生Linux环境需求的同学获取Linux系统的最优解,是高性能和低成本的集大成者,唯一的缺点就是,安装起来有点麻烦,但……

再从我们学校ICS实验手册上抄一段
(再从我们学校ICS实验手册上抄一段)

实际效果

我的设备是拯救者Y9000P2021,装有Linux to go的移动硬盘是三星T7shield的1T版本。

在不插入移动硬盘的情况下,电脑与正常电脑并无二致,开机后自动正常进入Windows系统,不会询问进入哪一个系统,在BIOS界面也不会出现任何有关Linux系统的启动项(即Linux to go的系统引导程序并没有装到电脑主硬盘区的EFI区,这点是Linux to go能在其他电脑上启动的基础,同时也避免了Linux to go像双系统一样对本身的系统造成影响)。

未插入移动硬盘时,启动项里只有主硬盘三星PM9A1的EFI区的Windows系统,与出厂时一致

(未插入移动硬盘时,启动项里只有主硬盘三星PM9A1的EFI区的Windows系统,与出厂时一致)

此时再插入移动硬盘(支持热插拔,即在BIOS界面时再插入移动硬盘就会显示出Ubuntu Linux的启动项,而不必重启电脑,拔出移动硬盘后又消失),可以看到Linux相关的选项,显示系统引导程序在移动硬盘三星T7shield上。

插入移动硬盘后的显示效果

(插入移动硬盘后的显示效果,ubuntu即我们的Linux to go系统,Linpus lite主要用来引导Ubuntu系统的安装,此外还能起到修复系统的作用,Linpus lite正常只会出现在用来USB启动的U盘上,但此处出现也并无妨害)

选择ubuntu启动后,我的外接显示器也同时被点亮,由于我使用的是电脑的type C接口连接外接显示器,而拯救者Y9000P2021的type C接口是接独立显卡(我这里是NVIDIA RTX 3070 laptop)的输出,这表明我们的显卡驱动是正常工作的(在之前的尝试中我发现独立显卡一直无法被识别,外接屏幕也不能工作,且系统的其他功能同样受到影响(例如关机关不上只能强制关机),所以特此一提,FK U NVIDIA),虽然只是自带的开源驱动nouveau,但不如果不是有机器学习方面的需求(这种情况课题组通常会配备服务器),也足够日常使用。

在这里插入图片描述

(超酷的LEGION+ubuntu的启动界面,显示器上的小字是“按下ctrl+c跳过文件系统检查环节”)

最后,这块1T的T7硬盘我也只拿出了200G左右作为Linux to go的空间,剩下的空间还能拿来装学习资料;T7最快1000MB/s的读写速度,足以支持无损运行大部分学习资料,这才是真正的物尽其用(。

一块特别定制的750G大小的T7 shield(?

(一块750G大小的移动硬盘)

1.准备工具

硬件方面:只需要一台不太古老的电脑(运行Linux to go)、一个存储空间在5GB以上的U盘(引导系统安装,后续不会再使用到,可以借用他人的),以及一个移动硬盘(Linux to go的载体)。

软件方面:需要用到制作启动

### 开发Go语言应用在Linux上的环境配置 为了在Linux环境中设置Go语言开发环境,安装必要的工具链并创建适当的工作空间是至关重要的。对于希望快速启动项目的开发者来说,可以利用`virtualenv`来隔离不同项目依赖项,尽管这通常是Python虚拟环境管理器,在此提及可能是混淆;针对Go语言,则应关注官方推荐的方式。 #### 安装Go语言运行时 首先确保系统已更新至最新状态,并通过包管理器获取最新的Go版本或者直接从官方网站下载适合Linux系统的二进制文件[^1]: ```bash sudo apt-get update && sudo apt-get install golang-go ``` #### 设置工作区结构 按照惯例建立GOPATH目录用于存放源码、第三方库以及编译后的可执行文件。现代Go不再强制要求特定路径布局,但仍建议保持良好习惯以便于管理和协作: ```bash mkdir -p ~/go/{src,bin,pkg} echo "export GOPATH=\$HOME/go" >> ~/.profile source ~/.profile ``` #### 编写简单的HelloWorld程序验证安装成功与否 创建一个新的.go文件作为入门示例,放置于上述设定好的源代码位置下,接着尝试构建它以确认一切正常运作: ```go package main import ( "fmt" ) func main() { fmt.Println("你好世界!") } ``` 保存以上内容到名为hello.go的文件,随后切换终端窗口回到该文件所在的位置执行命令完成编译过程: ```bash cd $GOPATH/src/ go run hello.go ``` 如果屏幕打印出了预期的信息即表示已经正确设置了基本的Go编程环境。 关于迁移整个操作系统至基于Go的应用场景并不常见也不实际——通常指的是应用程序级别的转换而非底层OS内核重写。因此重点在于调整现有服务架构使之能够支持新的技术栈特性而不是彻底改变宿主机平台本身。
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值