进不去系统

在做BSP开发时,难免会因为设置了什么东西,导致启动参数之类的错误,而无法正常进入系统了,这个文档记录一下自己遇到的问题和解决方法

extlinux.conf错误

这个问题出现在调试地平线板子的时候,因为修改错误了/boot/extlinux/extlinux.conf,导致开发板在uboot引导kernel的时候错误,只能进入initramfs

解决思路其实很简单,就是再启动内核前把/boot/extlinux/extlinux.conf改回去。但是这其实还是比较困难的,因为在uboot或者initramfs中是没有直接挂载Linux的/boot目录的,所以没法直接访问

解决办法:

首先得知道/boot在哪个分区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sunrise@ubuntu:/media$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 59.6G 0 disk
├─mmcblk0p1 179:1 0 1M 0 part
├─mmcblk0p2 179:2 0 1M 0 part
├─mmcblk0p3 179:3 0 1M 0 part
├─mmcblk0p4 179:4 0 2M 0 part
├─mmcblk0p5 179:5 0 2M 0 part
├─mmcblk0p6 179:6 0 2M 0 part
├─mmcblk0p7 179:7 0 2M 0 part
├─mmcblk0p8 179:8 0 8M 0 part
├─mmcblk0p9 179:9 0 8M 0 part
├─mmcblk0p10 179:10 0 8M 0 part
├─mmcblk0p11 179:11 0 8M 0 part
├─mmcblk0p12 179:12 0 60M 0 part /boot
├─mmcblk0p13 179:13 0 60M 0 part
├─mmcblk0p14 179:14 0 8G 0 part /ota
├─mmcblk0p15 179:15 0 4G 0 part /log
├─mmcblk0p16 179:16 0 2G 0 part /userdata
└─mmcblk0p17 179:17 0 45.4G 0 part /
mmcblk0boot0 179:32 0 31.9M 1 disk
mmcblk0boot1 179:64 0 31.9M 1 disk

可以看到/boot在mmcblk0p12分区,之后把这个分区挂载到某个目录,就可以找到extlinux.conf文件了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
mkdir /mnt/boot
mount -t ext4 /dev/mmcblk0p12 /mnt/boot
cd /mnt/boot/extlinux

cat > extlinux.conf <<EOF
## /boot/extlinux/extlinux.conf
default drobot-s100p-rdk-v0p5-kernel
prompt 0
timeout 50

label drobot-s100-rdk-v1-2-kernel
kernel /vmlinuz-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511
fdt /hobot/rdk-s100-v1-2.dtb
initrd /initrd.img-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511

label drobot-s100-rdk-v1-21-kernel
kernel /vmlinuz-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511
fdt /hobot/rdk-s100-v1-21.dtb
initrd /initrd.img-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511

label drobot-s100p-rdk-v0p6-kernel
kernel /vmlinuz-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511
fdt /hobot/rdk-s100p-v0p6.dtb
initrd /initrd.img-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511

label drobot-s100-rdk-v1p0-kernel
kernel /vmlinuz-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511
fdt /hobot/rdk-s100-v1p0.dtb
initrd /initrd.img-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511

label drobot-s100p-rdk-v1p0-kernel
kernel /vmlinuz-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511
fdt /hobot/rdk-s100p-v1p0.dtb
initrd /initrd.img-6.1.112-rt43-DR-4.0.4-2510152230-gb381cb-g6c4511
EOF