Revision as of 13:10, 22 November 2011 by RobertCNelson (Talk | contribs)

Jump to: navigation, search

This page is about running a (ARM EABI) Debian distribution at BeagleBoard. BeagleBoard will boot the (ARM EABI) Debian distribution from SD card. Debian's NetInstall will be used to install Debian onto your Beagle.

Note: Debian armel deb's are compiled for armv4t, this allows debian to support a larger number of arm devices with a single port, at only the sacrifice of speed.


If you need any help:

  • When asking for help, please provide some debugging information:
    • U-Boot Version installed on board
    • Kernel Version: uname -a
    • pastebin dmesg
      • Copy from serial port or use "dmesg | pastebinit" (sudo apt-get install pastebinit)

Recommended Beagle Software

X-loader/MLO (1.4.4ss) & U-Boot (2010.03) (Zippy1 & Zippy2 Support)

  • All Bx, C2/3/4 Boards are required to upgrade to atleast these MLO and U-Boot versions.
  • XM Boards have no NAND, so u-boot.bin is always required on the first partition
  • Directions: Upgrade X-loader and U-Boot

Debian NetInstall

You will need a 1GB SD card or greater.

Standard System : ~455MB
+ Desktop environment (GNOME) : ~2.9GB

Debian Squeeze

git clone git://
cd netinstall

Install script for Beagle Bx

sudo ./ --mmc /dev/sdX --uboot beagle_bx --distro squeeze

Install script for Beagle Cx, xM A/B/C

sudo ./ --mmc /dev/sdX --uboot beagle --distro squeeze

Install script for Panda

sudo ./ --mmc /dev/sdX --uboot panda --distro squeeze
  • Options:
    • --uboot : beagle, (panda only serial, display not working)
    • --distro : squeeze
    • --firmware : installs firmware
    • --serial-mode : debian-installer uses Serial Port
    • --usb-rootfs : (uImage on /dev/mmcblkp0 and rootfs on external usb drive /dev/sda1)

NOTE: There is a bug in the USB Keyboard mapping, the debian-installer will initially fail, if and when the error occurs switch to the option "kernel keymap" and continue installing..

Beagleboard: NetInstall

Choose a language
 C - No localization
 English - English
Configure the network:
 usb0: USB net <- (usually the OTG port, but could also be the smsc95xx adapter on the beagle and panda)
 usb1: USB net <- (usually the smsc95xx adapter on the beagle and panda, when usb0 exist)
 eth0: Ethernet <- Your usb-ethernet device
 wlan0: Wifi <- Your usb-wifi device.. See BeagleBoardDebianWifiInstallInfo for my hack to set it up.

usb0 howto

There's a lot of question on irc about this, it might make sense to add a wiki page going thru with linux/winxp etc.. --RobertCNelson 00:55, 23 April 2010 (UTC)

Configuring usb0 network bridge for 2.6.29:
 While you chose your keyboard layout, setup a bridge with ethX and usbX.
  # ifconfig ethX
  # ifconfig usbX
  # brctl addbr brX
  # brctl addif brX ethX
  # brctl addif brX usbX
  # ifconfig brX up
  # dhclient brX
 *Sometimes the first beagle DHCP will fail(probably due PC trying autoconnect), just run the auto configuration again and it will configure it right.
Continue the install without loading kernel modules? : <yes>
Partition disks: This partitioner doesn't have the inform.....? : <yes>
 Logical Volume Manager not available: <Continue>
Partition disks:
 Guided - Use the largest continuous free space
Partitioning scheme....


MMC/SD card #1 (mmcblk0) - 2.0 GB Unknown
>  #1 primary  57.5 MB     fat32
>  #2 primary   1.8 GB B f ext3  /
>  #5 logical 148.0 MB   f swap  swap
Finish partitioning and write changes to disk
 Write the changes to disk? : <yes>
No installable kernel was found in the defined APT sources? : 
 Continue without installing a kernel? : <yes>
Standard System
No BootLoader: <ok>

Beagleboard: Install Latest Kernel

Script File:

sudo /bin/bash

export DIST=squeeze
wget $(cat ./LATEST-omap | grep STABLE | awk '{print $3}')

Reboot with your new Kernel

Debian armhf port

The armhf port of Debian is still only on the ports server, it hasn't been merged to main..

Port Details: Status:

armhf Demo Image

Default user: debian pass: temppwd Default root user: root pass: root

Get prebuilt image:

mirrors (will take some time to update):

Verify Image with:

md5sum unstable-minimal-armhf-omap-2011-08-11.tar.xz
7020abf7c80e8e75eb54ba214ed9c849  unstable-minimal-armhf-omap-2011-08-11.tar.xz

Unpack Image:

tar xJf unstable-minimal-armhf-omap-2011-08-11.tar.xz
cd unstable-minimal-armhf-omap-2011-08-11

Install Image:

Quick Install script for Beagle Bx

sudo ./ --mmc /dev/sdX --uboot beagle_bx

Quick Install script for Beagle Cx, xM A/B/C

sudo ./ --mmc /dev/sdX --uboot beagle

Quick Install script for Panda

sudo ./ --mmc /dev/sdX --uboot panda
  • Additional Options
    • --rootfs <ext4 default>
    • --swap_file <swap file size in MB's>
    • --addon <pico>

You should now be able to unmount the SD card from you PC, insert into your BeagleBoard, reboot and have Ubuntu Maverick loaded.

Advanced: Build Image:

Built with rootstock trunk (ARM native mode, run directly on beagleboard):

sudo ./rootstock --fqdn omap --imagesize 2G --dist unstable --serial ttyO2 \
--login debian --password temppwd \
--seed initramfs-tools,btrfs-tools,i2c-tools,nano,pastebinit,uboot-envtools,uboot-mkimage,usbutils,wget,wireless-tools,wpasupplicant \
--script --components "main" --arch armhf --mirror \

rootstock for armhf


Must have, these options for debian armhf...

--components "main" --arch armhf --mirror

Debian Configuration

Serial Ports


edit /etc/inittab and add:

S:2345:respawn:/sbin/getty 115200 ttyS2

For root access over the serial port add ttyS2 to /etc/securetty


edit /etc/inittab and add:

S:2345:respawn:/sbin/getty 115200 ttyO2


See BeagleBoard Debian WiFi install info.

SGX Video Acceleration

Requirements: 2.6-stable from launchpad or deb's from (the Demo Images hosted on meet this requirement)

Note: An older version of these instructions was adapted for the IGEPv2 platform - if you are following this tutorial and have an IGEPv2, consider using instead

SDK unPackage Script

Download the latest version of the "" script


Make script executable

chmod a+x ./

Run script


After Successfully running:

:~/temp$ ls
GFX_X_XX_XX_XX_libs.tar.gz                      : -> Copy to Beagle (System Libs)
GFX_Linux_SDK.tar.gz                            : -> Copy to Beagle (DEMO's)

Beagle: GFX_*_libs.tar.gz

tar xf GFX_4_00_00_01_libs.tar.gz  (extracts and
./ (copies necessary SGX libs and startup script)
./ (force run the new init script, or you can just reboot...)

On Successful install:

Stopping PVR
Starting PVR
Starting SGX fixup for ES2.x (or ES3.x) (or ES5.x xM)

Reboot for good measure

sudo reboot

Beagle: GFX_Linux_SDK.tar.gz

tar xf GFX_Linux_SDK.tar.gz
cd GFX_Linux_SDK
tar xf OGLES.tar.gz

Test SGX with a DEMO

cd OGLES/SDKPackage/Binaries/CommonX11/Demos/EvilSkull

Trouble Shooting

sudo rm /etc/powervr-esrev
sudo depmod -a omaplfb
sudo /etc/init.d/pvr restart



Seems to work on all Beagle's, with atleast 2.6.38+ now...

Requirements: 2.6-stable from launchpad or 2.6.38+ deb's from (the Demo Images hosted on meet this requirement)

Download the latest version of the "" script


Make script executable

chmod a+x ./

Package script:


Copy DSP_Install_libs.tar.gz to beagle

Setup network...


tar xf DSP_Install_libs.tar.gz



Build gst-dsp stuff..



sudo gst-launch playbin2 uri=file://(file)

Xorg omapfb Drivers

By default Debian will try* to use the FBDEV video driver, however for the beagleboard we can take advantage of a more software optimized driver (still not using the sgx video hardware) using the NEON extensions of the Cortex-A8 core.

Lenny might need this xorg.conf, but it's best to use omapfb later in this guide..


Section "Device"
	Identifier	"Configured Video Device" 
	Option		"UseFBDev"		"true"
	Driver		"fbdev"

cat /var/log/Xorg.0.log | grep FBDEV

(II) FBDEV: driver for framebuffer: fbdev
(II) FBDEV(0): using default device
(II) FBDEV(0): Creating default Display subsection in Screen section
(==) FBDEV(0): Depth 16, (==) framebuffer bpp 16
(==) FBDEV(0): RGB weight 565

Login into Debian and open a new terminal, xorg has to be running..

xvinfo -display :0.0

X-Video Extension version 2.2
screen #0
 no adaptors present


Note: These are built with neon optimizations:;a=blob;f=debian/rules;h=c2f0d5391c96c5abb60b1e691ad86bb27e0c17d8;hb=HEAD (line 48/49)


wget -c
sudo dpkg -i xserver-xorg-video-omap3_0.1.1-2_armel.deb


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



Section "Monitor"
    Identifier "Configured Monitor"

Section "Screen"
    Identifier "Default Screen"
    Device "Configured Video Device"
    #Limited by SGX?
    DefaultDepth 16

Section "Device"
    Identifier "Configured Video Device"
    Driver "omapfb"
    Option "fb" "/dev/fb0"

To verify it was correctly installed, reboot and:

cat /var/log/Xorg.0.log | grep omapfb

(II) LoadModule: "omapfb"
(II) Loading /usr/lib/xorg/modules/drivers//
(II) Module omapfb: vendor="X.Org Foundation"
(II) omapfb: Driver for OMAP framebuffer (omapfb) and external LCD controllers:
(WW) Error opening /sys/devices/platform/omapfb/ctrl/name: No such file or directory
(II) omapfb(0): VideoRAM: 1800KiB (SDRAM)
(II) omapfb(0): Creating default Display subsection in Screen section
(**) omapfb(0): Depth 16, (--) framebuffer bpp 16
(==) omapfb(0): RGB weight 565
(==) omapfb(0): Default visual is TrueColor
(--) omapfb(0): Virtual size is 1280x720 (pitch 1280)
(**) omapfb(0):  Built-in mode "current"
(==) omapfb(0): DPI set to (96, 96)
(II) omapfb(0): DPMS enabled
(II) omapfb(0): Video plane capabilities:
(II) omapfb(0): Video plane supports the following image formats:
(II) omapfb(0): XVideo extension initialized

Login into Debian and open a new terminal, xorg has to be running..

xvinfo -display :0.0

X-Video Extension version 2.2
screen #0
  Adaptor #0: "OMAP XV adaptor"
    number of ports: 1
    port base: 56
    operations supported: PutImage 
    supported visuals:
      depth 16, visualID 0x21
    number of attributes: 1

Building Kernel

Download SRC

git clone git://

Build Kernel


Optional Building Deb File


Upgrading from Debian 5 to Debian 6

Upgrading from Debian 5 to Debian 6 report and tutorial.