为了增加启动过程的灵活性,尤溪版本的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
最后编辑:Zhang Yinkui 更新时间:2024-12-20 17:01