How to install ArchLinux on AC100 with GPT

You need:

  • A computer with ArchLinux (64bit)
  • A mini-usb cable
  • A Toshiba AC100
  • An USB stick (at least 256MB)
  • About 4-5 hours of time

Download a kernel

Build a kernel

Create a working directory: mkdir ~/ac100

Get precompiled Crosstools from http://archlinuxarm.org/developers/distcc-cross-compiling, use the ARMv7i hardfloat version.

Unpack the tools in to ~/ac100, this will result in ~/ac100/x-tools7h

Add the binaries to your path: export PATH=$PATH:~/ac100/x-tools7h/arm-unknown-linux-gnueabi/bin

Checkout a working kernel sourcetree. I recommend current vanilla kernel (3.15.6), it should work out of the box.

Create a directory for (kernel) installation: mkdir ~/ac100/kernel_install

Building the kernel

$ cd ~/ac100/linux-3.15.6
$ make tegra_defconfig ARCH=arm
$ make menuconfig ARCH=arm

Be sure to have a look under “Boot Options” and enable:

  • Use appended device tree blot to zImage
  • Supplement the appended DTB with traditional ATAG information
  • Kernel command line type (Use bootloader kernel arguments if available)

Or use http://sprunge.us/RiBc as a base .config and do a

$ cd ~/ac100/linux-3.15.6
$ curl http://sprunge.us/RiBc > .config 
$ make oldconfig ARCH=arm

Build your kernel:

$ make -j8  zImage modules INSTALL_MOD_PATH=/home/user/ac100/kernel_install \
  INSTALL_MOD_STRIP=1 ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi-
... lots of output ... 
$ make modules_install INSTALL_MOD_PATH=/home/user/ac100/kernel_install \
  INSTALL_MOD_STRIP=1 ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi-
...
$ make dtbs INSTALL_MOD_PATH=/home/user/ac100/kernel_install \
  INSTALL_MOD_STRIP=1 ARCH=arm CROSS_COMPILE=arm-unknown-linux-gnueabi-
... 
$ mkdir -p ~/ac100/kernel_install/boot/
$ cat ~/ac100/marvin24s-kernel/arch/arm/boot/zImage \
      ~/ac100/marvin24s-kernel/arch/arm/boot/dts/tegra20-paz00.dtb >
      ~/ac100/kernel_install/boot/vmlinuz-for-next-thierry
$ cd ~/ac100/kernel_install/
$ mkdir usr ; mv lib usr # breaks arch otherwise
$ tar cf kern.tar boot usr 

Congratulations, you should have a working kernel.

Installing on your AC100

Copy kern.tar and ArchLinuxARM-trimslice-latest.tar.gz on a USB Stick

Get nvflash and SOS-Boot-r5

Backup your AC100.

Boot your AC100 in recovery mode (Ctrl+Esc+Power), attach the mini-USB cable to your Host PC.

Send sos-uboot-r5-alpha.bin to your AC100:

nvflash --bl sos-uboot-r5-alpha.bin --sync 

Insert your prepared USB stick into your AC100. On your AC100 do the following:

# ./switch-to-uboot
(you did backup your device, did you?)

# parted /dev/mmcblk0

(delete everything, create one big partition starting at 1576k, ending at 8000M)

# mkfs.ext4 /dev/mmcblk0p1
# mount /dev/sda1 /mnt 
# mount /dev/mmcblk0p1 /media 
# cd /media 
# gzip -dc /mnt/ArchLinuxARM-trimslice-latest.tar.gz | tar xp 
# tar xf /mnt/kern.tar 
# cd /media/boot
# vi boot.cmd

Fill boot.cmd with the following:

echo === AC100 Arch Linux ===
setenv bootargs 'root=/dev/mmcblk0p1 init=/usr/lib/systemd/systemd rw quiet cma=64M'
ext2load mmc 0:1 0x1000000 /boot/vmlinuz-for-next-thierry
bootz 0x1000000

Create a boot script for uboot:

# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "ubootscript" -d boot.cmd boot.scr

Unmount disks

# cd / ; umount /mnt ; umount /media

Remove your USB stick and reboot your AC100 with long press on the powerbutton.

You should have a (very) basic ArchLinuxArm system now. Log in with “root”/“root” and hack away.

For increased X11 performance build the opentegra driver according to http://ac100.wikispaces.com/opentegra, you need to install libpthread-stubs from AUR https://aur.archlinux.org/packages/libpthread-stubs and xorg-server-devel from pacman.

First, build the modified libdrm:

git clone git://people.freedesktop.org/~tagr/drm
cd drm
./autogen.sh --prefix=/usr --disable-intel --disable-nouveau --disable-radeon --disable-vmwgfx --enable-tegra-experimental-api
make
make install

Then, build the opentegra driver:

git clone git://people.freedesktop.org/~tagr/xf86-video-opentegra
cd xf86-video-opentegra
./autogen.sh --prefix=/usr
make
make install 
Log In