BeagleBoard Rev C5 Simple System with Buildroot
This is a simple tutorial on how to use Buildroot ( http://buildroot.uclibc.org/ ) to build a very simple embedded Linux system for the BeagleBoard RevC5 ( http://beagleboard.org/ ).
This was done on an Ubuntu 10.04 Virtual Machine. I assume you know how to connect up your board with power and serial to USB connections. I also assume you have a SD card reader connected to your machine with at least a 4 GB SD card inserted. You need to format the SD card to have 2 partitions. The first is a FAT partition marked with a boot flag and the second is an EXT3 ( Linux ) journaled partition to hold the root file system. Check out this post for a script to do this for you--> http://cgit.openembedded.org/cgit.cgi/openembedded/tree/contrib/angstrom/omap3-mkcard.sh.
Download buildroot ( http://buildroot.uclibc.org/download.html ). I used the 2012.05 version. Enter the buildroot directory and type the following in a terminal:
make menuconfig
This will open a Menu Configuration program similar to what is used to configure the Linux Kernel.
Use the Up and Down arrows on your Keyboard to highlight different configuration steps and type 'Y' to select and 'N' to deselect an option of configuration step.
Configure for ARM ( Little Endian ) as shown below.
Go back and configure for 'generic_arm' under 'Architecture Variant'.
Go back and choose 'EABI' under 'Target ABI'.
Go back and choose 'Number of jobs…' to be 2 to speed up building on multicore machines under 'Build Options'.
Go back and enable 'large file ( files < 2 GB ) support' and 'WCHAR support' under 'Toolchain'. You can use the buildroot toolchain here as well.
Select a new 'System Hostname', 'System Banner', and make sure you put 'ttyO2' for the console port under 'System Configuration'.
Go back and choose any additional packages you want under 'Package Selection For Target'.
Go back and choose 'host omap-u-boot-utils' and 'host u-boot tools' under 'Host Utilities'.
No choose 'ext2 root filesystem' and 'initramfs' under 'Filesystem Images'.
No choose 'U-boot', 'omap3_beagle' u-boot configuration', 'u-boot.img' binary format', and 'u-boot SPL support' ( which now replaces X-Loader MLO ), and name it MLO.
Now choose 'Linux Kernel' and use the 'omap2plus' defconfig under 'Kernel'.
Now select 'Exit' and save your configuration when promped. This will create a '.config' file in your buildroot directory. Now type in the terminal:
make
Sit back and wait! This will take awhile to download and build everything. When it's done, enter the 'output' directory in the buildroot directory. In 'output', there is an 'images' and 'target' directory. The 'images' directory has the Kernel image ( uImage ) and u-boot.img and MLO. Copy these three files to the FAT partition on your SD card.
cp buildroot/output/images/* /media/boot
Now make a 'boot' directory in the rootfs partition of the SD card and move the Linux Kernel image from the FAT boot partition to newly created boot directory. This behavoir could be circumvented by using a u-boot uEnv.txt file in the boot partition.
sudo mkdir /media/rootfs/boot
mv /media/boot/uImage /media/rootfs/boot/
Now enter the output/target buildroot directory. This one holds the root files system for the BeagleBoard. Now copy the root file system to the EXT3 partition of the SD card.
sudo cp -r buildroot/output/target/* /media/rootfs
Now eject the SD card:
sudo umount /media/boot /media/rootfs
Install minicom for serial communication with the board if your don't have it:
sudo apt-get install minicom
Insert the card into your BeagleBoard and open a new terminal to open up mincom:
minicom -s
Under serial device put in your serial to USB converter device ( usually ttyUSB0 but you can find out by typing 'dmesg' ). Also turn off 'Hardware Flow Control'.
Now you can go to the 'Exit' option on the minicom menu to open the modem and talk to the board. Put power on the board and watch Linux boot!
Feel free to leave feedback - happy coding!