You are here
Installing Arch from an Existing Linux Installation
For some people, the typical method of installing Arch -- using the downloaded ISO installation environment, which provides all of the very basic command line tools to install Arch, and manually configuring everything, is more difficulty than they are willing to endure. The most intimidating element of this process being configuring the network during installation. Fortunately, Arch, like any distribution, can be installed by using a chroot environment from an existing Linux installation, greatly simplifying the normal process of installing Arch. Arch actually provides a customized chroot environment that makes installing from an existing Linux installation easy. When this chroot environment is used from an existing Linux on a machine that is connected to a network the process is much easier than the standard method of installing Arch because the network configuration will not have to be performed for the installation, although the user will still need to follow most of the standard process, with the exception of network setup. Other steps are also avoided with the chroot method. For example, preparing the partitions outside of the installation process -- another deviation from the standard Arch installation process described in the Arch Linux Beginners' Guide -- also simplifies the installation, allowing the use of a graphical tool available in the existing Linux. Selecting packages that will automatically install dependencies instead of installing dependencies first, because the goal is to get to a working desktop environment in as few steps as possible will further simplify the process.
The steps I describe in this article are those that I used to install Arch and the Xfce desktop environment in January of 2015. (When Arch announced the availability of Plasma 5.2.2, a version considered stable enough for daily use a few days later, I also installed it.) This installation method was painless and took about four hours to have a working desktop environment with a working wireless network configuration. (I've heard of an Arch installation taking days) I did face the problem of some Xfce components not starting automatically when logging into Xfce, but based on the types of errpr messages that were displayed by Xfce, I think this was due to my choice of installing the Xfce environment before creating a non-root user. Despite this error in the order of steps, for the most part, the order of the steps after the set of base packages, it seems like the order of the remaining steps is arbitrary.
There were a few other post installation configuration items, like editing the polkit configuration file to allow rootless access to other partitions on the system, but these were matters of convenience and could not be considered part of the isntallation rather part of the normal Arch user configuration, and will be discussed in a later article.
In fact this method was even easier than installing the Arch derivative, Antergos, which provides an ISO with a live GNOME environment and a graphical installer, the difficulty with Antergos being an unstable installer and non-standard default choices for using EFI System parition. More on that distribution in a later article. For first time Arch users who want an even easier Arch set up than the chroot from an existing Linux installation should try Manjaro over this method or Antergos. The Arch derived Manjaro, while not pure Arch, mainly because it uses its own repositories and delays updates and makes minor changes for added stability, is still a rolling Arch based distribution and offers a reliable graphical installer, installation of a graphical package manager -- which are not available in the official Arch repositories but only in the AUR, preconfigurs the AUR, takes care of user interventions that Arch requires, and provides nice theming, among other items that make Arch easier to use and maintain.
This installation was done on a Lenovo V570 with Phoenix Technologies EFI v 2.0, an Intel Core-i5 2450M processor, integrated Intel Graphics HD3000, and an Intel Centrino® Wireless-N + WiMAX 6150 wireless network interface. The existing Linux I performed the installation from was first Manjaro 0.8.10 or 0.8.11 (I don't remember the snapshot version). After the point in the installation process where I installed sddm I had to stop the installation and resumed it later from openSUSE 13.2 after I set up the arch-root again in openSUSE.
Read on for the full step by step guide to installing Arch Linux from an existing Linux OS on a different partition of the same computer.
I would first prepare the partitions in which the Arch installation will reside using the tools available in the existing Linux installation where the chroot . Assigning labels to the partitions is also a good idea.
The arch-chroot tool is part of the installation bootstrap image. Download the Arch bootstrap image from an Arch mirror of your choice. The mirror for downloading the image can be selected from the list on the Arch downloads page which lists mirrors by country. I chose the mirror at UMD because it is close to me and UMD also provided a fast mirror for Sabayon. The screenshot below shows the path to the current image file, archlinux-bootstrap-2015.04.01-x86_64.tar.gz
The download is performed with:
brook @ V570-MANJARO ~ └─ $ ▶curl -O http://mirror.umd.edu/archlinux/iso/2015.01.01/archlinux-bootstrap-2015.01.01-x86_64.tar.gz
. Note that the date in the name of the image file will change to whatever is current at the time you visit the mirror.
Move the downloaded tar.gz archive to /tmp with
brook @ V570-MANJARO ~ └─ # ▶sudo mv archlinux-bootstrap-2015.01.01-x86_64.tar.gz /tmp/archlinux-bootstrap-2015.01.01-x86_64.tar.gz
- I changed to root at this point instead of using sudo.
Change directory to the /tmp directory and extract the tar archive with:
root @ V570-MANJARO /tmp └─ # ▶tar xzf archlinux-bootstrap-2015.01.01-x86_64.tar.gz
Extracting the archive will create a directory called root.x86_64
Select the mirrors you would like to use by uncommenting the servers appropriate for your location in the mirrorlist file. I used nano with the command:
root @ V570-MANJARO /tmp └─ # ▶nano /tmp/root.x86_64/etc/pacman.d/mirrorlist
Installing the Base System
If the existing installation from which this process is performed uses a bash greater than Version 4, enter the chroot environment with:
root @ V570-MANJARO /tmp └─ # ▶/tmp/root.x86_64/bin/arch-chroot /tmp/root.x86_64/
Otherwise use the following series of commands one at a time, copied from the Arch guide:
cd /tmp/root.x86_64 cp /etc/resolv.conf etc mount -t proc /proc proc mount --rbind /sys sys mount --rbind /dev dev mount --rbind /run run chroot /tmp/root.x86_64 /bin/bash
As my system had bash 4.3, the first method was enough.
Initialize the gpg keyring with:
sh-4.3# pacman-key --init
Notice that once in the arch-chroot environment the command prompt changed. This will output something like this:
gpg: /etc/pacman.d/gnupg/trustdb.gpg: trustdb created gpg: no ultimately trusted keys found gpg: starting migration from earlier GnuPG versions gpg: porting secret keys from '/etc/pacman.d/gnupg/secring.gpg' to gpg-agent gpg: migration succeeded gpg: Generating pacman keyring master key... gpg: key C2A9121F marked as ultimately trusted gpg: directory '/etc/pacman.d/gnupg/openpgp-revocs.d' created gpg: Done ==> Updating trust database... gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
Then populate the Arch gpg keys with:
sh-4.3# pacman-key --populate archlinux
which will output something like this:
==> Appending keys from archlinux.gpg... gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u ==> Locally signing trusted keys in keyring... -> Locally signing key 0E8B644079F599DFC1DDC3973348882F6AC6A4C2... -> Locally signing key 684148BB25B49E986A4944C55184252D824B18E8... -> Locally signing key 44D4A033AC140143927397D47EFD567D4C7EA887... -> Locally signing key 27FFC4769E19F096D41D9265A04F9397CDFD6BB0... -> Locally signing key AB19265E5D7D20687D303246BA1DFB64FFF979E7... ==> Importing owner trust values... gpg: inserting ownertrust of 4 gpg: setting ownertrust to 4 gpg: setting ownertrust to 4 gpg: setting ownertrust to 4 gpg: setting ownertrust to 4 ==> Disabling revoked keys in keyring... -> Disabling key F5A361A3A13554B85E57DDDAAF7EF7873CFD4BB6... -> Disabling key 7FA647CD89891DEDC060287BB9113D1ED21E1A55... -> Disabling key D4DE5ABDE2A7287644EAC7E36D1A9E70E19DAA50... -> Disabling key BC1FBE4D2826A0B51E47ED62E2539214C6C11350... -> Disabling key 9515D8A8EAB88E49BB65EDBCE6B456CAF15447D5... -> Disabling key 4A8B17E20B88ACA61860009B5CED81B7C2E5C0D2... -> Disabling key 63F395DE2D6398BBE458F281F2DBB4931985A992... -> Disabling key 0B20CA1931F5DA3A70D0F8D2EA6836E1AB441196... -> Disabling key 8F76BEEA0289F9E1D3E229C05F946DED983D4366... -> Disabling key 66BD74A036D522F51DD70A3C7F2A16726521E06D... -> Disabling key 81D7F8241DB38BC759C80FCE3A726C6170E80477... -> Disabling key E7210A59715F6940CF9A4E36A001876699AD6E84... ==> Updating trust database... gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 5 trust: 0-, 0q, 0n, 0m, 0f, 1u gpg: depth: 1 valid: 5 signed: 62 trust: 0-, 0q, 0n, 5m, 0f, 0u gpg: depth: 2 valid: 60 signed: 5 trust: 60-, 0q, 0n, 0m, 0f, 0u gpg: next trustdb check due at 2016-01-22
The directory /mnt already exists on the Arch bootstrap image in the root.x86_64 directory. Once the partition on which Arch will be installed is mounted at /mnt, it will represent the new installation's root file system. Directories created in /mnt will also be needed for the /home partition for the Arch installation as well as the EFI System partition.
sh-4.3# mkdir -p /mnt/home
sh-4.3# mkdir -p /mnt/boot/efi
Then mount the actual partitions where the Arch installation will be placed to these mount points inside the bootstrap image. In the following commands the actual block names on my system are shown; be sure to substitute your own device names. Mount the partition to be used for Arch's / partition with:
sh-4.3# mount /dev/sda25 /mnt
Mount the partition to be Arch's /home partition with:
sh-4.3# mount /dev/sda26 /mnt/home
Mount the EFI System partition with:
sh-4.3# mount /dev/sda2 /mnt/boot/efi
Activate the swap partition so that it is recognized by Arch's fstab generation script with:
sh-4.3# swapon -s
This command returned:
Filename Type Size Used Priority /dev/sda8 partition 6291452 0 -1
In my case, /dev/sda8 is the swap partition on the multi-boot system and was active in the Manjaro that the arch-chroot was running.
Now it's time to get excited. The actual installation of the base Arch system happens with the following command:
sh-4.3# pacstrap /mnt base
This will synchronize the package database and then prompt for a selection as shown in the following code block.
==> Creating install root at /mnt ==> Installing packages to /mnt :: Synchronizing package databases... core 121.6 KiB 365K/s 00:00 [##########################################] 100% extra 1806.0 KiB 192K/s 00:09 [##########################################] 100% community 2.5 MiB 196K/s 00:13 [##########################################] 100% :: There are 50 members in group base: :: Repository core 1) bash 2) bzip2 3) coreutils 4) cryptsetup 5) device-mapper 6) dhcpcd 7) diffutils 8) e2fsprogs 9) file 10) filesystem 11) findutils 12) gawk 13) gcc-libs 14) gettext 15) glibc 16) grep 17) gzip 18) inetutils 19) iproute2 20) iputils 21) jfsutils 22) less 23) licenses 24) linux 25) logrotate 26) lvm2 27) man-db 28) man-pages 29) mdadm 30) nano 31) netctl 32) pacman 33) pciutils 34) pcmciautils 35) perl 36) procps-ng 37) psmisc 38) reiserfsprogs 39) s-nail 40) sed 41) shadow 42) sysfsutils 43) systemd-sysvcompat 44) tar 45) texinfo 46) usbutils 47) util-linux 48) vi 49) which 50) xfsprogs Enter a selection (default=all):
Press enter to accept the default selection. The packages to be installed will then be displayed and a prompt to confirm the installation, as in the following:
resolving dependencies... looking for conflicting packages... warning: dependency cycle detected: warning: ncurses will be installed before its bash dependency Packages (123) acl-2.2.52-2 archlinux-keyring-20141218-1 attr-2.4.47-1 ca-certificates-20140923-9 ca-certificates-cacert-20140824-2 ca-certificates-mozilla-3.17.3-2 ca-certificates-utils-20140923-9 cracklib-2.9.1-1 curl-7.40.0-1 db-5.3.28-2 dbus-1.8.12-1 expat-2.1.0-4 gdbm-1.11-1 glib2-2.42.1-1 gmp-6.0.0-1 gnupg-2.1.1-1 gnutls-3.3.12-1 gpgme-1.5.3-1 groff-1.22.3-2 hwids-20141214-1 iana-etc-2.30-4 iptables-1.4.21-1 kbd-2.0.2-1 keyutils-1.5.9-1 kmod-19-1 krb5-1.13-1 libaio-0.3.110-1 libarchive-3.1.2-8 libassuan-2.1.3-1 libcap-2.24-2 libdbus-1.8.12-1 libffi-3.2.1-1 libgcrypt-1.6.2-1 libgpg-error-1.17-1 libidn-1.29-1 libksba-1.3.2-1 libldap-2.4.40-2 libpipeline-1.4.0-1 libsasl-2.1.26-7 libseccomp-2.1.1-1 libssh2-1.4.3-2 libsystemd-218-1 libtasn1-4.2-1 libtirpc-0.2.5-1 libunistring-0.9.4-1 libusb-1.0.19-1 libutil-linux-2.25.2-1 linux-api-headers-3.18.1-1 linux-firmware-20141201.38e5405-1 lz4-127-1 lzo-2.08-3 mkinitcpio-18-2 mkinitcpio-busybox-1.21.1-2 mpfr-3.1.2.p11-1 ncurses-5.9-7 nettle-2.7.1-1 npth-1.1-1 openresolv-3.5.7-2 openssl-1.0.1.k-1 p11-kit-0.22.1-3 pacman-mirrorlist-20150105-1 pam-1.1.8-5 pambase-20130928-1 pcre-8.36-2 pinentry-0.9.0-1 popt-1.16-7 pth-2.0.7-5 readline-6.3.006-1 systemd-218-1 thin-provisioning-tools-0.4.1-1 tzdata-2014j-1 xz-5.2.0-1 zlib-1.2.8-3 bash-4.3.033-1 bzip2-1.0.6-5 coreutils-8.23-1 cryptsetup-1.6.6-1 device-mapper-2.02.114-1 dhcpcd-6.6.7-1 diffutils-3.3-2 e2fsprogs-1.42.12-1 file-5.22-1 filesystem-2014.10-3 findutils-4.4.2-6 gawk-4.1.1-1 gcc-libs-4.9.2-2 gettext-0.19.3-1 glibc-2.20-6 grep-2.21-1 gzip-1.6-1 inetutils-1.9.2-2 iproute2-3.17.0-1 iputils-20121221-3 jfsutils-1.1.15-4 less-471-1 licenses-20140629-1 linux-3.18.2-2 logrotate-3.8.8-2 lvm2-2.02.114-1 man-db-2.7.1-1 man-pages-3.77-1 mdadm-3.3.2-1 nano-2.2.6-3 netctl-1.9-1 pacman-4.2.0-5 pciutils-3.3.0-1 pcmciautils-018-7 perl-5.20.1-1 procps-ng-3.3.10-1 psmisc-22.21-2 reiserfsprogs-3.6.24-1 s-nail-14.7.11-1 sed-4.2.2-3 shadow-4.2.1-2 sysfsutils-2.1.0-9 systemd-sysvcompat-218-1 tar-1.28-1 texinfo-5.2-3 usbutils-008-1 util-linux-2.25.2-1 vi-1:050325-4 which-2.20-7 xfsprogs-3.2.2-1 Total Download Size: 156.31 MiB Total Installed Size: 462.88 MiB :: Proceed with installation? [Y/n]
Press enter to proceed with the installation. Then the packages are downloaded and installed. You will now learn one of the most important rules of being an Arch user, which is that you must pay attention to the messages and warnings that are displayed during installation after all of the packages have been downloaded. During an initial installation pacman messages will only include a list of optional dependencies for a package as in
Optional dependencies for systemd python: systemd library bindings cryptsetup: required for encrypted block devices [pending] libmicrohttpd: remote journald capabilities quota-tools: kernel-level quota management systemd-sysvcompat: symlink package to provide sysvinit binaries [pending] polkit: allow administration as unprivileged user
If the message shows pending, the optional package has already been selected automatically for installation and will be installed in a later step. After the installation there will also be other types of messages, including informational messages and warnings that must be acted upon.
The next step will be to generate the /etc/fstab file for the new Arch system, which is done with:
sh-4.3# genfstab -p /mnt >> /mnt/etc/fstab
Next change root into the installed Arch. This is a chroot from a chroot environment.
sh-4.3# arch-chroot /mnt
Change the hostname. I chose the name V570-ARCH.
sh-4.3# echo V570-ARCH > /etc/hostname
At about this point in the normal installation guide, the network would be set up for the new Arch installation. It turns out that these steps can be skipped and all that will be required in this method for a working networking is to install a few network related packages and NetworkManager, in my opinion the best option of all those described in the Arch wiki for Network management. When the desktop environment is ultimately started after the installation, all network interfaces, including wireless will be available.
I then set the time zone. I am in the Eastern US so I set America/New_York. Arch suggests that the hardware clock be set to UTC, even if Windows is installed on the computer. Steps to set Windows to recognize that the hardware clock is set to UTC are available on the Arch wiki.
sh-4.3# ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
Set the system locale by editing the /etc/locale.gen file to uncomment the appropriate locale. For me this meant uncommenting en_US.UTF-8 UTF-8. An ISO locale encoding is also available in the file, but Arch recommends using the UTF encoding.
sh-4.3# nano /etc/locale.gen
Generate the locale.
sh-4.3# echo LANG=en_US.UTF-8 > /etc/locale.conf
Set the system language environment parameter.
sh-4.3# export LANG=en_US.UTF-8
Generate the inital ram disk with:
sh-4.3# mkinitcpio -p linux
With this step the system will be bootable, although with some other OSes bootloader or a rescue disk will be necessary since a bootloader has not been installed yet in Arch.
Create the root password with the following command, entering the desired password at the prompts.
At this point, the Arch Beginners Guide instructs setting up the bootloader, exiting the chroot environment and rebooting, which will start the newly installed Arch system in a console environment since not even the X server has been installed at this point. To avoid this, I decided to stay in the chroot environment and continue to install the X server, the networking packages, and a desktop environment, so that when I boot the system for the first time I would have a working desktop. I installed the bootloader much later from within the actual running Arch system which I booted into after updating GRUB on the Linux system I was performing this installation from.
Now might actually be a good time to add the first non-root user instead of when I did it later in the process, for reasons previously mentioned.
Install the Graphics Driver and the X Window System
The process up to this point installed a base system -- with only root as a user thus far -- except for a bootloader, which wasn't really necessary since I would initially use the GRUB of the installed system from which I was performing this Arch installation. What I really cared about at this point was installing a desktop environment that would be available to me when I did start the Arch system and having an easily configured working wireless connection. The steps I followed to do this, while still in the second level chrooted environment, are below.
One of the things that the process of installing Arch teaches a fairly inexperienced Linux user is the layers of components that make up a usable Linux system, although the details are hidden.
- A properly formatted root file system.
- The base system packages including the kernel and the very low level GNU tools.
- An /etc/fstab file that will list the block devices to be mounted at boot.
- Basic configuration of the system, including time and locale.
- An initial ram file system that will be started by the bootloader, that will then continue the rest of the OS startup process.
- User configuration.
Then the user sees the higher level layers, the first of which are those related to the X Window and graphics components.
The rest of the installation begins with installing the graphics driver which will install many components as dependencies. Since my system uses an integrated Intel graphics chip, I installed the intel driver.
sh-4.3# pacman -S xf86-video-intel
This will give the response shown in the following code block, with a prompt to select the provider that will satisfy a dependency. I chose the default because it is the closest to the core repository. (The three official repositories in Arch, in order of importance are the core, then extra, then community; the AUR is unofficial.)
resolving dependencies... :: There are 9 providers available for mesa-dri: :: Repository extra 1) mesa :: Repository community 2) i810-dri 3) mach64-dri 4) mga-dri 5) r128-dri 6) savage-dri 7) sis-dri 8) tdfx-dri 9) unichrome-dri Enter a number (default=1):
This will produce the following output, with a warning that a package will be installed before its dependency -- but this problem was taken care of by the subsequent installation -- and the list of packages to be installed, as below:
looking for conflicting packages... warning: dependency cycle detected: warning: libtxc_dxtn will be installed before its mesa dependency Packages (30) damageproto-1.2.1-3 elfutils-0.161-2 fixesproto-5.0-3 kbproto-1.0.6-2 libdrm-2.4.58-1 libomxil-bellagio-0.9.3-1 libpciaccess-0.13.2-2 libtxc_dxtn-1.0.1-5 libx11-1.6.2-2 libxau-1.0.8-2 libxcb-1.11-1 libxdamage-1.1.4-2 libxdmcp-1.1.1-2 libxext-1.3.3-1 libxfixes-5.0.1-1 libxshmfence-1.2-1 libxv-1.0.10-1 libxvmc-1.0.8-1 libxxf86vm-1.1.3-1 llvm-libs-3.5.1-1 mesa-10.4.2-1 pixman-0.32.6-1 videoproto-2.3.2-1 wayland-1.6.0-1 xcb-proto-1.11-1 xcb-util-0.4.0-1 xextproto-7.3.0-1 xf86vidmodeproto-2.3.1-3 xproto-7.0.27-1 xf86-video-intel-2.99.917-1 Total Download Size: 19.46 MiB Total Installed Size: 89.54 MiB :: Proceed with installation? [Y/n]
During the installation the following message is displayed -- an example of some of the useful messages to observe when installing or updating packages.
>>> This driver uses SNA as the default acceleration method. You can fall back to UXA if you run into trouble or test experimental Glamor acceleration. To do so, save a file with the following content as /etc/X11/xorg.conf.d/20-intel.conf : Section "Device" Identifier "Intel Graphics" Driver "intel" Option "AccelMethod" "sna" #Option "AccelMethod" "uxa" #Option "AccelMethod" "glamor" EndSection Optional dependencies for xf86-video-intel libxrandr: for intel-virtual-output libxinerama: for intel-virtual-output libxcursor: for intel-virtual-output libxtst: for intel-virtual-output
Install the other packages related to the video driver.
sh-4.3# pacman -S mesa-libgl
sh-4.3# pacman -S libva-intel-driver libva
Install the X Window system.
sh-4.3# pacman -S xorg-server xorg-server-utils xorg-apps
You will be presented with a choice of which components of the xorg-apps to install. The default is all, so press enter to accept the defaults, which is what I did. There will be a warning in the output, shown below, that a package is installed before a dependency. In this case it is not a problem that causes pacman to fail, but like in the previous instance, occurs because so many low level packages are being installed at the same time and because, I think, this package manager is not atomic.
resolving dependencies... looking for conflicting packages... warning: dependency cycle detected: warning: harfbuzz will be installed before its freetype2 dependency Packages (84) compositeproto-0.4.2-3 dmxproto-2.3.1-3 fontconfig-2.11.1-1 fontsproto-2.1.3-1 freetype2-2.5.5-1 graphite-1:1.2.4-1 harfbuzz-0.9.37-1 inputproto-2.3.1-1 libdmx-1.1.3-1 libepoxy-1.2-2 libevdev-1.3.2-1 libfontenc-1.1.2-1 libice-1.0.9-1 libpng-1.6.16-1 libsm-1.2.2-2 libxaw-1.0.12-1 libxcomposite-0.4.4-2 libxcursor-1.1.14-2 libxfont-1.5.0-1 libxft-2.3.2-1 libxi-1.7.4-1 libxinerama-1.1.3-2 libxkbfile-1.0.8-2 libxmu-1.1.2-1 libxpm-3.5.11-1 libxrandr-1.4.2-2 libxrender-0.9.8-1 libxt-1.1.4-1 libxtst-1.2.2-1 libxxf86dga-1.1.4-1 mcpp-2.7.2-5 mtdev-1.1.5-1 randrproto-1.4.0-2 recordproto-1.14.2-2 renderproto-0.11.1-3 xf86-input-evdev-2.9.1-1 xf86dgaproto-2.1-3 xineramaproto-1.2.1-3 xkeyboard-config-2.13-1 xorg-font-util-1.3.0-2 xorg-font-utils-7.6-4 xorg-fonts-alias-1.0.3-1 xorg-fonts-encodings-1.0.4-4 xorg-fonts-misc-1.0.3-2 xorg-server-common-1.16.3-2 xorg-bdftopcf-1.0.5-1 xorg-iceauth-1.0.7-1 xorg-luit-1.1.1-2 xorg-mkfontdir-1.0.7-2 xorg-mkfontscale-1.1.2-1 xorg-server-1.16.3-2 xorg-server-utils-7.6-4 xorg-sessreg-1.0.8-2 xorg-setxkbmap-1.3.0-2 xorg-smproxy-1.0.5-2 xorg-x11perf-1.5.4-2 xorg-xauth-1.0.9-1 xorg-xbacklight-1.2.1-1 xorg-xcmsdb-1.0.4-2 xorg-xcursorgen-1.0.6-1 xorg-xdpyinfo-1.3.1-1 xorg-xdriinfo-1.0.4-4 xorg-xev-1.2.1-2 xorg-xgamma-1.0.5-2 xorg-xhost-1.0.6-1 xorg-xinput-1.6.1-1 xorg-xkbcomp-1.3.0-1 xorg-xkbevd-1.1.3-2 xorg-xkbutils-1.0.4-2 xorg-xkill-1.0.4-1 xorg-xlsatoms-1.1.1-2 xorg-xlsclients-1.1.3-1 xorg-xmodmap-1.0.8-1 xorg-xpr-1.0.4-2 xorg-xprop-1.2.2-1 xorg-xrandr-1.4.3-1 xorg-xrdb-1.1.0-1 xorg-xrefresh-1.0.5-1 xorg-xset-1.2.3-1 xorg-xsetroot-1.1.1-2 xorg-xvinfo-1.1.2-2 xorg-xwd-1.0.6-1 xorg-xwininfo-1.1.3-1 xorg-xwud-1.0.4-2 Total Download Size: 13.61 MiB Total Installed Size: 42.86 MiB :: Proceed with installation? [Y/n]
Press enter to proceed with the installation.
Install the Desktop Environment
Now that the base system, the graphics driver, and the X Window system had been installed, I installed my second or third favorite desktop environment, Xfce. I believe installing the desktop before creating a non-root user was a mistake, as it may have been the cause of error messages regarding the Xfce panel when I logged on for the first time as a regular user. I would suggest making your regular users before installing the desktop as I did later in the process outlined here.
Install your desktop of choice. On Arch, installing Xfce, requires two package groups.
sh-4.3# pacman -S xfce4 xfce4-goodies
Since xfce4 is a package group, like meta packages in some distributions and a pattern in openSUSE, Arch's pacman will ask which members of the group to install.
:: There are 18 members in group xfce4: :: Repository extra 1) exo 2) garcon 3) gtk2-xfce-engine 4) gtk3-xfce-engine 5) thunar 6) thunar-volman 7) tumbler 8) xfce4-appfinder 9) xfce4-mixer 10) xfce4-panel 11) xfce4-power-manager 12) xfce4-session 13) xfce4-settings 14) xfce4-terminal 15) xfconf 16) xfdesktop 17) xfwm4 18) xfwm4-themes Enter a selection (default=all):
Press enter to accept the default. Pacman will also ask the same question for the xfce4-goodies group.
:: There are 35 members in group xfce4-goodies: :: Repository extra 1) mousepad 2) orage 3) thunar-archive-plugin 4) thunar-media-tags-plugin 5) xfburn 6) xfce4-artwork 7) xfce4-battery-plugin 8) xfce4-clipman-plugin 9) xfce4-cpufreq-plugin 10) xfce4-cpugraph-plugin 11) xfce4-datetime-plugin 12) xfce4-dict 13) xfce4-diskperf-plugin 14) xfce4-eyes-plugin 15) xfce4-fsguard-plugin 16) xfce4-genmon-plugin 17) xfce4-mailwatch-plugin 18) xfce4-mount-plugin 19) xfce4-mpc-plugin 20) xfce4-netload-plugin 21) xfce4-notes-plugin 22) xfce4-notifyd 23) xfce4-quicklauncher-plugin 24) xfce4-screenshooter 25) xfce4-sensors-plugin 26) xfce4-smartbookmark-plugin 27) xfce4-systemload-plugin 28) xfce4-taskmanager 29) xfce4-time-out-plugin 30) xfce4-timer-plugin 31) xfce4-verve-plugin 32) xfce4-wavelan-plugin 33) xfce4-weather-plugin 34) xfce4-xkb-plugin :: Repository community 35) ristretto Enter a selection (default=all):
Again, accept the default.
Next install the audio components.
sh-4.3# pacman -S alsa-utils alsa-plugins
sh-4.3# pacman -S libpulse
I configured the first non-root user next. As stated before, I learned the hard way that I should have installed this before installing the desktop environment.
sh-4.3# useradd -m -G wheel -s /bin/bash brook
The option -G wheel will make the user an administrator. After entering the command, follow the prompts to set the password.
Next, I installed the display manager, SDDM. I chose SDDM because I planned to install KDE Plasma 5 later and that is the preferred display manager for the future of KDE.
sh-4.3# pacman -S sddm
Set the hardware clock to UTC with:
sh-4.3# hwclock --systohc --utc
I unknowingly used
sh-4.3# hwclock --systohc --localtime
to configure the hardware clock for use in the Arch, setting the hardware clock to local time. I later changed it to UTC using timedatectl after learning how to deal with Windows and the hardware clock being set to UTC. It is recommended to set the hardware clock to UTC on all of the installed OSes on the computer, including Windows. The Arch wiki shows how to do this on Windows and avoid problems. I think this is especially important if any of the OSes use btrfs which caused me some problems on openSUSE 13.2 until I realized not setting all of the installed OSes to UTC was the problem. Read my openSUSE 13.2 review and the guide on btrfs/Snapper to see why this was important for using btrfs.
Installing Networking Components
At this point in the process, everything except the needed networking components and the bootloader were installed.
I then installed the necessary components for networking.
pacman -S iw
pacman -S wpa_supplicant
pacman -S networkmanager
This last package is very important as when you boot into the new Arch installation, it will have networking, including wireless, automatically configured and ready to go. I performed this installation process at a public hotspot and was pleasantly surprised that when I booted into the new Arch installation and clicked on Xfce's Network Manager applet, the available wireless networks were visible and that I could connect to them. Installing these three packages, when following this process was all that was required to configure the working network. Compare this to the procedures and options discussed in the sections of the Arch installation guides pertaining to networking.
GRUB Bootloader for EFI
When I installed Arch using the above process, I didn't install a bootloader because I chose to use openSUSE's GRUB installation. I booted into the new Arch installation by updating openSUSE's GRUB, rebooted, and in the new GRUB menu chose Arch. I did install Arch's GRUB bootloader eventually.
To install GRUB for an EFI/UEFI system -- an EFI/UEFI system has an EFI System partition used to store the firmware bootloader and uses an EFI/UEFI firmware instead of the traditional BIOS -- do the following before exiting the arch-chroot environment,
Install the grub package.
pacman -S grub
Install the bootloader into the EFI partition.
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch --recheck
/boot/efi was chosen as the mount point for the EFI partition early in this process after changing to the arch-chroot environment. An installation of GRUB into the EFI System partition and into the firmware, as this command does will, at least on my hardware will make this the default GRUB bootloader, and will be used when the system reboots. You can change the order of bootloaders used by entering the EFI/UEFI setup when first powering on the computer. Also see my guides on GRUB and the EFI System Partition.
Update the GRUB configuration.
grub-mkconfig -o /boot/grub/grub.cfg
For anyone who is interested in installing Arch, this method saves a lot of time and frustration. As you saw in the steps outlined above there was no configuration of the network, other than installation of several packages. One of the packages networkmanager which provides the NetworkManager service takes care of everything autmatically, obviating one of the most difficult parts of installing Arch from the normal installation environment.