Pitfalls and tips for ArchLinux installation

Recently I finished my first ArchLinux installation since 2010. Many things have change since I used the distro the last time and I felt a little bit helpless first.

The former ArchLinux installer isn't used anymore - the experienced Linux user has to prepare the hard drives for the installation on his own. The installation and configuration is executed using pacstrap and arch-chroot.

While you could configure your whole system using the /etc/rc.conf configuration file before you will have to customize several configuration files now. The most important configuration files are /etc/hostname, /etc/locale.conf and /etc/vconsole.conf.

After finishing the basic installation of the the system (you might want to have a look at the install.txt file) I customized the following files to relocate ArchLinux to the german language:

1# echo "LANG=de_DE.UTF-8" > /etc/locale.conf
2# echo "KEYMAP=de-latin1-nodeadkeys" > /etc/vconsole.conf
3# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime

If you're using LVM and a dedicated logical volume for the /usr file system you have to customize the /etc/mkinitcpio.conf configuration file:

1# vi /etc/mkinitcpio.conf
2...
3HOOKS=”base udev autodetect modconf block lvm2 filesystems usr keyboard fsck"
4...
5ESC ZZ
6
7# mkinitcpio -p linux

The variable HOOKS needs to be expanded by the entries lvm2 and usr - afterwards the ramdisk needs to rebuilt. Otherwise the boot will fail:

ERROR: Root device mounted successfully, but /sbin/init does not exist. Bailing out, you are on your own now. Good luck.

1sh: can't access tty: job control turned off
2[rootfs /]# _

Of course ArchLinux comes with the most recent GRUB version 2 - compared to the previous version the installation process differs slightly:

1# grub-install --recheck /dev/sda
2# grub-mkconfig -o /boot/grub/grub.cfg

It is quite interesting at this point that grub-mkconfig only recognizes installed kernels while creating the configuration when the kernel file names are alike the following schematas:

  • /boot/vmlinuz-*
  • /vmlinuz-*
  • /boot/kernel-*

The kernel file name of my last CRUX Linux installation was vmlinuz - and I was wondering why the boot loader didn't find any kernels... 😉

Because ArchLinux consequently implements the systemd concept DHCP isn't enabled using the conventional network configuration - it is configured using systemctl instead:

1# systemctl enable dhcpcd@ens32
2# systemctl start dhcpcd@ens32

At this point you might also want to install the most recent available updates:

1# pacman -Syu

🙂

Translations: