This page covers installation of Ubuntu "Maverick" 10.04 on Marvell Dove A0/X0 boards.
Known issues
Please consult the known issues with Ubuntu 10.04 ARM platforms before installing.
Preparation and image writing
Prep Work
u-boot requires a TFTP server to download files from. Several are available in universe, including attpd and tftpd-hpa. Install the server on a machine the Dove can access and take note of its IP address.
Update the BootROM
All Marvell boards have a BootROM written both in physical ROM, and a small section of SPI that can be used for upgrades. Newest versions of Marvell's kernel requires a newer BootROM, with the newest being 2.04. All X0 boards should ship with BootROM 2.04; if not, you need to upgrade the bootROM to at least 2.04:
Take that file, and place it in the TFTP folder. In addition, please make sure your board is setup for SPI booting (detailed below). At the u-boot prompt, type the following commands:
Marvell>> setenv serverip *ip address of TFTP server* Marvell>> setenv ipaddr *board IP address* Marvell>> tftp 2000000 dove_bootrom_2_04_spi_0x1.img Marvell>> protect off f87f0000 f8800000 Marvell>> erase f87f0000 f8800000 Marvell>> cp.b 2000000 f87f0000 10000 Marvell>> protect on f87f0000 f8800000 Marvell>> reset
If successful, the board will boot back into u-boot. Depending on the version of u-boot in SPI, it may or may not print a message about the new BootROM in SPI. These messages look like the following:
BootROM version (on chip)= 1.07 BootROM version (upgrade on SPI)= 2.04 BootROM Status: Number of retries = 0
Update u-boot
The stock u-boot on the Marvell Dove X0 and A0 board is sufficient to boot Ubuntu, and this step is optional. However, bugs related to suspend and resume were fixed with u-boot 4.4.2, and it is highly recommended that you upgrade.
Canonical versions have a version string similar this
U-Boot 1.3.4 (Oct 15 2009 - 12:11:45) Marvell version: 4.3.0 NQ - SPI BOOT. Canonical Development Version.
The current recommend version of u-boot for dove is Marvell-4.4.2
If your u-boot is older, you'll have to update it to a newer version. u-boot binaries for X0 are located here: http://people.canonical.com/~mcasadevall/dove/. The date of the binary is at the end of each filename in MMDDYYYY format. Official binaries from Marvell end in Marvell-VERSION. The filename also includes where the u-boot is supposed to be installed to, and the amount of RAM the board should have; MAKE SURE THESE VALUES ARE CORRECT; flashing a bootloader which doesn't match the hardware revision or amount of RAM may prevent the board from powering up and requiring UART recovery.
DANGER - If you are at all unsure, please confirm what you are doing is correct with NCommander; a bad u-boot flash WILL brick your board without a JTAG adapter
Lastest X0 Image for 1GiB boards: http://people.canonical.com/~mcasadevall/dove/x0/uboot-SPI-X0-1G_Marvell-4.4.2.bin<<BR>>
Make sure that the serverip and ipaddr variables are properly set in u-boot (use printenv *name* to check, setenv *name* *value* to change, and save to commit). If you can currently TFTP images to your board, these values are correct.
The bubt command is used for upgrading u-boot on the same medium (i.e., flashing a new u-boot to SPI while booted from SPI). It can't be used to go from one boot medium to another (i.e., SPI to NAND).
Marvell>> setenv serverip ''TFTP Server'' Marvell>> setenv ipaddr ''board IP address'' Marvell>> bubt ''filename of uboot''
Answer yes when asked if you wipe the environmental variables. Type reset when done to boot into the new u-boot
Writing the Image
First of all you need to download the Image to a large enough USB stick (1GB will suffice) that u-boot will be able to use; SanDisk were reported as supported.
For writing the image either use the usb-imagewriter tool which you can install from the Jaunty universe archive (packages for Hardy (8.04) and Intrepid (8.10) can be found at the usb-imagewriter PPA) or follow the commandline method below.
sudo dd bs=4M if=./lucid-desktop-armel+dove.img of=/dev/sdb
(assuming your USB stick is called /dev/sdb)
You'll also need a SATA disk or large USB harddrive as the target installation device.
USB booting is supported, but the Dove bootloader is extremely picky on what devices it will boot from. Using SATA is recommended and perferred
Starting the live system manually
These instructions are currently for reference if you need to manually start from the boot prompt. Current u-boot versions will autostart from a properly written USB stick
Attach the USB pendrive you made in the previous step to the Dove, and then reset the board with the drive attached.
IMPORTANT - Don't type usb start more than once in any given u-boot session since it will cause u-boot to loose track of all devices it currently sees.
You can test if the drive was detected like this:
Marvell>> usb start (Re)start USB... USB: scanning bus for devices... 2 USB Device(s) found scanning bus for storage devices... 1 Storage Device(s) found Marvell>> fatls usb 0:1 casper/ dists/ pics/ .disk/ install/ preseed/ pool/ 3143 md5sum.txt 368 boot.scr 228 readme.diskdefines 3 file(s), 7 dir(s)
If you get file output, your in business. The live image can be started with the following if you have the hush shell available.
Marvell>> usb start (Re)start USB... USB: scanning bus for devices... 2 USB Device(s) found scanning bus for storage devices... 1 Storage Device(s) found Marvell>> fatload usb 0:1 0x1000 boot.scr reading boot.scr 368 bytes read Marvell>> autoscr 1000 ## Executing script at 00001000 Loading Ubuntu LiveCD... reading /casper/uImage ........................................................................................................................................................................................................................................................................ Wrong Ramdisk Image Format Starting kernel ... Uncompressing Linux............................................................ .............................................................................................................. done, booting the kernel. Linux version 2.6.31-201-dove (buildd@jaboticaba) (gcc version 4.4.1 (Ubuntu 4.4.1-3ubuntu1) ) #5-Ubuntu Mon Aug 24 23:06:43 UTC 2009 (Ubuntu 2.6.31-201.5-dove)
If your using a non-hush enabled u-boot, you will have to load the uImage and uInitrd by hand to start the live environment
Marvell>> usb start (Re)start USB... USB: scanning bus for devices... 2 USB Device(s) found scanning bus for storage devices... 1 Storage Device(s) found Marvell>> fatload usb 0:1 0x20000 /casper/uImage Marvell>> fatload usb 0:1 0x110000 /casper/uInitrd Marvell>> setenv bootcmd mem=512M file=/cdrom/preseed/ubuntu.seed -- boot=casper Marvell>> bootm 0x20000 0x110000