CyanogenMod 11 (KitKat) / Archlinux multiboot on Toshiba AC100
Switching to U-Boot and Installing CyanogenMod
I installed CM-11 following https://code.google.com/p/cm-paz00/wiki/InstallGuide?tm=6 Completing the process, you'll have also u-boot installed on your AC100 SOS partition (/dev/mmcblk0p1) !
Adding a new item to u-boot menu
Reboot your ac100 using SOS-BOOT: connect your ac100 to a PC via mini-USB cable, Press and hold CTRL+ESC+POWER keys at the same time on the ac100 and, from the pc:
nvflash --bl sos-uboot-r5-2013-09-23.bin --go
ac100 will restart with sos kernel & minimal system. now you can access & mount ac100 partitions:
mkdir /sos mount /dev/mmcblk0p1 /sos
As you can see i used an sd to copy filesystem,kernel,modules,dtmb from. My ac100 is 16GB model, and i used mmcblk0p7 to install Archlinux.
Ok, u-boot uses a “compiled” text file to show its menu: in /sos/boot you'll find boot.scr (CM-11 gift :)) ; let's copy it in boot.cmd and modify:
cd /sos/boot cp boot.scr boot.cmd vi boot.cmd
now you'll have to delete (press 'x' some times… ) the “binary garbage” header, an add (press 'i' to switch vi in edit mode) a new line; something like:
setenv bootmenu_0 "Boot LNX ARCH =setenv bootargs 'root=/dev/mmcblk0p7 rootfstype=ext4 rootwait'; ext2load mmc 0:2 0x1000000 /boot/zImage; ext2load mmc 0:2 0x2000000 /boot/tegra20-paz00.dtb; bootz 0x1000000 - 0x2000000;"
as you can see, i put my kernel image and dtb in LNX partition (mmc 0:2); if you want to use SOS partition (if you followed CM-11 installation instructions they are both sized 64MB) replace with mmc 0:1
I wasted a lot of time figuring out how to instruct u-boot to load a kernel missing an initrd; finally i realized bootz needs two (kernel initrd) or three (kernel initrd dtb) arguments: if you have not an initrd, you must use a '-' as 2nd argument!
compile boot.scr
You must now compile boot.cmd to obtain an updated boot.scr:
mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "ubootscript" -d boot.cmd boot.scr
Copying your kernel into ac100
As already stated, i used LNX partition for my kernel:
mkdir /lnx mount /dev/mmcblk0p2 /lnx mkdir /sd # to copy kernel from mount /dev/mmcblk1p1 /sd
cp /sd/zImage /lnx/boot/ cp /sd/tegra20-paz00.dtb /lnx/boot/
Installing archlinux filesystem
Of course you'll need to format (already done during CM-11 installation) & mount your target partition
mkdir /arch mount /dev/mmcblk0p7 /arch
and untar rootfs on it:
cd /arch/ tar xvf /sd/ArchLinuxARM-trimslice-latest.tar .
Copying (wifi) modules to root filesystem
bzcat /sd/modules.tar | tar xvf .
Umounting partitions and rebooting
Everything should now be in it's right place… cd /
umount *
cross your fingers, power off and after power on your ac100!
Configure ArchLinux
After a reboot, you can finally configure your archlinux installation. Follow arch_base_configuration for instructions.
Compiling your own kernel
But where can you find an up-to-date kernel for your linux? Compile yourself your own! See kerneldev for instructions.