【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装引导文件迁移显卡驱动安装等问题
Linux to go制作流程
- 0.写在前面
-
- 关于教程
- Why Linux to go?
- 实际效果
- 1.准备工具
- 2.制作步骤
-
- 下载系统镜像
- 硬盘分区
- 准备启动U盘
- 安装系统
- 重启完成驱动安装
- 将系统启动引导程序迁移到移动硬盘上
- 3.可能出现的问题
-
- 3.1.U盘引导系统安装时出现崩溃
- 3.2.不影响硬盘里本身已有的内容完成分区
- 3.3.BIOS界面找不到U盘启动项
- 3.4.独立显卡无法被识别
- 3.5安装英伟达官方驱动丢失掉其他驱动
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实验手册上抄下来的一段)
那么另外一种选择就是双系统,听起来这种方式对电脑性能的拖累似乎还要更大一些,毕竟谁也不希望每次开机都要进到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实验手册上抄一段)
实际效果
我的设备是拯救者Y9000P2021,装有Linux to go的移动硬盘是三星T7shield的1T版本。
在不插入移动硬盘的情况下,电脑与正常电脑并无二致,开机后自动正常进入Windows系统,不会询问进入哪一个系统,在BIOS界面也不会出现任何有关Linux系统的启动项(即Linux to go的系统引导程序并没有装到电脑主硬盘区的EFI区,这点是Linux to go能在其他电脑上启动的基础,同时也避免了Linux to go像双系统一样对本身的系统造成影响)。
(未插入移动硬盘时,启动项里只有主硬盘三星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大小的移动硬盘)
1.准备工具
硬件方面:只需要一台不太古老的电脑(运行Linux to go)、一个存储空间在5GB以上的U盘(引导系统安装,后续不会再使用到,可以借用他人的),以及一个移动硬盘(Linux to go的载体)。
软件方面:需要用到制作启动盘的程序UltraISO和硬盘分区软件Disk genius。
一些注意事项:
-
建议使用的U盘和移动硬盘,在制作Linux to go以前都对其中已有的数据做好备份(也就是U盘和移动硬盘最好就是空的),一来是不保证移动硬盘能在保存原来数据不丢失的情况下完成分区(U盘则一定会被格式化);二来是搞不好会反复重装系统,就有反复分区格式化的可能,同样也就有数据丢失的风险
-
作为启动盘的U盘尽可能大一些,10GB以上为宜;另外最好使用高性能、稳定的U盘(也就是尽量使用SanDisk或Samsung等有品牌的U盘,而不是使用那种作为小礼品赠送的廉价山寨U盘);一来是制作启动硬盘的速度更快,二来就是Linux系统安装过程中不容易崩溃(见3.1)
-
Linux to go系统本身的载体似乎也不一定非要是移动硬盘,或许U盘也是有可能的——之所以移动硬盘能带得动Linux系统,是因为目前主流的基于USB3.2gen2协议的移动硬盘速度已经能达到10Gbps(实际1000MB/s左右),达到大部分电脑自带的PCIE3.0硬盘速度的1/3,快要追上MacBook m2 256G版本的硬盘读写速度;而对于U盘,目前大部分A口也能支持到5Gbps的速率,对应速度最快的U盘能做到400MB/s的读速度(写速度通常要低一些,不过U盘速率宣传虚高很严重),这个速度几乎也不会对Linux to go的性能造成太大影响,因此U盘或许是可行的;但是注意,在以前的帖子中几乎没看到有人使用过U盘实现Linux to go,加上U盘本质还是Flash闪存,相比于移动硬盘具有更有限的读写寿命,并且不适合程序运行这种以随机读写为主的应用场景,因此还是不建议把应用程序或者操作系统放在U盘上(尽管成本更低),速度更快、运行更稳定、寿命更长的移动硬盘才是最优解(一分钱一分货)。
更新:如果本身没有对硬盘的需求,不希望为一个Linux to go系统花大价钱购买一个移动硬盘,可以考虑固态U盘,固态U盘的性质和固态硬盘接近,但体积更小,最快也能达到1000MB/s的读写速度;虽然固态U盘单位容量的价格也接近固态硬盘甚至更贵,但不同的是固态U盘有小容量可供选择,一般128G版本价格为100多,256G版本价格为200多,相比之下移动固态硬盘起步就是512G,价格接近500;另外在许多固态U盘的商品页面(例如联想异能者系列),都会说明支持制作Win to go,表明拿来制作Linux to go当然也是有可能的。(联想异能者F800的宣传页面,不过从评论看这种硬盘发热比较厉害,在长时间高速传输时可能有散热问题,三星T7 shield则在高负载下也不会有明显发热,更接近一般SSD的使用体验)
-
两款软件都是免费下载,但有内购内容;不过我们只用其中免费的功能就可以满足制作Linux to go的全部需求,这里附上下载链接:最新UltraISO官方免费下载 - UltraISO软碟通中文官方网站;DiskGenius – 正式版下载|免费下载
2.制作步骤
下载系统镜像
Ubuntu桌面版的下载链接如下:Download Ubuntu Desktop | Download | Ubuntu;这里我按照我的需求选择的是Ubuntu 22.04 LTS版本,LTS表示将获得长期支持;还可以按照需求选择更新的23或24版本。镜像文件大小在5GB左右,我们先开始下载镜像文件,在等待的过程中完成硬盘分区的步骤。
硬盘分区
使用DiskGenius完成接下来对移动硬盘的分区操作,基本原理是删除或释放原有分区占用的空间,得到空闲空间用来建立新的分区,新的分区专用于Linux操作系统。
假定现在移动硬盘里的东西已经备份完全,都可以删除(如果移动硬盘直接已经存放了一些东西,又不方便迁移,可以参考3.2)。
首先释放出空闲空间,这里我采用最粗暴的删除分区方式,也可以通过调整分区大小(NTFS格式下)或直接格式化硬盘得到空闲空间。
如果是通过调整分区大小获得空闲空间,需确保空闲空间(用于Linux to go的空间)都尽量在移动硬盘中靠前的位置,否则启动时可能无法扫描到启动文件。
然后还要修改分区表类型,T7默认为MBR格式,要换成GUID格式才能在其他其他电脑上启动系统。
然后在空闲位置就可以进行Linux to go所需空间的分区,如下图:
建立完成ESP分区后就可以继续完成其他部分的分区(同样是右击灰色区域,新建分区),可以看到这个界面中能选择的文件系统类型要丰富许多。
重复上图分区操作,具体分区如下,这里要重点关注分区大小、文件系统类型。
1GB的ESP分区,用来存放系统引导程序;16GB的SWAP区用于Linux的内存交换,一般电脑的内存多大就设置为多大(32G内存电脑就设置为32G);1GB用来挂载到/boot;分区(3)和分区(4)分别挂载到根目录/和用户目录/home,大小根据需求来,我这里就给80G;最后一个分区保留了750G,继续用作移动硬盘。
(在很多教程里也有说不需要提前硬盘分区,而是在安装Ubuntu的过程中就可以用自带的分区工具完成分区,但不建议这么做,一来不一定能实现4K对齐,且Linux自带分区似乎会在分区与分区之间产生空隙,二来Ubuntu的安装程序也有崩溃的风险,还是预先完成分区为宜)
(如果已经格式化了整个硬盘,还可以按照下面的操作,直接完成快速分区,但这种方法中能选择的分区格式很少,完成分区后再格式化能选择的格式也很少,因此还是建议采用上面的方法。
)
准备启动U盘
这里使用UltraISO软件,选择试用版即可,准备好用来启动系统的U盘,一定要对U盘中内容进行备份(U盘是一定会被格式化的)。
然后开始制作硬盘映像,制作之前可能会要求格式化,随便格式化一下即可,其他都按照默认选项;这里我还额外设置了便捷启动,但可能不是必须的,见3.3。
然后等待读条即可,如果使用优质U盘,这个过程2-3分钟即可完成。
安装系统
下面就可以把移动硬盘和启动U盘都连接在电脑上完成Ubuntu系统的安装;接下来请把教程移动到手机或平板上显示,并关闭电脑。
首先开机进入BIOS界面,不同电脑进入BIOS界面的方式不同;以我的拯救者Y9000P为例,开机时连续按下F2即可进入BIOS界面:
(拯救者BIOS界面,在Boot Device一栏下可以调整启动的优先级,其他部分的设置切勿轻易修改)
不过注意到,拯救者的BIOS有点特殊,连续按下F2进入的界面可以设置启动系统的优先级,却不能选择从哪个系统进入,如果要进入Linux的安装引导界面,就必须把Linpus lite放在最高的优先级,然后重启电脑,这非常的不方便;因此对于拯救者,更好的方法是开机时连续按下F12而非F2,进入专门的启动选择界面,选择Linpus lite开始安装:
(按下F12后的界面)
具体系统安装的部分我没有做记录,这里只好引用他人的图片(侵权删),我参照的是这篇帖子:Unbuntu22.04.3系统安装在移动固态硬盘操作流程_ubuntu22.04 挂载固态硬盘-CSDN博客,大神的教程已经写得很详细,我这里再照葫芦画瓢一遍:
-
进入安装界面,左侧设置中文(这只是设定安装过程的语言),右侧选择安装ubuntu
-
然后选择系统语言,我选择的是英文(选英文是为了最大程度避免安装时可能产生的错误,好比于程序安装路径不要包含中文字符,这一点具体可以查看3.4),大神选的是中文,可能也没有问题,而且选中文系统会自带中文输入法,也比英文系统再去安装中文输入法方便
-
联网,这里强烈建议联网,然后在安装过程中就完成软件更新
-
这里就按照下图配置全部勾选上,在很多教程中都不勾选最后一条,期望降低系统的安装时间,但这可能导致电脑的英伟达独立显卡无法正常工作(同样见3.4),这里强烈建议勾选上;这里还要设置一个密码,这个密码和电脑密码不同,要求位数更长,一定要记住,以后安装驱动程序时都可能要求输入
-
安装类型一定要选择“其他选项”,否则可能导致电脑原来的硬盘被格式化!
-
进入下一个界面,首先一定要设置最下方安装启动引导器的设备为移动硬盘作为EFI区的分区(这个选项默认是电脑的主硬盘,虽然在这里设置成移动硬盘的EFI分区在安装后系统引导程序还是在主硬盘而不是移动硬盘,但很多教程都强调必须把这里设置成移动硬盘的EFI区,所以我们也照做)
然后在我们已经分好区的基础上,把/boot、/、/home挂载到移动硬盘上设置好的对应分区;这里应该不需要再进行格式化;前两个分区应该默认就是efi和swap类型,无需挂载;第三个分区挂载到/boot(图中没有专门为/boot设置分区);第四个分区挂载到/;第五个分区挂载到/home;第六个分区就是我们的移动硬盘,和其余分区都无需挂载;这里建议右击界面的每个分区,查看“用于”,确保除了移动硬盘专用于Linux的五个分区外的其他分区都处于“不使用此分区”状态,避免错误地格式化电脑本身的硬盘。
分区
类型
挂载点
sda1
efi
None
sda2
swap
None
sda3
ext4
/boot
sda4
ext4
/
sda5
ext4
/home
sda6
exFAT
不使用此分区
完成以上两步就可以点击“现在安装”,等待安装完成;后面的步骤使用默认设置即可;完成安装后即可进入ubuntu系统界面。
重启完成驱动安装
进入ubuntu界面后先别着急使用,先重启电脑完成驱动安装。不出意外地话此时可能无法正常关机(在系统中点击关机后最后卡在Ubuntu的logo界面或黑色命令行界面),这是没有驱动的独立显卡作怪的缘故,此时可以长按电源键强制关机,然后重启电脑,进入Perform MDK management界面:
(这一步我也没做记录,引用大神的帖子——安装Ubuntu后蓝屏_enroll mok-CSDN博客(侵权删))
一定选择第二个Enroll MDK,选择continue,进入Enroll the key界面,选择yes,输入之前在安装系统时设置的secure boot密码(不是用户密码!),然后选择reboot重启电脑,完成显卡驱动的安装。
后续如果想安装英伟达官方的驱动(见3.5),也可以直接联网在线装;在“软件和更新”中,选择“附加驱动”,可以直接看到电脑的独立显卡对应的不同版本的驱动供选择(默认使用的是第三方开源驱动nouveau),选择一个驱动,选择“应用更改”,重启即可(如果一开始显卡驱动没有正常安装,系统无法识别显卡,则在“附加驱动”的界面也不会显示有任何可用驱动)。
将系统启动引导程序迁移到移动硬盘上
现在我们切换回Windows系统,使用Disk Genius查看移动硬盘的ESP区(注意到硬盘上的一些分区是无法像C盘、D盘这样直接被电脑的文件管理器访问的,需要为它们设置卷标,还必须有管理员权限,才能在文件管理器中进行访问和更改;这里推荐直接在Disk Genius中进行操作,即点击左侧目录即可直接访问和更改),发现其仍然是空的,没有我们的系统启动引导程序;实际上系统启动引导程序会被默认安装到主硬盘上:
如果你不想每次开机都要选择一个系统(即使你没插上移动硬盘),不想让Linux to go对你原来的Windows系统产生影响;又如果你还想让Linux to go在不同的电脑上都能工作,那么就要考虑将系统的启动引导程序迁移到到移动硬盘上。
这一步有使用boot-repair工具和手动迁移两种方法,我两种都尝试过,只有前者成功,并且前者也更加容易实现;这里就介绍第一种方法。
再把一开始的启动U盘和移动硬盘都插到电脑上,开机重启,按下F12进入启动项选择界面,此时应该能看到一个ubuntu和一个linpus lite,前者就是我们刚安装好的ubuntu系统,后者则还是原来引导ubuntu安装的程序。选择linpus lite,进入安装界面,但这次选择“试用Ubuntu”。
进入Ubuntu系统后,连接网络,打开终端输入下面的指令安装boot-repair软件:
sudo apt-add-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
安装完成后,输入命令运行该软件:
boot-repair
选择“Recommended repair”,等待程序运行完成即可。
将系统启动引导程序成功迁移到移动硬盘后,可以通过DiskGenius软件在移动硬盘的ESP分区下看到如下的目录结构:
此时就可以在Disk Genius中将主硬盘中对应的与ubuntu相关的系统引导启动程序文件删除,这样每次启动电脑,只有在插入移动硬盘时才能看到Ubuntu系统的启动项,在不插入移动硬盘时,电脑上就只有Windows一个启动项可以选择(不考虑其他特殊启动项)。
至此,基本大功告成!不过需要说明的是Linux to go对电脑上原来的Windows系统也并不是完全没影响,在我的电脑上,每次使用完Ubuntu系统再切换回Windows系统,系统时间都会错乱,需要到系统中手动校准时间。
3.可能出现的问题
3.1.U盘引导系统安装时出现崩溃
最开始我的启动盘是一个从初中开始用的古董U盘,制作启动盘就要花很长时间(制作速度约为3MB/s,总共需要20min左右),系统装到最后一步竟然直接崩溃了??(在设置Linux系统的用户名、设备名时报错闪退,进入到try Ubuntu的试用系统中);后来我换成了最近买的一个USB3.2的闪迪U盘重复之前步骤(128G的价格还不到三位数),不仅制作启动盘只要2min左右(制作速度约为30MB/s),在整个系统安装过程中也没有出现过崩溃的问题;所以推荐大家尽可能使用优质U盘。
3.2.不影响硬盘里本身已有的内容完成分区
三星T7 shield为了兼顾Mac和Windows的兼容性,默认使用的是exFAT文件系统,如果你已经在默认文件系统(exFAT)下存放了一些东西,想要在无损的情况下缩减原来分区大小留出空间用于Linux to go(比如1000G硬盘装了200G的东西,想在不移动200G文件的情况下,把硬盘变成700G,原来的200G还在700G里,剩下300G作为LInux to go的空间),这可能是无法做到的,我做过三种尝试都失败了,可以作为参考:
-
DiskGenius本身支持各种文件系统的无损分区,可以按如下步骤完成
但在实际操作中可能出现以下报错,虽然CSDN上针对这一问题有很多解决方案,但我始终都没能找到解决这一报错的方法而无法完成分区大小的调整。
-
于是我又尝试了另一款分区软件(易我数据恢复——全球超1亿用户的共同选择 (easeus.com.cn)),这一次在调整exFAT所在分区的大小时,直接无法操作,以为是会员问题,我又在淘宝购买了1天的会员激活码,仍然无法完成操作;遂联系客服,客服寻找技术人员进行远程操控,最后得出软件不能支持exFAT无损分区的结论。
-
受到2的启发,我又在淘宝上请人完成硬盘无损分区操作,技术人员又是一番捣鼓,均已失败告终,同样得出exFAT不行,要换成NTFS才能无损分区的结论,最后退款。
实际上来讲如果没有使用Mac的需求,硬盘拿到手就可以考虑格式化为NTFS格式,NTFS对Win有更好支持的同时,对Linux的支持同样不错(Linux默认不识别exFAT但能识别NTFS);如果是NTFS的文件系统,则可以轻易实现无损分区,步骤参照上面的1.即可。
综上所述,我最后不得不把原来硬盘中的东西全部备份到电脑本地(因为文件太大本地放不下还被迫删了几个学习资料??一百多G的地平线5),然后把整个所有的分区删除,最后完成硬盘分区的步骤。
3.3.BIOS界面找不到U盘启动项
Ubuntu系统安装引导程序在BIOS界面名称为Linpus lite,在我制作完成启动U盘并插入电脑重启后,发现在BIOS界面并不总能扫描到Linpus lite的启动项,可能需要反复插拔U盘或者重新启动电脑才有概率识别;这可能和在UltraISO中制作硬盘映像时没有设置便捷启动有关,按下面设置引导扇区后识别就变得稳定许多:
3.4.独立显卡无法被识别
在我前几次的尝试中,电脑的独立显卡总是无法被识别,这不仅会导致外接屏幕(我的电脑的HDMI和C接口都连接独显的输出)无法正常工作,还会导致电脑关机关不上(每次关机都必须强制按电源键强制关机),非常影响正常使用。
(可以看到只有集成显卡被识别到了)
后续我尝试了手动安装驱动程序(主要是英伟达官方驱动),结果不仅没装上,还把电脑本身的网卡、触控板、集显驱动装没了;最后是靠重装系统完成了显卡驱动的安装,也就是在安装过程中部分选项必须要勾选上。
我做了几次实验:
- 系统语言选择中文,不联网,正常安装,不选择安装ubuntu时下载更新,不选择为图形或无线硬件以及其他媒体格式安装第三方软件;结果没有显卡驱动
- 系统语言选择中文,不联网,正常安装,不选择安装ubuntu时下载更新,选择为图形或无线硬件以及其他媒体格式安装第三方软件;结果没有显卡驱动
- 系统语言选择英文,联网,正常安装,选择安装ubuntu时下载更新,选择为图形或无线硬件以及其他媒体格式安装第三方软件;结果成功安装显卡驱动(开源第三方驱动,外接屏幕正常工作)
因为没有使用控制变量法,无法确定驱动安装不正常的原因,但猜测和系统语言无关,而主要是要联网,然后要选择安装ubuntu时下载更新,还要选择为图形或无线硬件以及其他媒体格式安装第三方软件。当集显和独显驱动都正常工作时显示界面如下:
(两个图形卡在设置中都被识别到)
3.5安装英伟达官方驱动丢失掉其他驱动
首先强烈建议非必须不要折腾官方驱动,自带的驱动就挺好用的,装官方驱动可能导致原来的驱动丢失(触控板、网络、蓝牙等都不能用!),且官方驱动下屏幕色彩很灰(主观感受)!
首先打开设置-关于-软件更新-附加驱动,进入如下界面:
然后选择一个官方驱动安装,推荐选择非服务器(server)、非open kernel的驱动(更稳定),我选择的是图中第五个525版本,选择应用更改,等待完成后提示重启,这里趁还有网先别重启电脑(如果重启了也没关系,看后面)。
在终端输入命令 dpkg --get-selections|grep linux-
,最下面可以看到英伟达525驱动对应的内核版本是6.5.0-18,从蓝圈可以看到当前系统总共安装了三个内核模块(每次系统启动只会调用一个内核,默认是6.5.0-18,可以设置优先级),6.5.0-15应该是当前正在使用的,对应于自带的第三方开源驱动nouveau;6.2.0-26是最老的内核,不含独显驱动;6.5.0-18是为了安装英伟达官方驱动下载的内核,也是我们以后想调用英伟达官方驱动必须使用的内核。
再看红圈,我们发现6.5.0-18的内核对应的文件相比6.5.0-15和6.2.0-26两个内核要少三个文件,这就是导致安装英伟达官方驱动后集显、网卡、蓝牙等都不见的罪魁祸首,这里我们只要下载这几个文件即可。
sudo apt-get install linux-headers-6.5.0-18-generic
# 第一个红圈的文件下载安装完成后会自动补齐第二个红圈缺失的文件
sudo apt-get install linux-modules-extra-6.5.0-18-generic
安装完成后重启电脑,一切正常,而且设置中图形卡识别为具体显卡型号,可以用 nvidia-smi
命令确认显卡正常安装,同时集显也被正常识别。
更改英伟达官方驱动后感觉外接屏幕颜色暗淡不少,并且鼠标滑动拖影明显(外接屏幕是4K60Hz),使用感受不太好;电脑内置屏幕因为有高刷,不太受到影响;在内置的英伟达控制面板查看到外接屏幕疑似通过DP1.2与显卡连接,然而正常情况下应该是通过DP1.4连接。
尝试更换内核启动、换回nouveau驱动(同样在软件更新-附加驱动中修改,且切换为nouveau驱动无需重启电脑),显示效果依然暗淡、拖影严重;回到Windows系统下屏幕色彩、拖影恢复正常。因此判断不是屏幕本身的问题,而是英伟达对非专业卡在Linux系统下的软件支持真的很糟糕!
附:如果第一步操作中没有补齐缺失的内核文件就直接重启,可能会发现电脑没有网络,也没法下载缺失的内核文件。
(设置-关于里显示只有独显没有集显,这时候也没有网络;右侧是nvidia-smi命令显示驱动正确安装的效果)
可以考虑换回原来的内核,在有网条件下补齐文件然后重启电脑,具体步骤如下:
在启动的黑色命令行界面,选择第二个Advanced options……(第一个是Ubuntu,是我们正常启动系统时选择的选项),然后手动选择一个较老版本的内核启动(如图中6.5.0-15和6.2.0-26都行,有网就行),进入系统后按照前面的步骤sudo apt-get install补齐三个文件即可。
参考文章:
Ubuntu系统安装在移动固态硬盘,实现在不同电脑即插即用(这篇文章特别说明了要改分区表为GUID)
将Liunx装入移动硬盘,实现即插即用_系统装移动硬盘随插随用么csdn-CSDN博客(这篇文章提供了将主硬盘上EFI区的系统引导程序转移到移动硬盘上EFI区的另一种方法;不过我在尝试这种方式时并没有成功)
移动硬盘安装ubuntu,制作自己的ubuntu-to-go_ubuntu to go 制作工具-CSDN博客(Linux to go的启动项修复帖子)
Unbuntu22.04.3系统安装在移动固态硬盘操作流程_ubuntu22.04 挂载固态硬盘-CSDN博客(这篇文章的系统安装部分写得很好)
Linux Ubuntu18.04安装显卡驱动后,无法上网的问题解决_ubuntu装了显卡驱动连不上网-CSDN博客(这篇文章解决了安装英伟达官方驱动后丢失其他驱动的问题)
相关文章:
【万字详细教程】Linux to go——装在移动硬盘里的Linux系统(Ubuntu22.04)制作流程;一口气解决系统安装引导文件迁移显卡驱动安装等问题
Linux to go制作流程 0.写在前面 关于教程Why Linux to go?实际效果 1.准备工具2.制作步骤 下载系统镜像硬盘分区准备启动U盘安装系统重启完成驱动安装将系统启动引导程序迁移到移动硬盘上 3.可能出现的问题 3.1.U盘引导系统安装时出现崩溃3.2.不影响硬盘里本身已有…...
LeetCode 704 如何正确书写一个二分查找
题目链接 中文版:https://leetcode.cn/problems/binary-search/description/ 题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标…...
LEED绿色建筑认证在2025年相关消息
关于LEED绿色建筑认证在2025年的相关消息,以下是一些关键信息: 一、认证体系的重要性与影响力 LEED(能源与环境设计先锋奖)评估体系是全球最具影响力的绿色建筑认证标准之一。中国已成为全球第二大LEED认证市场,显示…...
百度Android最新150道面试题及参考答案 (中)
Android 中一个 View 的显示渲染过程,自定义 View 的时候需要避免什么操作? 一、View 的显示渲染过程 测量(Measure)阶段 这个阶段是 View 渲染的第一步。父容器会调用子 View 的measure()方法来确定子 View 的大小。measure()方法会传入两个参数,即MeasureSpec(测量规格…...
详解Redis的Hash类型及相关命令
目录 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET HLEN HSETNX HINCRBY HINCRBYFLOAT 内部编码 应用场景 HSET 设置 hash 中指定的字段(field)的值(value)。 语法 HSET key field value [field value ...] 时…...
会议活动管理系统django
完整源码项目包获取→点击文章末尾名片!...
【数据结构与算法:七、查找】
第7章 查找 7.1 查找的基本概念 查找是通过某种算法,在一个给定的数据集合中找到目标元素或判断目标元素是否存在的操作。查找效率直接决定了程序性能,尤其在大数据处理场景下,合理选择查找算法至关重要。 查找的基本步骤 确定查找表结构…...
如何使用SparkSql
一、SparkSql的前世今生 Hive->Shark->Spark SQL 二、SparkSql依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.1.2</version> </dependency> 三、…...
沃尔玛购物卡查询
在平常生活里,沃尔玛卡可不只是一张购物的凭据,它是连着心意的绳子,是让生活方便的小幸福。每次拿着沃尔玛卡走进熟悉的超市大门,心里就会有一点期待和满足。可随着时间过去,可能有些卡就静静躺在抽屉角落,…...
Markdown中流程图的用法
Markdown中流程图图的用法 前言语法详解基本流程图几何图形节点默认的节点分离节点的ID与内容节点形状圆角形节点的语法圆形节点的语法。非对称节点语法菱形节点的语法。六角形节点的语法。平行四边形节点的语法。梯形节点的语法。 连接线基本的连接线语法。无向线段连接线。点…...
Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】
在 Linux 系统中,/proc 目录是一个虚拟文件系统,提供了关于内核、进程和系统状态的实时信息。它与系统的 内核 和 进程 运行状态紧密相关,是系统管理员、开发人员和用户了解系统运行状况的重要途径。 /proc 目录的名称来源于 “process”&am…...
无监督学习入门指南:从原理到实践
目录 1 无监督学习基础 1.1 核心目标 1.2 理论基础 1.3 应用层面 2 聚类分析 2.1 相似性度量 2.2 聚类算法 2.2.1 K-均值聚类 2.2.2 密度聚类:DBSCAN 2.2.3 谱聚类 3 降维技术 3.1 线性 3.2 非线性 3.3 降维技术面临关键问题 4 概率密度估计 4.1 参…...
(MTK平台mt8168)通过i2c调试外接MCU管理外接电源项目
这个项目是我几年前在mtk方案公司调试的一个比较具有综合性的项目,涉及到知识点有很多,我个人认为算是一个很经典的一个项目,当然这个是对技术人员而讲。我大概总结一下,涉及到i2c,kernel中的timer_list,示波器和逻辑分析仪的使用,还有i2c硬件上的原理,如果host断采用3…...
计算机网络——网络层—路由算法和路由协议
一、因特网的路由选择协议 • 不存在一种绝对的最佳路由算法。 • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 • 实际的路由选择算法,应尽可能接近于理想的算法。 • 路由选择是个非常复杂的问题 • 它是网络中的所有结点共同协调工…...
WPS计算机二级•数据查找分析
听说这里是目录哦 通配符🌌问号(?)星号(*)波形符(~) 排序🌠数字按大小排序以当前选定区域排序以扩展选定区域排序 文字按首字母排序 快速筛选分类数据☄️文字筛选数字筛选颜色筛选…...
『SQLite』表的创建、修改和删除
本节摘要:主要讲述SQLite中创建、删除、修改表等操作。 创建表 CREATE TABLE 语句来创建表。 修改表 ALTER TABLE 语句来修改表名称、已有表字段,或者新增字段。 删除表 DROP TABLE 语句用来删除表. 注意: 上述内容详细讲解见文章&#…...
leecode1035.不相交的线
这道题看起来可能没有思路,但是实际上仔细观察会发现将相等的数字连接起来,并且不相交,就相当于是元素的原有相对顺序不变求其最大子序和,那么这道题目就是最长公共子序列,代码一模一样 class Solution { public:int m…...
事务,事务的特点,事务并发带来的问题,实现事务管理
1.什么是事务 1、事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性 2、事务是一系列动作,它们被当作一个独立的工作单元,这些动作要么全部完成,要么全不起作用。 2.事务的特点 ACID 1.原子性…...
并行计算-申请、创建图像界面虚拟服务器【VNC Viewer 连接灰屏问题 (能够连接上,但全是灰点,没有任何菜单、按钮,鼠标变为x)】
参考:并行智算云产品文档中心_Ubuntu系统开启和使用2D、3D远程可视化方式 不要用校园网。 登录这个网站 并行智算云 创建云服务 有同学出现下面情况,没有直接显示desk的开发环境 安装vnc sudo apt install tightvncserver 然后遇到 [解决方案] VNC V…...
[创业之路-238]:《从偶然到必然-华为研发投资与管理实践》-1-产品研发过程的质量控制绝对了结果的质量,产品研发的过程控制的质量等级决定了结果质量的等级
一、产品研发过程的质量控制:决定结果质量的关键 在当今竞争激烈的商业环境中,产品研发不仅是企业创新的源泉,更是决定其市场竞争力的重要因素。而产品研发过程的质量控制,则如同这一过程的生命线,直接决定了最终产品…...
Python应用——将Matplotlib图形嵌入Tkinter窗口
Python应用——将Matplotlib图形嵌入Tkinter窗口 目录 Python应用——将Matplotlib图形嵌入Tkinter窗口1 模块简介2 示例代码2.1 Matplotlib嵌入Tkinter2.2 Matplotlib嵌入Tkinter并显示工具栏 1 模块简介 Tkinter是Python的标准GUI(图形用户界面)库&…...
Cyber Security 101-Web Hacking-Burp Suite: The Basics(Burp Suite:基础知识)
使用 Burp Suite 进行 Web 应用程序渗透测试的简介。 任务1:介绍 欢迎来到 Burp Suite Basics! 这个特定的房间旨在了解 Burp Suite Web 应用程序安全测试框架的基础知识。我们的重点将围绕 以下关键方面: Burp Suite 的全面介绍。全面概述…...
清除数字栈
给你一个字符串 s 。 你的任务是重复以下操作删除 所有 数字字符: 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 输入:s "cb34" 输出:"" 解释:…...
.net core 为什么使用 null!
为什么使用 null!? 通常在以下几种情况中,你可能会使用 null!: 属性值可能会在对象构造或某个方法中被初始化,但在构造函数或者对象完全初始化之前,属性的值可能会是 null。你知道这个属性最终会被赋一个非 null 的值…...
在Spring Boot项目中使用MySQL数据库
一、引言 MySQL 是一个广泛使用的开源关系型数据库,而 Spring Boot 则是一个流行的 Java 框架,提供了快速构建生产级别的独立 Spring 应用的能力。将 MySQL 与 Spring Boot 集成,可以轻松地管理应用的数据存储。本文将介绍如何在 Spring Boo…...
redis各种数据类型介绍
Redis 是一种高性能的键值存储数据库,它支持多种数据类型,使得开发者可以灵活地存储和操作数据。以下是 Redis 支持的主要数据类型及其介绍: 1. 字符串(String) 字符串是 Redis 中最基本的数据类型,它可以存…...
聊聊前端框架中的process.env,env的来源及优先级(next.js、vue-cli、vite)
在平时开发中,常常使用vue、react相关脚手架创建项目,在项目根目录可以创建.env、.env.[mode](mode为development、production、test)、.env.local等文件,然后在项目中就可以通过process.env来访问相关的环境变量了。 下面针对如下…...
链地址法(哈希桶)
链地址法(哈希桶) 解决冲突的思路 开放定址法中所有的元素都放到哈希表⾥,链地址法中所有的数据不再直接存储在哈希表中,哈希表 中存储⼀个指针,没有数据映射这个位置时,这个指针为空,有多个数…...
OpenCV相机标定与3D重建(44)初始化广角(鱼眼)相机的投影映射函数initWideAngleProjMap()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::initWideAngleProjMap 是 OpenCV 库中的一个函数,用于初始化广角(鱼眼)相机的投影映射。这个函数生成两个…...
『SQLite』安装与基本命令语法
SQLite安装 Windows: 访问 SQLite 的安装网页:https://www.sqlite.org/download.html.向下滚动页面到“Precompiled Binaries for Windows”部分。下载适用于你的系统架构(32-bit 或 64-bit)的预编译二进制文件。将下载的 ZIP 文…...
Meta 发布 Llama 3.3:一个性能和效率均有所提升的多语言模型
Meta 发布 Llama 3.3:一个性能和效率均有所提升的多语言模型 Meta 发布了 Llama 3.3,这是一款多语言大语言模型,旨在支持研究和行业中的一系列人工智能应用。该模型具有 128k 个 token 上下文窗口,并对架构进行了改进以提高效率,在推理、编码和多语言任务的基准测试中表现…...
场馆预定平台高并发时间段预定实现V1
🎯 本文介绍了一个高效处理高并发场馆预订请求的系统设计方案。通过使用Redis缓存和位图技术,系统能够快速管理场地的可用性和预订状态。采用Lua脚本确保操作的原子性,结合责任链模式进行参数校验,并通过事务保证数据一致性。系统…...
【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理
使用AWS SDK碰到的错误,其实很简单,要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…...
BOOST 库在深度学习中的应用及具体代码分析(三)
一、引言 深度学习的迅猛发展重塑了众多领域的技术格局,从智能安防中的人脸识别精准监测,到医疗影像辅助诊断助力疾病早期发现,再到自然语言处理驱动智能客服流畅交流,其影响力无处不在。在深度学习的实现工具集中,Pyt…...
VSCode 在Windows下开发时使用Cmake Tools时输出Log乱码以及CPP文件乱码的终极解决方案
在Windows11上使用VSCode开发C程序的时候,由于使用到了Cmake Tools插件,在编译运行的时候,会出现输出日志乱码的情况,那么如何解决呢? 这里提供了解决方案: 当Settings里的Cmake: Output Log Encoding里设…...
机器学习经典算法——线性回归
目录 算法介绍 一元线性回归模型 多元线性回归模型 误差项分析 相关系数 算法案例 一元线性回归预测——广告销售额案例 二元线性回归预测——血压收缩案例 多元线性回归预测——糖尿病案例 算法介绍 线性回归是利用数理统计中回归分析,来确定两种或两种…...
基于单片机的光控窗帘设计
摘 要 : 为了能根据室外环境亮度实现窗帘自动拉合的设计需求 , 提出了一种基于单片机 控制的 光控窗帘设计方案 , 并完成系统的软 、 硬件设计 。 该系统的硬件部分主要利用光敏传感器产生的信号作为单片机输入信号, 软件部分采用 C 语言进行编程 , 能够完成智能光控…...
STM32 拓展 电源控制
目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…...
ASP.NET CORE 依赖注入的三种方式,分别是什么,使用场景
在 依赖注入(Dependency Injection,简称 DI)中,通常有三种常见的服务生命周期模式,用于控制服务实例的创建和管理。这些模式分别是:Transient、Scoped 和 Singleton。这三种模式在 ASP.NET Core 中非常重要…...
在Linux中,如何禁用root用户直接SSH登录?
在Linux中禁用root用户的直接SSH登录是为了增强系统的安全性,因为允许root用户通过SSH远程登录会增加服务器被暴力破解的风险。以下是在Linux系统中禁止root用户直接SSH登录的步骤: 编辑SSH配置文件: 打开/etc/ssh/sshd_config文件ÿ…...
Unity3D仿星露谷物语开发17之空库存栏UI
1、目标 将库存栏放在游戏界面中,一般情况下角色居中展示时库存栏在底部,当角色位于界面下方时库存栏展示在顶部避免遮挡。 2、CanvasGroup组件 用于集中控制UI元素的透明度、交互性和射线投射行为。CanvasGroup的Alpha属性允许渐变效果,I…...
云效流水线使用Node构建部署前端web项目
云效流水线实现自动化部署 背景新建流水线配置流水线运行流水线总结 背景 先来看看没有配置云效流水线之前的部署流程: 而且宝塔会经常要求重新登录,麻烦的很 网上博客分享了不少的配置流程,这一篇博客的亮点就是不仅给出了npm命令构建&…...
Mysql数据实时同步到Es上
同步方案 ① 同步双写 同步双写实一种数据同步策略,它指的是在主数据库(如mysql) 上进行数据修改操作,同时将这些修改同步写入到ES 中,这种策略旨在确保两个数据库之间的数据一致性,并且优化系统的读写性能。 目标 同步双写是…...
【Redis经典面试题七】Redis的事务机制是怎样的?
目录 一、Redis的事务机制 二、什么是Redis的Pipeline?和事务有什么区别? 三、Redis的事务和Lua之间有哪些区别? 3.1 原子性保证 3.2 交互次数 3.3 前后依赖 3.4 流程编排 四、为什么Lua脚本可以保证原子性? 五、为什么R…...
聊聊 C# 中的委托
聊聊 C# 中的委托 什么是委托(Delegate)单播委托(Unicast Delegate)多播委托(Multicast Delegate)内置委托(Action & Func)单播委托(使用 Action 和 Func)…...
计算机网络--路由器问题
一、路由器问题 1.计算下一跳 计算机网络--根据IP地址和路由表计算下一跳-CSDN博客 2.更新路由表 计算机网络--路由表的更新-CSDN博客 3.根据题目要求给出路由表 4.路由器收到某个分组,解释这个分组是如何被转发的 5.转发分组之路由器的选择 二、举个例子 …...
【循环神经网络】RNN介绍
在人工神经网络中,”浅层网络”是指具有一个输入层、一个输出层和最多一个没有循环连接的隐藏层的网络。随着层数的增加,网络的复杂性也在增加。更多的层或循环连接通常会增加网络的深度,并使其能够提供不同级别的数据表示和特征提取…...
centos,789使用mamba快速安装R及语言包devtools
如何进入R语言运行环境请参考:Centos7_miniconda_devtools安装_R语言入门之R包的安装_r语言devtools包怎么安装-CSDN博客 在R里面使用安装devtools经常遇到依赖问题,排除过程过于费时,使用conda安装包等待时间长等。下面演示centos,789都是一…...
【C++】B2104 矩阵加法
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述输入格式输出格式输入输出示例 💯我的解法解法分析解法优缺点 💯老师的解法解法分析优缺点对比 💯思路对比与优化对比总结改进与…...
深信服云桌面系统的终端安全准入设置
深信服的云桌面系统在默认状态下没有终端的安全准入设置,这也意味着同样的虚拟机,使用云桌面终端或者桌面套件都可以登录,但这也给系统带来了一些安全隐患,所以,一般情况下需要设置终端的安全准入策略,防止…...