KarmicMarvellDesktop

  • Launchpad Entry: mobile-karmic-marvell-desktop

  • Created: June 23th, 2009

  • Contributors: Michael Casadevall

  • Packages affected: ubuntu-desktop, ubuntu-cdimage, debian-installer, ubiquity, flash-kernel

Summary

This specification tracks the status of support for the Marvell board for the Karmic 9.10 cycle.

Release Note

Ubuntu 9.10 has extended support to the Marvell ARM board.

Rationale

Support for Marvell hardware will increase the number of users for Ubuntu/armel

Requirements for Implementation

  • 2.6.31 series kernel for Marvell lands in Ubuntu git tree
  • redboot (or uboot) sources for the Babbage2 materialize, and are merged into the redboot-imx package in the archive.
  • Additional hardware for testing and debugging becomes available

Code Changes

  • ubuntu-cdimage
    • - Needs to have new SoC added ala Babbage board - Format required for image currently unknown, but will be using u-boot as a bootloader - iMX51/PXA subarchitecture support will have to be added. Some subarchteicture support exists for powerpc, and powerpc+ps3, but
      • its hardcoded, and would need some working to be extended to generate two types of SoCs. Probably we want to add a general subarch function to the codebase

  • Marvell u-boot
    • - Unknown if it needs to be packaged or how it can be manipulated in userland - If we need to distribute it, it will be packaged as uboot-dove in archive.
  • linux kernel
    • - No 30-31 codedrop currently available - Changes need merging in our kernel mainline
  • debian-installer/base-installer/ubiquity/libdebian-installer
    • - New subarchitecture needs to be defined for Marvell hardware; required for alternate and livecd builds and installers to be successful
  • update-initramfs
    • - Needs a hook to create a uRamdisk
  • iso.qa.ubuntu.com
    • - Will need to be updated for dove for karmic (requires RT ticket filed, should be done after we have images building)

Migration

  • New HW support, no migration support

Test/Demo Plan

Normal ARM/Desktop image test cases can be used to test image.

Boot Proposals

How the Dove board will boot is currently a undetermined questions. Here is my current proposal on how uboot can start and load various boot devices.

  • uboot executes a bootscript which scans all supported boot devices for a boot script
    • u-boot supports creating compiled boot scripts which are a set of uboot commands in binary format which are executed one by one
  • u-boot should try to load ext2 and fat formats, at /boot.scr and /boot/boot.scr
    • The name of the device that it successfully loads a boot script from should be placed in the environment variable boot_device in u-boot which can be referenced by boot scripts.
    • The bootscript in turn contains the set of commands to load from a specific device. u-boot has different subsystems for handling loading, i.e., SATA subsystem, NAND subsystem, NOR subsystem, etc. flash-kernel when creating this boot script must be aware of what medium the root filesystem is attached to (USB/SATA) and write out the correct commands in either case
  • If the soft bootloader becomes available w/i the karmic time frame, it should be an optional installation choice, and then take the place of the normal boot kernel/ramdisk. kexec will be used then from that point to load the correct kernel
  • Suggested boot device order(?): MMC, USB, SATA, NAND

Filesystem Layouts

Installed System

The filesystem layout will be a normal Ubuntu filesystem layout with the following changes (this assumes an installed system):

  • /boot/boot.scr - uBoot boot script, capable of loading the kernel and other such abilities
  • /boot/uImage - Current boot kernel. Created by uboot-mkimage by the kernel postinst for the latest kernel installed
  • /boot/uRamdisk - Current iniramfs for the kernel. Created by update-initramfs

Installation Media

The current installation media is going to be a USB stick with normal MBR and partition table with one partition, formatted as vfat(?, we might want to make this ext2 to simply boot scripts in u-boot)

The files relevant for boot are as follows:

  • /boot.scr
  • /casper/uImage
  • /casper/uRamdisk

u-boot is capable of direct disk reads from USB* and SATA, and supports ext2-compatible filesystems, and vfat for direct file loads. It can also load from the SPI-NOR and NAND chips on the board itself.

Installed Partitioning Map

The partitioning layouts that will be supported are as follows:

  • separate boot partition. Required for ext4, or encrypted rootfs, and lvm (default)
    • Partition Map
      • /boot (must be ext2/ext3
      • / (may be ext4 LVM, or other)
      • swap
    • Pros
      • Allows / to be ext4 or any other filesystem
      • Done on most ports architectures that have a bootloader that can't deal w/ extX (ia64, powerpc, sparc)
    • Cons
      • Issues with /boot being too small can cause out of disk space errors and cause package installation to fail (LP bug: XXXXXX)
  • One giant root partition, and swap
    • / (must be ext2/ext3)
    • swap space
  • Pros:
    • Simple
    • Standard on i386/amd64
    • No Out of Disk Space errors for /boot
  • Cons:
    • / is limited to ext2/3

Based on the above pros and cons, it seems supporting /boot as a separate partition is the best default choice as it allows us to use ext4 as the root filesystem, as well as support LVM, and encrypted rootfs's if need be.

* - As of August 18th, this support is currently broken in the last u-boot drop from Marvell. SATA support remains untested.


CategorySpec

Specs/KarmicMarvellDesktop (last edited 2009-08-18 16:38:13 by cpe-72-226-207-134)