====== 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 ===== You can download a prebuilt one here: [[http://kilbeggan.fourecks.de/~falk/linux-3.15.6_archlinux_ac100.tar.gz]] ===== 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 [[http://archlinuxarm.org/os/ArchLinuxARM-trimslice-latest.tar.gz|ArchLinuxARM-trimslice-latest.tar.gz]] on a USB Stick Get [[nvflash]] and [[https://dl.dropboxusercontent.com/u/40761340/sos-uboot-r5-alpha.bin|SOS-Boot-r5]] [[backupandrestore|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