Some notes on installing Arch Linux

Duc A. Hoang 26 May 2018 12 Jun 2018 linux

Install Arch Linux

The official Arch Linux can be downloaded from https://www.archlinux.org/download/. If you are new to Arch Linux, it is better to install Anarchy-Linux. The installation guide can be found at https://wiki.archlinux.org/index.php/installation_guide. Here, I describe how I install Arch Linux to my ASUS X44H laptop.

Create live USB of Arch Linux

I download the latest ISO from https://www.archlinux.org/download/ and create a live USB with that iso file. In a Linux system, you can use the dd command

dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

In a Windows system, my recommendation is Rufus. You can also remaster the install ISO.

Keyboard

I have the default console keymap (i.e., US), so I do not need to re-configure the keyboard layout. To list all available layouts, use

ls /usr/share/kbd/keymaps/**/*.map.gz

To set a layout, use loadkeys command.

Boot mode

To verify if your computer supports UEFI, use

ls /sys/firmware/efi/efivars 

If the directory does not exist, your computer does not support UEFI. In fact, my computer supports BIOS boot mode.

Internet connection

If you connect to the internet using wired network devices (as I do) then you can verify the connection (which is enabled on boot by the installation image) using ping command. See this page for more details on how to configure a network connection.

Time settings

Use the command

timedatectl set-ntp true

to ensure the system clock is accurate.

Disk partitions

The command fdisk -l lists all available storage devices and its partitions. Suppose that I install the system in /dev/sda. To create/delete/re-size a partition in a storage device, I use cfdisk (DOS partition tables). I created three partitions for /, /home, and swap. It is recommended that if you have less than 1GB RAM then you should spend 1GB for swap, if you have 2-4GB RAM then you should spend half of the size of RAM for swap, and otherwise you should spend 2GB for swap. To format a partition, use the command mkfs.filsystem_type /dev/sdax, here filesystem_type can be ext2, ext4, jfs, etc., and /dev/sdax is the partiton number. You should also format and enable the swap partition with the mkswap and swapon commands.

Mount the system

For example,

  • Mount the root partition (mount point /) at /mnt.
  • Create /mnt/home for mounting the home partition (mount point /home).
  • I have Windows OS installed in a partition, so I create /mnt/windows directory for mounting the partition.

Basic packages

pacstrap /mnt base base-devel

Generate a fstab file

A fstab file defines how disk partitions, block devices or remote file systems are mounted into the filesystem.

genfstab -U /mnt >> /mnt/etc/fstab

The option -U indicates defining by UUID. To define by labels, use option -L.

Configure new system

Change root into the new system with

arch-chroot /mnt

Set timezone

ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc # generate /etc/adjtime

Locale

Uncomment en_US.UTF-8 UTF-8 and other needed localizations in /etc/locale.gen, and generate them with:

locale-gen

Set the LANG variable in /etc/locale.conf accordingly, for example LANG=en_US.UTF-8.

Hostname

Create /etc/hostname file

echo my_hostname > /etc/hostname

and matching entries to /etc/hosts

127.0.0.1 localhost
::1 localhost
127.0.1.1 my_hostname.localdomain my_hostname

Initramfs

I modify /etc/mkinitcpio.conf by changing

HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)

into

HOOKS=(base udev autodetect modconf block filesystems keyboard fsck shutdown)

and recreate the initramfs image with

mkinitcpio -p linux

If you get the warning

==> WARNING: Possibly missing firmware for module: wd719x
==> WARNING: Possibly missing firmware for module: aic94xx

then simply install the wd719x-firmware and aic94xx-firmware packages and run mkinitcpio -p linux again.

Users

To change root password, use passwd command. To create a new user, use useradd command. For example,

useradd -m -g users -G audio,lp,optical,storage,video,wheel,games,power,scanner -s /bin/bash user

See this page for more details.

Boot loader

My ASUS laptop has Intel(R) Pentium(R) CPU B950 @ 2.10GHz (use cat /proc/cpuinfo to show CPU info), so I need to first install intel-ucode package using

pacman -S intel-ucode

I also have Windows partition, so I need os-prober package.

pacman -S os-prober

I also edit /etc/default/grub by changing

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

into

GRUB_CMDLINE_LINUX_DEFAULT=""

Now, I can run the grub installation using

grub-install /dev/sda

and finally generate the grub configuration file

grub-mkconfig -o /boot/grub/grub.cfg

Reboot

Exit the chroot environment by typing exit or press Ctrl+D. Unmount all the partitions with umount -R /mnt. Type reboot to restart the system. Remove the installation media and then login into the new system with the root account.

Some necessary packages

Desktop Environments

sudo pacman -S gnome gnome-extra gnome-flashback cinnamon

Theme

yaourt -S arc-gtk-theme paper-icon-theme

SoftMaker FreeOffice 2018

Download from http://www.freeoffice.com/en/download. You need to register to get a product key (free of charge). Let say you download softmaker-freeoffice-2018-931-amd64.tgz, then the installation steps are

tar -xvzf softmaker-freeoffice-2018-931-amd64.tgz
sudo ./installfreeoffice

For more information, see this page.

Packer/Yaourt/Pamac

In Arch Linux, users can add and install their favorite packages from AUR, aka Arch User Repository via the pacman package manager. Since AUR contains about 44,000 packages, for most of them, one need to manually download, check, and install. This is where packer or yaourt come in handy. Here is how I install yaourt. (The original guide is here).

sudo pacman -S --needed base-devel git wget yajl
git clone https://aur.archlinux.org/package-query.git
cd package-query
makepkg -si
cd ..
git clone https://aur.archlinux.org/yaourt.git
cd yaourt
makepkg -si
cd ..
sudo rm -dR yaourt/ package-query/

If you need a GUI, install pamac-aur.

Downgrade

Install the downgrade package using yaourt. This package helps you install some previous version of a current package, which is very useful in case of conflicted dependencies. If you want a specific version of a package, say netpbm-10.73-1-x86_64.pkg.tar.xz (a dependency for latex2html), you can go to https://archive.archlinux.org/packages/ to look for the package at https://archive.archlinux.org/packages/n/netpbm and install using

sudo pacman -U https://archive.archlinux.org/packages/n/netpbm/netpbm-10.73-1-x86_64.pkg.tar.xz

(Vanilla) TeXLive 2017

There is no trouble installing Vanilla TeXLive, but I want to add some note: Install texlive-dummy via yaourt in order to tell pacman that you’ve already installed TeXLive. You can also install TeXLive using

sudo pacman -S texlive-most texlive-lang texmaker

LaTeX2HTML

If you use perl >= 5.26.0, you need a workaround: add PERL5LIB=$PERL5LIB:.; export PERL5LIB to /etc/bash.bashrc. The reason is that LaTeX2HTML uses module cfgcache.pm from the installation directory, but since version 5.26.0, perl no longer includes the current directory in @INC path (see this page).

pdf2htmlEX

To compile and install pdf2htmlEX, I use poppler version 0.59.0-1, fontforge version 20141126-3, together with the pdf2htmlex-git package. One can also install poppler from source as follows.

sudo pacman -S poppler-data
wget https://poppler.freedesktop.org/poppler-0.59.0.tar.xz
tar -xvf poppler-0.59.0.tar.xz
cd poppler-0.59.0/
./configure --prefix=/usr --enable-xpdf-headers
make
sudo make install

If you get the error

[ 94%] Linking CXX executable pdf2htmlEX
/usr/bin/ld: warning: libreadline.so.6, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../lib/libfontforge.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libzmq.so.4, needed by /usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../lib/libfontforge.so, not found (try using -rpath or -rpath-link)
/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../lib/libfontforge.so: undefined reference to `readline'
/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/../../../../lib/libfontforge.so: undefined reference to `add_history'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/pdf2htmlEX.dir/build.make:580: pdf2htmlEX] Error 1
make[1]: *** [CMakeFiles/Makefile2:356: CMakeFiles/pdf2htmlEX.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

and you have readline >= 7.0.005-1 and zeromq >= 4.2.2-2 then create symbolic links

sudo ln -s /usr/lib/libreadline.so.7.0 /usr/lib/libreadline.so.6
sudo ln -s /usr/lib/libzmq.so.5.1.2 /usr/lib/libzmq.so.4

Tor Browser

When I installed tor-browser (via yaourt), the following error occurred

tor-browser-linux64-7.0.8_en-US.tar.xz ... FAILED (unknown public key D1483FA6C3C07136)

To fix this, simply import the missing PGP key, as follows.

gpg --recv-keys D1483FA6C3C07136

VMWare Horizon Client

yaourt -S openssl098 vmware-horizon-client

Foxit Reader

git clone https://aur.archlinux.org/gstreamer0.10.git
cd gstreamer0.10
makepkg -si
cd ..
git clone https://aur.archlinux.org/gstreamer0.10-base.git
cd gstreamer0.10-base
makepkg -si
cd ..
git clone https://aur.archlinux.org/foxitreader.git
cd foxitreader
makepkg -si
cd ..
rm -r gstreamer0.10 gstreamer0.10-base foxitreader

Some other packages

A non-exhaustive list of packages I installed are:

tlp lsb-release smartmontools ethtool
ibus ibus-unikey ibus-anthy guake firefox thunderbird google-chrome
gparted testdisk partimage xfsprogs reiserfsprogs jfsutils ntfs-3g dosfstools mtool
ssh subversion git mercurial gufw filezilla clamav openvpn
unace unrar unzip zip lrzip p7zip sharutils rar uudeview mpack arj cabextract file-roller
goldendict pdfshuffler calibre djview shutter shotwell cups cups-pdf system-config-printer
vlc mplayer
dropbox-cli nautilus-dropbox skypeforlinux-stable-bin telegram-desktop messengerfordesktop
ipe zotero

For a recommendation, see this page or this page. See this page for a list of available applications.

Resolving issues

Accessing JAIST or eduroam wifi

JAIST provides two wireless network services with SSIDs JAIST and eduroam. The instruction is for Windows, MacOS X, and Android. I figure that it can also be used for Arch Linux (and maybe some other Linux distribution). Basically, the wifi security information for accessing these wifi SSIDs (I use NetworkManager for managing network connection) is as follows.

  • Security type : WPA & WPA2 Enterprise

  • Authentication : TLS

  • Identity : [Your JAIST account]@jaist.ac.jp (for students, sXXXXXXX@jaist.ac.jp)

  • Domain : [Leave it empty]

  • CA certificate : Use the file /etc/ssl/ca-certificates.crt (make sure that the package ca-certificates-utils is installed)

  • User certificate : Use the digital certificate provided from JAIST

  • User private key : Use the digital certificate provided from JAIST

  • User key password : [Your password for reading the provided digital certificate]

Note: Put your digital certificate in some place where the path to it contains no file/folder whose name containing blank space.

Anjuta opens my folders

To fix this, use the command

xdg-mime default org.gnome.Nautilus.desktop inode/directory