BeagleBoneBlack RevC Debloat [Part 1]

by kacang bawang

There are literally a million articles on the internet comparing BeagleBone vs RaspberryPi. People talk about all possible features, except one – bloatware. BeagleBone is absolutely stock-full of it. I found this out the hard way when I purchased the BeagleBoneBlack. All my searches about the topic turned up a few requests for debloat instructions with a few answers showing how to disable services via systemd, but none about how to permanently remove the programs in question. So, without further ado, let me show you how I removed the most egregious offenders.

Let me clarify a little bit what I mean by bloat. To me, bloat is anything above a headless SSH box. Anything else should be installed after user logs in and specifies what they are going to do with the device. BeagleBone takes the opposite approach, it enables anything and everything by default (hello Windows 95) and sets the root account to be without a password (no, it doesn’t make you set a root password once you first log in). Now to some people this is a feature (not a bug) – they want everything plug-and-play, one click, out of the box. I think you probably realize where I stand in this debate if you’ve read this far. So what’s my problem with all this? My problem is that there is only one Debian distro for BBB, and it is one with everything enabled. Meaning – that now I have to go and manually purge all these things I do not want and/or need. In some cases there are uninstall mechanisms, in others there are not.

Let me state specifically which build I am using. This is what came pre-loaded on an element14 BeagleBoneBlack RevC.

Let’s start by checking what is currently listening on our machine:

Right away we see some offenders:

Both ports 80 and 8080 already taken by default? Ouch…

Remove xrdp:

Remove apache2:

The other two are a bit more troublesome, as they don’t provide an “uninstall” method, and must be removed manually

Remove cloud9:

Remove bonescript:

Bloat found in /opt/source

Can all be safely deleted, it is all 3rd party optional bloat (along with some kernel patches!?) with little to no documentation as to why it is here.

More unnecessary packages

At this point, I moved on to purging more preinstalled junk that was not as intrusive as the stuff above, but was nonetheless eating CPU cycles. The first thing that caught my eye was the Avahi daemon. It may be useful on a server machine, but my BeagleBone is not a server, so off with Avahi. But.. not so fast. I was able to remove avahi-daemon the usual way:

However attempts at removing the rest of avahi (such as libavahi-client) triggered apt-get to try to remove half of the currently installed packages (such as pulse audio, opencv, gnome, the list goes on). That’s not to say that I wouldn’t have uninstalled some of these later on myself, but let’s keep uninstalls localized to their subsystem.

I will search for a solution to this dependency hell and will post my findings under Part 2.