编译kernel之后安装重启没有生效,还是旧的内核版本。

我使用这个步骤:
https://wiki.radxa.com/Rock5/guide/build-kernel-on-5b
编译成功内核后,并生成了deb安装包:

root@rock-5b:/home/rock/workspace/rk3588# ls -al out/packages/
total 232916
drwxr-xr-x 2 rock root 4096 Nov 4 15:22 .
drwxr-xr-x 5 rock root 4096 Nov 5 11:14 …
-rw-r–r-- 1 root root 2977 Nov 4 15:22 linux-5.10.66-10-rockchip-gc428536281d6_5.10.66-10-rockchip_arm64.changes
-rw-r–r-- 1 rock root 7739096 Nov 4 15:17 linux-headers-5.10.66-10-rockchip-gc428536281d6_5.10.66-10-rockchip_arm64.deb
-rw-r–r-- 1 rock root 208775924 Nov 4 15:22 linux-image-5.10.66-10-rockchip-gc428536281d6-dbg_5.10.66-10-rockchip_arm64.deb
-rw-r–r-- 1 rock root 20782052 Nov 4 15:18 linux-image-5.10.66-10-rockchip-gc428536281d6_5.10.66-10-rockchip_arm64.deb
-rw-r–r-- 1 rock root 1190052 Nov 4 15:18 linux-libc-dev_5.10.66-10-rockchip_arm64.deb

使用如下命令安装:
dpkg -i linux-image-5.10.66-10-rockchip-gc428536281d6-dbg_5.10.66-10-rockchip_arm64.deb

安装完成后没有错误提示,extlinux.conf也有更新:

root@rock-5b:/home/rock/workspace/rk3588# cat /boot/extlinux/extlinux.conf
#timeout 10
#menu title select kernel

label kernel-5.10.66-27-rockchip-gea60d388902d
kernel /vmlinuz-5.10.66-27-rockchip-gea60d388902d
initrd /initrd.img-5.10.66-27-rockchip-gea60d388902d
devicetreedir /dtbs/5.10.66-27-rockchip-gea60d388902d
fdtoverlays /dtbs/5.10.66-27-rockchip-gea60d388902d/rockchip/overlay/rk3588-uart7-m2.dtbo
append root=UUID=6e6f67f6-9774-46ff-91b0-c0d0f8390ed9 earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 console=tty1 consoleblank=0 loglevel=7 panic=10 rootwait rw init=/sbin/init rootfstype=ext4 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 irqchip.gicv3_pseudo_nmi=0 switolb=1 coherent_pool=2M cmd_test=yes

label kernel-5.10.66-10-rockchip-gc428536281d6.old
kernel /vmlinuz-5.10.66-10-rockchip-gc428536281d6.old
devicetreedir /dtbs/5.10.66-10-rockchip-gc428536281d6.old
append root=UUID=6e6f67f6-9774-46ff-91b0-c0d0f8390ed9 earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 console=tty1 consoleblank=0 loglevel=7 panic=10 rootwait rw init=/sbin/init rootfstype=ext4 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 irqchip.gicv3_pseudo_nmi=0 switolb=1 coherent_pool=2M cmd_test=yes

label kernel-5.10.66-10-rockchip-gc428536281d6
kernel /vmlinuz-5.10.66-10-rockchip-gc428536281d6
initrd /initrd.img-5.10.66-10-rockchip-gc428536281d6
devicetreedir /dtbs/5.10.66-10-rockchip-gc428536281d6
append root=UUID=6e6f67f6-9774-46ff-91b0-c0d0f8390ed9 earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 console=tty1 consoleblank=0 loglevel=7 panic=10 rootwait rw init=/sbin/init rootfstype=ext4 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 irqchip.gicv3_pseudo_nmi=0 switolb=1 coherent_pool=2M cmd_test=yes

但是重启后仍然是旧的内核版本,不知道是否我操作的有问题?

1 Like

接一个串口看看,看看启动的时候,选的是哪个内核。

Attach a serial console and check which kernel is loading during the boot.

有具体的log提示吗?uboot的log怎么全部打开呢?

你编译出来的内核版本是5.10.66-10,但你extlinux里面5.10.66-27仍然是第一位,所以默认会启动这个老内核

你把对应的启动项移到最前就可以了

我试过改变启动顺序,但是还是不行,启动的仍是旧的内核版本:

#timeout 10
#menu title select kernel

label kernel-5.10.66-30-rockchip-gc428536281d6
kernel /vmlinuz-5.10.66-30-rockchip-gc428536281d6
initrd /initrd.img-5.10.66-30-rockchip-gc428536281d6
devicetreedir /dtbs/5.10.66-30-rockchip-gc428536281d6
fdtoverlay /dtbs/5.10.66-27-rockchip-gea60d388902d/rockchip/overlay/rk3588-uu
art7-m2.dtbo
append root=UUID=6e6f67f6-9774-46ff-91b0-c0d0f8390ed9 earlycon=uart8250,mmm
io32,0xfeb50000 console=ttyFIQ0 console=tty1 consoleblank=0 loglevel=7 panic=10
rootwait rw init=/sbin/init rootfstype=ext4 cgroup_enable=cpuset cgroup_memory=11
cgroup_enable=memory swapaccount=1 irqchip.gicv3_pseudo_nmi=0 switolb=1 coherenn
t_pool=2M cmd_test=yes

label kernel-5.10.66-27-rockchip-gea60d388902d
kernel /vmlinuz-5.10.66-27-rockchip-gea60d388902d
initrd /initrd.img-5.10.66-27-rockchip-gea60d388902d
devicetreedir /dtbs/5.10.66-27-rockchip-gea60d388902d
fdtoverlays /dtbs/5.10.66-27-rockchip-gea60d388902d/rockchip/overlay/rk35888
-uart7-m2.dtbo
@@@
“/boot/extlinux/extlinux.conf” 18L, 1349B

我尝试将27改为30,比27更大的数字后,启动还是旧的内核,目前不知道什么原因?