Recompile kernel


I use the Bone Black with the current Debian firmware (2014-05-14). I need to recompile the kernel to activate a specific feature. Whats the best way to do this? Is there a description for this?



Linux beaglebone 3.8.13-bone69 #1 SMP Thu Jan 8 09:16:29 CET 2015 armv7l GNU/Linux

Just to be sure: I untar’d 3.8.13-bone69-modules.tar.gz and copied 3.8.13-bone69.zImage to /boot/uboot/zImage. Is this enough? Whats about 3.8.13-bone69-firmware.tar.gz and 3.8.13-bone69-dtbs.tar.gz? Do I need them?



boot takes much longer with 69 kernel:

[ 0.767408] pinctrl-single 44e10800.pinmux: pin 44e10854 already requested by 44e10800.pinmux; cannot claim for gpio-leds.8
[ 0.779110] pinctrl-single 44e10800.pinmux: pin-21 (gpio-leds.8) status -22
[ 0.786380] pinctrl-single 44e10800.pinmux: could not request pin 21 on device pinctrl-single
Loading, please wait…
systemd-fsck[206]: BEAGLEBONE: clean, 35288/236176 files, 147950/943872 blocks
[ 64.384719] libphy: PHY 4a101000.mdio:01 not found
[ 64.389761] net eth0: phy 4a101000.mdio:01 not found on slave 1

What happens here? Also I get a kernel oops when shutting down:

Detaching DM devices.
[ 111.285531] (NULL device *): gadget not registered.
[ 111.291442] Power down.
[ 111.296139] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
[ 111.296139]
[ 111.305707] [] (unwind_backtrace+0x1/0x98) from [] (panic+0x5b/0x160)

All would be much simpler for me if
would be enabled in kernel. So if any developer is reading this - please enable this in the next kernel please. It helps a lot to deal with some DVI monitors.


We’d need to know exactly what steps you did in order to get an idea of what is going wrong. I’ve followed those same exact steps personally( many many times ), and have never had a problem other than doing something wrong on my end.

As for the long boot times, if and when it actually boots correctly.

This is possibly related to the onboard ethernet. I believe you either need a connection manager( I do not use one myself - but I’ve seen Robert recommend this ), or set the oneboard ethernet to a static IP. Something about the kernel taking up to 2 minutes to find a dhcp lease, or something of that nature. shrug


I was able to upgrade the kernel using the 2014-05-14 image. I made an sd card with this image and run the script tools/
So everything seems fine now (except the boot time is much longer):

root@beaglebone:/home/debian/Server# uname -a
Linux beaglebone 3.8.13-bone69 #1 SMP Thu Jan 8 09:16:29 CET 2015 armv7l GNU/Linux

I could not used the newer image with this script, perhaps because the layout of the root filesystem changed.

Do you have an idea why the boot time is much longer now?


Forget to answer the network issue. The Bone is connected to a DHCP server.

In /etc/network/interfaces the eth0 interface is commented out:

root@beaglebone:/home/debian# grep eth0 /etc/network/interfaces
#auto eth0
#iface eth0 inet dhcp

But the bone got a ip address:

root@beaglebone:/home/debian# ifconfig
eth0 Link encap:Ethernet HWaddr d0:39:72:4b:6e:61
inet addr: Bcast: Mask:

So I am wondering where to setup the network? Strange.

wicd set it up


So, set ethernet to a static ip, and see if that makes a difference.

Are you saying wicd is installed by default in your latest builds (even the console one)?

He's using "2014-05-14" which at that time we only had a single (lxde) image..


But in the end the work was worthless because even with the newest kernel eth0 is not recognized sometimes:

ubuntu@arm:~$ ifconfig
lo Link encap:Local Loopback
inet addr: Mask:
inet6 addr: ::1/128 Scope:Host
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

usb0 Link encap:Ethernet HWaddr 2a:40:87:ed:a9:9b
inet addr: Bcast: Mask:
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)



Perhaps try the proper syntax for ifconfig. Using “ifconfig” will only show devices assigned addresses. You need to use “ifconfig -a” or “ip addr” show. Mike

There is nothing wrong with using ifconfig with no options or switches. If the device is not listed from Just “ifconfig” then it is most likely not configured.

@Robert, You know, making short quips about how “x.y.z doesn’t work”, and then giving us no information as to what you’ve done to try and get it working - Will not help any one help you.

Yeah, sorry. Try to do better.

In the end I was able to use kernel 3.8.13-bone69 with image console-armhf-2014-12-19-2gb. I created the deb files and was able to install them.

What not worked was to copy the new kernel to the sd card using the script tools/ I assume the reason is that the script is expecting a sd card with two root partitions (one with /boot/uboot, one with ‘/’). The new image has only one root partition thats why it does not work I think.

It works fine where it works, it's buried under tools as i don't want
users to use it unless they know what it's doing. No official
documents reference it for a reason.


@Robert N

Hell, I’ve never used it, so does that mean I do not know what I’m doing ? :wink: Someone, who actually has time on their hands needs to go through all your tools and document them . . .

@Robert K

Did you get a link to Robert N’s eewiki Linux ON Beagelbone Black ? You could most likely use the steps there for a single partition “install”. Which is to say, you’d be doing this step manually.

The problem... It needs hints to detect where to install the kernel
files.. Without those hints, it's just a big guess and lots of random
things can happen. :wink:

Now that we have proper linux-image*.deb handling, it's just easier to
just build the *.deb package..

sudo dpkg -i linux-image*.deb
sudo reboot


@Robert N

How complicated is it to build a linux-image deb now days ? Once apon a time when Sarge was still in testing, I had a pretty good idea. Now days . . . I’d probably try using CheckInstall, but no telling whether that would work or not . . .

Easier then that. From either the 3.8/3.14* branches on

make ARCH=arm CROSS_COMPILE=<usual> KBUILD_DEBARCH=armhf deb-pkg

* the only thing mainline doesn't have is the patch to include the
*.dtb's in the final *.deb file.