Debian Wheezy Instructions

From odroid US
Revision as of 01:53, 13 March 2013 by Osterluk (Talk | contribs) (Bootstrap Debian with debootstrap)

Jump to: navigation, search


Availability

An SD Card image for a Debian system for odroid-u2 is available in the downloads area Debian-wheezy

The files with the .md5sum extensions give you an easy way to check validity after downloading, using md5sum like this:

md5sum -c odroidu2_20130104-debian-wheezy-3.img.xz.md5sum 
# odroidu2_20130104-debian-wheezy-3.img.xz: OK

The non-filesystem area, including the bootloader(s) generally follow the HardKernel ubuntu images, like odroidu2_20130125-linaro-ubuntu-desktop-uSDeMMC.img.xz. The partition layout is the same, the bootloaders are the same.

The boot partition holds the kernel, initrd and u-boot boot scripts. These will not exactly track the HK releases.

debian-wheezy describes the system. The .img means it is a SD card image and .xz shows the file compression type. I recently dropped the added version number in favor of a date.

There are two versions, one is a minimal system and the other is a larger development version. The development version includes a native gcc compiler, and all locales.

Revision History

debian-wheezy-2
initial release
debian-wheezy-3
Added curl package, updated to kernel 3.0.57
debian-wheezy-devel-4
  • This is setup for native compiling. linux-3.0.57 is ready to build in /usr/src/linux.
  • Added prerequsites for building the kernel
  • Added sudo
  • Built and installed the kernel per this tutorial: Kernel compiling
  • odroidu2-20130205-debian-wheezy-devel
  • This is setup for native compiling.
  • A private kernel build is installed: linux-3.0.61
  • The kernel source is removed from /usr/src/ in the interest of a smaller image
  • Fixed locale setup. Added all locales.
  • Set the timezone to GMT+8 (USA Pacific)
  • Added ntpupdate package to update time from network
  • The MAC ID is chosen randomly on first boot, but stored persistently in /etc/smsc95xx_mac_addr. For example the expected file contents would be like: A6:2A:DC:0B:56:74. You can edit the file to set the MAC ID if you need a specific one.
  • Issues

    On first boot, the mac id file is not created, the root file system has not been mounted read/write at that time. Make up your own random mac id and do something like this:

    echo A6:2A:DC:0B:56:74 > /etc/smsc95xx_mac_addr
    

    You will see a message like: FATAL: Could not load /lib/modules/3.0.61/modules.dep: No such file or directory. This is not actually fatal, it is coming from the initrd -- which does not have a set of kernel modules matching the kernel, 3.0.61.

    Features

    Writing an SD-card image and booting will give you a completely pristine, up-to-date, headless Debian 7.0 system. Headless, meaning only the Linux console is active -- not the HDMI display.

    The network will come up automatically, using DHCP.

    The login is: user/password or root/root. Specifically, this means username: user and password: password will get you in. Or you can use username: root password: root. Yes, I do let root log in to the console...

    If you log in as user, you can su to become root.

    Root Filesystem Images

    The tarball with the -rootfs.tgz suffix is just the content of the rootfs partition of the SD card.

    If you have flashed the Ubuntu SD-Card image and want to try the Debian system, you can just mount the partition, delete all the files and then extract the tarball onto the SD card.

    See this tutorial for step-by-step instructions: Updating from Root File System Images

    Debian Tips

    This page is for Debian Tips Debian Tips

    Image Creation Details

    This is where I plan to detail how the image was created, starting with odroidu2_20130104-linaro-ubuntu-desktop-uSDeMMC.img.xz and then using debootstrap.


    Bootstrap Debian with debootstrap

    To get started, we need a root file system that has all the components needed to boot Debian. Once we have that, we can configure the system and add more packages. This technique uses qemu-system-arm, so qemu needs to be installed.

    For reference, these steps were taken right from the Debian wiki: [1]

    # Go to a convenient directory
    cd $HOME
    # make a place to work
    mkdir debian-bootstrap
    # and go there
    cd debian-bootstrap
    # Create the root file system, this can take some time... ( 5m30s for me with local aptcached packages )
    sudo debootstrap --verbose --arch armhf --foreign wheezy $PWD/armhf http://ftp.at.debian.org/debian
    # Now the directory $HOME/debian-bootstrap/armhf holds a wheezy root file system, built from binary packages
    


    NOTE: THIS SECTION IS UNDER DEVELOPMENT -- NOT COMPLETE/TESTED

    We use qemu to bring up the system

    sudo cp $(which qemu-arm-static) armhf/usr/bin
    

    Run debian second stage

    DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true  LC_ALL=C LANGUAGE=C LANG=C sudo chroot armhf /debootstrap/debootstrap --second-stage
    





    <TBD> -- create device nodes, copy inittab ttyAMA0 for qemu

    sudo mknod armhf/dev/ttyAMA0 c 204 64
    sudo chown -R root:root armhf
    
    
    

    -- add to fstab mount proc /proc -t proc mount sys /sys -t sysfs

    zlib1g might have a problem.


    -- now looking back at cdebootstrap-static

    ar tv cdebootstrap-static_0.5.9_armhf.deb 
    

    rw-r--r-- 0/0 4 Jun 1 12:23 2012 debian-binary rw-r--r-- 0/0 963 Jun 1 12:23 2012 control.tar.gz rw-r--r-- 0/0 632039 Jun 1 12:23 2012 data.tar.gz


    ./cdebootstrap-static --allow-unauthenticated --flavour=minimal wheezy /mnt http://archive.debian.org/debian


    Link: [2]


    Convert the root file system to a filesystem image (optional to launch with qemu)

    qemu-img create rootfs-wheezy.ext4 4G
    mkfs.ext4 rootfs-wheezy.ext4
    # We are going to need a mount point
    mkdir mnt
    sudo mount -o loop rootfs-wheezy.ext4 mnt
    sudo cp -a armhf/* mnt
    sync
    sudo umount mnt
    # Now rootfs-wheezy.ext4 has the same contents as the bootstrapped Debian, plus the device nodes we inserted