/cubietruck

Cubietruck SD Image build automation

Primary LanguageShell

ABOUT
=====

Script(s)/configs to generate a SD Card Image containing a custom OS
which would run a Cubietruck :). Check out "support status" section
for what's working and what isn'nt.

MOTIVATION:
===========

I am building a NAS using ARM based board (Cubietruck/Cubieboard3).
Therefore I needed a custom kernel and custom rootfs packaged into 
a custom SD Card image. These usually requires a lot of commands to
type in and is time consuming. I wanted to reduce this as much and
focus on tweaking/building an images to suit the objectives of my
projects. This project aims to reduce repetitions to the bare minimun 
and get a predictable build in the process :)
 
SUPPORT STATUS
=====================

Description                      |SD Card Image   |Details
:--------------------------------|:---------------|:--------------
NAND support                     | NA             |
SD card support                  | Working        |
RootFS                           | -              |
 Ubuntu Core 12.04 LTS           | Not working    |
 Linaro Nano                     | Working        |
 Debian Wheezy                   | Not working    |
2B RAM support                   | Working        |
Default User                     | -              |
-> administrator                 | Working        | Password: "admin"
-> linaro                        | Working        | Password: "linaro" . For Linaro based RootFS
SSH server                       | -              |
->OpenSSH server                 | Working        |
Custom packages support          | Working        | 
NTP                              | -              |
->ntpd                           | Working        |
Ethernet support                 | -              |
->DHCP IP                        | Working        | custom/rootfs/etc/network/interfaces
->Sunxi-GMAC driver support      | Working        |
-->Driver loaded at startup      | Working        | custom/rootfs/etc/modules
-->Static MAC address on boot    | Working        | custom/rootfs/etc/network/interfaces
->Sunxi-EMAC driver support      | NA             |
-->Driver loaded at startup      | Not loaded     | Sunxi-GMAC replaces Sunxi-EMAC driver
-->Static MAC address on boot    | NA             |
Wifi support                     | -              |
->AP6210 driver support	         | Working        | 
-->Driver loaded at startup      | Working        |
-->Static MAC address on boot    | Working        |
->DHCP IP                        | Not working    |
NIC Bonding                      | Not working    | custom/rootfs/etc/network/interfaces - Kernel configs: CONFIG_BONDING
HDD support                      | -              |
->SATA support                   | Working        |  
->RAID support                   | Not working    |  
->Disk spindown support          | Not working    |  
->Disk turnoff support           | Not working    |  
ZFS support                      | Not Planned    | ZFS is very unstable on 32bit hardware. 
                                 |                | Rationale: http://www.cubieforums.com/index.php/topic,1258.msg7779/topicseen.html#msg77793D MALI support
CedarX acclerated video	         | Not Planned    |
Bluetooth support                | Not Planned    |
MALI support                     | Not working    |
LEDS support                     | -              | 
->LEDS driver support            | Working        | Kernel config: CONFIG_LEDS_SUNXI=y
->Default setup via FEX file     | Working        | output/*.fex 
-->Enabled triggers              | Working        | Kernel confgs: CONFIG_LEDS_TRIGGERS=y, CONFIG_LEDS_TRIGGER_*=y
->Control via /sys/class/leds/*  | Working        |
->Disabled LEDS on boot          | Not Working    |
Hardware sensor support          | -              |
->CPUFreq                        | Working        | 
-->Default governor at startup   | interactive    | custom/rootfs/etc/default/cpufrequtils - See http://www.cubieforums.com/index.php/topic,1413.msg8743.html#msg8743
->HDDtemp                        | Working        | 
Boot                             | -              | 
->Resize rootfs partition        | Not working    | custom/rootfs/etc/init.d/cubian-*   - Courtesy: http://www.igorpecovnik.com/2013/12/24/cubietruck-debian-wheezy-sd-card-image
->Reconfigure OpenSSH            | Not working    | custom/rootfs/etc/init.d/cubian-*   - Courtesy: http://www.igorpecovnik.com/2013/12/24/cubietruck-debian-wheezy-sd-card-image

This project is NOT maintained anymore. Please use the following alternative:
- [igorpecovnik/Cubietruck-Debian](https://github.com/igorpecovnik/Cubietruck-Debian)

Caption
-------

NA           = Not Applicable
Working      = It has been tested and it does work
Not Working  = It has not been tested 
               OR it has been tested and it does not work
Not Planned  = Not plan to be supported

INSTALLATION:
=============

TLDR:

 bash build-sdcardimage.sh

For the other ones:

Setup pre-requisites:

 bash prerequisites.sh

Build image(s):
 
 SD Image:
 bash build-kernel-bootloader.sh

DOCUMENTATION
=============

Files are documented.

SOURCE
======

Main source repository: https://github.com/davidandreoletti/cubietruck


REQUIREMENTS
============

Succesfully tested on Ubuntu 12.04 LTS with Bash 4.2.25

CONTRIBUTORS:
=============

If you would like to contribute, feel free to do so. This is a Pull request
friendly project.

AUTHOR
======

David Andreoletti <http://davidandreoletti.com> - Original author

THANKS
======

REFERENCES
==========

Those are references I used to get to some of the objectives

http://cubieboard.org - Initial documentation for building a custom kernel/SD image/NAND image - Cubieboard makers :)
http://dl.cubieboard.org/public/users/soloforce/Construct_Your_Own_Debian_Linux_for_CubieBoard_zh-new.pdf - 
https://github.com/equinoxorg/eko_client/wiki/Creating-a-Redeployable-SD-Card-Image - How to partition a block device
https://github.com/codeshredder/cubieboard2 - Miccelleanous documentation about Cubieboard.
https://github.com/shmily/Cubieboard - Cubieboard Image build
http://eewiki.net/display/linuxonarm/BeagleBoard - Mics Kernel/SD Image creation 
http://www.denx.de/wiki/view/DULG/UBootVersions - u-boot official documentation
http://wiki.osdev.org/Loopback_Device#Hard_Disk_Images - Loop back devices in a nutshell
http://tinyapps.org/docs/mount_partitions_from_disk_images.html - Mount partitions from disk images
http://bill.station51.net/index.php?post/2010/01/30/HOWTO:-Booting-from-SD-card-using-U-Boot - Booting from SD Card with U-Boot
http://wiki.openmoko.org/wiki/U-Boot_commands - U-Boot command from the Openmoko project
http://www.cubieforums.com/index.php?topic=229.0 - Supported partition, partition size and offset
http://unix.stackexchange.com/questions/25258/ttyusb0-permission-changes-after-restart - Set permanent write permission on ttyUSB
https://github.com/mpepping/osx-pl2303 - Open Source OSX driver for Prolific PL2303 serial to USB adapters
http://www.prolific.com.tw - Proprietary driver for Prolific PL2303 serial to USB adapters
 - I used this one on OSX 

MAC address
-----------
http://www.denx.de/wiki/view/DULG/WhereCanIGetAValidMACAddress - Get Locally Administrated MAC address

Wifi
----
http://bernaerts.dyndns.org/linux/74-ubuntu/230-ubuntu-setup-wifi-commandline

http://www.cubieboard.cmabreu.com.br/
http://linux-sunxi.org/A20-Cubietruck
http://packages.ubuntu.com/lucid/ubuntu-minimal
http://www.solid-run.com/mw/index.php/Ubuntu_Core
http://wiki.dave.eu/index.php/Running_Ubuntu_Core
https://github.com/DavidBercovitz/ubuntu-core/blob/master/ubuntuCoreSetup.sh
https://help.ubuntu.com/community/Repositories/Ubuntu
http://www.omappedia.com/wiki/OMAP_Ubuntu_Core
https://launchpad.net/ubuntu/precise/armhf
http://forum.doozan.com/read.php?6,8491
http://old-releases.ubuntu.com/releases/ubuntu-core/releases/12.04.0/release/
http://snapshots.linaro.org/ubuntu/images/server/553
https://github.com/cubiebook/cubiebook

http://sigpipe.me/?p=10 - Cedar X 
http://www.memetic.org/raspbian-benchmarking-armel-vs-armhf/
http://hands.com/~lkcl/allwinner_linux_proposal.txt
https://github.com/hramrach/linux-sunxi
http://elinux.org/images/a/ad/Arm-soc-checklist.pdf
http://www.cnx-software.com/development-kits/linux-development-boards/
http://forum.doozan.com/read.php?6,10087

Rootfs customization
--------------------
http://omappedia.org/wiki/OMAP_Ubuntu_Core

AllWinner's linux kernel and current attempts to get their changes in mainline kernel 
--------------------------------------------------------------------------------------
http://linux-sunxi.org/Mainline_Kernel_Howto - AllWinner Community trying to get linux-sunxi work into the mainline kernel
http://lwn.net/Articles/554822/ - Merging Allwinner support
http://lists.debian.org/debian-arm/2013/06/msg00009.html - Thread about how to convince (among others topic related to Allwinner) Allwinner to merge their kernel work in mainline kernel 

NTP
---
http://derekmolloy.ie/automatically-setting-the-beaglebone-black-time-using-ntp/ - Set NTP
https://wiki.gentoo.org/wiki/Localization/HOWTO
http://ubuntuforums.org/showthread.php?t=862620 - test ntp

GPIO
----
https://groups.google.com/forum/#!topic/cubieboard/Oot7xZSKLpI - Fex config

APT
---
http://raphaelhertzog.com/2010/09/21/debian-conffile-configuration-file-managed-by-dpkg/ 

ALTERNATIVES
============

https://github.com/EddyBeaupre/armStrap - Well polished scripts yet not customizable enough for my needs (custom kernel repo to compile from for instance)