---
title: How to install Arch Linux
tags:
  - linux
  - tutorial
date: 2018-03-15 17:21:22
---

Today I’m going to instruct you through the steps of installing your own Arch Linux system.
<!-- more -->

## Download the ISO

You can find the [downloads for Arch Linux by clicking here](https://www.archlinux.org/download/).

## 1. Partition the drive

Determine your drive name by running `lsblk`. Run the following command to start the partitioning (with `/dev/sda` replaced by your drive):

```
# fdisk /dev/sda
```

1.  Enter `n` to create a new partition.
2.  Press Enter on the following prompts to accept the defaults.
3.  Enter `w` to write your changes to the disk.

## 2. Create the File System and mount it

Next, you need to create a filesystem on the partition that you’ve made. After you’ve created the filesystem, you can mount it.

```
# mkfs.ext4 /dev/sda1
# mount -t ext4 /dev/sda1 /mnt
```

## 3. Install Arch Linux system

This is maybe the most important step in the progress. This is the step where you are actually installing the system. For that, you need to run `pacstrap` followed by the packages you want to install. In this case, we’ll install `base` and `grub` for the bootloader.

```
# pacstrap -i /mnt base grub
```

## 4. Generate File System Tab

The file `fstab` contains descriptive information about the filesystems the system can mount.

```
# genfstab -U -p /mnt >> /mnt/etc/fstab
```

## 5. Enter the system via `chroot`

Now, we’re ready to set up the system by going inside it. For this, we’ll be running `arch-chroot`. **Do NOT reboot at this stage!**

```
# arch-chroot /mnt /bin/bash
```

## 6. Setting up locales

Locales are basically the language files your system will be using.

```
# nano /etc/locale.gen
 Uncomment line en_US.UTF-8 UTF-8
 Uncomment line en_US ISO-8859-1

(uncomment by removing the `#` in front)
```

After that, you have to generate the locale files.

```
# locale-gen
```

And then put them into effect on the system.

```
# echo LANG=en_US.UTF-8 > /etc/locale.conf
# export LANG=en_US.UTF-8
```

## 7. Setting the timezone

All timezone files can be found in `/usr/share/zoneinfo/`. You need to create a link to `/etc/localtime` with the timezone you want.

```
# ln -s /usr/share/zoneinfo/LOCATION/CITY /etc/localtime
```

## 8. Set the hardware clock

This command sets the hardware clock from system time. `--utc` implies that your hardware clock is in the UTC timezone. More information [here](https://wiki.archlinux.org/index.php/Time#Hardware_clock)

```
# hwclock --systohc --utc
```

## 9. Set your system’s hostname

This can be anything you want.

```
# echo "my-computer" > /etc/hostname
```

## 10. Set up simple networking

Before you do the following, please run `ip a` to determine your interface. It’s generally called `eth0`, but it may be different on some machines.

1.  Copy the example

```
# cp /etc/netctl/examples/ethernet-dhcp /etc/netctl/my_network
```

2.  Modify the interface name

```
# nano /etc/netctl/my_network
    Replace the "Interface=eth0" line with the one shown by the "ip a" command.
```

3.  Enable the network

```
# netctl enable my_network
```

## 

Setting a password on your root user is highly recommended. You can do that now by running `passwd`

## 

You can find information on how to install GRUB on various systems on the [Arch Linux Wiki](https://wiki.archlinux.org/index.php/GRUB). The following is a simple installation on a system with a **BIOS** (not **UEFI**). You can find more boot loaders [here](https://wiki.archlinux.org/index.php/Category:Boot_loaders).

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

## 13. Reboot the machine

You are now ready to boot into your new system.

```
# exit
# umount /mnt
# shutdown
```

After shutting down, remove the disk image and boot the system again. **You can now use your newly installed system!**

# More things to do

## Creating an user account

The first user you create should also be added to the `wheel` group. This will be kind of like an administrator.

```
# useradd -m -G wheel -s /bin/bash usernamehere
# passwd usernamehere
```

For creating other users, you should omit the `-G wheel` part unless you want them to be able to use `sudo`.

### Enabling `sudo`

1.  Install sudo - `# pacman -S sudo`
2.  Create a file in `/etc/sudoers.d/99-wheel` with the following lines:

```
%wheel ALL=(ALL) ALL
```

If you want the `wheel` group to be able to use sudo without password, you can replace the last `ALL` with `NOPASSWD: ALL`.

## Installing a Desktop Environment

Firstly, you should install `xorg` packages.

```
# pacman -S xorg-server xorg-xinit xorg-server-utils mesa xterm
```

For graphics drivers, you can look at the wiki: [Intel](https://wiki.archlinux.org/index.php/Intel_graphics), [ATI](https://wiki.archlinux.org/index.php/ATI), [AMD](https://wiki.archlinux.org/index.php/AMDGPU) and [NVIDIA](https://wiki.archlinux.org/index.php/NVIDIA).

**You can find packages for various desktop environments [here](https://wiki.archlinux.org/index.php/Desktop_environment).**

### Install `lightdm`

Some desktop environments don’t have a system to log you in to a session. This is where `lightdm` comes to play.

```
# pacman -S lightdm lightdm-gtk-greeter
# systemctl enable lightdm.service
```

You can find lightdm configuration at `/etc/lightdm/lightdm.conf`.

After you’ve installed what you want, you can reboot the system and it should either load up the desktop environment or the `lightdm-gtk-greeter`, which will allow you to select a desktop environment to log in to.

## Keeping your system up-to-date

You should keep your system up-to-date to get the latest packages and security patches. Arch Linux is a **rolling release** distribution, meaning that you don’t have to reinstall the entire system and package updates are rolled separately instead of in bundles.

```
# pacman -Syu
```

This command synchronizes your system with the latest repositories and installs all available updates.

# That’s it!

This should be your basic Arch Linux system ready to go! Always remember that the [Arch Linux Wiki](https://wiki.archlinux.org/) is a great place to find help for all things Linux, not just Arch!
