- 1 Introduction
- 2 Installation
- 3 Setting up
- 4 Other hardware
- 5 Other Software/Utilities
- 6 /etc/rc.conf file
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
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) makeactive 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.
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.
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 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 a website could be reached as suggested in the beginners guide:
# ping -c 3 www.google.com
For wireless, past experience with other distros suggested ndiswrapper worked better with one of the 64-bit windows device drivers than the bcm43xx module. First point ndiswrapper at the driver folder:
# ndiswrapper -i /path_to_driver.inf
or try the absolute path instead when command is not recognised:
# ndiswrapper -l (listed the drivers installed) # depmod -a (reloaded the module dependences, ish!)
from there, installed the module
# modprobe ndiswrapper
and a few config adjustments needed. Blacklisted the bcm43xx module by putting ! in front of the name and added ndiswrapper to module list in rc.conf
MODULES=(r8169 !bcm43xx ndiswrapper.......)
gave 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
then requested 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 reliable way to setup an encrypted wireless network connection that connects to a network automatically at bootup. 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"
Once the fields were filled in with the appropriate information, the file was saved and needed to be copied to /etc/network.d for netcfg to see it and then tested:
# 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
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
Before installation of the Nvidia driver was possible, installation of the xorg server (X Windows system) was required:
# pacman -Sy xorg
and a basic driver:
# pacman -Sy xf86-video
At this point, instead of following the guide and running the hwd command to create an /etc/X11/xorg.conf file install the nvidia driver, in this case:
# pacman -Sy nvidia
then run the nvidia configuration command:
which creates a new xorg.conf file. The xorg.conf file:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig # nvidia-xconfig: version 1.0 (buildmeister@builder58) Wed Oct 1 15:12:53 PDT 2008 Section "ServerLayout" Identifier "Layout0" Screen 0 "Screen0" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "Mouse0" "CorePointer" EndSection Section "Files" EndSection Section "Module" Load "dbe" Load "extmod" Load "type1" Load "freetype" Load "glx" EndSection Section "InputDevice" # generated from default Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/psaux" Option "Emulate3Buttons" "no" Option "ZAxisMapping" "4 5" EndSection Section "InputDevice" # generated from default Identifier "Keyboard0" Driver "kbd" EndSection Section "Monitor" Identifier "Monitor0" VendorName "Unknown" ModelName "Unknown" HorizSync 30.0 - 110.0 VertRefresh 50.0 - 150.0 Option "DPMS" EndSection Section "Device" Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" EndSection Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 EndSubSection EndSection
Reboot the system and ran:
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.
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 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)
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:
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.......
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:
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
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
Two good video players to install are mplayer and vlc:
# pacman -Sy vlc mplayer
Always a useful package to have installed:
# pacman -Sy openoffice-base
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.
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.....
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)