1. 固件

Grub编译与调试

1. Grub编译 #

git clone https://github.com/loongarch64/grub.git
cd grub
./bootstrap
./configure --with-platform=efi --target=loongarch64 --prefix=$(pwd) --disable-werror

2. Grub文件生成 #

2.1 grub.efi #

./grub-mkimage -p . -c /boot/mxd.cfg -d ./grub-core/ -O loongarch64-efi -o /boot/mxd.efi $(ls grub-core/ | grep -E "\.mod$" | cut -d "." -f 1 | uniq)

各参数可在help信息中查看.

2.2 grub.cfg #

./grub-mkconfig -o /boot/mxd.cfg

除了生成grub.cfg外, 系统下还有一些用于参考的grub默认配置选项, 如: /etc/default/grub, /etc/grub.d等. 倘若修改这些文件, 还需要更新/boot/grub/grub.cfg, 有命令可以做到:

update-grub

2.3 将grub安装至UEFI引导界面 #

grub-install --boot-directory=/boot --efi-directory=/boot/efi --bootload-id=mxd /dev/sda

--boot-directory指定在/boot作为根目录, 下寻找grub.cfg和模块.

...

PMON的使用方法

更新: 新pmon固件已支持efi_stub, 详情查看 10.1节

1. 查看设备 #

PMON> devls
syn0
wd0
usb0

sync0, igb0, em0 等字样,表示网络设备, 即网卡

wd0, nvme0, usb0, cd0等字样表示存储设备, 即硬盘, U盘等.

2. 查看pci信息 #

PMON> pciscan
>> BUS  0 <<
Dev Fun Device description
--------------------------
  0   0 vendor/product: 0x0014/0x7a00 (bridge, host, interface: 0x00, revision: 0x00)
0x00000000:0x00000000 mem @0x00000000, 0 bytes
  0   1 vendor/product: 0x0014/0x7a10 (bridge, host, interface: 0x00, revision: 0x01)
0x00000000:0x00000000 mem @0x00000000, 0 bytes
  0   2 vendor/product: 0x0014/0x7a20 (bridge, host, interface: 0x00, revision: 0x01)
0x00000000:0x00000000 mem @0x00000000, 0 bytes
  0   3 vendor/product: 0x0014/0x7a30 (bridge, host, interface: 0x00, revision: 0x00)
0x00000000:0x00000000 mem @0x00000000, 0 bytes
  4   0 vendor/product: 0x0014/0x7a24 (serialbus, USB, interface: 0x10, revision: 0x02)
64-bit mem,low address
0x59648004:0xffff8004 mem @0x59648000, 32768 bytes
0x00000000:0x00000000 mem @0x00000000, 0 bytes
  ......
  ......

3. 产看固件版本信息 #

PMON> vers
PMON: PMON 5.0.3-Release (loongson) #233: Wed Oct 18 15:09:40 CST 2023 commit d044be8f495e97082c8905b131d525ef31ade0b9 Author: Xiangdong Meng <mengxiangdong@loongson.cn> Date:   Wed Sep 6 15:15:31 2023 +0800

4. 查看寄存器信息 #

PMON> d8 0x800000001fe00020 2
800000001fe00020 : 0000303030364133 0000000000000000 3A6000..........

5. 查看磁盘信息 #

这里fdisk命令后面的设备名是在第一节中devls命令列出来的.

...

从UEFI如何启动到系统

UEFI须知 #

1. 进入UEFI setup界面 #

在串口或者显示界面下显示BDS字样的时候(如下图), 稍微按按上下键即可进入Setup界面 UEFI Booting

2. Setup界面 #

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

不同的条目, 用于设置不同的功能. 其中普通用户通常只需要进入BootManager界面选择相应的启动目标即可. Setup

3. BootManager界面 #

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

4. Shell下操作 #

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

4.1. 显示启动设备 #

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

map命令

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

4.2. 进入设备及查看文件 #

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

...

龙芯UEFI使用详解

龙芯UEFI使用详解 #

1. UEFI主界面及设置语言 #

在串口或者显示界面下显示BDS字样的时候(如下图), 按方向下()或F2即可进入Setup界面, 即主界面。

光标默认在语言设置,可以通过方向键选择,示例为修改语言。

UEFI Booting

2. 主板信息 #

进入主板信息,可以查看BIOS版本、主板型号、CPU名字等相关硬件基础信息,如下图: 主板信息

2.1 PCIE信息 #

选择PCIe设备信息可以查看主板的PCIe的全部信息,如下图: PCIe信息

2.2 USB信息 #

选择USB设备信息可以查看主板的USB的全部信息,如下图: USB信息

3. 设置系统时间 #

操作系统时间通常默认使用rtc时钟,所以可以在固件下设置rtc时间以改变操作系统的默认时间。(当操作系统不通过rtc时间同步时,此方法不一定生效,关于系统下的配置,本文不作讨论)

4. 安全设置 #

安全设置包括如下内容:安全启动、恢复出厂设置、BIOS密码配置、固件更新等。

4.1 安全启动配置 #

在下图界面中,可以看到安全启动相关的配置,包括状态和开启开关,同事包含相关自定义配置。

安全启动开启后,BIOS会开启自身校验功能,对普通用户来说,安全性提高的同时,会对启动速度产生一定影响。

4.2 恢复出厂设置 #

如下图,按照提示执行恢复出厂设置后,原先所有在BIOS下保存的个人配置(如启动顺序、传统启动模式等)都将会被重置。

4.3 BIOS密码设置 #

BIOS密码分为管理员密码和普通用户密码,其中当设定管理员密码后,则必须解锁管理员密码才可进一步更改相关配置,TODO.

4.4 固件更新 #

固件更新应该是目前龙芯用户最关心的功能,截止目前(2024/12/13),龙芯UEFI下的固件更新功能可额外指定三项功能,如下图,分别是: 是否保留SMBIOS信息、是否保留BIOS配置(如启动顺序)、是否校验要更新的BIOS文件等。

...

如何更新固件

在PMON下更新固件 #

详情 PMON使用方法

从硬盘加载:

PMON> fload /dev/fs/usb0a/gz.mxd
Loading file: /dev/fs/fat@usb0a/gz.mxd dl_offset 900000000f800000 addr 900000000f800000
(bin)
-
Loaded 993222 bytes

Programming flash 900000000f800000:f27c6 into 800000001c000000
Erase end!
-Programming end!

从tftp服务器加载:

PMON> fload tftp://192.168.1.4/gz.mxd
Loading file: tftp://192.168.1.4/gz.mxd dl_offset 900000000f800000 addr 900000000f800000
(bin)
-
Loaded 993222 bytes

Programming flash 900000000f800000:f27c6 into 800000001c000000
Erase end!
-Programming end!

从http服务器加载:

PMON> fload http://192.168.1.4/gz.mxd
Loading file: http://192.168.1.4/gz.mxd dl_offset 900000000f800000 addr 900000000f800000
(bin)
-
Loaded 993222 bytes

Programming flash 900000000f800000:f27c6 into 800000001c000000
Erase end!
-Programming end!

在UEFI下更新固件 #

详情 uefi使用方法

...