BeagleBoardUbuntu

From eLinux.org
Revision as of 10:12, 20 August 2009 by Meizirkki (talk | contribs) (Xorg omapfb Drivers: Removed the useless symlink script and added the correct option to the xorg.conf)
Jump to: navigation, search

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 <ogra> 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)

Changes from upstream used here: https://code.launchpad.net/~robertcnelson/project-rootstock/beagleboard

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://www.rcn-ee.com/deb/tools/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 <hostname> --login <rootuser> --password <rootuserpasswd> --imagesize <qemu image size> --seed <packages> --dist <jaunty/karmic> 
 --serial <ttySx>  --kernel-image <http>

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

Upon Completion, you should have:

armel-rootfs-200908101131.tgz
vmlinuz-2.6.29-oer40.5


Karmic Testing:

Ubuntu is currently in Alpha: 6ish 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

Note: Still built with armv5, ubuntu is waiting for the new cortex based builders..

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

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 ./<rootstock_temp>/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

Development PC or Beagleboard: System Setup on the (ext2/ext3) Partition

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 : [1]

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? <yes>

Beagleboard: Install 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 <or> no)... Still not sure this matters, i select <yes>...

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://www.rcn-ee.com/deb/tools/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

SGX Video Acceleration

Kernel Modules

Jaunty:

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

Karmic:

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

Use atleast the 3.00.00.08...

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

#!/bin/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

# This is from the SDK...
/usr/local/bin/pvrsrvinit

# Set SGX to full speed
/usr/local/bin/devmem2 0x48004b40 w 0

DSP

work in progress

Xorg omapfb Drivers

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)

Jaunty:

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

Karmic:

sudo apt-get install xserver-xorg-video-omap3

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"
    Option "fb" "/dev/fb0"
EndSection

S-Video

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

NTSC

Please use v2.6.29-oer40.5:

PAL

Please use v2.6.29-oer40.5:

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