Size: 17468
Comment: info in Wikipedia -> http://en.wikipedia.org/wiki/Cubieboard
|
Size: 19492
Comment: write "FAT" in capital letters
|
Deletions are marked like this. | Additions are marked like this. |
Line 5: | Line 5: |
Support for boards using the Allwinner "sunxi" (sun4i, sun5i, sun7i etc) family of processors, e.g. A10, A13, A20 etc. | Support for boards using the Allwinner "sunxi" (sun4i, sun5i, sun7i etc) family of processors, e.g. A10, A13, A20, etc. |
Line 27: | Line 27: |
||Olimex A10-OLinuXino-LIME||`sun4i-a10-olinuxino-lime.dtb`|| | ||Olimex A10-OLinuXino-LIME||`sun4i-a10-olinuxino-lime.dtb`|| needs non-mainline u-boot; manual installation: [[InstallingDebianOn/Allwinner/A10-OLinuXino-LIME]] || |
Line 36: | Line 36: |
== Installing to SATA == Support for installing to a SATA device from the network is currently available in the Debian Installer [[http://d-i.debian.org/daily-images/armhf/daily/|daily builds]]. Booting the installed system directly from a SATA disk requires a u-boot with AHCI support (see the corresponding [[#u-boot-ahci-support|uboot information]] below). |
== Storage options == From Jessie Beta 2 onwards, Debian-Installer allows installing to either a SATA disk or to an MMC/SD card. Installation to the on-board NAND flash available on some sunxi-based systems is '''not''' supported. Booting the installed system directly from a SATA disk requires a u-boot with AHCI support (see the corresponding [[#u-boot-ahci-support|uboot information]] below). == Installing over the network by TFTP == |
Line 92: | Line 96: |
=== Booting the Installed System === At the u-boot prompt run the following: |
== Booting the installed system == === Booting the Installed System from MMC/SD Card === If you are running a current mainline u-boot or a recent u-boot-sunxi (cf. the [[#U-boot versions for sunxi-based systems|u-boot overview]] below), have installed the system to an MMC/SD card and have used the guided partitioning option in the installer, autobooting the installed system works without requiring any user interaction. Some background information: By default, u-boot-sunxi expects the first partition on the MMC/SD card to be the boot partition and to contain either a FAT or an ext2 filesystem. The guided partitioning option in the installer takes care of this and sets up an ext2-formatted /boot partition as the first partition. If you have chosen a different layout, you have to manually set the u-boot environment variable ${partition} to the number of the partition containing /boot. Mainline u-boot does not impose restrictions on the filesystem type of the boot partition, as long as u-boot generally supports the particular filesystem (which by default includes ext2/ext3/ext4). Mainline u-boot also does not use the ${device}/${partition} scheme used by u-boot-sunxi, but instead automatically checks all available devices for a boot script. === Booting the Installed System from a SATA Disk on Mainline U-Boot === If booting from MMC fails and a SATA disk is available, mainline u-boot automatically tries to boot from it. If you want to manually boot from a SATA disk at the u-boot prompt, just enter the command "run scsi_boot". Notice: the mechanism to automatically boot from SATA disk had a bug in mainline u-boot v2014.10rc2, but a [[http://git.denx.de/?p=u-boot.git;a=commit;h=a03bdaa1408be4e8b6adfc8577a0ceac3ebc51e5|fix]] has already been applied to mainline u-boot git. === Booting the Installed System from a SATA Disk U-Boot-Sunxi === U-boot-sunxi does not have an autoboot mechanism for SATA disks. To manually boot from a SATA disk on u-boot-sunxi, run the following at the u-boot prompt: |
Line 115: | Line 139: |
=== Systems not supported Out-of-the-box === | == Systems not supported Out-of-the-box == |
Line 174: | Line 198: |
== Installing to MMC == Support for the sunxi MMC controller will be in upstream Linux v3.16, however it has been backported to the v3.15 Debian kernel. However at the time of writing Debian Installer is using v3.14 and hence cannot install to MMC on this platform. ''TBD'': Describe installation to MMC once D-I switches to v3.15. |
|
Line 244: | Line 263: |
The new default environment is not fully compatible with bootscripts written for u-boot-sunxi and requires some adjustments in the bootscripts used by Debian. | The new default environment is not fully compatible with some older bootscripts written for u-boot-sunxi, but flash-kernel >= 3.24 creates bootscripts that work with both the old and the new default environment. If you are using a flash-kernel version older than 3.24 and intend to change from u-boot-sunxi to mainline u-boot, you should update flash-kernel first. |
.
Contents
Introduction
Support for boards using the Allwinner "sunxi" (sun4i, sun5i, sun7i etc) family of processors, e.g. A10, A13, A20, etc.
Install Using Debian-Installer
Supported Platforms
Debian-installer should work out of the box on all the following sunxi-based systems, but as the developers do not have access to all of them, the installer has only been tested on particular systems. If you have used the installer on one of the untested systems, please submit an installation-report to the Debian project (cf. the Submitting Installation Reports chapter in the Debian installation-guide).
Systems tested and confirmed working
System |
Device Tree Blob |
Cubietech Cubieboard2 |
sun7i-a20-cubieboard2.dtb |
Cubietech Cubietruck (Cubieboard3) |
sun7i-a20-cubietruck.dtb |
Systems for which the installer has support code, but on which installation has not been tested yet
System |
Device Tree Blob |
|
Cubietech Cubieboard |
sun4i-a10-cubieboard.dtb |
|
INet-97F Rev 02 |
sun4i-a10-inet97fv2.dtb |
|
LinkSprite pcDuino |
sun4i-a10-pcduino.dtb |
|
Mele A1000 |
sun4i-a10-a1000.dtb |
|
Miniand Hackberry |
sun4i-a10-hackberry.dtb |
|
Olimex A10-OLinuXino-LIME |
sun4i-a10-olinuxino-lime.dtb |
needs non-mainline u-boot; manual installation: ?InstallingDebianOn/Allwinner/A10-OLinuXino-LIME |
Olimex A10s-Olinuxino Micro |
sun5i-a10s-olinuxino-micro.dtb |
|
Olimex A13-Olinuxino |
sun5i-a13-olinuxino.dtb |
|
Olimex A13-Olinuxino Micro |
sun5i-a13-olinuxino-micro.dtb |
|
Olimex A20-Olinuxino Micro |
sun7i-a20-olinuxino-micro.dtb |
|
PineRiver Mini X-Plus |
sun4i-a10-mini-xplus.dtb |
The installer can also be used on other sunxi-based systems as long as device-tree support for them is available, but on those systems manual intervention during the installation is required (see below).
Storage options
From Jessie Beta 2 onwards, Debian-Installer allows installing to either a SATA disk or to an MMC/SD card. Installation to the on-board NAND flash available on some sunxi-based systems is not supported.
Booting the installed system directly from a SATA disk requires a u-boot with AHCI support (see the corresponding uboot information below).
Installing over the network by TFTP
NOTE: These instructions assume the use of a TFTP server, which should already be installed. However the installer images can also be loaded via other means, e.g. from MMC.
Prepare the TFTP Server
Download the kernel vmlinuz, installer initrd.gz and the appropriate Flattended Device Tree (FDT) Blob (or DTB) for the board and copy them to a path on your TFTP server. e.g.
# mkdir -p /srv/tftp/didaily/armhf/daily/{netboot,device-tree} # cd /srv/tftp/didaily/armhf/daily/ # wget -P netboot http://d-i.debian.org/daily-images/armhf/daily/netboot/vmlinuz http://d-i.debian.org/daily-images/armhf/daily/netboot/initrd.gz # wget -P device-tree http://d-i.debian.org/daily-images/armhf/daily/device-tree/sun7i-a20-cubietruck.dtb
Create a script to boot the installer. e.g. /srv/tftp/didaily/cubietruck:
#setenv diargs <EXTRA ARGUMENTS> setenv fdt_addr 0x43000000 setenv ramdisk_addr_r 0x48000000 setenv kernel_addr_r 0x47000000 setenv dibase /didaily/armhf/daily tftp ${kernel_addr_r} ${dibase}/netboot/vmlinuz setenv bootargs "console=ttyS0,115200 -- ${diargs}" tftp ${fdt_addr} ${dibase}/device-tree/sun7i-a20-cubietruck.dtb fdt addr ${fdt_addr} 0x40000 tftp ${ramdisk_addr_r} ${dibase}/netboot/initrd.gz bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr}
then to make a script which u-boot can run:
# mkimage -T script -A arm -d /srv/tftp/didaily/cubietruck /srv/tftp/didaily/cubietruck.scr
Running the Installer
At the u-boot prompt, boot the images which were just downloaded via the script:
uboot> setenv autoload no uboot> dhcp uboot> tftp ${scriptaddr} /didaily/cubietruck.scr uboot> source ${scriptaddr}
Install in the usual way. Use setenv diargs foo=bar to pass arguments to the installer (e.g. for preseeding)
Booting the installed system
Booting the Installed System from MMC/SD Card
If you are running a current mainline u-boot or a recent u-boot-sunxi (cf. the u-boot overview below), have installed the system to an MMC/SD card and have used the guided partitioning option in the installer, autobooting the installed system works without requiring any user interaction.
Some background information:
By default, u-boot-sunxi expects the first partition on the MMC/SD card to be the boot partition and to contain either a FAT or an ext2 filesystem. The guided partitioning option in the installer takes care of this and sets up an ext2-formatted /boot partition as the first partition. If you have chosen a different layout, you have to manually set the u-boot environment variable ${partition} to the number of the partition containing /boot.
Mainline u-boot does not impose restrictions on the filesystem type of the boot partition, as long as u-boot generally supports the particular filesystem (which by default includes ext2/ext3/ext4). Mainline u-boot also does not use the ${device}/${partition} scheme used by u-boot-sunxi, but instead automatically checks all available devices for a boot script.
Booting the Installed System from a SATA Disk on Mainline U-Boot
If booting from MMC fails and a SATA disk is available, mainline u-boot automatically tries to boot from it. If you want to manually boot from a SATA disk at the u-boot prompt, just enter the command "run scsi_boot".
Notice: the mechanism to automatically boot from SATA disk had a bug in mainline u-boot v2014.10rc2, but a fix has already been applied to mainline u-boot git.
Booting the Installed System from a SATA Disk U-Boot-Sunxi
U-boot-sunxi does not have an autoboot mechanism for SATA disks. To manually boot from a SATA disk on u-boot-sunxi, run the following at the u-boot prompt:
uboot> scsi scan uboot> setenv device scsi uboot> setenv partition 0 uboot> load ${device} ${partition} ${scriptaddr} boot.scr uboot> setenv bootargs console=ttyS0,115200n8 root=/dev/sda2 rootwait uboot> source ${scriptaddr}
This can be made the default with:
uboot> setenv device scsi uboot> setenv partition 0 uboot> setenv bootargs console=ttyS0,115200n8 root=/dev/sda2 rootwait uboot> setenv boot_debian scsi scan\;load \${device} \${partition} \${scriptaddr} boot.scr\;source \${scriptaddr} uboot> setenv bootcmd run boot_debian uboot> saveenv uboot> boot
Systems not supported Out-of-the-box
This is a bit more fiddly.
First find a suitable device tree blob (DTB) for your board. You might find one in the daily builds, or upstream. Otherwise you might need to write one yourself (or find someone who is willing to do it for you).
Once you have a suitable DTB you can populate the TFTP server with the vmlinuz, initrd.gz and the DTB and create a suitable installer boot script by modifying the one above.
Boot the installer and preceed as usual. Towards the end you will encounter:
┌─────────────────┤ [!] Continue without boot loader ├──────────────────┐ │ │ │ No boot loader installed │ │ No boot loader has been installed, either because you chose not to or │ │ because your specific architecture doesn't support a boot loader yet. │ │ │ │ You will need to boot manually with the /vmlinuz kernel on partition │ │ /dev/sda1 and root=/dev/sda2 passed as a kernel argument. │ │ │ │ <Continue> │ │ │ └───────────────────────────────────────────────────────────────────────┘
This is expected. Make a note of the partitions and continue. Once the installer has completed the you need to boot the resulting system but using the DTB from TFTP in order to fix things up:
uboot> setenv fdt_addr 0x43000000 uboot> setenv ramdisk_addr_r 0x48000000 uboot> setenv kernel_addr_r 0x47000000 uboot> setenv dibase /didaily/armhf/daily uboot> setenv autoload no;dhcp uboot> tftp ${fdt_addr} ${dibase}/device-tree/sun7i-a20-cubieboard2.dtb uboot> fdt addr ${fdt_addr} 0x40000 uboot> scsi scan uboot> load scsi 0 ${kernel_addr_r} /vmlinuz uboot> load scsi 0 ${ramdisk_addr_r} /initrd.img uboot> setenv bootargs console=ttyS0,115200n8 root=/dev/sda2 rootwait uboot> bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr}
This should now boot you to a login prompt.
Login and install flash-kernel and the u-boot-tools:
# apt-get install flash-kernel u-boot-tools
Now you need to create a flash-kernel database entry. Start by copying the entries for Cubietech Cubietruck from /usr/share/flash-kernel/db/all.db to /etc/flash-kernel/db. Now you need to modify the Machine and DTB-Id fields.
For the Machine use the output of:
# cat /proc/device-tree/model ; echo
For DTB-Id if you used a DTB from the daily builds then use that name for DTB-Id. If you got the DTB from somewhere else then install it as /boot/dtb-$(uname -r) and omit the DTB-Id field. In this case you will need to take care around kernel upgrades.
Now run flash-kernel and reboot. At this point you should be able to boot using the process from Booting the Installed System above. If this fails the boot again using the manual method described above and try again e.g. fix your /etc/flash-kernel/db.
Once you have it working run reportbug flash-kernel and report a wishlist bug to support your platform. Be sure to include the contents of /etc/flash-kernel/db and say where the DTB came from.
Mainline kernel and linux-sunxi.org 3.4 kernel
There are two different Linux kernel series for sunxi-based systems:
- mainline kernel
- linux-sunxi.org kernel
Development for sunxi-based systems had originally begun based on an Allwinner android kernel. The linux-sunxi.org 3.4 kernel series is based on this android kernel and is maintained by a group of volunteers at linux-sunxi.org.
The mainline kernel is the "official" Linux kernel series released by Linus Torvalds. Beginning with kernel 3.8, several developers have been working on integrating sunxi support into the mainline kernel. An overview of the progress can be found in the linux-sunxi.org wiki.
Debian uses the same kernel on all supported architectures and therefore supports only the mainline kernel. The disadvantage of the mainline kernel compared to the linux-sunxi.org kernel is that not all sunxi-specific drivers have yet been ported. The mainline kernel contains support for serial console, USB, SATA, Ethernet and MMC/SD, but it has no display and audio drivers for sunxi hardware, i.e. while running a headless server usually works without problems with the mainline kernel, it currently cannot be used for media center applications and the like and as there is no local display support, its use on tablets and other mobile devices is very limited.
While the installer always uses the mainline kernel, it is possible to manually install a linux-sunxi.org kernel on a Debian system later on, but in that case you are on your own with regard to kernel updates and bootloader setup. Several of the automatic mechanisms in Debian to smoothly handle kernel updates and bootloader configuration will not work properly with the linux-sunxi.org 3.4 series.
U-boot versions for sunxi-based systems
Overview
There are several u-boot versions for sunxi-based systems:
- the original Allwinner u-boot
- u-boot-sunxi
- mainline u-boot
You can mostly ignore the original Allwinner u-boot for Debian purposes. Compared to u-boot-sunxi it is rather old and relies on proprietary bootloader components ("boot0"/"boot1") to perform basic hardware initialization. About the only use case for it is booting from the NAND flash available on some sunxi-based boards in conjunction with using an android or android-derived kernel version that contains the original Allwinner NAND flash driver for Android.
U-boot-sunxi is derived from the original Allwinner u-boot and is maintained by a group of volunteers at linux-sunxi.org. It contains an SPL component that takes care of the basic hardware initialization and therefore does not need the proprietary boot0/boot1 loaders from Allwinner. It can boot locally from MMC/SD card and over the network by TFTP, but it cannot access the NAND flash. The current version (as of 08/2014) has been updated to the featureset of mainline u-boot v2014.04; it does not have PSCI-, AHCI- and EHCI-support.
Mainline u-boot is the official upstream u-boot version. Work is currently in progress to integrate the sunxi-specific parts of u-boot-sunxi into mainline u-boot. When this process is completed, u-boot-sunxi can be replaced by mainline u-boot. As of u-boot release v2014.07, sunxi support in mainline u-boot is limited to the A20 SoC and the Cubietech Cubietruck board, but support for additional ?SoCs and boards is available in the current development tree and will probably be part of the next mainline u-boot release (v2014.10). An overview of the current status is available in the linux-sunxi.org wiki. Mainline u-boot has so-called "custodian trees" for each supported platform, in which platform-specific changes get integrated first before being merged into the central u-boot git repository for the next release. The sunxi custodian tree is available at http://git.denx.de/u-boot-sunxi.git/ and contains the most current sunxi platform support patches for mainline u-boot, including PSCI-, AHCI- and EHCI-support for various systems.
During the v2014.10 development cycle for mainline u-boot, some rather invasive changes have been introduced. This includes restructuring the build system and introducing a new default environment and a new generic bootcmd handling. The new default environment is not fully compatible with some older bootscripts written for u-boot-sunxi, but flash-kernel >= 3.24 creates bootscripts that work with both the old and the new default environment. If you are using a flash-kernel version older than 3.24 and intend to change from u-boot-sunxi to mainline u-boot, you should update flash-kernel first.
Creating a bootable SD-Card with u-boot
Information about how to install a u-boot image for sunxi-based systems onto an MMC/SD-card can be found at the linux-sunxi.org wiki.
SMP/PSCI support
For SMP support on Allwinner SOCs, i.e. for using more than one CPU core, the mainline Linux kernel requires support for PSCI (Power State Coordination Interface) in u-boot, which is not available in the u-boot-sunxi tree at https://github.com/linux-sunxi/u-boot-sunxi. If you need support for multiple cores (e.g. if you have a system based on the A20 SoC), you have two options:
You can use the "sunxi-next" branch of Hans de Goede's u-boot-sunxi git repository at https://github.com/jwrdegoede/u-boot-sunxi, which is based on a snapshot of u-boot-sunxi from https://github.com/linux-sunxi/u-boot-sunxi, but has patches for PSCI support applied.
If your system is supported by mainline u-boot, you can use the sunxi custodian tree at http://git.denx.de/u-boot-sunxi.git/.
AHCI support
AHCI support allows u-boot to boot the kernel, initrd and dtb from a SATA harddisk. U-boot itself has still to be installed on an SD card, but the rest of the system can be put onto a (much faster) harddisk. This feature is (as of 08/2014) available in mainline u-boot for Cubietech Cubieboard 1+2 and Cubietruck.
For the Cubieboard2 and the Cubietruck you can alternatively also use the "sunxi-mainlining-with-smp-and-ahci-wip" branch of Ian Campbell's git repository at git://gitorious.org/ijc/u-boot.git. It is based on an older u-boot-sunxi snapshot and combines PSCI and AHCI support for these two systems.
EHCI support
EHCI support allows u-boot to boot the kernel, initrd and dtb from a USB mass storage device such as a USB memory stick or a USB harddisk. U-boot itself has still to be installed on an SD card, but the rest of the system can be put onto a USB device. This feature is available in mainline u-boot for certain devices, among them: Cubietech Cubietruck, Cubietech Cubieboard 1+2 and Olimex A13-OLinuXino Micro.
Install Using SD Card Images
See Linux sunxi projects Bootable OS Images page.
NOTE: Obviously YMMV with these images.
Board Specific Information
Cubietech Cubietruck
Wifi requires non-free firmware firmware-brcm80211 at least version 0.42 plus an additional firmware file which is not yet packaged but can be installed with:
wget -O /lib/firmware/brcm/brcmfmac43362-sdio.txt http://dl.cubieboard.org/public/Cubieboard/benn/firmware/ap6210/nvram_ap6210.txt
Message such as brcmfmac: brcmf_fil_cmd_data: Failed err=-23 are expected and do not represent a actual problem.