Debian-jessie-armel-odroidxu

From odroid US
Jump to: navigation, search

Image Files

First a reminder about my images. *.img.xz means it is a compressed multi-partition image. You need to use xz to decompress it before writing it to SD Card.

  • .rootfs.tgz is just the root file system partition contents. Only needed to quickly get back to the original flash contents
  • .boot.tgz is just the boot partition contents. Only needed in case you wreck something and can no longer boot.
  • .md5sum are md5 checksum files you <should> use to make sure the associated file was downloaded properly.

debian-jessie-armel-base-7.1-odroidxu

Features

  • Runs only on odroidxu
  • Debian Jessie. soft-floating point only (armel)
  • linux-3.4.75 from HK
  • Follows layout of HK supported Debian images

    Issues

  • Do not run kernel-update.sh. It wrecks the /boot/uInitrd file. (I saved a copy in /root/boot-backup)
    # Install this missing package so kernel-update.sh will work
    apt-get install initramfs-tools
    # Mount the boot partition as read/write to let kernel-update.sh write files
    mount -o remount,rw /boot
    
  • There are kernel complaints on initialization:
    s5p_mfc_load_firmware:179: Firmware is not present in the /lib/firmware directory nor compiled in kernel.
    

    Files

    Look for the files here: http://odroid.us/odroid/odroidxu/debian/

    Details on how the image was built are here: debian-jessie-armel-7.1-odroidxu Build Notes

    Kernel Build

    There is some issue with the default default config from github, it will not compile. Here is a snippet showing how I worked around it

    // Fetch kernel source
    mkdir -p /usr/src 2>/dev/null
    cd /usr/src/
    git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidxu-3.4.y linux-3.4.y
    #
    cd linux-3.4.y
    # pick up configuration that will build
    wget http://odroid.us/odroid/odroidxu/patches/odroidxu_ubuntu_more_netfilter_stuff 
    cp odroidxu_ubuntu_more_netfilter_stuff  arch/arm/configs
    # Use the new config
    make odroidxu_ubuntu_more_netfilter_stuff 
    # make it
    make -j8
    # ...
    
    

    Add-ons

    This section is for items added on to the base image

    hwcomposer

    We need a daemon to take care of making video data in the framebuffer show up on the HDMI output. This is called exynos5-hwcomposer. I built it natively on the odroidxu and created a Debian package that others can use. (this package is only for odroidxu and only for armel -- soft floating point). The as-built tarball is in the same directory in case you want to rebuild from source.

    Get and install the package as root user on the odroidxu:

    wget http://odroid.us/odroid/odroidxu/debian/packages/exynos5-hwcomposer-3.4.75-1_armel.deb
    dpkg -i exynos5-hwcomposer-3.4.75-1_armel.deb
    <pre>
    
    === Steps ===
    You don't need to go through these steps if you are able to use the package mentioned above (exynos5-hwcomposer-3.4.75-1_armel.deb)
    I found mdjr's instructions on how to build hwcomposer on the forum: [http://forum.odroid.com/viewtopic.php?f=61&t=2207 http://forum.odroid.com/viewtopic.php?f=61&t=2207]
    
    This is what I did:
    <pre>
    # Get latest version
    git clone --depth 0 https://github.com/hardkernel/linux.git -b odroidxu-3.4.y odroidxu-3.4.y
    cd odroidxu-3.4.y/tools/hardkernel/exynos5-hwcomposer
    sh autogen.sh
    ./configure --prefix=/usr
    make -j5
    
    

    Edit /etc/rc.local so it starts exynos5-hwcomposer at boot, The sleep is necessary to give a chance for other startup processing to be done. I was finding that sometimes hwcomposer would not start -- or I would be nothing on the HDMI

    # ...
    # By default this script does nothing.
    
    sleep 5
    # Start hwcomposer to route framebuffer output to HDMI
    /usr/bin/exynos5-hwcomposer & 
    
    # Mount the boot partition 
    mount -o ro /dev/mmcblk0p1 /boot
    # ...
    
    

    Install a Window Manager

    You can use the tasksel application and select desktop, for example to get a complete Gnome system -- or you and install something else. I installed lxde like this:

    apt-get install xorg  xorg-server xf86-video-fbdev lxde
    
    

    Setup a X configuration

    You need an /etc/X11/xorg.conf file. Copy and paste the following into a terminal on the odroid. This copy/paste technique is called a "Here Document". It creates a file called /etc/X11/xorg.conf

    cat <<EOF >/etc/X11/xorg.conf
        Section "Device"
                identifier "FBDEV"
                Driver "fbdev"
                Option "fbdev" "/dev/fb0"
        EndSection
    
        Section "Screen"
                identifier "Default Screen"
                Device "FBDEV"
                DefaultDepth 24
        EndSection
    EOF
    
    

    Update boot.ini

    There are two sections to edit in your boot.ini /boot/boot.ini is on the boot partition. debian-jessie-armel-base-7.1-odroidxu uses the up-to-date boot scripts and can be kept up-to-date with the kernel-update.sh kernel updater script (in the root directory on this image)

    #------------------------------------------------------------------------------------------------------
    #
    # Frame buffer size.
    # Example.. If you are on LCD Kit set the values bellow to:
    # x = 1280 and y = 800
    # Otherwise please set this value below to your wanted resolution
    # Values:
    # LCD Kit: x = 1280   y = 800
    #  ---------------------------
    # HDMI:
    #    480: x = 720    y = 480
    #    576: x = 720    y = 576
    #    720: x = 1280   y = 720
    #   1080: x = 1920   y = 1080
    #
    #------------------------------------------------------------------------------------------------------
    setenv fb_x_res     "1920"
    setenv fb_y_res     "1080"
    
    
    #------------------------------------------------------------------------------------------------------
    #
    # Forces a fixed resolution on the HDMI controller. Please make sure that your screen supports and
    # It matchs the resolution above! setted the X and Y
    # valid values are: 480p60hz 720p60hz 720p50hz 1080p60hz 1080i60hz 1080i50hz 1080p50hz
    #		    1080p30hz 1080p25hz 1080p24hz
    #
    #------------------------------------------------------------------------------------------------------
    setenv hdmi_phy_res "1080p60hz"