EDIT: Updated as of 21st June 2015.
Arch Linux is a fantastic operating system. From bleeding edge rolling release packages to a stripped back and industrial feel to the design, Arch grants a feeling of empowerment to the user that is unmatched by most.
Around two years ago I became somewhat tired of the distro hopping and configuration tweaking that had been engaging me previously, and I decided to opt for the quieter and a more stable Debian system in order to be able to focus more of my attention on software development. More recently I decided to give Arch another chance after being convinced by a couple of my colleagues, and was delighted to find that the distro has come along way from when we last parted, the days of System V init and handwritten
As always, the installation process for Arch is significantly more involved than most (though not all) distros, so I decided to write up my installation approach for the latest (2014.09.03) release, which should result in a complete development machine in around 20 minutes.
Disclaimer: This guide assumes that the reader has a reasonable working knowledge of Linux OSs, and chooses a selection of packages which may not be to everyone’s taste. The authoritative source of installation instructions is the Arch wiki. Assumed hardware is a desktop machine with a wired ethernet connection and UK keyboard.
# Check that you’re not using UEFI (this command will fail): efivar -l loadkeys uk # Check that DHCP internet is working: ping -c 3 www.google.com # Nuke your disk: sgdisk --zap-all /dev/sda # Create partition table (interactive application): cgdisk /dev/sda # Make file systems (assuming single root partition): mkfs.ext4 /dev/sda1 mount /dev/sda1 /mnt # Base install: pacstrap /mnt base base-devel # Create fstab: genfstab -U -p /mnt >> /mnt/etc/fstab # Verify the generated file and make any desired changes. # To host /tmp in memory, add: # # tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0 nano /mnt/etc/fstab # Chroot into new env: arch-chroot /mnt /bin/bash # Generate Locales: export LANG=en_GB.UTF-8 echo “$LANG UTF-8” > /etc/locale.gen locale-gen echo LANG=$LANG > /etc/locale.conf # Set time zone: ln -s /usr/share/zoneinfo/Europe/London /etc/localtime hwclock --systohc --utc # Edit hosts file to add your hostname to the end of this line: # 127.0.0.1 localhost.localdomain localhost <hostname> nano /etc/hosts export HOSTNAME=cec echo $HOSTNAME > /etc/hostname # Find out the name of your LAN device: ip link show # Enable dhcpcd for that device: systemctl enable dhcpcd@[internet-device].service # Determine and install video driver: lspci | grep -e VGA -e 3D pacman -Ss xf86-video pacman -S # [video-driver] # Install some useful packages: pacman -S gptfdisk syslinux vim xorg-server xorg-xinit xterm zsh \ wget rsync openssh emacs # Uncomment appropriate line to enable sudo access to wheel group: EDITOR=nano visudo # Install bootloader: syslinux-install_update -iam # Change LABEL from /dev/sda3 to /dev/sda1 for LABELs: # And set: TIMEOUT 1 nano /boot/syslinux/syslinux.cfg # Set keymap: echo KEYMAP=uk > /etc/vconsole.conf # Set root password: passwd # Create user and set password: useradd -G wheel -s /bin/zsh chris passwd chris exit reboot # Login as root # Check that DHCP internet is still working. If not, revert to # `ip link show` command): ping -c 3 www.google.com # For virtualbox guests: pacman -S virtualbox-guest-utils # # Load virtualbox kernel modules: depmod $(uname -r) modprobe -a vboxguest vboxsf vboxvideo echo -e “vboxguest\nvboxsf\nvboxvideo” > /etc/modules-load.d/virtualbox.conf # Launch virtualbox client scripts: VBoxClient-all systemctl enable vboxservice # End of virtualbox commands # Test that X is working (you should see some terminals and a mouse): startx # Install graphic environment (YMMV): pacman -S gdm gnome-shell nautilus gedit file-roller gthumb evince \ gnome-control-center gnome-terminal gnome-system-monitor systemctl enable gdm reboot # Log in to graphical environment as user # Set input type (UK) and open gnome-terminal # Install yaourt mkdir -p /tmp/yaourt cd !$ wget https://aur.archlinux.org/packages/pa/package-query/package-query.tar.gz wget https://aur.archlinux.org/packages/ya/yaourt/yaourt.tar.gz tar -xf package-query.tar.gz tar -xf yaourt.tar.gz cd package-query makepkg -s sudo pacman -U package-query-*.tar.xz cd ../yaourt makepkg -s sudo pacman -U yaourt-*.tar.xz # Install web browser (YMMV): yaourt google-chrome # Install dropbox: yaourt dropbox yaourt nautilus-dropbox # Install office & media tools: sudo pacman -S thunderbird libreoffice-fresh vlc # Install programming tools & runtimes: sudo pacman -S gcc-fortran texlive-most git aspell aspell-en ruby openmpi \ jre7-openjdk jdk7-openjdk nodejs npm python2-numpy python-numpy \ python2-setuptools python-setuptools ipython ipython2 clojure gem install bundler # Setup SSH keys # Install emacs config: git clone [email protected]:ChrisCummins/prelude.git ~/.emacs.d