Building the Arago Linux Kernel for Beaglebone

First clone the Arago am33xx kernel tree, or if you already have a kernel tree
locally, add the Arago repo as a remote and check out the v3.2-staging
branch. Then unpack the TI am335x-evm-sdk sources, of which you’ll then again
need to unpack the Linux kernel sources inside, so that you can get the
Cortex-M3 firmware needed for proper power management. The firmware is located
at firmware/am335x-pm-firmware.bin. Copy it to the firmware/ directory in
the Arago kernel tree you’ve checked out.

Now, within the Arago Linux tree, you’ll execute all the rest of the commands.

First, make sure everything’s clean:

make mrproper
make ARCH=arm clean

Then load the am335x_evm_defconfig:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- am335x_evm_defconfig

If you’d like to make any changes, you may use menuconfig. I personally like
to enable DEVTMPFS and automatically mount it at boot time since I don’t create
any entries in /dev on my root file system (I’m lazy, patch available in
a gist, apply the patch before loading the defconfig):

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- menuconfig

Then build the uImage (replace the -j5 with an apropriate value for your build
machine):

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j5 uImage

Copy the resulting uImage to your SD card and boot up your Beaglebone!

cp arch/arm/boot/uImage /path/to/sdcard/

Make sure when unmounting your SD card that you allow the unmount to return
before physically removing it from your PC. A sync before the umount
command is my usual operation, to ensure all data has been written to the SD
card before I pull it. Linux on your PC will buffer data being written, so the
actual cp command will return before data has been fully written to the card.