How can I boot from another kernel on BeagleBone Black?
Online reading says, /boot/uEnv.txt should have
#uname_r=5.10.168-ti-r83
uname_r=5.10.168-kb
I cross-compiled a new kernel, using “config” file from factory image as starting point, of course changing -ti-r83 to -kb to tell them apart.
But, it doesn’t work. 4 LEDs lights up, then flickers once, then on solid from there.
My setup:
- old 2GB BeagleBone Black
- am335x-debian-13.1-base-v5.10-ti-armhf-2025-10-29-4gb.img.xz
- am335x-debian-13.1-base-v6.17-armhf-2025-10-29-4gb.img.xz
I can boot both factory images, from SD and eMMC. Heck, I can even boot them with initrd.img deleted. So, no problem with the factory images.
My problem is, USB Gadget modules, usb_f_acm and usb_f_serial are built into the kernel. I want them moved to module, because they conflict with usb_f_hid which is what I want to access.
My attempt:
I cross-compiled a new kernel with the following changes,
- CONFIG_LOCALVERSION=“” → “-kb”
- CONFIG_USB_F_ACM=y → m
- CONFIG_USB_F_SERIAL=y → m
- CONFIG_USB_CONFIGFS_SERIAL=y → n
- CONFIG_USB_CONFIGFS_ACM=y → n
It compiles okay, and initrd.img builds okay, though it’s not really needed.
Booting is the problem. The only way to make it boot, is to copy my new kernel to the factory kernel,
sudo mv vmlinuz-5.10.168-kb vmlinuz-5.10.168-ti-r83
That is, both vmlinuz-5.10.168-kb and vmlinuz-5.10.168-kb are the same file. But,
- If it boots with vmlinuz-5.10.168-ti-r83, it works.
- If it boots with vmlinuz-5.10.168-kb, it doesn’t.
Yes, their modules are installed in
- /lib/modules/5.10.168-kb
- /lib/modules/5.10.168-ti-r83
Somehow, the kernel name is hardcoded somewhere in the bootloader. Bootloader and Firmware are not my area. Hence, my question…
My reason:
I’m trying to make BeagleBone Black into “scriptable” keyboard, so that I can send out key presses to USB Host. It’s for QA testing. ![]()