Arch Linux

From JogglerWiki

Jump to: navigation, search

NOTE: It's not perfect, but you should be able to get started with this!

By following this tutorial you should end up with fully functional Arch Linux OS on your O2 Joggler powered by Gnome technologies.

This tutorial is heavily based on information found in other tutorials written in Joggler Wiki and assumes that you have actually installed Arch Linux before at least once.

You will need a USB stick at least 4GB in size. Don't forget to make backups before you begin!

Contents

Installing Arch Linux base system into the USB stick

Perhaps the easiest way to accomplish this is to start up a virtual machine.

Using Virtual Box (non-OSE version) is preferred. Just get Arch Linux [install iso], plug your USB stick into the computer, set Virtual Box to let the virtual machines to see the USB device, create new virtual system and start up the installation.

Do NOT install the boot loader, we are using our own instead. Also the kernel26 kernel is useless, it does not support booting from EFI, so we are using our own kernel package.

While you are at it create a ms-dos partition table on the USB stick with two partitions: 32MB fat16 partition in the beginning of disk and make rest an ext3 partition.

Set the mount point for root(/) file system to be your ext3 partition.

After finishing the base installation shutdown the virtual machine, we are not using it anymore (unless you really want to), and replug your USB-stick.

If you haven't already, you can create the FAT16 file system on the first partition with following command (make sure you are writing to the right device and partition!):

mkdosfs -n efiboot /dev/sdX1

Setting up the EFI boot loader

After creating the file system, mount the partition to location of your choice and unpack the following archive into it: http://www.ihku.biz/joggler/efi_fat16.tar.gz . The archive contains EFI boot loader set to load kernel and initrd image from the USB sticks second partition (our Arch Linux system root).

Installing more software and setting up the system

Chancing the Arch root file system label

Before anything else lets make mounting the root file system a little easier and change/set its label to "archroot" (once again, check the device and change it accordingly):

e2label /dev/sdX2 archroot

Mounting USB sticks second partition and chrooting into it

Now lets mount our root partition, bind some essential file systems and chroot into it:

mkdir -p /mnt/archroot
mount /dev/sdX2 /mnt/archroot
cd /mnt/archroot
cp /etc/resolv.conf etc/
mount -o bind /proc proc/
mount -o bind /dev dev/
mount -o bind /dev/pts dev/pts
mount -o bind /sys/ sys/
chroot . /bin/bash

Now you should be inside the Arch Linux we are going to set up for O2 Joggler.

Installing kernel (kernel26-joggler)

I have created a kernel package patched with all known patches and IEGD driver support for us all to enjoy. You can grab the PKGBUILD and files from AUR[1], but in this tutorial we are going to use prebuild package to make the installation much more painless.

Following command will download and install the kernel for you.

pacman -U http://www.ihku.biz/joggler/kernel26-joggler-2.6.33.4-1-i686.pkg.tar.xz

Installing software packages

We are going to build some applications from AUR so installing base-devel is recordement:

pacman -S base-devel

Yaourt - AUR the easy way

First we install AUR repository tool, yaourt, to make installing some packages from AUR much easier. Append following into the end of /etc/pacman.conf.

[archlinuxfr] 
Server = http://repo.archlinux.fr/i686

Lets refresh our package repositories and install yaourt:

pacman -Sy
pacman -S yaourt

SSH, alsa, networkmanager, Gnome and friends

pacman -S openssh alsa-utils alsa-oss gnome gnome-terminal network-manager-applet gdm

Chromium and flashplugin

Maximizing the Internet experience!

pacman -S chromium flashplugin

You may also want to install chromeTouch extension for Chromium.

Fonts

pacman -S ttf-dejavu ttf-ms-fonts

Xorg

Currently there are two drivers to use to get X working: IEGD and FBDEV.

  • IEGD
    • Provides some sort of hardware acceleration.
    • Is incomplete.
    • Backlight can be only controlled manually through /sys/class/backlight/openframe-bl/.
    • Features graphic glitches and hardlocks. (At least for me.)
    • Supports currently only xorg-server up to version 1.6.x.
  • FBDEV
    • Slow, but stable.
    • Backlight control works correctly.

Lets start by installing the xorg package group:

pacman -S xorg
Using FBDEV driver (xf86-input-fbdev)

Install the fbdev video driver and some other usefull X input device drivers:

pacman -S xf86-video-fbdev xf86-input-mouse xf86-input-keyboard xf86-input-evdev

Fetch xorg.conf configured for fbdev and place it into /etc/X11/:

wget http://www.ihku.biz/joggler/xorg_fbdev.conf -O /etc/X11/xorg.conf
Using old xorg-server 1.6 and IEGD

It is possible to achieve hardware accelerated graphics on joggler using Intel Embedded Graphics Driver (IEGD), but the driver sadly support xorg-server only up to version 1.6 and the current version in Arch Linux is 1.7 so we have to downgrade. [2]

First remove the current xorg-server package:

pacman -R xorg-server

Then install old xorg version 1.6 and device drivers for it:

pacman -U http://chakra-project.org/repo/xorg-old/i686/xorg-server-1.6.3.901-1-i686.pkg.tar.gz http://chakra-project.org/repo/xorg-old/i686/xf86-input-evdev-2.2.5-1-i686.pkg.tar.gz http://chakra-project.org/repo/xorg-old/i686/xf86-input-keyboard-1.3.2-2-i686.pkg.tar.gz http://chakra-project.org/repo/xorg-old/i686/xf86-input-mouse-1.4.0-2-i686.pkg.tar.gz

Now you propably would like to edit /etc/pacman.conf, uncomment IgnorePkg line and make it look like something similar to:

IgnorePkg = xf86-input-evdev xf86-input-keyboard xf86-input-mouse xorg-server

This will prevent the packages from being upgraded.

An older version of libssl is also needed. This requirement can be fullfilled with the openssl-compatibility package from the Arch User Repository. We can install it easily using yaourt:

yaourt --aur -S openssl-compatibility

Installing IEGD binary drivers: The IEGD drivers can be downloaded from http://edc.intel.com/Software/Downloads/IEGD/, but that needs registeration and playing with exe file so I have created an archive that includes only the needed files (much smaller to download and easier to install, Intel might not like this approach ;P).

pacman -U http://www.ihku.biz/joggler/iegd-10.3.1-2-i686.pkg.tar.xz

Finaly, lets fetch xorg.conf configured for IEGD and place it into /etc/X11/:

wget http://www.ihku.biz/joggler/xorg_iegd.conf -O /etc/X11/xorg.conf
Touchscreen driver: xf86-input-evtouch

The evtouch driver for xorg can be found from AUR and can be easily installed using yaourt:

yaourt --aur -S xf86-input-evtouch

On-screen keyboard: onboard

I have tried various on-screen keyboards and in my opinion onboard is the best so far. It is available in AUR, but will conflict with gnome-python, so you will have to replace the onboard packages python-gconf dependency with 'gnome-python'.

yaourt --aur -S onboard

To get the application running we also need to upgrade the icon cache:

gtk-update-icon-cache /usr/share/icons/hicolor/

Setting up the system

Now it is good time to update the DAEMONS array in /etc/rc.conf to look like someting similar to:

DAEMONS=(syslog-ng joggler dbus hal networkmanager sshd crond alsa gdm)

Add acpi-cpufreq into MODULES, this will enable automatic CPU frequency scaling:

MODULES=(acpi-cpufreq)

Also upgrade the JOGGLER_HWADDR to match your MAC ID or network hardware address. The value can be found behind your device. The joggler service will update the value for you automaticly on startup.

It is also a good idea to add sshd:ALL into /etc/hosts.allow so you can ssh into your system.

Change the /etc/fstab to match something similar to following:

# <file system>        <dir>         <type>    <options>          <dump> <pass>
devpts                 /dev/pts      devpts    defaults            0      0
shm                    /dev/shm      tmpfs     nodev,nosuid        0      0
LABEL="archroot"       /             ext3      defaults,noatime    0      1
tmpfs                  /tmp/         tmpfs     defaults,nr_inodes=1M,size=256M 0 0

You may notice that the filesystem checking on startup is disabled for the root filesystem. We are using the filesystem label archroot to mount our root so make sure it matches your setup if you have done something another way. Also, tmpfs is mounted to tmp to reduce wearing. Take note that the small size of used tmpfs filesystem might affect some applications that use /tmp/ to store lots of data (yaourt).

If you installed GDM add following into /etc/gdm/custom.conf to enable auto-login for user archuser. Remove pre-existing [daemon] text or replace the content.

[daemon]
AutomaticLoginEnable=true
AutomaticLogin=archuser

To get ALSA and its daemon happy run alsaconf once and smash some return key:

alsaconf

Adding normal user

If you have not set the root password now it is good time to do that:

passwd root

Create the user archuser

adduser archuser

Add the archuser into various groups:

usermod -a -G audio,video,network,wheel,adm,games,users,storage archuser

Exiting chroot environment

Exit the chroot when ready with "exit" and then clean up the mounts:

exit
umount sys/ proc/ dev/pts/ dev/
cd ..
umount /mnt/archroot
rmdir /mnt/archroot

Now just plug your USB-stick into O2 Joggler and power it on! Enjoy!

Tips and Tricks

Run ntpdate when network interface comes up

O2 Joggler does not store time or date so we have to upgrade them every boot. Easiest way to accomplish this is using ntpdate and networkmanager magic. First install ntpdate, it can be found in package ntp:

pacman -S ntp

Create file /etc/NetworkManager/dispatcher.d/10ntpdate.sh with following content:

#!/bin/bash
case "$2" in
 up)
  logger "Interface $1 $2, running ntpdate"
  /usr/bin/ntpdate pool.ntp.org &
 ;;
 *)
 ;;
esac
exit 0

and make it executable:

chmod +x /etc/NetworkManager/dispatcher.d/10ntpdate.sh

Try hardware accelerated video playback with mplayer-vaapi

Install with yaourt:

yaourt -S mplayer-vaapi

And play your h.264 videos:

mplayer -vo vaapi -va vaapi -ao alsa video.mp4

With some videos it works really well.