I was able to boot the stock APC kernel and U-Boot with the redsleeve rootfs on an SD card. To do so you need to:
- Create a partition on the SD card in some linux readable format (I used ext3)
- Extract the redsleeve rootfs on the card (striping the first layer of the contents of the tar ball)
- Extract the kernel_modules_WM8710.120130.1629.tgz (found in the binary apc firmware download) over the rootfs
- Modify /etc/fstab to make /dev/mmcblk0p1 your root partition and
comment out the /dev/sda1 /boot partition. Also, change the root partition type to be whatever you made it in step one.
- Add /etc/init/ttyS0.conf with the following contents:
# start on stopped rc RUNLEVEL=[2345] stop on starting runlevel [016] respawn pre-start exec /sbin/securetty ttyS0 exec /sbin/agetty -L /dev/ttyS0 115200 vt102
- Finally move the SD card to your APC and boot the standard kernel with the following options:
nandrw r ${kernel-NAND_ofs} 0x1000000 ${kernel-NAND_len} setenv bootargs mem=512M root=/dev/mmcblk0p1 init=/sbin/init noinitrd ro console=ttyS0,115200n8 bootm 0x1000000
This will boot you to a login prompt where you can setup networking and install openssh-server with will allow you to ssh in. So what do we have?
[root@localhost proc]# lspci 02.00:01.0 IDE interface: VIA Technologies, Inc. Device 1359 03.00:02.0 Ethernet controller: VIA Technologies, Inc. VT6120/VT6121/VT6122 Gigabit Ethernet Adapter (rev 84) 04.00:04.0 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 90) 05.00:05.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90) 06.00:06.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 90) [root@localhost proc]# cat /proc/cpuinfo Processor : ARMv6-compatible processor rev 7 (v6l) BogoMIPS : 532.24 Features : swp half thumb fastmult vfp edsp java CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 15.CPU part : 0xb76 CPU revision : 7 Hardware : WMT Revision : 0000 Serial : 0000000000000000 [root@localhost proc]# free -m total used free shared buffers cached Mem: 449 441 8 0 23 266 -/+ buffers/cache: 151 297 Swap: 0 0 0 [root@BTLocal ~]# cat /proc/mtd dev: size erasesize name mtd0: 00d00000 00010000 "filesystem-SF" mtd1: 00280000 00010000 "kernel-SF" mtd2: 00050000 00010000 "u-boot-SF" mtd3: 00010000 00010000 "u-boot env. cfg. 1-SF" mtd4: 00010000 00010000 "u-boot env. cfg. 2-SF" mtd5: 00010000 00010000 "w-load-SF" mtd6: 00100000 00100000 "w-load-NAND" mtd7: 00900000 00100000 "u-boot env. cfg. 1-NAND" mtd8: 00900000 00100000 "u-boot-NAND" mtd9: 00800000 00100000 "kernel-NAND" mtd10: 00600000 00100000 "initrd-NAND" mtd11: 10000000 00100000 "filesystem-NAND" mtd12: 00200000 00100000 "u-boot-logo" mtd13: 00400000 00100000 "kernel-logo" mtd14: 40000000 00100000 "android-data" mtd15: 08000000 00100000 "android-cache" mtd16: 25900000 00100000 "LocalDisk"
[root@localhost etc]# uname -a Linux localhost 2.6.32.9-default #14 Wed Mar 14 17:32:30 CST 2012 armv6l armv6l armv6l GNU/Linux
If you’d like the board to always boot redsleeve you’ll need to modify the u-boot environment:
setenv bootargs mem=512M root=/dev/mmcblk0p1 init=/sbin/init noinitrd ro console=ttyS0,115200n8 setenv redsleeve "nandrw r ${kernel-NAND_ofs} 0x1000000 ${kernel-NAND_len}; bootm 0x1000000" setenv bootcmd "run redsleeve" saveenv
This will change the env settings and write them to flash, so make sure you have a backup of your default environment if you’d like to set it back at some point. You can see the full output from the boot process here.