为了增加启动过程的灵活性,尤溪版本的u-boot引入了一个新的功能,可以在u-boot阶段读取启动设备上的ylboot.ini文件来获取启动选项。

文件格式

为了便于解析,ylboot.ini使用经典的INI格式,文件内容为纯文本,内部包含如下四种内容:

  • 注释行,以#开始
  • 空行,便于阅读
  • 节标题,以[]包围
  • 属性对,以name=value的形式,注意等号两边没有空格

比如,下面是一个试验用的配置文件
geduer@ulan:~$ cat /boot/ylboot.ini

#
# Boot config for YourLand, visit link below for details.
# https://www.nanocode.cn/wiki/docs/youlan/bootini for details.
#
[sum]
default=krnl5

[krnl5]
kernel=/Image
initramfs=initrd.img-5.10.110-rockchip-rk3588
BootArgs=systemd.debug_shell=1

[krnl6]
kernel=Image-6x
initramfs=
BootArgs=

上面的配置文件包含三个节,一个是总览节(summary),另外两个是启动项。

启动项

ylboot.ini的启动项节可以有1或多个,它可以包含如下属性对:

  • kernel,指定Linux内核镜像文件
  • initramfs,指定INITRAMFS镜像文件
  • dtb, 指定设备树文件
  • BootArgs,指定额外的内核命令行参数
  • rootfs,设置根文件系统的分区名,比如/dev/nvme0n1p4,分区格式必须是ext4

总览节

用于选取启动项和设置全局参数,目前支持如下属性对:

  • default,默认选择的启动项,应该是下面某个启动项的名字

启动项的优先级

考虑到灵活性和鲁棒性,目前选择启动项的优先顺序如下:

  • 在u-boot命令行中通过bootyl指定了启动设备和启动项的名字;比如在u-boot命令执行bootyl nvme krnl5那么就会从nvme设备启动,寻找它的boot目录下的ylboot.ini,然后根据krnl5启动项中的设置来启动内核,此时会忽略ini文件中default的设置
  • 通过按电源键次数选择启动设备,规则如下:
  • 2次对应选择emmc设备
  • 3次对应usb设备,上面可以是普通的镜像
  • 4次对应sd卡
  • 5次或者更多,对应USB恢复盘
  • 通过reboot命令指定了启动设备和启动项
作者:Zhang Yinkui  创建时间:2024-11-27 16:12
最后编辑:Zhang Yinkui  更新时间:2024-12-20 17:01