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.
Latest revision based on 2009.02 core installation
- 1 Hardware
- 2 Installation
- 3 Setting up
- 4 Other hardware
- 5 Other Software/Utilities
- 6 /etc/rc.conf file
- 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
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 Beginners' Guide were followed to get the system up and running. The installation process was broken up neatly into stages:
- Disk Partitioning - hard disk setup using cfdisk partition program etc.
- Install Packages - inluding base development packages that will help with networking, reading Windows partitions etc., such as ntfs-3g, ndiswrapper, b43-fwcutter, 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) makeactive chainloader +1
The windows partition was initially commented out, so remove # where necessary to make active. 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.
Archlinux uses the pacman command as its package management, but first, access to 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. Initially based on commandline entries and logging in as root at the console, until a desktop environment was setup.
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.
to check the entry for the ethernet LAN card probably eth0 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 192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" INTERFACES=(eth0)
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 an address could be reached as suggested in the beginners guide:
# ping -c 3 www.google.com
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
showed an entry for wlan0.
The device may need starting:
# ifconfig wlan0 up
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 console 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!
CONNECTION="wireless" DESCRIPTION="A simple WEP encrypted wireless connection" INTERFACE=wlan0 SCAN="yes" SECURITY="wep" ESSID="XXXXXXXX" KEY="XXXXXXXXX" IP="dhcp"
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 -S 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
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
Installation of the Xorg server (X Windows system) was required first:
# pacman -S xorg
and a basic driver (possibly!):
# pacman -S xf86-video
At this point, install the nvidia driver, for this machine:
# pacman -S nvidia
then, one way to get things working, run the Xorg configuration command:
# Xorg -configure
which detected the mouse and keyboard, selected the nvidia driver and created a new xorg.conf file. The xorg.conf file:
Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection 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" EndSection Section "Module" Load "record" Load "dbe" Load "glx" Load "extmod" Load "dri" Load "dri2" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "kbd" EndSection Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" EndSection Section "Device" Identifier "Card0" Driver "nvidia" VendorName "nVidia Corporation" BoardName "G72M [Quadro NVS 110M/GeForce Go 7300]" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 EndSubSection EndSection
Without a desktop environment installed/loaded, running:
started x windows and loaded the minimalist windows manager. This configuration generated the correct native resolution 1280 x 800.
To install the Gnome packages (and extras, see here):
# pacman -S gnome gnome-extra
The installation also added gdm (gnome display manager). From here, need to add the following daemons: fam, hal and gdm to the daemons list in /etc/rc.conf.
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.
Logged into a console as root, and typed the command:
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 gave user permissions to access:
- optical - CD/DVD drives
- storage - external drives
- disk - drives other than storage and optical
- log - log files
- power - allows user to suspend, restart and shutdown the computer
- audio - sound settings
- video - 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 could be achieved 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 the correct modules for audio loaded at bootup. Once the user was added to the audio group, they have 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. Installing:
# pacman -S alsa-utils
meant the command:
# alsactl store
created the file /etc/asound.state, this process restored the sound settings on subsequent bootups. Add 'alsa' to the DAEMONS list in rc.conf:
DAEMONS=(.....fam hal alsa....gdm)
To get the touchpad working, install the synaptics package:
# pacman -S 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 -S irda-utils
and run the command:
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.
Not tested so far
Not tested so far
A list of other stuff added to the system.......
For cpu scaling, see Cpufrequtils.
Suspend to RAM/Disk
For suspend-to-ram, follow the instructions in the Suspend-to-ram page. Running the command:
# s2ram -n
gave the output:
Machine matched entry 49: sys_vendor = 'ASUSTeK Computer Inc. ' sys_product = 'A6Km ' sys_version = bios_version = Fixes: 0x0 This machine can be identified by: sys_vendor = "ASUSTeK Computer Inc. " sys_product = "A6Km " sys_version = "1.0 " bios_version = "300 " See http://suspend.sf.net/s2ram-support.html for details.
and for suspend-to-disk, after the s2ram setup install the hibernate script:
# pacman -S hibernate-script
then test by running:
both seemed to work well, only the wireless light did not re-light after resuming, but wicd restarted ok, not certain what happens with other network managers.
This is the up-to-date configuration file for the above installation...
# # /etc/rc.conf - Main Configuration for Arch Linux # # ----------------------------------------------------------------------- # LOCALIZATION # ----------------------------------------------------------------------- # # 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 # LOCALE="en_GB.utf8" HARDWARECLOCK="localtime" USEDIRECTISA="no" TIMEZONE="Europe/London" KEYMAP="uk" CONSOLEFONT= CONSOLEMAP= USECOLOR="yes" # ----------------------------------------------------------------------- # HARDWARE # ----------------------------------------------------------------------- # # 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_AUTOLOAD="yes" #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 USELVM="no" # ----------------------------------------------------------------------- # NETWORKING # ----------------------------------------------------------------------- # # HOSTNAME: Hostname of machine. Should also be put in /etc/hosts # HOSTNAME="asus-archlinux-64" # 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" # INTERFACES=(eth0) # 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 192.168.0.1" ROUTES=(!gateway) # 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 # #NETWORKS=(main) # ----------------------------------------------------------------------- # DAEMONS # ----------------------------------------------------------------------- # # 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)