EFI引导模式下配置Windows和Linux双系统共存

news2024/11/17 5:55:11

        这几天在VirtualBox虚机里玩Modular MAX下的LLama3大模型,实在受不了这执行速度,于是下决心把Ubuntu系统安装在硬盘上跟Windows11做双系统共存。之前在传统BIOS引导模式下做过不少次双系统引导,EFI模式下第一次做,加之windows系统比较霸道,安装过程中踩了不少坑,略记以备忘。

        在安装了Windows11的电脑上安装Ubuntu2404系统并实现双系统共存,首先要在windows下给Ubuntu系统腾出磁盘空间,一般腾出一个100BG大小的分区,Windows下基本上都EFI Boot + GPT分区,需将windows的快速启动功能关闭。其次在ubuntu官网下载系统镜像,制作U盘启动安装盘。第三步在电脑的UEFI配置界面里(华为电脑是按F2)将Sercure Boot特性关闭,使用启动U盘启动。第四步是用启动U盘安装Ubuntu系统,安装程序会自动配置EFI启动记录,并在GRUB启动管理器里增加Windows系统的引导项(通过ChainLoader)。一切正常的话安装会很顺利,重新启动进电脑的Boot选项界面(华为电脑是按F12,各家品牌不完全一样)就可以看到ubuntu和windows两条启动项,默认第一条是ubuntu,可以在ubuntu下使用efibootmgr调整启动顺序。

        第一步,Windows下的准备工作。

        首先是给Ubuntu系统安装腾出足够的磁盘空间,可使用磁盘管理器进行操作:在开始按钮上点击鼠标右键,弹出菜单中选择“磁盘管理”快速进入磁盘管理器,也可以按开始按钮或开始键,输入“磁盘管理”选择“创建并格式化硬盘分区”应用进入磁盘管理器。在磁盘管理器可以看到EFI分区是第1个分区,windows使用的是GPT分区(分区即是卷)。比较简单的方式是找个大的分区把数据备份出来,删除分区再重新划一个给Ubuntu安装使用。

        还一个很重要的操作是将Windows的快速启动功能关闭掉,否则会很麻烦:安装完ubuntu后,重启进入windows会把EFI引导记录给恢复到原来状态,即把ubuntu的引导项给删除掉,到时不得不用Ubuntu的启动安装U盘启动做修复。操作的方法是进入控制面板的电源选项(不是设置里的电源选项),在开始菜单下输入“控制面板”进入控制面板应用,进入“系统与安全”,在“ 电源选项 ”下进入“更改电源按钮的功能” ,点击“更改当前不可用的设置”,取消勾选“启用快速启动(推荐)”项。这项功能是在Windows独占电脑的情况下,对各磁盘分区和EFI启动进行缓存,启动时使用缓存信息以加快启动速度,但双系统启动模式下就必须将其关闭。

        第二步,下载Ubuntu安装镜像并制作启动安装U盘。

        这一步比较简单,属于常规操作。到www.ubuntu.com官网下载Ubuntu桌面版最新推荐镜像即可,下载到本地硬盘。然后按官网推荐下载使用使用Etcher (https://etcher.balena.io/#download-etcher )制作启动安装U盘,按操作提示做即可。需要注意是此操作会清除U盘中的所有数据,需提前做好数据备份。

        第三步,启动系统安装Ubuntu。

        这也是常规操作,把启动安装U盘插入电脑U口,启动电脑按F2(各品牌不一样)UEFI配置界面里将Sercure Boot特性关闭,保存退出重启后按F12进入Boot启动选项,选择U盘启动。启动后进入Ubuntu引导界面,选择try and install ubuntu项进入,按提示一步一步安装即可。安装时选择手动分区,将根分区/安装在预留给Ubuntu系统的分区上,在这里可以打开terminal窗口,通过sudo blkid、sudo lsblk命令找到预留安装的分区和EFI分区。对于传统的IDE和SATA等接口硬盘设备文件名一般是/dev/sd*,对于nvme接口的固态盘一般是/dev/nvme*,如EFI分区一般为/dev/nvme0n1p1。Windows的引导数据和Grub的引导数据都会写在这个EFI分区上(FAT32格式),在Ubuntu里会mount到/boot/efi目录,EFI引导文件在/boot/efi/EFI/ubuntu目录下。

        安装完后拔出U盘重启,按F12进入EFI的boot启动选择界面即可看到ubuntu和windows两条启动项,可按需进入不同系统。如果想把windows引导项设备默认项,可以进入ubuntu后使用efibootmgr命令调整启动顺序。

查看EFI引导项信息

sudo efibootmgr

调整EFI启动顺序

sudo efibootmgr -o num1, num2, ..., numx

其中numx是各引导项的序号,通过第一条 sudo efibootmgr命令的输出结果中可以看到。

附:各种异常处理

        安装过程中可能会出现各种各样的异常情况,都可以通过命令行操作或第三方工具来修复。

1、Ubuntu的EFI引导记录被删除后的修复

        前面提到过如果没有关闭windows的快速启动功能,安装完ubuntu后重新进入windows后Ubuntu的EFI引导项会被删除掉,这里就需要使用ubuntu的启动安装盘重新启动进行EFI引导项的修复。

        重新启动进入ubuntu的Live环境后(即安装界面),可以打开terminal窗口通过efibootmgr命令修复或通过重新安装grub修复,或通过boot-repair工具修复。

1)通过boot-repair工具修复

使用boot-repair工具修复比较简单,安装工具后执行boot-repairy自动修复即可。

首先在live环境下安装boot-repair工具:

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install -y boot-repair

执行boot-repair进行自动修复:

sudo boot-repair

按照boot-repair的指示进行操作即可。

2)手工进行修复

        使用Ubuntu的启动安装U盘启动,进入ubuntu的Live环境,挂载硬盘上Ubuntu的各系统分区,chroot到硬盘Ubuntu系统,重新安装grub,退出重启即可。

a. 挂载硬盘上安装的Ubuntu和各系统分区。

        在Ubuntu Live环境中,打开terminal终端,sudo blkid、sudo lsblk命令找到EFI分区和系统分区。如前所述SATA接口的硬盘一般为/dev/sd*,如果是nvme接口的则是/dev/nvme*,如/dev/nvme0n1pX,其中X是分区序号,而EFI分区一般是/dev/nvme0n1p1。

        将ubuntu根分区/挂载到/mnt下,其他分区在/mnt下相应目录挂载。

挂载根系统分区(例如根root分区是/dev/nvme0n1pX):

sudo mount /dev/nvme0n1pX /mnt

挂载boot分区(如果/boot是单独的boot分区 /dev/nvme0n1pY)

sudo mount /dev/nvme0n1pY /mnt/boot

挂载EFI分区(即/boot/efi,/dev/nvme0n1p1)

sudo mount /dev/nvme0n1p1 /mnt/boot/efi

挂载系统生成的文件系统:

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt/$i; done
b.使用chroot切换到硬盘上的Ubuntu系统:
sudo chroot /mnt
c.重新安装GRUB:
grub-install
update-grub
d.退出chroot并重启:
exit
sudo reboot

2、通过efibootmgr命令修改EFI引导项

        如果想修改EFI引导项顺序和引导项名称,可以通过电脑EFI引导界面提供的功能调整,如果电脑本身没有提供这功能,可以通过efibootmgr命令实现。前面提到过通过sudo efibootmgr -o命令调整引导顺序,但efibootmgr并没有提供直接修改引导项名称的功能,只能通过删除引导项再增加引导项的方式实现修改引导项名称:

#删除对应的bootnumX数字对应的引导项
sudo efibootmgr -d bootnumX -B
#添加引导项,其中EFI分区在/dev/nvme0n1硬盘的第1分区,--lable是引导项的名称
sudo efibootmgr --create --disk /dev/nvme0n1 --part 1 --label 'Ubuntu 24.04.1 LTS' --loader \\EFI\\ubuntu\\shimx64.efi 

也可以通过第三方工具rename-efi-entry实现:

#通过git下载工具
git clone https://github.com/s-n-ushakov/rename-efi-entry
cd rename-efi-entry
#bootnumX是EFI引导项的标号
sudo ./rename-efi-entry.bash '*' 'Ubuntu 24.04.1 LTS' bootnumX

详细操作说明可查看github上相应的说明
GitHub - s-n-ushakov/rename-efi-entry: A Bash script to rename EFI boot entriesA Bash script to rename EFI boot entries. Contribute to s-n-ushakov/rename-efi-entry development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/s-n-ushakov/rename-efi-entry

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2119898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】--数据类型与变量

文章目录 1. 字面常量2. 数据类型3. 变量3.1 变量概念3.2 整型变量3.2.1 整型变量3.2.2 长整型变量3.2.3 短整型变量3.2.4 字节型变量 3.3 浮点型变量3.3.1 双精度浮点型3.3.2 单精度浮点型 3.4 字符型变量3.5 布尔型变量3.6 类型转换3.6.1 自动类型转换(隐式&#…

Openeuler22 部署 RackTables0.22.0

目录 0、前言 一、部署lamp环境,lamp环境测试 1、部署Apache,apache环境测试 2、部署php、mysql,php环境测试 二、放文件 三、配置mysql 四、安装racktables 第一步、点击proceed继续 第二步、点击proceed 第三步、根据提示进行操作…

【Qt】解决设置QPlainTextEdit控件的Tab为4个空格

前言 PyQt5 是一个用于创建跨平台桌面应用程序的 Python 绑定集合,它提供了对 Qt 应用程序框架的访问。用于开发具有图形用户界面(GUI)的应用程序,以及非GUI程序。PyQt5 使得 Python 开发者可以使用 Qt 的丰富功能来构建应用程序。…

【无线通信发展史⑨】1791年路易吉·伽伐尼-关于动物电的研究与1800年亚历山大·伏打伯爵-电池:伏打电池

前言:用这几个问答形式来解读下我这个系列的来龙去脉。如果大家觉得本篇文章不水的话希望帮忙点赞收藏加关注,你们的鼓舞是我继续更新的动力。 我为什么会写这个系列呢? 首先肯定是因为我本身就是一名从业通信者,想着更加了解自己…

RHEL 7 安装配置( Linux 网络操作系统 02)

一、虚拟机安装 我们的每台电脑都已经安装了VMware 虚拟机,其安装相当简单,在此不再赘述。可以参考如下链接: VMWare安装傻瓜式教程 (大家可以关注老师的博客,也建议大家写博客。) 二、红帽 rhel 7 安装 找…

Windows系统Docker部署AList并挂载阿里云盘实现远程访问详细教程——“cpolar内网穿透”

文章目录 前言1. 使用Docker本地部署Alist1.1 本地部署 Alist1.2 访问并设置Alist1.3 在管理界面添加存储 2. 安装cpolar内网穿透3. 固定Alist公网地址 前言 本文和大家分享如何在Windows系统使用Docker本地部署Alist全平台网盘神器,然后结合cpolar内网穿透工具实现…

运维Tips | 如何安全的移除系统中旧的Linux内核?

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 如何安全的删除系统中旧的 Linux 内核? 描述:如果更新了 Linux 操作系统,那么你会注意到,每次升级 Linux 内核后,GRUB 菜单都会添加一个新的引导条…

如何解决 Windows PowerShell 中 “无法加载文件 pnpm.ps1” 的错误

当你在 Windows 系统上尝试使用 pnpm 时,如果遇到“无法加载文件 pnpm.ps1”的错误,通常这意味着 PowerShell 的执行策略阻止了脚本的运行。这种限制是为了防止未经授权的脚本在您的计算机上执行,但它同样也会阻止合法但未签名的脚本运行。 …

解读:靠卖石头能否实现财务自由?

在生活中,我们常常听闻各种独特的创业故事,而 “卖石头实现月入过万” 也成为了一个令人好奇的话题。 在大家生活压力都比较大的情况下,许多人都在寻找新的收入来源,尤其是在经济压力日益增加的情况下。最近,一些人开…

如何选择可靠的相亲交友平台:安全与诚信并重

在数字化时代,相亲交友系统已成为寻找伴侣的重要途径。然而,选择一个可靠的平台对于确保安全和诚信至关重要。以下是如何选择可靠相亲交友平台的指南 : 第一章:安全为先 选择相亲交友系统时,安全性是首要考虑的因素。…

读书记录:谷歌工作法 工作效率提升10倍的57个技巧

​ 前言 我在谷歌工作时留下的最深刻印象是“必须以全世界最快的速度取得成果”这一谷歌特有的强烈的使命感。 为什么日本的企业生产效率低下 过度推迟讨论 过分讨论 过度的交流 改变工作方式方法才是生存之道 在这样的时代,我们不应该害怕“自己的工作消失”&a…

【CSS in Depth 2 精译_027】4.4 Flexbox 元素对齐、间距等细节处理(下)+ 4.5 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 &#x1f4bb…

【拥抱AI】主流平台AI Agent使用体验对比

为了更好的了解和学习RAG的原理和实战效果,也因为工作需要,这两天都奔波在各大主流AI平台。 以下自己收集的是一些主流大模型LLM的AI Agent对比,通过功能特性、易用性与集成性、成本与商业模式、安全性与隐私性几个方面来了解,有不…

LSP协议:打造流动性管理的市场新标杆

随着以太坊从 PoW(工作量证明)向 PoS(权益证明)的转型,PoS已然成为主流区块链共识机制的重要组成部分。再加上跨链技术的发展,包含比特币在内的不同生态之间进行资产质押与交换也催生出市场对于流动性管理的…

CentOS Stream 8中安装和使用 Docker

docker安装包-CSDN博客 〇、常用的docker命令 docker的作用: 快速进行软件的安装,便于软件环境的维护 docker的镜像: 压缩了指定软件的安装包的文件。使用镜像文件创建容器 docker的容器: 容器可以理解为就是一台小电脑。安装的linux系统&am…

《OpenCV计算机视觉》—— 对图片进行旋转的两种方法

文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下: import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…

[基金理财] 投资组合的搭建

📢博客主页:https://loewen.blog.csdn.net📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由 丶布布原创,首发于 CSDN,转载注明出处🙉📢现…

(CVPR-2023)面向实用的即插即用扩散模型

面向实用的即插即用扩散模型 Paper Title:Towards Practical Plug-and-Play Diffusion Models Paper是Riiid AI Research发表在CVPR 2023的工作 paper地址 Code地址 Abstract 基于扩散的生成模型在图像生成方面取得了显著的成功。它们的指导公式允许外部模型即插即…

PX4软/硬件(SITL/HITL)在环仿真

文章目录 介绍依赖PX4 Firmware: 软件在环(SITL)仿真Gazebo 软件无人机STIL连接简要示意SITL SLAM仿真总结示例 HITL 仿真 pxh常用命令MAVLink 指令使用这些命令时的注意事项 参考链接 介绍 为https://blog.csdn.net/weixin_41469272/article/details/117919845的补…