从UEFI如何启动到系统

从UEFI如何启动到系统

文章目录

  • 从UEFI如何启动到系统
    • UEFI须知
    • 1. 进入UEFI setup界面
    • 2. Setup界面
    • 3. BootManager界面
    • 4. Shell下操作
      • 4.1. 显示启动设备
      • 4.2. 进入设备及查看文件
      • 4.3. UEFI下的其他操作
      • 4.4. UEFI下的一些Shell命令
    • 5. UEFI下更新固件方法
    • GRUB
    • GRUB界面
    • 1. 编辑GRUB选项
    • 2. 手动找grub.cfg
    • 3. 没有grub.cfg怎么办?

UEFI须知

1. 进入UEFI setup界面

在串口或者显示界面下显示BDS字样的时候(如下图), 稍微按按上下键即可进入Setup界面
从UEFI如何启动到系统_第1张图片

2. Setup界面

无论是Intel还是loongson, BIOS下都有设置的接口, PMON也有, 无非是显示样式差异, 原理相通. LoongsonUEFI界面如下图

不同的条目, 用于设置不同的功能. 其中普通用户通常只需要进入BootManager界面选择相应的启动目标即可.
从UEFI如何启动到系统_第2张图片

3. BootManager界面

在下图区域1中为条目名称, 区域2中为UEFI下解析的路径名(有点专业,不用理解), 总之, 左边看不懂时就看右边, 找相关的关键字, 比如下图, 左侧是设备名, 不太能看出是什么设备, 右侧则有Sata字样可以识别.
从UEFI如何启动到系统_第3张图片

4. Shell下操作

通常, 正常情况下, 系统直接启动, 用户无法感知上述界面的存在, 但当出现一些问题时, 我们可能需要进入Shell下进行操作, 如上图中的第二个条目, 选中后回车进入下图界面:
从UEFI如何启动到系统_第4张图片

4.1. 显示启动设备

正常情况下, 进入Shell后仍然会提示启动相关的设备, 如上图, 倘若由于操作过多, 或者显示bug等, 我们还想再次看到相关的显示, 则需要通过map命令再次显示,如下图:

从UEFI如何启动到系统_第5张图片

可以看到, 其实和默认进入Shell的打印是一样的, 不过为了防止打印被冲刷掉, 还是要会一下.

4.2. 进入设备及查看文件

看上图, 图中黄色字体, FS0: , BLK0:等, 可以理解为不同设备的重命名, 其中FS开头的标识表示该设备的文件系统可以识别, BLK开头的表示表示该设备不存在文件系统, 或者文件系统不可识别. 总之对我们有意义的就只有FS开头的标识.

只有含有文件系统的设备我们才能访问, 所以UEFI下需要访问的GRUB, 内核等EFI文件一定是放在UEFI下能够识别的文件系统中的. 也就是FS开头的设备.

如何访问文件系统中的文件呢, 先看下图:

从UEFI如何启动到系统_第6张图片

进入设备时比较特殊, 输入FS0:即可,不能是cd FS0:, 也不能不加后面的冒号.

进入设备之后就和linux的操作很类似了, 使用cd, ls即可.

然后ls看到的緑色显示的文件, 也就是UEFI下的可执行文件–EFI文件. 运行时也无需像linux那样在前面加路径才能执行, UEFI下直接输入文件名即可.

哦, 值得一提, UEFI下可以通过Tab键实现文件名补全.

4.3. UEFI下的其他操作

如第一节的内容, UEFI下的界面下通常会有很多选项, 其中用户比较关心的选项大概有:

  1. 快速启动: 忽略部分设备初始化, 启动速度加快, 比如x86部分机器需要关闭此选项才能更改启动顺序, 选择系统安装盘.
  2. 安全启动: 开启安全校验, 部分外插设备未经过校验可能无法识别, 所以x86装机时可能也需要关闭此项, 防止U盘无法识别.
  3. 传统模式: 通常是用于兼容很久的系统启动. 比如龙芯的机器开启传统模式可以安装旧世界系统, 关闭则安装新世界系统, x86下可能叫CSM…, 开启则可以引导MBR分区的硬盘, 关闭则引导GPT格式硬盘.
  4. 高级选项:一些高级的功能开关, 普通用户可能不需要使用, 比如上述传统模式, 龙芯的机器将其放在了高级选项中, 英文是LegacyMode, (看不懂这种英文的同学自我PUA一下). 其他如有需求请在工程师指导下使用.

4.4. UEFI下的一些Shell命令

比如pci命令, 具体可以通过pci -?查看具体使用方法, 这里不详细演示.

常用的命令有:cd, ls, map, pci, mm, dmem, ifconfig, edit, vers等.

5. UEFI下更新固件方法

还有spi命令不得不单独强调, 一个产品往往需要保持更新才能更好的满足用户的需求. 固件是尤其重要的一点.

当我们需要更新固件(UEFI和PMON都是固件)时, 在Shell下找到文件后, 通过spi -u filename的命令, 即可完成固件更新.

当然图形界面下也有相关接口, 可以自己理解一下英文再操作.

GRUB

GRUB界面

从UEFI如何启动到系统_第7张图片

如图, GRUB界面下列出了几个选项, 其中第一项vm.mxd是我自己加的内核, 第二项Loongnix GNU/Linux是系统自带内核, 第三项Advanced options for Loongnix GNU/Linux是高级选项, 通常包含一些恢复模式的选项, 第四项是System Setup–系统设置, 其实就是进入UEFI Setup界面.

然后在界面的最下方:

Use the ^ and v keys to select which entry is highlighted.
Press enter to boot the selected OS, e to edit the commands
before booting or c for a command-line.

翻译一下:

通过按上下键选择选项, 按执行进入选项, 按e去编辑选项, 按c进入GRUB的命令行.

1. 编辑GRUB选项

通常我们通过UEFI执行GRUBefi文件即可进入GRUB界面, 然后回车便可以启动内核, 但是倘若内核无法正常启动, 我们需要加串口调试, 就需要我们按e去编辑选项, 比如增加串口或者进入单用户模式等.

e后进入下图, 我们可以将光标通过上下左右按键, 移动至linux开头的那一行, 并在行末加入想要的参数比如串口console=ttyS0,115200 earlycon=uart,mmio,0x1fe001e0.

从UEFI如何启动到系统_第8张图片

可以看到, 界面最下面仍然有一些文字, 告诉我们按下Ctrl-X组合键或者F10可以直接启动, 按下Ctrl-cF2进入到GRUB命令行, 按下ESC可以退回上一步.

2. 手动找grub.cfg

当我们在UEFI下执行GRUBefi文件后, 加入grub.cfg的路径有问题, 则需要我们手动找到grub.cfg并且加载:

从UEFI如何启动到系统_第9张图片

逐个说明上述命令: 首先ls命令能够看到当前能够识别的设别, 其中hd0表示一块硬盘(Hard Disk0), 如果有多个硬盘将以hdx的形式显示.

但是hd0并不具有文件系统, (hd0,msdos2)这种形式才表示有文件系统, msdos指MBR的分区格式, msdos2也就表示MBR硬盘上第二个分区.

然后逐级用ls命令找到grub.cfg的路径:(hd0,msdos2)/boot/grub/grub.cfg.

最后通过configfile命令, 解析grub.cfg文件, 即可重新回到GRUB的主界面.

3. 没有grub.cfg怎么办?

有时候, 我们会遇到有grub, 但是没有grub.cfg的情况, 这时, 我们可以稍微背下来两条命令, 这两条也就是grub.cfg中加载内核和加载initrd的命令: linux命令和initrd命令

linux命令后面加内核的路径, 以及内核启动参数

initrd命令后面加initrd的路径即可.

然后执行boot即可启动. 如下图:

从UEFI如何启动到系统_第10张图片

你可能感兴趣的:(教程,Ubuntu,linux)