FANDOM


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.