The following steps are what I did to install Arch linux on my Asus laptop and many other devices. The Beginners Install Guide is much more in-depth and explains some other features like MBR installs, full and partial disk encryption, and the GRUB boot loader.
Bootable Arch Media:
You can grab the latest ISO from here. I always grab one from one of the US mirrors, but they have a Torrent file as well.
Now lets create the install media:
# sudo dd bs=512 if=/location/of/your/iso_file of=/dev/sdx && sync
- This will take about 5 minutes to complete, but it will depend on the quality of the flash media.
Boot to the USB drive that you just created, and select the first boot option.
After the OS environment boots, take a look at the connected devices and determine where you will be installing Arch. If you know how large your target drive is, determining which device to use should be fairly straight forward.
If you are connect to your network via Ethernet, then downloading packages shouldn't be a problem, but if you need to connect to a wifi network, here are the commands to get you going:
Run ip addr to get the name of the wireless interface. It will be something like "wlp2s0"
# ip addr
Next, use the following command to list the available wifi networks:
# wifi-menu -o <wireless_nic_id>
Update the System Clock:
Update the system clock to ensure that it is up-to-date:
# timedatectl set-ntp true
Recall the device name that you found from the lsblk command from earlier. We are now going to partition the hard drive to get it ready for the file system that we will be creating. I will be creating a GPT partition table with 2 partitions. One for boot drive that will be formatted with FAT32 for UEFI BIOS setup and another larger drive that will be formatted with ext4. The larger partition will be used to create 3 Logical volumes or LVMs. One for Root, one for swap, and the last for the home directory.
# parted /dev/sdx (parted) mklabel gpt (parted) mkpart ESP fat32 1MiB 512MiB (parted) set 1 boot on (parted) mkpart primary ext4 513MiB 100% (parted) print (parted) quit
Run the lsblk command again to see your newly created partitions, and take note of the drive lettering now that you have created two partitions.
Create the Physical Volume using the following command:
# pvcreate /dev/sdax
Create the Volume Group with the following command:
# vgcreate <VolumeName_of_your_choice> /dev/sdax
Create the logical volumes that we mentioned earlier (root, swap, and home):
# lvcreate -L 30G examplevg -n rootlv # lvcreate -L 4G examplevg -n swaplv # lvcreate -l +100%FREE examplevg -n homelv
If you want to display the different volumes that you just created:
# pvdisplay # vgdisplay # lvdisplay
Create the File System & Enable Swap:
Use lsblk again to see how the LVMs are named.
Now lets create the file system:
# mkfs.ext4 /dev/mapper/examplevg-rootlv # mkfs.ext4 /dev/mapper/examplevg-homelv # mkfs.fat -F32 /dev/sda1 # mkswap /dev/mapper/examplevg-swaplv # swapon /dev/mapper/examplevg-swaplv # mount /dev/mapper/examplevg-rootlv /mnt # mkdir /mnt/boot # mount /dev/sda1 /mnt/boot # mkdir /mnt/home # mount /dev/mapper/examplevg-homelv /mnt/home
Edit the Mirror List:
The mirror list is how Arch knows where to look for packages and updates to install.
# vim /etc/pacman.d/mirrorlist Uncomment (remove the #) from the lines relevant to our country. If the mirrors are already uncommented, move the one(s) that you want to use to the top of the list. You technically don't have to edit anything if you don't want to. Save the file and exit
Install the Base Packages:
Now we get to install the base system packages to the root filesystem that we created:
# pacstrap -i /mnt base base-devel (Yes, there is a space between base and base-devel)
Just press enter when prompted to install packages.
Generate the fstab (file system table) file. This is how Arch knows how to mount devices to your filesystem. The -U flag tells the command to UUIDs to identify partitions and devices.
# genfstab -U /mnt >> /mnt/etc/fstab
You can verify that the fstab file was generated by viewing the following file:
# vim /mnt/etc/fstab
Change to root of your Arch install:
# arch-chroot /mnt /bin/bash
Use the following command to append your locale to the end of the file */etc/locale.gen
# echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
This will tell your system which language it should use among other things.
Now generate the locale
Now create the locale.conf file in /ect
# echo LANG=en_US.UTF-8 > /etc/locale.conf
I didn't use quotes this time because the line that I echoed into the file didn't have any spaces for line breaks in it.
Follow the prompts
Create the symbolic link to /etc/localtime
# ln -s /usr/share/zoneifo/America/New_York /etc/localtime
Set the time standard to UTC
# hwclock --systohc --utc
Make sure to edit /etc/mkinitcpio.conf with the following information before generate the Initial RAM File System. You can use nano or any other text terminal text editor that you prefer. I chose vim here because it is what I am use to.
# vim /etc/mkinitcpio.conf Add find the line that starts with "HOOKS". It should be near the bottom. Add "lvm2" right before the word "filesystem" <esc> :x
Save the file and exit
Run the following command to build the initial RAM filesystem:
# mkinitcpio -p linux
Install the Boot Loader
Install systemd-boot to the EFI system partition
# bootctl install
Create the boot entry
For LVM installations, create the following file:
# vim /boot/loader/entries/arch-lvm.conf title <Your_Choice> linux /vmlinuz-linux initrd /initramfs-linux.img options root=/dev/mapper/<VolumeGroup-RootLogicalVolume> rw
Save the file and exit. If you used the LTS linux image then replace vmlinuz-linux & initramfs-linux.img vmlinuz-linux-lts & initramfs-linux-lts.img. If anything goes wrong(at least in my experience) with the boot process, it will be in this file.
Other boot entry schemes can be found Here
# systemctl enable dhcpd@<interface_name>.service
Install iw, wpa_supplicant, and dialog
# pacman -S iw wpa_supplicant dialog
If you setup the Wifi network with wifi-menu, repeat the same steps
Generate the Root Password
Create your user
# useradd -m -g wheel -d /home/captam3rica -s /bin/bash -n captam3rica (replace my username with one of your own) # passwd captam3rica (it is best to make this password something other than the root password)
Edit the /etc/sudorers file so that you will be able to use the sudo command to install packages and edit other files as necessary.
Find the line looks like this "# %wheel" and uncomment it.
After you save the file, you will be able to use your user to perform commands as root.
I am installing Gnome3 as my desktop environment, but there are many others to choose from. I recommend playing around with a few until you find one that you like. Other Desktops
# pacman gnome gdm gome-tweak-tool
Here are some extra packages that I like to install along with gnome3
# exfat-utils util-linux fuse-expat (for creating and mont exfat file system types) # gedit (A really nice text editor) # gnome-remote-desktop (I think it's obvious) # gnome-documents (Document and ebook reader for Gnome) # aspell-en (Spell checker for LibreOffice)
Enabe the gdm service
After the Gnome installation completes, enable the desktop manager service
# systemctl enable gdm
Start the NetworkManager service
ip link set <your NIC> up systemctl enable NetworkManager systemctl start NetworkManager
Enabling these services will allow them to startup automatically each time you have to reboot or power off your system.
Exit from the chroot environment
Unmount the partitions
# umount -R /mnt
Reboot the system
Once the system comes backup (as long as everything was configured correctly), you should boot to the Gnome3 login screen. Login with the user credentials that you created and enjoy!