用efibootmgr管理UEFI启动项,添加丢失的启动项

2023-05-16


UEFI用来替代传统BIOS引导操作系统,学会修改UEFI启动项也变得十分重要,UEFI全称为:“统一的可扩展固件接口”(Unified Extensible Firmware Interface),目前新购入的计算机都支持UEFI固件,若是需要启动传统MBR设备,则需开启CSM(Compatibility Support Module)。关闭CSM则变成纯UEFI启动,且完全支持安全启动。Secure Boot(安全启动),安全启动仅适用于使用UEFI启动的操作系统。如果电脑要启动不完全支持UEFI的设备,就必须关闭Secure Boot,然后打开CSM。如Win7系统,必须开启CSM兼容模式。Windows8及以上都能很好的支持UEFI,而为了设置系统引导,必须要管理UEFI启动项。

在国内个人物理机直接安装Linux系统时,一般都会再安装个Windows系统实现双系统,这样有时候就会出现系统启动项丢失的情况多为Linux系统

解决方法就是使用efibootmgr命令添加启动项,而在Windows下可以使用EasyUEFI这个软件。

1、如果系统丢失Linux启动项,如果是双系统就只能进入Windows,但是我不喜欢用EasyUEFI,这时可以选择一个Linux liveCD系统,如Ubuntu,
将Ubuntu liveCD 刻录成U盘启动,如果刻录成光驱启动系统会很慢。

2、在Ubuntu(非liveCD)下我使用efibootmgr命令,显示如下:

pipci@ubuntu:~$ efibootmgr
BootCurrent: 0012
Timeout: 0 seconds
BootOrder: 0012,0010,0011,000F,000B,000A,0006,0007,0008,0009,000C,000D,000E
Boot0000  Setup
Boot0001  Boot Menu
Boot0002  Diagnostic Splash Screen
Boot0003  Lenovo Diagnostics
Boot0004  Rescue and Recovery
Boot0005  Startup Interrupt Menu
Boot0006* USB CD
Boot0007* USB FDD
Boot0008* ATAPI CD0
Boot0009* ATAPI CD1
Boot000A* ATA HDD0
Boot000B* ATA HDD1
Boot000C* ATA HDD2
Boot000D* USB HDD
Boot000E* PCI LAN
Boot000F* Windows Boot Manager
Boot0010* ubuntu
Boot0011* ubuntushim
Boot0012* opensuse-secureboot
pipci@ubuntu:~$


列表还是很直观的显示了当前启动项,启动超时,EFI启动顺序,0012是第一启动项对应的是opensuse系统,0011是第二启动项对应ubuntu系统这个是我手动添加的,
000F是四启动项对应的Windows系统。

3、查找系统启动文件,每个系统都会在EFI分区建立自己的启动文件。

pipci@ubuntu:~$ sudo fdisk -l      #产看EFI所在分区

设备           Start    末尾    扇区  Size 类型
/dev/sdb1       2048    206847    204800  100M EFI System                   #EFI所在分区                  
/dev/sdb2     206848    468991    262144  128M Microsoft reserved
/dev/sdb3     468992  83888127  83419136 39.8G Microsoft basic data
/dev/sdb4   83888128  92276735   8388608    4G Microsoft basic data
/dev/sdb5   92276736 176168959  83892224   40G Microsoft basic data
/dev/sdb6  176168960 254294015  78125056 37.3G Linux filesystem
/dev/sdb7  254294016 262682623   8388608    4G Linux filesystem
/dev/sdb8  262682624 468860927 206178304 98.3G Microsoft basic data
pipci@ubuntu:~$

4、挂在EFI分区

pipci@ubuntu:~$ sudo mount /dev/sdb1 /mnt/      #挂载EFI分区到/mnt目录

5、进入EFI分区
pipci@ubuntu:~$ cd /mnt/
bash: cd: /mnt/: 权限不够
pipci@ubuntu:~$ sudo -i                #以root用户身份运行一个登录 shell
root@ubuntu:~# cd /mnt/

6、产出EFI分区
root@ubuntu:/mnt# ls
EFI

7、进入EFI目录,查看

root@ubuntu:/mnt# cd EFI/
root@ubuntu:/mnt/EFI# ls
Boot  Microsoft  opensuse  ubuntu           #可以看出安装的系统
root@ubuntu:/mnt/EFI#

8、查看EFI下各目录内容:
root@ubuntu:/mnt/EFI# ls Boot/
bootx64.efi
root@ubuntu:/mnt/EFI# ls Microsoft/
Boot
root@ubuntu:/mnt/EFI# ls opensuse/
boot.csv  grub.cfg  grub.efi  grubx64.efi  MokManager.efi  shim.efi
root@ubuntu:/mnt/EFI# ls ubuntu/
fw  fwupx64.efi  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi
root@ubuntu:/mnt/EFI#

9、添加启动项

root@ubuntu:~# efibootmgr -c -w -L "BootOptionName" -d /dev/sda -p 1 -l \\EFI\\Boot\\bootx64.efi

其中BootOptionName替换成你设定的名字,-d后面是启动分区所在的硬盘(默认为/dev/sda),-p后面是分区位置(默认为1),-l是启动efi文件的路径。
这样就添加了EFI启动项。
举例:
root@ubuntu:~# efibootmgr -c -w -L "BootOptionName" -d /dev/sdb -p 1 -l \\EFI\\Boot\\bootx64.efi    #我的启动分区所在的硬盘为/dev/sdb
BootCurrent: 0012
Timeout: 0 seconds
BootOrder: 0013,0012,0010,0011,000F,000B,000A,0006,0007,0008,0009,000C,000D,000E
Boot0000  Setup
Boot0001  Boot Menu
Boot0002  Diagnostic Splash Screen
Boot0003  Lenovo Diagnostics
Boot0004  Rescue and Recovery
Boot0005  Startup Interrupt Menu
Boot0006* USB CD
Boot0007* USB FDD
Boot0008* ATAPI CD0
Boot0009* ATAPI CD1
Boot000A* ATA HDD0
Boot000B* ATA HDD1
Boot000C* ATA HDD2
Boot000D* USB HDD
Boot000E* PCI LAN
Boot000F* Windows Boot Manager
Boot0010* ubuntu
Boot0011* ubuntushim
Boot0012* opensuse-secureboot
Boot0013* BootOptionName

通过上面的操作可以看出已经添加了 BootOptionName这个启动项,编号是0013,BootOrder:处可以看出已经成为第一启动项。

如果是Linux系统启动项丢失不要添加/EFI/Boot/bootx64.efi这个启动项,因为这个文件可能被Windows系统替换,添加后会直接进入Windows系统,
不能进入GRUB引导程序,可以尝试添加/EFI/opensuse/ 目录下的grubx64.efi  grub.efi  shim.efi MokManager.efi 等文件,每个Linux发行版
对应的目录下的文件可能不一样,根据实际情况添加,我的电脑安装了3个系统,安装顺序为Windows Ubuntu openSUSE,所以要添加最后安装的那个
系统对应的启动文件,因为最后安装的系统的GRUB才会把前面系统添加进去,才可以通过一个GRUB管理多个系统。

10、删除启动项的命令为:

root@ubuntu:~# efibootmgr -b 0013 -B      #删除刚才添加的BootOptionName启动项,对应的编号为0013
BootCurrent: 0012
Timeout: 0 seconds
BootOrder: 0012,0010,0011,000F,000B,000A,0006,0007,0008,0009,000C,000D,000E
Boot0000  Setup
Boot0001  Boot Menu
Boot0002  Diagnostic Splash Screen
Boot0003  Lenovo Diagnostics
Boot0004  Rescue and Recovery
Boot0005  Startup Interrupt Menu
Boot0006* USB CD
Boot0007* USB FDD
Boot0008* ATAPI CD0
Boot0009* ATAPI CD1
Boot000A* ATA HDD0
Boot000B* ATA HDD1
Boot000C* ATA HDD2
Boot000D* USB HDD
Boot000E* PCI LAN
Boot000F* Windows Boot Manager
Boot0010* ubuntu
Boot0011* ubuntushim
Boot0012* opensuse-secureboot

11、删除多余的启动项从新查看启动项:
root@ubuntu:~# efibootmgr
BootCurrent: 0012
Timeout: 0 seconds
BootOrder: 0012,0010,0011,000F,000B,000C,000D
Boot0000  Setup
Boot0001  Boot Menu
Boot0002  Diagnostic Splash Screen
Boot0003  Lenovo Diagnostics
Boot0004  Rescue and Recovery
Boot0005  Startup Interrupt Menu
Boot000B* ATA HDD1
Boot000C* ATA HDD2
Boot000D* USB HDD
Boot000F* Windows Boot Manager
Boot0010* ubuntu
Boot0011* ubuntushim
Boot0012* opensuse-secureboot

12、修改boot 顺序
root@ubuntu:~# efibootmgr -o 0012,0010,0011,000F,000D,000C,000B    
BootCurrent: 0012
Timeout: 0 seconds
BootOrder: 0012,0010,0011,000F,000D,000C,000B
Boot0000  Setup
Boot0001  Boot Menu
Boot0002  Diagnostic Splash Screen
Boot0003  Lenovo Diagnostics
Boot0004  Rescue and Recovery
Boot0005  Startup Interrupt Menu
Boot000B* ATA HDD1
Boot000C* ATA HDD2
Boot000D* USB HDD
Boot000F* Windows Boot Manager
Boot0010* ubuntu
Boot0011* ubuntushim
Boot0012* opensuse-secureboot
root@ubuntu:~#

通过efibootmgr -o 命令将000B和000D调换,如果要设置第一启动,把相应的编号放到命令后的最前面,如上面的0012

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用efibootmgr管理UEFI启动项,添加丢失的启动项 的相关文章

  • C++ map表的应用

    map表可以存储数据对应关系 include lt map gt include lt string gt include lt iostream gt using namespace std int main map lt int str
  • C++判断是否是IP地址

    判断是否是IP地址 bool isIPAddress const char s const char pChar bool rv 61 true int tmp1 tmp2 tmp3 tmp4 i while 1 i 61 sscanf s
  • C++判断是否是纯数字

    C 43 43 判断是否是纯数字 bool isDigitStr const char cstr if NULL 61 61 cstr cstr 0 61 61 0 return false int len 61 strlen cstr i
  • 命里有时终须有,命里无时莫强求

    命里有时终须有 xff0c 命里无时莫强求 今天是2012年2月24号 xff0c 和我谈了3个多月的女生突然之间说我们之间不合适 xff0c 让我以后不要再去骚扰她 真心第一次体会到失恋的感觉 xff0c 同时打电话给我姐姐诉说了下 xf
  • 共享内存--函数

    共享内存允许两个不相关的进程访问同一个逻辑内存 共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式 大多数的共享内存的具体实现 xff0c 都把由不同进程之间共享的内存安排为同一段物理内存 共享内存是由IPC为进程创建的一个特殊
  • GNOME 3 介绍 技巧

    https wiki archlinux org index php GNOME 28 E7 AE 80 E4 BD 93 E4 B8 AD E6 96 87 29 GNOME项目使用最新的科技 xff0c 为用户从头打造了全新的现代桌面
  • assert用法

    判断是否为真 include 34 stdio h 34 include lt string h gt include lt stdlib h gt define NDEBUG include lt assert h gt void mai
  • strcpy原型

    已知strcpy 函数的原型是 char strcpy char strDest const char strSrc 其中strDest 是目的字符串 xff0c strSrc 是源字符串 xff08 1 xff09 不调用C 43 43
  • new与delete正确用法

    说明 xff1a 推荐使用如下宏 xff0c 可以在一定程度上避免使用空指针 xff0c 野指针的问题 define HW NEW var classname do try var 61 new classname catch var 61
  • VNC启动gnome或者KDE

    VNC xstartup程序中默认的设定值可以启动twm xff0c 而不是GNOME或KDE 默认配置文件为 HOME vnc xstartup HOME 是用户目录 如下 gnome桌面的配置文件如下 xff1a bin sh Unco
  • crontab执行java -jar不成功

    一个程序经常挂掉 xff0c 不想人为的一种手动重启 故写了一个脚本 xff0c 定时查看程序是否存在 xff0c 不存在就重启 但是过程中一直crontab 设置的定时器一直不执行 crontab e 1 opt speak start
  • crontab 解决周期内未执行完重复执行

    crontab 解决周期内未执行完重复执行 crontabphplock crontab 执行 php 脚本 linux 下的 crontab 定时任务服务 xff0c 可以用来定时运行脚本 工作中经常会用到这样的服务 xff0c 使用起来
  • Kali Linux 2020 VNC设置自动开机启动

    前提 大家好 目前最新版kali Linux 2020离线包貌似已经取消了桌面安装了 xff0c 需要自己去手动安装桌面 xff0c 所以如果你还是命令行 xff0c 那你就先安装个桌面再说 xff0c 怎么装自己去百度 VNC安装过程 首
  • http://wwwnno00.irrlicht3d.cn:8011/forum-20-3.html

    http wwwnno00 irrlicht3d cn 8011 forum 20 3 html
  • git guest reporter

    权限列表如下 xff1a ActionGuestReporterDeveloperMasterOwnerCreate new issue Leave comments Pull project code Download project C
  • 元素化学期末(考点)整理

    元素化学 期末 xff08 考点 xff09 整理 作者 xff1a gjq 转载或引用需联系作者 xff0c 欢迎给作者打钱 xff01 2019年期末考题请联系作者 xff0c 作者微信 xff1a photon gjq xff0c q
  • 关于ubuntu自启动(rc.local,/etc/rcx.d软连接,创建自定义service)

    ubuntu自启动 xff08 总结 xff09 前言方法一 xff1a 编辑etc rc local方法二 xff1a rcx d 下添加脚本方法三 xff1a 创建service 前言 日常工作中难免碰到需要让某些应用程序自启动的功能
  • springMVC+mybatis环境搭建

    web xml文件配置 lt 加载Spring容器配置 gt lt 设置Spring容器加载所有的配置文件的路径 gt lt context param gt lt param name gt contextConfigLocation l
  • 解决 https 无法访问

    本人腾讯云服务器 xff0c 放假上班打开宝塔面板 xff0c 结果无法访问 我想着重启实例 xff0c 结果面板可以打开 xff0c 但是域名打不开了 xff08 之前是可以打开的 xff09 最后在这个地址找到了答案 xff0c 记录一
  • Python程序设计 简单的图像处理(1)

    Python程序设计 简单的图像处理 xff08 1 xff09 1 写个滤镜 照片照的好 xff0c 不如滤镜用得好 xff01 一款好的滤镜软件可以让照片呈现不一样的风格乃至风情 xff0c 修理照片需要扬长避短达到最佳效果 可是滤镜款

随机推荐

  • Xcode操作流

    1 Xcode IDE概览 说明 xff1a 从左到右 xff0c 依次是 导航窗格 xff08 Navigator xff09 gt 边列 xff08 Gutter xff09 gt 焦点列 xff08 Ribbon xff09 gt 代
  • java gui 多线程,界面假死、僵死问题

    xff08 转载1 xff09 楼主bluepb xff08 流星 xff09 2005 06 04 20 28 17 在 Java GUI 设计 提问 我现在在用jAVA做图形化设计 xff0c 想问个多线程的问题 比如在一个窗口上点个按
  • excel数据对比-----查找两列(表)的相同数据

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http xueli blog 51cto com 3325186 920592 现有两个excel表 xff0c
  • discuz 微社区 您请求的XXXX无法访问 接口错误(ERR02)

    我遇到的情况 xff1a 1 UC可以访问页面 xff0c 用微信报错 2 4G网络下可以访问 xff0c WiFi网络下报错 网上有两种解决方法 xff1a 1 关闭防采集 xff0c 我最终的采用方法 2 default下的mobile
  • 所有文件夹都变成1KB文件夹快捷方式病毒的手动清除方法

    电脑差不多都因使用U盘而感染了病毒 xff0c 其中一个就是Autoran病毒的变种 xff0c 它的症状我就不再描述了 xff0c 另外一个病毒的症状是所有文件夹都变成了1KB文件夹快捷方式 xff0c 各盘无法双击打开 xff08 但右
  • 搜狗高速浏览器2.0使用体验

    2010年 4 月 8 号 xff0c 我们终于迎来了 国内浏览器的后起之秀搜狗高速浏览器2 0 正式版 的 发布 高速真双核引擎 的概念得到了落实 它新增并改进了诸多功能 xff0c 修改了一些bug xff0c 从整体提高 搜狗高速浏览
  • Connection refused错误

    这个问题整了我两天时间 xff0c 现在终于解决了 问题 xff1a 用php 构造http请求访问自身web服务器页面 xff0c 总是报Connection refused 111 错误 显示 xff1a unable to conne
  • QT样式表从入门到精通

    QT样式表从入门到精通 文章目录 QT样式表从入门到精通前言1 背景介绍2 初级学习2 1 34 盒子 34 模型2 2 语法说明2 3 基础控件2 4 控件状态表2 5 选择器 3 中级学习3 1 坐标讲解3 1 1 相对坐标3 1 2
  • GIF89a图片头文件欺骗

    1 什么是GIF89a 一个GIF89a图形文件就是一个根据图形交换格式 xff08 GIF xff09 89a版 xff08 1989年7 月发行 xff09 进行格式化之后的图形 在GIF89a之前还有87a版 xff08 1987年5
  • txt文件导入mysql

    LOAD DATA LOW PRIORITY CONCURRENT LOCAL INFILE 39 file name 39 REPLACE IGNORE INTO TABLE tbl name CHARACTER SET charset
  • mac下终端无法使用数字小键盘的解决方案

    终端下 偏好设置 xff0d 高级 xff0d xff08 去掉 xff09 允许VT100应用程序小键盘模式
  • Mac Eclipse Failed to load JavaHL Library.

    转自 xff1a http blog csdn net wy10207010219 article details 42294293 写这一篇前我想发表一下感慨 xff1a 你所害怕的事 xff0c 你想要逃避的事 xff0c 在将来的某个
  • ROS学习笔记(一)ROS安装和helloworld

    ROS学习笔记 xff08 一 xff09 ROS安装和helloworld 文章目录 一 ros安装及测试1 打开ubuntu软件和更新 xff0c 进行如下设置2 设置安装源3 设置安装密钥4 更新软件源5 安装ros6 添加命令7 初
  • 使用ActiveMQ进行C++与C#的通信4 - 使用C++连接ActiveMQ

    在上一节编译ActiveMQ CPP的基础上 xff0c 创建C 43 43 控制台应用程序 xff0c 将activemq cpp项目中的include文件夹拷贝到该C 43 43 项目中 xff0c 设置好附加包含目录 将生成好的lib
  • 使用ActiveMQ进行C++与C#的通信5 - 实现C++和C#的通信

    在前几篇文章分别实现C C 43 43 连接ActiveMQ的基础上 xff0c 本文介绍如何使它们通信 使不同的进程对同一个ActiveMQ消息队列进行访问 xff0c 就能够达到消息互通的效果 例如使用queue test1 log作为
  • 【计算机游戏开发】游戏交互界面设计

    github项目地址 一 实验目的与要求 熟悉交互界面设计原理 了解Cocos2d x中的用户交互 触摸事件 碰撞检测机制 二 实验内容与方法 完成游戏编译 50分 仿照实验一 英雄快跑 实验 xff0c 将教材源码和素材文件复制到自己的项
  • k-近邻实现手写数字识别

    1 k 近邻工作原理 简单地说 xff0c K近邻算法采用测量不同特征值之间的距离方法进行分类 该算法具有一下特点 优点 xff1a 精度高 对异常值不敏感 无数据输入假定 缺点 xff1a 计算复杂度高 空间复杂度高 K近邻算法的工作原理
  • selenium之CSS定位

    一 层级定位 1 xff1a 所有标签 2 标签名 xff1a 查找所有该标签名 3 标签名 xff0c 标签名 xff1a 查找多个标签名 id用 表示 索引尽量使用xpath 二 三大等待和切换 1 页面元素可以定位 xff0c 但是代
  • STM32核心笔记

    STM32核心笔记 文章目录 STM32核心笔记1 下载程序的两种方式1 1 串口ISP1 2 仿真器1 2 1 J Link1 2 1 ST LINK 2 认识寄存器3 地址总线与外设地址映射关系4 GPIO的三种配置5 时钟树6 常用中
  • 用efibootmgr管理UEFI启动项,添加丢失的启动项

    UEFI用来替代传统BIOS引导操作系统 xff0c 学会修改UEFI启动项也变得十分重要 xff0c UEFI全称为 xff1a 统一的可扩展固件接口 xff08 Unified Extensible Firmware Interface