BeagleBoardUbuntu

This page is about running a (ARM EABI) Ubuntu distribution at BeagleBoard. BeagleBoard will boot the (ARM EABI) Ubuntu distribution from SD card.

Note: for the best experience, make sure you have an LCD attached to the HDMI port, 2GB/4GB SD card, and a known good usb2.0 hub with mouse and keyboard.

= KNOWN ISSUES =

2.6.29-oer* USB still flaky on the RevC ehci port.. --RobertCNelson 18:17, 6 May 2009 (UTC)

Kernel Problems: Please email me (gmail), or post to the beagleboard google group, with a pastebin dump of your complete serial bootup. (I'm unable to use irc at work..) Any builds listed in this wiki have been tested with RevB & RevC boards.. (however with not every single u-boot combination.)

= Recommended Beagle Software =

xloader xxxx Upgrade

U-Boot 2009.03+r22 Upgrade: http://elinux.org/BeagleBoardUbuntu#Upgrade_U-Boot

Warning note: RevB board + RevC Validation U-boot + 2.6.29-oer30 = NO USB (USB worked fine with 2.6.28)

= Ubuntu Rootfs Install = Use Oliver's script located here: https://wiki.ubuntu.com/ARM/RootfsFromScratch

Development PC: Build Root File System
Note: Use latest debootstrap, if the one posted here is no longer available.

Requirements: sudo apt-get install qemu

wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.13~jaunty1_all.deb sudo dpkg -i debootstrap_1.0.13~jaunty1_all.deb wget http://people.ubuntu.com/~ogra/arm/build-arm-rootfs sudo chmod u+x build-arm-rootfs

Note: For USB WIFI adapters, add package "linux-firmware" to the --seed Just some of the firmware's in this package... acx/tiacx1xxusb atmel_at76c50x ipw2x00 isl38xx iwlwifi ql2x00 rt25x zd1201 zd1211

General sudo ./build-arm-rootfs --fqdn --login --password --imagesize --seed

To Clarify any confusion: --imagesize doesn't equal your SD card size, it's just the temp disk size used for qemu. A good number of files will be removed so your final image will be smaller.

Basic small image sudo ./build-arm-rootfs --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed

lxde Destktop sudo ./build-arm-rootfs --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed lxde,gdm

Xubuntu Desktop sudo ./build-arm-rootfs --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed xubuntu-desktop

Ubuntu Desktop sudo ./build-arm-rootfs --fqdn beagleboard --login ubuntu --password temppwd --imagesize 3G --seed ubuntu-desktop

Development PC: Format SD Card
You will need a 1GB SD card or greater. Standard Console System : ~286MB + Desktop environment (lxde,gdm) : ~479MB

Starting with an empty SD card and using gparted, create: 50 MiB Primary Partition, fat32 Rest as ext2/ext3

Gparted Example: http://nishanthmenon.blogspot.com/2008/08/how-to-boot-beagle.html

Development PC: Setup SD uboot/uImage Partition
Mount your SD card fat32 partition. (/media/disk/)

cd /media/disk sudo wget http://www.rcn-ee.com/deb/kernel/CC-beagle-v2.6.29-58cf2f1-oer32 sudo mv CC-beagle-v2.6.29-58cf2f1-oer32 uImage

Tested: 2.6.29-oer31 install RevB5 & RevC2 --RobertCNelson 19:54, 24 April 2009 (UTC)

Note: CC-beagle-v2.6.29-58cf2f1-oer32 uImage was built with most/all available usb wifi/ethernet adapter built in to get the beagleboard to connect to the internet. For most people this is all you'll need, however it is recommended to install one of the kernel image deb packages. (script is provided.)

Development PC: Setup SD ext2/ext3 Partition
Mount your SD ext2/ext3 partition. (/media/disk/)

sudo tar xfp armel-rootfs-[date].tgz -C /media/disk

Enable Network Access
Modify /etc/network/interfaces auto eth0 iface eth0 inet dhcp

Manual: From the Command line sudo ifconfig eth0 up sudo dhclient eth0

Login thru Serial Port
Create file /etc/event.d/ttyS2

# start on runlevel 2 start on runlevel 3 stop on runlevel 0 stop on runlevel 1 stop on runlevel 4 stop on runlevel 5 stop on runlevel 6 respawn exec /sbin/getty -L 115200 ttyS2
 * 1) ttyS2 - getty
 * 1) This service maintains a getty on tty6 from the point the system is
 * 2) started until it is shut down again.

Note: ubuntu normaly doesn't have a 'root' user, however if you add one, make sure too add ttyS2 to /etc/securetty (by default ttyS0 & ttyS1 are already there)

Beagleboard: Setup U-boot for boot
Using a terminal program, stop u-boot and add these commands:

For Linux Kernel 2.6.29 and higher using DSS2 setenv bootcmd 'mmcinit; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000' setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootwait rootfstype=ext3 ro omapfb.mode=dvi:1280x720MR-16@60' saveenv boot

You shall adapt the resolution to you screen as following : omapfb.mode=dvi:1280x720MR-16@60 Modes: "1024x768MR-16@60""800x600MR-16@60" ...

Here is more explanation on dss video options :

Script File
Note: this will be updated from time to time. (tested off course, may need "sudo apt-get install wget")

wget http://www.rcn-ee.com/deb/kernel/ubuntu-update-kernel.sh sudo /bin/bash ubuntu-update-kernel.sh

Note: vmlinuz symbolic link (yes  no)... Still not sure this matters, i select ...

Manual Method
You can open/edit the ubuntu-update-kernel.sh to see latest version.

sudo apt-get install uboot-mkimage wget http://www.rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer34/linux-image-2.6.29-oer34_1.0jaunty_armel.deb (or any listed here: http://www.rcn-ee.com/deb/kernel/beagle/jaunty/ ) sudo dpkg -i linux-image*

Extract linux-image's vmlinuz-* (we need this to create the uImage, uboot uses to boot) dpkg -x linux-image* ./temp

Mount fat32 partition sudo mount /dev/mmcblk0p1 /mnt

Build uboot compatible image and copy to fat32 boot partition sudo mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./temp/boot/vmlinuz-* /mnt/uImage

unmount fat32 partition sudo umount /mnt

Clean up rm -rfd temp

Reboot with your new uImage

= Advanced =

Upgrade U-Boot
Using gparted, create a new 50MB Primary fat32 Partition on a blank SD card, or use your existing fat32 partition.

cd /media/disk sudo wget http://rcn-ee.homeip.net:81/dl/omap/uboot/u-boot-beagleboard-2009.03+r22+gitr2dea1db2a3b7c12ed70bbf8ee50755089c5e5170-r22.bin sudo mv u-boot-beagleboard-2009.03+r22+gitr2dea1db2a3b7c12ed70bbf8ee50755089c5e5170-r22.bin u-boot-f.bin

Tested --RobertCNelson 16:37, 24 April 2009 (UTC) RevB5 + 2.6.29-oer31 & RevC2 + 2.6.29-oer31

Insert SD Card, boot Beagleboard and stop U-Boot from booting mmcinit fatload mmc 0 0x80200000 u-boot-f.bin nand unlock nandecc sw nand erase 80000 160000 nand write.i 0x80200000 80000 160000 reset

U-Boot Script Files
uboot-mkimage package is required

contents of ubuntu-ext3.cmd setenv bootcmd 'mmcinit; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000' setenv bootargs 'console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rootdelay=2 rootfstype=ext3 ro omap-dss.def_disp=lcd omapfb.video_mode=1280x720MR-24@60' boot

Create *.scr file mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Boot Time Label" -d ubuntu-ext3.cmd ubuntu-ext3.scr

Ubuntu gcc package build settings
Ubuntu 9.04 - Released : April 23rd, 2009

Default gcc settings: -march=armv5t -mtune=cortex-a8 -mfpu=vfp -mfloat-abi=softfp

Ubuntu 9.10 - Karmic - 1->2

Current gcc settings: -march=armv5t -mtune=cortex-a8

Kernel Modules
Starting with 2.6.29-oer34, these will be auto generated by the beagle builder.

wget -c http://www.rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer34/omaplfb.ko wget -c http://www.rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer34/pvrsrvkm.ko sudo mkdir -p /lib/modules/`uname -r`/kernel/drivers/gpu/pvr/ sudo mv *.ko /lib/modules/`uname -r`/kernel/drivers/gpu/pvr/ sudo depmod -a omaplfb

SDK
Get from here: https://www-a.ti.com/downloads/sds_support/targetcontent/dvsdk/oslinux_dvsdk/v3_00_3530/OMAP35x_Graphics_SDK_setuplinux_3_00_00_06.bin

Note: the SDK will not extract directly on any arm platform, extract it first on an x86 machine and tar the resulting folder before transferring to the beagleboard.

System Libraries: sudo ln -sf /usr/lib/libXdmcp.so.6.0.0 /usr/lib/libXdmcp.so.0 sudo ln -sf /usr/lib/libXau.so.6.0.0 /usr/lib/libXau.so.0

SDK lib's sudo cp SDK_EXTRACTED_DIR/gfx_rel/*.so /usr/lib/

SDK pvrsrvinit sudo cp SDK_EXTRACTED_DIR/gfx_rel/pvrsrvinit /usr/local/bin/

devmem2
wget -c http://free-electrons.com/pub/mirror/devmem2.c gcc -o devmem2 devmem2.c sudo cp devmem2 /usr/local/bin

Startup Script
/etc/rcS.d/S60pvr.sh

modprobe omaplfb pvr_maj=`grep "pvrsrvkm$" /proc/devices | cut -b1,2,3` if [ -e /dev/pvrsrvkm ] ; then rm -f /dev/pvrsrvkm fi mknod /dev/pvrsrvkm c $pvr_maj 0 chmod 666 /dev/pvrsrvkm pvrsrvinit devmem2 0x48004b40 w 0
 * 1) !/bin/sh
 * 1) this is from the SDK...
 * 1) Set SGX to full speed

DSP
work in progress

Drivers
Note: Backport from Karmic

wget -c http://rcn-ee.homeip.net:81/dl/deb-sbuild/jaunty/xorg-drivers/xserver-xorg-video-omap3_0.1.1-2_armel.deb sudo dpkg -i xserver-xorg-video-omap3_0.1.1-2_armel.deb

Startup Script
/etc/rcS.d/S61omapfb.sh

ln -s /dev/fb0 /dev/fb
 * 1) !/bin/sh
 * 1) Hack, omapfb is looking for /dev/fb

xorg.conf
/etc/X11/xorg.conf

Section "Monitor" Identifier "Configured Monitor" EndSection Section "Screen" Identifier "Default Screen" Device "Configured Video Device" #Limited by SGX? DefaultDepth 16 EndSection Section "Device" Identifier "Configured Video Device" Driver "omapfb" EndSection

= Karmic Testing = Ubuntu is currently in Alpha: 1->2 Stage, so no promises anything will work.

Major Changes: gcc-4.4: https://launchpad.net/ubuntu/karmic/+source/gcc-4.4 omapfb driver: https://launchpad.net/ubuntu/karmic/+source/xf86-video-omapfb

Updated build-arm-rootfs script
changed: jaunty->karmic

Requirements: sudo apt-get install qemu

wget http://ports.ubuntu.com/pool/main/d/debootstrap/debootstrap_1.0.13~jaunty1_all.deb sudo dpkg -i debootstrap_1.0.13~jaunty1_all.deb wget http://rcn-ee.homeip.net:81/dl/omap/scripts/build-arm-rootfs-karmic sudo chmod u+x build-arm-rootfs-karmic

General sudo ./build-arm-rootfs-karmic --fqdn --login --password --imagesize --seed