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/8GB 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
https://launchpad.net/project-rootstock

Note: 'rootstock', is ubuntu's new name for 'build-arm-rootfs', I've also made two changes to make it easier for the beagleboard. (Specify Serial port, and download *.deb image)

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://rcn-ee.homeip.net:81/dl/ubuntu/rootstock sudo chmod u+x rootstock

Note: For USB WIFI adapters, add package "linux-firmware, wireless-tools" to the --seed WiFi Hints: http://elinux.org/BeagleBoardUbuntuNetwork

Changes in rootstock: Serial Port: --serial ttyS2 (default is ttyS0 with no specifier) Distribution Setting: --dist (jaunty or karmic) External Image: --kernel-image http://rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/linux-image-2.6.29-oer40.5_1.0jaunty_armel.deb or other.. (Note: dpkg hackers, anyway to do a silent install, with no user prompts?)

General Jaunty Image sudo ./rootstock --fqdn --login --password --imagesize --seed --dist  --serial  --kernel-image

Basic Jaunty (9.04) Beagleboard xfce4 image: sudo ./rootstock --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed xfce4,gdm --dist jaunty --serial ttyS2 --kernel-image http://rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/linux-image-2.6.29-oer40.5_1.0jaunty_armel.deb

Basic Karmic (9.10) Beagleboard xfce4 image: sudo ./rootstock --fqdn beagleboard --login ubuntu --password temppwd --imagesize 2G --seed xfce4,gdm --dist karmic --serial ttyS2 --kernel-image http://rcn-ee.com/deb/kernel/beagle/karmic/v2.6.29-58cf2f1-oer40.5/linux-image-2.6.29-oer40.5_1.0karmic_armel.deb

Upon Completion, you should have: armel-rootfs-200908101131.tgz vmlinuz-2.6.29-oer40.5

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
Requirements:

sudo apt-get install uboot-mkimage

Create U-boot compatible uImage:

mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./vmlinuz-* ./uImage

Mount your SD card fat32 partition. (/media/disk/) and copy the uImage to the first partition.

cd /media/disk sudo cp .//uImage uImage

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

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' or setenv bootcmd 'mmc init; fatload mmc 0:1 0x80300000 uImage; bootm 0x80300000' (r27) 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 :

Beagleboard: First boot
Either login thru the serial terminal, or thru lcd console install linux-image*.deb

sudo dpkg -i /var/linux-image-*.deb Create a symbolic link to the current kernel image?

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-oer40.5/linux-image-2.6.29-oer40.5_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.05+r27+gitrd363f9cb0918a1b6b92e2e20d01543d0c4f53274-r27.bin sudo mv u-boot-beagleboard-2009.05+r27+gitrd363f9cb0918a1b6b92e2e20d01543d0c4f53274-r27.bin u-boot-f.bin

Tested --RobertCNelson --RobertCNelson 21:41, 10 August 2009 (UTC) RevB5 + 2.6.29-oer40.5 & RevC2 + 2.6.29-oer40.5

Insert SD Card, boot Beagleboard and stop U-Boot from booting mmcinit (or "mmc init") 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-oer40.5, these will be auto generated by the beagle builder.

wget -c http://www.rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/omaplfb.ko wget -c http://www.rcn-ee.com/deb/kernel/beagle/jaunty/v2.6.29-58cf2f1-oer40.5/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 /usr/local/bin/pvrsrvinit /usr/local/bin/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

Note: These are built with neon optimizations: http://git.debian.org/?p=collab-maint/xf86-video-omapfb.git;a=blob;f=debian/rules;h=c2f0d5391c96c5abb60b1e691ad86bb27e0c17d8;hb=HEAD (line 48/49)

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

S-Video
Sorry I don't have an S-Video TV, but it would be really great if someone could fill this section in... --RobertCNelson 21:32, 13 July 2009 (UTC)

NTSC
Using v2.6.29-58cf2f1-oer34.1:

PAL
Using v2.6.29-58cf2f1-oer34.1:

= 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