从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
界面
2. Setup界面
无论是Intel
还是loongson
, BIOS
下都有设置的接口, PMON
也有, 无非是显示样式差异, 原理相通. Loongson
的UEFI
界面如下图
不同的条目, 用于设置不同的功能. 其中普通用户通常只需要进入BootManager
界面选择相应的启动目标即可.
3. BootManager界面
在下图区域1
中为条目名称, 区域2
中为UEFI
下解析的路径名(有点专业,不用理解), 总之, 左边看不懂时就看右边, 找相关的关键字, 比如下图, 左侧是设备名, 不太能看出是什么设备, 右侧则有Sata
字样可以识别.
4. Shell下操作
通常, 正常情况下, 系统直接启动, 用户无法感知上述界面的存在, 但当出现一些问题时, 我们可能需要进入Shell
下进行操作, 如上图中的第二个条目, 选中后回车进入下图界面:
4.1. 显示启动设备
正常情况下, 进入Shell
后仍然会提示启动相关的设备, 如上图, 倘若由于操作过多, 或者显示bug
等, 我们还想再次看到相关的显示, 则需要通过map
命令再次显示,如下图:
可以看到, 其实和默认进入Shell
的打印是一样的, 不过为了防止打印被冲刷掉, 还是要会一下.
4.2. 进入设备及查看文件
看上图, 图中黄色字体, FS0:
, BLK0:
等, 可以理解为不同设备的重命名, 其中FS
开头的标识表示该设备的文件系统可以识别, BLK
开头的表示表示该设备不存在文件系统, 或者文件系统不可识别. 总之对我们有意义的就只有FS
开头的标识.
只有含有文件系统的设备我们才能访问, 所以UEFI
下需要访问的GRUB
, 内核等EFI
文件一定是放在UEFI
下能够识别的文件系统中的. 也就是FS
开头的设备.
如何访问文件系统中的文件呢, 先看下图:
进入设备时比较特殊, 输入FS0:
即可,不能是cd FS0:
, 也不能不加后面的冒号.
进入设备之后就和linux的操作很类似了, 使用cd
, ls
即可.
然后ls
看到的緑色显示的文件, 也就是UEFI下的可执行文件–EFI文件. 运行时也无需像linux那样在前面加路径才能执行, UEFI下直接输入文件名即可.
哦, 值得一提, UEFI下可以通过Tab
键实现文件名补全.
4.3. UEFI下的其他操作
如第一节的内容, UEFI
下的界面下通常会有很多选项, 其中用户比较关心的选项大概有:
- 快速启动: 忽略部分设备初始化, 启动速度加快, 比如x86部分机器需要关闭此选项才能更改启动顺序, 选择系统安装盘.
- 安全启动: 开启安全校验, 部分外插设备未经过校验可能无法识别, 所以x86装机时可能也需要关闭此项, 防止U盘无法识别.
- 传统模式: 通常是用于兼容很久的系统启动. 比如龙芯的机器开启传统模式可以安装旧世界系统, 关闭则安装新世界系统, x86下可能叫CSM…, 开启则可以引导MBR分区的硬盘, 关闭则引导GPT格式硬盘.
- 高级选项:一些高级的功能开关, 普通用户可能不需要使用, 比如上述传统模式, 龙芯的机器将其放在了高级选项中, 英文是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界面
如图, 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 orc
for a command-line.
翻译一下:
通过按上下键选择选项, 按执行进入选项, 按
e
去编辑选项, 按c
进入GRUB
的命令行.
1. 编辑GRUB选项
通常我们通过UEFI
执行GRUB
的efi
文件即可进入GRUB
界面, 然后回车便可以启动内核, 但是倘若内核无法正常启动, 我们需要加串口调试, 就需要我们按e
去编辑选项, 比如增加串口或者进入单用户模式等.
按e
后进入下图, 我们可以将光标通过上下左右按键, 移动至linux
开头的那一行, 并在行末加入想要的参数比如串口console=ttyS0,115200 earlycon=uart,mmio,0x1fe001e0
.
可以看到, 界面最下面仍然有一些文字, 告诉我们按下Ctrl-X
组合键或者F10
可以直接启动, 按下Ctrl-c
或F2
进入到GRUB
命令行, 按下ESC
可以退回上一步.
2. 手动找grub.cfg
当我们在UEFI
下执行GRUB
的efi
文件后, 加入grub.cfg
的路径有问题, 则需要我们手动找到grub.cfg
并且加载:
逐个说明上述命令: 首先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即可启动. 如下图: