Compiling a kernel for a Beagle Board

I have a BeagleBoard. More info here. The BeagleBoard Wikipedia Page is actually easier to wade through to get the basic specs, imho. The board is built around a Texas Instruments OMAP3530 (Open Multimedia Application Platform) CPU.

I followed a qemu-based howto and used somebody else’s precompiled kernel to get it up and running with Debian, which was a success. However, I’d like to enable some more device support (and generally just hack around and make a mess), so I need to compile my own kernel.

This page on muru.com seems to the page with the most information about the appropriate patches for the linux kernel, and part of a BeagleBoard wiki seems to include basic instructions for getting and building the appropriate kernel sources using git. I will have to explore to see how to make changes to the config.

Update 20081209: It’s working.

Get the source:
git clone git://source.mvista.com/git/linux-omap-2.6.git

I need to patch my kernel to support a Prolific PL-25A1 USB-to-USB bridge:

cd linux-omap-2.6.git
patch -p1 < /path/to/linux-netdev-pl21a.patch (from here)

Build:

make distclean
make omap3_beagle_defconfig
make menuconfig # turn on whatever else you care about
make uImage

I then copied my new uImage to the vfat parition of my SD card, and it booted right up. The HDMI video output isn’t working, but for my purposes at the moment I don’t care. USB is humming right along.

fink, tetex, minicom, OS X 10.4, 10.5, …

So I wanted to install minicom on OS X to use with my new USB-to-serial adapter, but it turns out my installation of fink was pretty old… so old that it predates my upgrade from OS X 10.4 to 10.5. I depend on my fink installation for LaTeX, so I was hesitant to tamper with it. However, a good half hour of reading documentation on the fink web page got me no closer to comprehending how to do the upgrade (seriously fink: what is the version numbering scheme?

Now that I’ve upgraded, my system shows:

$ fink -V
Package manager version: 0.27.16
Distribution version: 0.9.0.1 i386

However, there are instructions for things like Upgrading From Fink 0.3.x. Is this just years and years old?

Anyways, my solution was to totally uninstall my existing fink installation and start clean. Right now LaTeX has been downloading for nearly an hour. Hopefully that will get me to the point where I can install minicom. Note that I had to install the XQuartz X11 server even though Leopard includes basically an earlier version of the same code. Note also that I had to run ‘fink configure’ and enable unstable packages.

I ran into the same problems as this guy, where fink and apt-get acted like minicom did not exist. It has to do with using rsync or cvs instead of the “point” releases. Grumble.

USB to serial adapter for OS X

The OSX-PL2303 project purports to provide a driver for a lot of different USB-to-serial adapters. Today I got a CablesToGo USB to serial DB9 adapter (26886). Without doing anything, just plugging in the device appears to have no effect. I then installed the OSX-PL2303 driver, which asked me to reboot. As the system was shutting down, it asked me something about rebuilding my boot cache. I’ve never seen this message before and I was anxious to get things going so I just hit okay, and sat there for 20 minutes watching the spinning progress indicator. I got impatient and power-cycled the machine, and it booted normally.

Now that I’ve installed the driver, connecting the device and doing ‘ls /dev/tty.*’ produces a new entry:

/dev/tty.PL2303-0000103D

This looks like a success, but I’m not currently near my serial device so no promises yet. I’m currently trying to install minicom, which necessitates upgrading fink, which becomes complicated. We’ll see…

Update: it does work.

ping: sendmsg: operation not permitted

I get this from time to time on Debian systems, and it always takes me a while to track down the problem. It usually has to do with the ipmasq package. I am generally able to correct the situation by running `sudo /etc/init.d/ipmasq restart`. I believe ipmasq is being started before my second interface is up, and is thus creating some Bad Rules.

ipmasq is also responsible for being overwhelmed with messages like the following (currently I’m unable to stop these):

IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:60:9f:90:48:16:08:00 SRC=152.2.129.182 DST=152.2.255.255 LEN=85 TOS=0x00 PREC=0x00 TTL=64 ID=10481 PROTO=UDP SPT=1024 DPT=1319 LEN=65
IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:60:9f:90:38:56:08:00 SRC=152.2.140.77 DST=152.2.255.255 LEN=85 TOS=0x00 PREC=0x00 TTL=64 ID=17141 PROTO=UDP SPT=1025 DPT=1319 LEN=65
IN=eth0 OUT= MAC=00:1a:a0:84:b5:76:00:17:f2:c8:51:96:08:00 SRC=152.2.130.157 DST=152.2.130.160 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=22751 PROTO=ICMP TYPE=8 CODE=0 ID=26883 SEQ=499
IN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:07:e9:7e:0c:87:08:00 SRC=152.2.142.37 DST=255.255.255.255 LEN=590 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=2160 DPT=3052 LEN=570