# 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 Manjaro Linux or 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

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

To set a layout, use loadkeys command.

## Boot mode

To verify if your computer supports UEFI, use

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

## 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

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

I also want to use wifi-menu in my newly installed system, so I also use:

## Generate a fstab file

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

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

## Configure new system

### Set timezone

For Vietnamese, the Region is Asia, and the City is Ho_Chi_Minh.

### Locale

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

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

### Hostname

Create /etc/hostname file

and matching entries to /etc/hosts

### Initramfs

I modify /etc/mkinitcpio.conf by changing

into

and recreate the initramfs image with

### Users

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

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

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

I also edit /etc/default/grub by changing

into

Now, I can run the grub installation using

and finally generate the grub configuration file

## 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.

# Packages and Configuration

## Time Setting

To avoid time display error between Arch Linux and Windows, use

## 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).

If you need a GUI, install pamac-aur.

Update (2018-11-14): Both packer and yaourt are outdated and discontinued. Use yay (yet another yogurt) instead.

## Enable GDM

To enable GDM (GNOME Display Manager), use

## Oracle Java & Eclipse

As eclipse-java and eclipse-cpp are in conflict, to use C/C++ Development Tools, I install CDT 9.5.5 for Eclipse Photon and 2018-09 in eclipse-java by choosing Help > Install New Software..., add the CDT repository http://download.eclipse.org/tools/cdt/releases/9.5, and install the CDT Main Features and CDT Optional Features.

## 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

If you want to uninstall FreeOffice 2018, you can just simply run /usr/bin/uninstall_smfreeoffice2018. For more information, see this page.

## Missing Firmware

When running mkinitcpio -p linux, if you get the warning

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

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

## (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

## 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 and poppler-glib version 0.59.0-1, fontforge version 20141126-3, together with the pdf2htmlex-git package.

One can also install poppler from source

and fontforge from the GitHub repository https://github.com/coolwanglu/fontforge

Then, edit the newly created file configure by finding the lines (~ line 18431)

and replace the first python in for am_cv_pathless_PYTHON in python python2 python3 with python2.7.

Then

If you get the error

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

## Tor Browser

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

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

## IPE extensible drawing editor

I often use IPE for drawing graphs in my papers. To install IPE in Arch Linux, you can just simply use yaourt -S --needed --noconfirm ipe (assuming you’ve already installed yaourt). Several useful tools (pdftoipe, figtoipe, ipe5toxml, svgtoipe) for IPE can be found in the ipe-tools-git package. I also use the ipelet ipe2tikz to export IPE pictures to TikZ code. One thing you may want to remember when using the generated TikZ pictures is how to scale your TikZ picture to fit the paper size. Several other useful ipelets are also available. Finally, for convenience, I also create the file /usr/share/applications/ipe.desktop and make it executable.

## pass password manager

If you get the error

then run

One can also install the latest pass-import from its GitHub repository as follows

See this page for a guide on how to use pass with docker.

## Some other packages

A non-exhaustive list of packages I installed (using yaourt) are:

## List of installed packages

Keeping a list of installed packages is useful when you want to speed up installation on a new system or backup a working system. The command

generates a list of installed packages (including packages from AUR). The command

One can also use the reflector package for retrieving and filtering the latest Pacman mirror list. See pacman/Tips and tricks for more information.

# 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

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

## Using JAIST SSL-VPN

JAIST also provides an SSL-VPN gateway system. In Arch Linux, I download F5 Linux CLI (command line interface) Edge Client Installer (file linuxsslvpn.gz) and install as follows.

To use JAIST SSL-VPN, from the Terminal, you can use the command

You will have to input your password for reading your digital certificate (provided from JAIST), your username (for student, sXXXXXXX), and the password of your JAIST’s account. After you successfully start the connection, you can use f5fpc --info to check the connection status. At the time of writing this post, JAIST provides two VPN networks /Common/jaist-vpn1-na and /Common/jaist-vpn2-na (as shown when using f5fpc --info). The vpn1 only passes accesses to JAIST through VPN, while vpn2 passes all accesses through VPN.

To use, say vpn2, you can use the command

To stop using JAIST SSL-VPN, use the command

## Anjuta opens my folders

To fix this, use the command

## Visual Studio Code (VS Code) opens my folders

After installing VS Code (visual-studio-code-bin), anything opened using the “Places” extension in GNOME opens VS Code instead of the default folder/path (as described here). To resolve this issue, I simply add the lines

to ~/.config/mimeapps.list (or just the second line if [Default Applications] already exists).

## Auto reconnect Bluetooth devices at boot

The original instruction is available here.

• Enable bluetooth service: sudo systemctl enable bluetooth.service.
• Set bluetooth adapter to automatically power on: edit /etc/bluetooth/main.conf and set AutoEnable=true.
• Set paired devices as trusted: Type bluetoothctl, it will open a new console. In that console, type trust XX:XX:XX:XX:XX:XX for each paired device (replace XX... with mac address).

## Pairing bluetooth devices on dual boot of Windows and Linux

Recently, I’ve bought a HP X4000b Bluetooth Mouse and having trouble when I have to re-pair the device again and again every time I switch between Arch Linux and Windows 10. Luckily, I found this instruction. I describe the steps here.

• Pair all Bluetooth devices with Arch Linux.
• Pair all Bluetooth devices with Windows 10.
• Copy the Windows pairing keys
• Install chntpw using sudo pacman -S --needed --noconfirm chntpw.
• Mount Windows system drive.
• cd /[windowsSystemDrive]/Windows/System32/config.
• chntpw -e SYSTEM opens up a console. Run the following commands in that console.
• Make a note of which Bluetooth device MAC address matches which paring key. In Arch Linux, we won’t need the spaces in-between. Ignore the :00000.
• Add the windows key to Linux config entries.
• Switch to root su -.
• cd to your bluetooth config location /var/lib/bluetooth/[bth port mac addresses)].
• Here you’ll find folders for each device you’ve paired with. The folder names being the Bluetooth devices mac address and contain a single file info. In these files, you’ll see the link key you need to replace with your windows ones like so.
• Once updated, restart the bluetooth service sudo systemctl restart bluetooth.

• Note: If you Pair all Bluetooth devices with Windows 10 first, and then with Arch Linux, then the key for all systems should be the key of the last system the devices were paired, which is Arch Linux in this case.

## GnuPG

### Missing PGP keys when installing gnupg1

If you get the error

when installing gnupg1 then you can import the missing keys with the command

### Remove passphrase of a secret key

Let say you want to remove the passphrase of a secret key named PGP-key.asc.

Then, type passwd in the gpg> command prompt, enter the old passhrase of the imported PGP key, and press Enter for the new passhrase. Answer y when you were asked You don't want a passphrase - this is probably a *bad* idea! Do you really want to do this? (y/N). Finally, type save to save the result and exit the command prompt.