From ArchWiki
Revision as of 14:28, 4 July 2009 by Spd73 (talk | contribs) (Xorg/Nvidia Driver)
Jump to: navigation, search


This is my experience of installing and configuring Archlinux x86_64 on a Asus A6km laptop. The structure conveys the order that things were done, which might help other users to see how the layers can be added to build a very stable distribution.

On this model, a known buggy BIOS problem results in a system hang when any USB device, such as a mouse, is attached at bootup. This can be fixed using a downgraded BIOS version (can be downloaded here). The installation described uses this 202 BIOS version and so far no problems have been encountered, even the power management modules behave properly.


  • 1.8GHz AMD Turion 64 ML34 Processor
  • 15.4" XGA Widescreen TFT Screen
  • 256MB Nvidia Geforce Go 7300
  • 100GB Hard Drive
  • RTL-8169 Gigabit Ethernet Integrated Card
  • Broadcom Integrated 802.11g wireless card
  • DVD Dual Layer Drive
  • Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro
  • 1.3 Mega Pixel USB Intergrated Camera
  • SiS AC'97 Sound Card

lspci outout:

00:00.0 Host bridge: Silicon Integrated Systems [SiS] Device 0756 (rev 02)
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] PCI-to-PCI bridge
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] SiS964 [MuTIOL Media IO] (rev 36)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev 01)
00:02.6 Modem: Silicon Integrated Systems [SiS] AC'97 Modem Controller (rev a0)
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] AC'97 Sound Controller (rev a0)
00:03.0 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 0f)
00:03.1 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 0f)
00:03.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 0f)
00:03.3 USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller
00:09.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
00:0a.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b3)
00:0a.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 08)
00:0a.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 17)
00:0a.3 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 08)
00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet (rev 10)
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] Miscellaneous Control
01:00.0 VGA compatible controller: nVidia Corporation G72M [Quadro NVS 110M/GeForce Go 7300] (rev a1)


The core 64-bit package downloaded from the Get Arch link was installed and the instructions given in the Beginner's guide were followed to get the system up and running. The installation process was broken up neatly into stages:

  • Disk Partitioning - hard disk setup for this system was 1st partition (primary): Windows NTFS partition, 2nd partition (logical): a 2GB linux swap and 3rd partition (logical): linux root ext3
  • Install Packages - inluding base development packages that will help with networking, reading Windows partitions etc., such as ntfs-3g, ndiswrapper, netcfg. All of them were installed to be on the safe side!
  • Configure System - involving detecting hardware using hwdetect and configuring the different sections of the main configuration file /etc/rc.conf
  • Install Grub Loader - Grub loader was installed on the linux root partition giving a /boot/grub/menu.lst as follows:
(0) Arch Linux
title  Arch Linux
root   (hd0,4)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/b3a3c0ab-36df-4b76-abab-443966168c62 ro vga=791
initrd /boot/kernel26.img

(1) Arch Linux
title  Arch Linux Fallback
root   (hd0,4)
kernel /boot/vmlinuz26 root=/dev/disk/by-uuid/b3a3c0ab-36df-4b76-abab-443966168c62 ro
initrd /boot/kernel26-fallback.img

(1) Windows
title Windows
rootnoverify (hd0,0)
chainloader +1

The windows partition was initially commented out with # so remove # where necessary to make it appear in the boot list. vga=791 was added to change the frame buffer from 800 x 640 to 1024 x 768. All explained in the menu.lst configuration file.

Setting up

Archlinux uses the pacman command as its package management, but first, access to the t'interweb was required. Having read through the wikis and wanting to configure the system for Gnome, first port of call was to set up the network conections. All this is based on commandline entries and logging in as root at the console.



The module for the ethernet LAN card was installed at bootup. This could be viewed under the MODULES section in the /etc/rc.conf configuration page or run lsmod to check the module is loaded.

MODULES=(r8169 bcm43xx.......) 


# ifconfig

to check the entry for the ethernet LAN card probablyeth0 and its MAC address etc.

The network settings under NETWORKING section in /etc/rc.conf needed changing to allow connection via DHCP or a static IP.

The default setting for the LAN card in rc.conf was a private static IP.

eth0="eth0 netmask broadcast"

Edit these settings or change to DHCP if required:


then use the the following command to request an IP address from a router etc:

# dhcpcd eth0

Check the output from ifconfig gave the IP address, subnet mask etc. From there, a quick test to see if a website could be reached as suggested in the beginners guide:

# ping -c 3


For wireless, can use the b43-fwcutter package to install the firmware, (run lsmod command to check if the b43 module is running):

# b43-fwcutter -w /lib/firmware /path_to_driver

the driver can be found here

Once installed running

# iwconfig 

showed an entry for wlan0. From there, configuration to connect to a wireless network required setting up the ESSID and the network key using iwconfig e.g.

# iwconfig wlan0 essid somename key somekey

and requesting an IP address using the same method as the wired configuration. On reboot, the driver module would be loaded but the configuration would be lost, software, such as netcfg, allowed saving the wireless configuration to file and load the settings on bootup.


Netcfg package produced a good way to setup an encrypted wireless network connection that connects to a network automatically at bootup, particularly while using a terminal to set stuff up. Examples of the config files are given in /etc/network.d/examples. Here's a WEP configuration file minus a few secret bits!

DESCRIPTION="A simple WEP encrypted wireless connection"

After entering the appropriate information, and saving a copy in /etc/network.d for netcfg to see it, to test run:

# netcfg Filename

To get the connection at bootup, the following was added to /etc/rc.local:

# Start Wireless.......
sudo netcfg Filename


Once the network was setup, Pacman was used to install all the software. Pacman is the commandline package management for Archlinux. It is powerful and yet easy to use, once you get the hang of the syntax. First thing to do, an upgrade of pacman package using,

# pacman -Syu


# pacman -Syy

this installed the latest version. Then upgraded the system,

# pacman -Syu 

The pacman package checked and installed all the dependencies, setup the packages and gave extra info about the upgrades. These could also be read in the /var/log/pacman.log file.

During this first system upgrade, there was an error relating to klibc that required removing a link, see here


The Arch Build System can be used to build packages from source but was useful initially as a directory to search for software.

Installed the package using

# pacman -Sy abs

Generate the directory tree for the core, extra and community package lists by checking the content of the /etc/abs.conf file for the required repositories and then running

# abs

These package lists could then be browsed under the /var/abs subfolders. The list needed refreshing on a regular basis, usually when an upgrade is performed.

Building a package from source was pretty straight forward. Following the suggested route, created a build directory called local in /var/abs and copied the appropriate PKGBUILD file from the required package directory in the /var/abs subfolders to a folder of the same name in /var/abs/local.

Inspect the PKGBUILD file for gremlins (or unwanted code) and then run as a user, required fakeroot or sudo, where possible:

# makepkg -s

to build the package for installation. Run as root:

# pacman -U package.pkg.tar.gz

Xorg/Nvidia Driver

Installation of the Xorg server (X Windows system) was required first:

# pacman -Sy xorg

and a basic driver (possibly!):

# pacman -Sy xf86-video

At this point, install the nvidia driver, for this machine:

# pacman -Sy nvidia

then run the Xorg configuration command:

# Xorg -config

which detected the mouse and keyboard, selected the nvidia driver and created a new xorg.conf file. The xorg.conf file:

Section "ServerLayout"
	Identifier     " Configured"
	Screen      0  "Screen0" 0 0
	InputDevice    "Mouse0" "CorePointer"
	InputDevice    "Keyboard0" "CoreKeyboard"

Section "Files"
	ModulePath   "/usr/lib/xorg/modules"
	FontPath     "/usr/share/fonts/misc"
	FontPath     "/usr/share/fonts/100dpi:unscaled"
	FontPath     "/usr/share/fonts/75dpi:unscaled"
	FontPath     "/usr/share/fonts/TTF"
	FontPath     "/usr/share/fonts/Type1"

Section "Module"
	Load  "record"
	Load  "dbe"
	Load  "glx"
	Load  "extmod"
	Load  "dri"
	Load  "dri2"

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"

Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/input/mice"
	Option	    "ZAxisMapping" "4 5 6 7"

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"

Section "Device"
	Identifier  "Card0"
	Driver      "nvidia"
	VendorName  "nVidia Corporation"
	BoardName   "G72M [Quadro NVS 110M/GeForce Go 7300]"
	BusID       "PCI:1:0:0"

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	SubSection "Display"
		Viewport   0 0
		Depth     1
	SubSection "Display"
		Viewport   0 0
		Depth     4
	SubSection "Display"
		Viewport   0 0
		Depth     8
	SubSection "Display"
		Viewport   0 0
		Depth     15
	SubSection "Display"
		Viewport   0 0
		Depth     16
	SubSection "Display"
		Viewport   0 0
		Depth     24

Reboot the system and ran:

# startx

to start x windows and load the minimalist windows manager. This configuration generated the correct native resolution 1280 x 800.


To install the Gnome packages and dependencies, ran:

# pacman -Sy gnome

to install gnome and its dependencies, then

# pacman -Sy gnome-extra 

to get, well, the extra stuff! See here to get the full list of packages. The installation also installed gdm (gnome display manager). From here, added the following daemons: fam, hal and gdm to the daemons list in /etc/rc.conf.

DAEMONS=(.....fam hal....gdm)

Hal started the dbus daemon on bootup and some packages suggested adding dbus to the daemons list, this is obviously not necessary if hal is present. After a reboot, gdm loaded the gnome login window. At this point, a user account needed to be present on the system since you cannot login as root at this stage (try ctl+alt+F6 to get to a console and login as root then follow adding a user section below).

When using Nautilus in Gnome to access ftp or samba filesystems, the 'fuse' module needs to be added to the MODULES list.

User accounts

Logged into a console as root, and typed the command:

# adduser

which gave a structured output for creating a user account. During this process, it was possible to add the user to a number of groups. Available groups can be viewed using:

# cat /etc/group

These groups were handy to have access to:

  • optical - access to CD/DVD drives
  • storage - access to external drives
  • disk - access to drives other than storage and optical
  • log - access to log files
  • power - allows user to suspend, restart and shutdown the computer
  • audio - access to sound hardware
  • video - access to video capture devices
  • wheel - allow users to use sudo commands
  • network - allow users to change network settings

Outside of the adduser setup, adding a user to another group can be done using

# gpasswd -a [username] group

Once the account was setup, back to logging into Gnome. No problems were encountered with starting gnome for the first time other than getting the audio sorted out.


The sound card [SiS AC'97] was detected on installation and correct modules for audio loaded at bootup. Once the user was added to the audio group, this gave the user control over audio settings. Audio was muted by default. Assuming the user is running a windows manager, double click on the speaker icon and adjust/unmute the audio. The command:

# alsactl store

or depending on whether there was a error try the absolute path:

# /usr/sbin/alsactl store

the file /etc/asound.state was created, this process restored the sound settings on subsequent bootups. Also need to add 'alsa' to the DAEMONS list in rc.conf:

DAEMONS=(.....fam hal alsa....gdm)

Other hardware


To get the touchpad working, install the synaptics package:

# pacman -Sy xf86-input-synaptics

The touchpad started working (with basic features - no scrolling etc.) after a reboot. Apparently this only works when xorg input hotplugging is enabled.


The webcam was detected on installation and the modules loaded at bootup.

Linux video capture interface: v2.00
stkwebcam: Syntek USB2.0 Camera is now controlling video device /dev/video0

The cheese webcam package worked well with the installed drivers. Cheese is installed with Gnome extras packages. Can't recall whether this worked on the kernel version installed from the download or after an upgrade!

Kernel version in use at this stage was 2.6.27.


Not tested so far


First make sure the device is enabled in the BIOS, then once booted up, start the daemon:

# /etc/rc.d/irda start

One way to test the device is to install the utilities:

# pacman -Sy irda-utils

and run the command:

# irdadump

the output should look something like this when working:

13:13:59.173537 xid:cmd 851b3728 > ffffffff S=6 s=0 (14) 
13:13:59.263432 xid:cmd 851b3728 > ffffffff S=6 s=1 (14) 
13:13:59.353394 xid:cmd 851b3728 > ffffffff S=6 s=2 (14) 
13:13:59.443431 xid:cmd 851b3728 > ffffffff S=6 s=3 (14) 
13:13:59.533395 xid:cmd 851b3728 > ffffffff S=6 s=4 (14) 
13:13:59.626729 xid:rsp 851b3728 < 26098ceb S=6 s=4 Sony Ericss hint=9124 [ PnP Modem IrCOMM  IrOBEX ] (28) 
13:13:59.633430 xid:cmd 851b3728 > ffffffff S=6 s=5 (14) 
13:13:59.723433 xid:cmd 851b3728 > ffffffff S=6 s=* asus-archlinux-64 hint=0400 [ Computer ] (33) 

The 'Sony Ericss' entry is a nearby (direct line of sight) mobile phone with infra-red enabled.

There should also be an irda0 entry when running the ifconfig command.

Card Reader

Not tested so far

Tv Out

Not tested so far

Other Software/Utilities

A list of other stuff added to the system.......

Power Management

To control the processor/fan speeds, get the frequency scaling software for the AMD Turion processor, install the cpufrequtils package:

# pacman -Sy cpufrequtils

then installed the required modules:

# modprobe powernow-k8
# modprobe cpufreq_ondemand
# modprobe cpufreq_powersave

Running the command:

# cpufreq-info

gave the correct frequency steps and range for the system and the governer was set to 'ondemand'.

Before rebooting, edited the modules list in /etc/rc.conf:

MODULES=(r8169 !bcm43xx ndiswrapper fuse powernow-k8 cpufreq_ondemand cpufreq_powersave....)

and added 'cpufreq' to the daemons list.

When the system has been restarted, listen to the fan noise, it should be much lower, if not check the modules list to see if everything is loaded properly

# lsmod 

or may have to use the absolute path.


Pretty straight forward. Installed the package:

# pacman -Sy firefox

To get flash player working on the 64-bit version, see flashplugin.

The permissions for the mozilla plugin folder may need to be changed to make it accessible by a user, run as root:

# chmod -R 755 /usr/lib/mozilla

Video Players

Two good video players to install are mplayer and vlc:

# pacman -Sy vlc mplayer

Open Office

Always a useful package to have installed:

# pacman -Sy openoffice-base

Better fonts

To give Gnome a better look, installed some additional true type fonts:

# pacman -Sy ttf-ms-fonts ttf-dejavu

These produce a more pleasing look with the LCD display. Although there are others to try here


Cups needs to be installed to configure printers or setup a printer server:

# pacman -Sy cups

From here, to setup a printer, try using the web interface, first start the cups daemon:

# /etc/rc.d/cups start 

then http://localhost:631 will take you to the interface. To start daemon at bootup, add 'cups' to the daemons list in /etc/rc.conf.


This program is a neat little gui to control network configurations, it can be used instead of netcfg to setup wireless networks. Install the package:

# pacman -Sy wicd

then additional packages:

# pacman -Sy dhclient wpa_supplicant hicolor-icon-theme

To get wicd working with Gnome, stop all network daemons and programs from running at bootup, so blacklist any network related stuff in the DAEMONS list of rc.conf and comment out in the NETWORKING section and add 'wicd' after 'dbus' or 'hal' (see config file in section 6), e.g.


then reboot the system. Clicking on the icon should provide the nearest wireless networks if the daemon loaded properly, otherwise, check the wiki page for known problems.

Firewall/IP Tables

Iptables can be installed from pacman:

# pacman -Sy iptables

From there, follow the detailed instructions on how to setup a simple firewall, open specific ports for applications, and more complicated configurations.

Finally, add 'iptables' to the daemons lists /etc/rc.conf

gtk-iptables is a useful frontend for iptables and can be downloaded from AUR.....

/etc/rc.conf file

This is the up-to-date configuration file for the above installation...

# /etc/rc.conf - Main Configuration for Arch Linux

# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
# LOCALE: available languages can be listed with the 'locale -a' command
# HARDWARECLOCK: set to "UTC" or "localtime"
# USEDIRECTISA: use direct I/O requests instead of /dev/rtc for hwclock
# TIMEZONE: timezones are found in /usr/share/zoneinfo
# KEYMAP: keymaps are found in /usr/share/kbd/keymaps
# CONSOLEFONT: found in /usr/share/kbd/consolefonts (only needed for non-US)
# CONSOLEMAP: found in /usr/share/kbd/consoletrans
# USECOLOR: use ANSI color sequences in startup messages

# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
# MOD_AUTOLOAD: Allow autoloading of modules at boot and when needed
# MOD_BLACKLIST: Prevent udev from loading these modules
# MODULES: Modules to load at boot-up. Prefix with a ! to blacklist.
# NOTE: Use of 'MOD_BLACKLIST' is deprecated. Please use ! in the MODULES array.
#MOD_BLACKLIST=() #deprecated
MODULES=(r8169 !bcm43xx ndiswrapper fuse powernow-k8 cpufreq_ondemand cpufreq_powersave  ac97_bus snd-mixer-oss snd-pcm-oss 
snd-page-alloc snd-pcm snd-timer snd snd-ac97-codec snd-intel8x0 snd-intel8x0m soundcore)

# Scan for LVM volume groups at startup, required if you use LVM

# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
# HOSTNAME: Hostname of machine. Should also be put in /etc/hosts

# Use 'ifconfig -a' or 'ls /sys/class/net/' to see all available interfaces.
# Interfaces to start at boot-up (in this order)
# Declare each interface then list in INTERFACES
#   - prefix an entry in INTERFACES with a ! to disable it
#   - no hyphens in your interface names - Bash doesn't like it
# DHCP:     Set your interface to "dhcp" (eth0="dhcp")
# Wireless: See network profiles below
# eth0="dhcp"

# Routes to start at boot-up (in this order)
# Declare each route then list in ROUTES
#   - prefix an entry in ROUTES with a ! to disable it
gateway="default gw"
# Enable these network profiles at boot-up.  These are only useful
# if you happen to need multiple network configurations (ie, laptop users)
#   - set to 'menu' to present a menu during boot-up (dialog package required)
#   - prefix an entry with a ! to disable it
# Network profiles are found in /etc/network.d
# This now requires the netcfg package

# -----------------------------------------------------------------------
# -----------------------------------------------------------------------
# Daemons to start at boot-up (in this order)
#   - prefix a daemon with a ! to disable it
#   - prefix a daemon with a @ to start it up in the background
DAEMONS=(syslog-ng iptables !network netfs crond hal cups fam alsa stbd cpufreq wicd gdm)