EBC Exercise 08 Installing Development Tools 3.8
Embedded Linux Class by Mark A. Yoder
Early in the class most of the exercises we will do will all run on the BeagleBoard. You'll be able to edit (gedit), compile (gcc) and run all on the Beagle. Later, when we start compiling the kernel [1] or the boot loader, (U-boot) you will need to cross compile on a Linux machine and copy the results to the Beagle.
The purpose of this exercise is to install all the tools needed for compiling on your host so they will be ready when you need them.
Instructions for building Ångström are given here; however there are a few changes you have to make. Here's what I did.
Tip: Run this exercise using a wired connection if you can. The Ubuntu wireless driver can be finicky, and if it stops working you'll have to restart some of this.
Contents
Install development environment v2
Follow these v2 instructions. They work for the 3.2.25 kernel.
Using Jason's instructions
These are notes on following instructions Beagleboard kernel git site.
host$ sudo apt-get install -y git lzop gcc-arm-linux-gnueabi uboot-mkimage
25 seconds
host$ git clone git://github.com/beagleboard/kernel.git
2.5 seconds
host$ ./patch.sh
38.5 minutes
host$ make -j9
4 minutes
host$ make uImage
18 seconds
host$ make uImage host$ mkdir ~/kernel/rootfs host$ make INSTALL_MOD_PATH=~/kernel/rootfs modules_install host$ cd
12 seconds
host$ scp kernel/kernel/arch/arm/boot/uImage root@beaglebone.local:/boot/uImage-3.2.25+
10 seconds
host$ cd kernel/rootfs host$ find -H -depth | cpio -o -H crc | ssh root@beaglebone.local 'cd /; cpio -id'
1 minute 16 seconds
host$ cd host$ ssh root@beaglebone.local 'cd /boot; rm uImage' host$ ssh root@beaglebone.local 'cd /boot; ln -s uImage-3.2.25+ uImage' host$ ssh root@beaglebone.local 'mount /dev/mmcblk0p1 /mnt' host$ ssh root@beaglebone.local 'cp /boot/uImage-3.2.25+ /mnt/uImage'
Download and Compile U-boot
While were' at it, let's get the boot loader we'll be using...
host$ bitbake u-boot
Mine took about 8 minutes.
Once installed you are ready for kernel work.
Installing on a Remote Machine
Installing the cross development tools and the kernel on a laptop is nice, but sometimes the downloads are too long for such a portable device. I've had a bitbake run some 12 hours. Another option is to use a remote machine. In my case our CSSE department has created a virtual machine with Ubuntu 12.04 installed on it.
To install on a remote machine are the same as above; However here's a couple of tips to make it easier.
First, ssh to the remote machine. Assume the machine is called csse and your login name is beagle.
local$ ssh -CX beagle@csse
You can leave the beagle@ off if you have the same login on both machine. The -C says to compress everything that's moved between the machines over the network. This is good for slow connections. The X says to pass the X11 display information to the remote machine. This way you can run graphical programs, such as gedit, on the remote machine and the graphics will display on your local machine (assuming you are running X11 on your local machine).
If you are sshing a lot check out the tip here about suspending ssh and the tip here about authorizing ssh so you don't have to enter your password every time.
Once logged on to the removed machine run
remote$ sudo apt-get install byobu
This installs byobu which is a program that lets you connect to the same shell from multiple machines. Once installed run
remote$ byobu
You'll see something like:
So what? Run a couple of commands, like ls or who, then hit F6. This will suspend your session. Now run byobu again. You'll be back in the same session. The session keeps running, even when you aren't connected.
Do you see the use?
- Fire up byobu
- Start a long bitbake
- Once you are sure it running OK, hit F6 and go home.
- From home fire up byobu and you'll see your bitbake (probably still running).
- You can F6 and check on it later.
Try opening another terminal and running byobu in both terminals. You'll see the same thing in both.
Run
$ man byobu
to see what it can do. Here's a list of shortcuts:
F2 - Create a new window F3 - Move to previous window F4 - Move to next window F5 - Reload profile F6 - Detach from this session F7 - Enter copy/scrollback mode F8 - Re-title a window F9 - Configuration Menu F12 - Lock this terminal Ctrl-a $ - show detailed status Ctrl-a R - Reload profile Ctrl-a ! - Toggle key bindings on and off Ctrl-a k - Kill the current window
But there is much more. Go and explore.
Embedded Linux Class by Mark A. Yoder