ArchLinux arm installation on toshiba ac100

UPDATE: U-BOOT CM11 and ArchLinux multiboot

I used ArchLinuxARM TrimSlice base filesystem,
chromeos-ac100-3.0-exp kernel branch by marvin24
and abootimg by phhusson.

UPDATE: the kernel links above are now dead, after wasting a lot of time to find and install a prebuild up-to-date kernel, i finally compiled it by myself, using mainline git kernel; see U-BOOT CM11 and ArchLinux multiboot for detailed instructions

On my system there were ubuntu on emmc; so installed arch on SD.

You can also use SOSBoot Image to install archlinux on clean ac100.
With sosboot, you should put three files linked below to usb stick or sdcard cause SOSBoot doesn't provide any wireless connectivity.

Getting files

cd ~/Downloads
wget http://archlinuxarm.org/os/ArchLinuxARM-trimslice-latest.tar.gz \
    http://flie.dyndns.org:7080/archlinux/armv7h/{abootimg-git-20121116-1,linux-ac100-chromeos-exp-3.0.27-2}-armv7h.pkg.tar.xz

Untarring fs on SD

#mmcblk1 is the SD. Use mmcblk0p7 to install on MMC
#use a ext3 or ext4 formatted SD 
sudo mount /dev/mmcblk1p1 /mnt
cd /mnt
sudo tar xvf ~/Downloads/ArchLinuxARM-trimslice-latest.tar.gz
sudo cp ~/Downloads/{linux-ac100-chromeos-exp-3.0.27-2,abootimg-git-20121116-1}-armv7h.pkg.tar.xz root

Installing kernel into the trimslice fs

sudo -i
cd /mnt
mount -t proc none proc
mount -o bind /dev dev
mount -o bind /sys sys

chroot ./ /bin/bash
pacman -R linux-trimslice linux-headers-trimslice nvidia-trimslice # Remove unneeded trimslice stuff
rm /etc/netcfg.d/ethernet-eth0 # no eth in ac100
pacman -U /root/linux-ac100-chromeos-exp-3.0.27-2.tar.xz /root/abootimg-git-20121116-1-armv7h.pkg.tar.xz

abootimg --create /boot/bootimg-linux-ac100-chromeos-exp.img \
               -k /boot/vmlinuz-linux-ac100-chromeos-exp \
               -r /boot/intrafms-linux-ac100-chromeos-exp.img \
               -f /boot/bootimg-linux-ac100-chromeos-exp.cfg

Now you should find out which partition is you bootpart run

for f in /dev/mmcblk0*; do abootimg -i $f 2>&1 | fgrep -q "cmdline = " && echo $f; done

For me output was like /dev/mmcblk0p2
So, lets write kernel and initramfs here:

dd if=/boot/bootimg-linux-ac100-chromeos-exp.img of=/dev/mmcblk0p2
exit
cd /
umount -l /mnt/{proc,dev,sys}
umount /mnt

Rebooting the ac100

reboot #everything's gonna be alright :)

access the system as usr=root, pwd=root.

Arch base configuration

be careful: you have a base survive vi installation.. don't use arrows :) or use nano instead.

See Beginners' Guide. Chroot and configure the base system

Connect to the internet

WIFI

UPDATE: unfortunately latest ArchLinuxARM-trimslice-latest.tar.gz image lacks some useful packages, needed to bring up wifi; so i downloaded (from 'core' section of http://it.mirror.archlinuxarm.org/armv7h/) and installed it manually :

pacman -U dialog-1_1.2_20140219-1-armv7h.pkg.tar.tar libnl-3.2.24-1.1-armv7h.pkg.tar.tar rfkill-0.5-1-armv7h.pkg.tar.tar wpa_supplicant-2.1-3.1-armv7h.pkg.tar.tar

now you can proceed configuring wifi connection, you can use wifi-menu or directly wpa_supplicant

tweak /etc/wpa_supplicant.conf to connect to your wifi:

wpa_supplicant.conf
#open network
network={
      ssid="dlink"
      key_mgmt=NONE
}
#WEP protected network
network={
      ssid="VodafoneMobileHotspot_ 805F"
      key_mgmt=NONE
      wep_key0="MUDGCFJ7GSJVF"
}
#WPA protected network
network={
      ssid="AP_NAME1"
      psk="passwd!1"
      priority=5
}

bring wifi on:

modprobe rt2800usb
rfkill unblock wifi
wpa_supplicant -B -Dwext -iwlan0 -c/etc/wpa_supplicant.conf
dhcpcd wlan0

GSM Modem

pppd and chat stuff for 3G modem connection

nano /etc/ppp/peers/mts

Just an example for my GSM operator. Put this to file:

mts
/dev/ttyACM0
noipdefault
defaultroute
persist
noauth
nodetach
usepeerdns
user "mts" # may need to be changed for you operator settings
password "mts" # this one too
connect "/usr/sbin/chat -vf /etc/ppp/chatscripts/mts.chat"

contents of /etc/ppp/chatscripts/mts.chat (APN goes here):

mts.chat
TIMEOUT 3
ABORT BUSY
ABORT 'NO CARRIER'
ABORT VOICE
ABORT 'NO DIALTONE'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT DELAYED
"" ATZ
OK ATX3Q0V1E1S0=0&C1&D2
OK-AT-OK AT+CFUN=1
OK-AT-OK AT+CGDCONT=1,"IP","internet.mts.ru"
OK ATDT*99#
CONNECT ""

Now you can trying to get connection

pppd call mts

Update the system

pacman -Syu

Install base packages

pacman -S xorg-server xterm xf86-video-fbdev lxterminal lxrandr ttf-dejavu
pacman -S xf86-input-synaptics #needed for a usable touchpad
pacman -S openbox tint2 geany modemmanager vim sudo evince gpicview pcmanfm polkit \
  lxtask htop laptop-mode-tools laptop-detect powertop lightdm lightdm-gtk-greeter
# You can use wifi-menu or wicd instead of network-manager
pacman -S networkmanager network-manager-applet gnome-keyring dunst

Create a user

username=myusername # change this
useradd -m -g users $username
usermod -aG bin,daemon,adm,tty,disk,kmem,wheel,ftp,rfkill,http,network,video,audio,storage,scanner,power,dbus $username
passwd $username

Run X

systemctl start lightdm

If all goes well, you may add lightdm to autostart

systemctl enable lightdm

Useful things

ZramSwap and events handling

pacman -S yaourt
yaourt -S zramswap input-event-daemon

See also: Autoswitch speakers and backlight

Touchpad Synaptics

OpenGLES2 and hardware video decoding

Preamble

Attention: This section targeted at developers, not at users.
If you have problems with this stuff, just remove nvidia-tegra package.

As for now, you should downgrade you xorg-server package cause of use-pixman-glyph-cache.patch bug 32612
in newer (1.13.0-4 and 1.13.0.901-1) package versions to avoid font rendering problems.
Latest known working version 1.13.0-3 available in fly-ac100 repo (see below)

Also, good gles2 experience could be achieved only with 3.1.10-l4t-r2 kernel, that does not support suspend/resume functionality on ac100 (as for me at least).

Lets start

You may add repo fly-ac100 into you /etc/pacman.conf to get some prebuilded kernels, drivers and utils for ac100.
Source pkgbuilds: https://github.com/fly-away/PKGBUILDs and AUR

[fly-ac100]
Server = http://flie.dyndns.org:7080/archlinux/armv7h/

Install sortware from new repo:

pacman -Sy fly-ac100/xorg-server nvidia-tegra totem-gst libegl libgles libva mesa-demos-git gnome-media linux-ac100-l4t-r16.2

Update contents of you boot partition with dd to use new kernel, as pacman output says.

Also add to your /etc/pacman.conf:

IgnorePkg   = xorg-server

to mask xorg-server package for updates.
Ok, time to boot into new kernel

reboot #all gonna be ok

Also see Hardware accelerated video#gstreamer_tuninig for further instrustions

Want to go further with archlinux

Problems and todo

  • Artefacts and in X when using GLES.
  • Some programs crashes from time to time
Log In