A tutorial for installing Arch Linux on Dell XPS 13 (2016)I love the Dell XPS 13 (2016) that Dell gave me on loan. But installing Arch Linux with UEFI enabled can be challenging for new users \u2014 especially since \u2018grub\u2019 doesn\u2019t work on this system with Arch Linux. I talked to a lot of people in the Arch community and resorted to using systemd-boot for successful install.Here's how I got Arch Linux running on the Dell XPS 13 laptop.Step 1: Prepare your systemImage by DellGo to BIOS settings by hitting the F2 key when the system restarts and enable UEFI boot. Under the secure boot setting, disable secure boot.In this tutorial we are creating a brand new single boot Arch Linux system with 8GB of swap, 40GB of root and the remaining space for storage. I am allocating 40GB for root because I won\u2019t be creating a separate \/home partition and will be installing a lot of desktop environments later for testing so, for me, more space is better.Now download Arch Linux and create a bootable USB flash drive. Once the drive is ready, plug it into your Dell XPS 13, hit F12 when the system boots up and choose this USB Flash drive in the boot menu. You will see the Arch Linux command prompt. Get connected to the internet over wireless, as this laptop doesn\u2019t come with an ethernet port. Then run the following command and follow the instructions on the dialog box to get connected:# wifi_menuUse the arrow key to select the network, hit enter (you can ignore profile renaming) and then type the password for the network.Now check if you are connected by pinging Google:# ping -c 3 www.google.com.If you get positive ping, you are all set.Step 2: Prepare your hard driveImage by DellWe will be using the parted tool to create a partition table and format the SSD. We will create four partitions: ESP (EFI System Partition), swap, root and storage. First, check the name of your storage device (in my case it was \u2018nvme0n1\u2019):# lsblkNow open this drive with the parted tool:# parted \/dev\/nvme0n1Create GPT partition table(parted) mklabel gptAnd now create ESP partition and set it as boot drive:(parted) mkpart ESP fat32 1MiB 513MiB (parted) set 1 boot onThen create root partition of 30GB:(parted) mkpart primary ext4 513MiB 30GiBNow create swap partition of 8GB(parted) mkpart primary linux-swap 30GiB 38GiBAnd now create a partition for remaining storage for files(parted) mkpart primary ext4 38GiB 100%Exit parted(parted) quitNow check the new partitions and take note of their numbers:# lsblkWe will now format these partitions and mount them in this order: nvme0n1p1 for \/boot, nvme0n1p2 for \/root, nvme0n1p3 for swap, and\u00a0nvme0n1p4 for storage# mkfs.ext4 \/dev\/nvme0n1p2# mkfs.ext4 \/dev\/nvme0n1p4Now format boot partition:# mkfs.fat -F32 \/dev\/nvme0n1p1And then swap:# mkswap \/dev\/nvme0n1p3# swapon \/dev\/nvme0n1p3Now it\u2019s time to mount these partitions.First mount root:# mount \/dev\/nvme0n1p2 \/mntThen create boot directory:# mkdir -p \/mnt\/bootAnd mount the boot partition:# mount \/dev\/nvme0n1p1 \/mnt\/boot(You can mount the remaining space for storage, after the installation is complete.)Step 3: Install base packagesImage by DellWe will now be downloading and installing base packages. If you wish, you can edit the mirrorlist file so that you have the closest mirror set for the fastest download speed.Edit the mirrorlist file:# nano \/etc\/pacman.d\/mirrorlistNow use the arrow key and select the mirror closest to you, I chose the US server. Then use Alt+6 to copy that URL and move the cursor on the very top of the list and paste it there (Ctrl+U). Then save and close the file (Ctrl+x).Install the base packages:# pacstrap -i \/mnt base base-develWe now have to create fstab on the new system. The following command will create the file and populate it.# genfstab -U \/mnt > \/mnt\/etc\/fstabWe now have to configure different components. To do that we have to chroot into the new system:# arch-chroot \/mnt \/bin\/bash Step 4: Set up boot loaderImage by DellGrub is not working on this laptop so after much hunting around, I resorted to using systemd-boot in UEFI mode.Install the bootloader:# bootctl --path=\/boot installOpen the loader.conf file:# nano \/boot\/loader\/loader.confAnd make sure only these lines are there:default archtimeout 1 editor 0Now find the UUID of root partition:# blkid -s PARTUUID -o value \/dev\/nvme0n1p2Take note of the long UUID number, and create arch.conf file:# nano \/boot\/loader\/entries\/arch.confAnd add these lines to the arch.conf file (exchange the PARTUUID number with the UUID number on your machine):title Arch Linuxlinux \/vmlinuz-linuxinitrd \/initramfs-linux.imgoptions root=PARTUUID=66e3f67d-f59a-4086-acdd-a6e248a3ee80 rwIt\u2019s now time to update the bootloader:bootctl updateSince Dell XPS 13 uses PCIe for storage, we need to add nvme module. Edit the mkinitcpio configuration file:nano \/etc\/mkinitcpio.confAnd add nvme in the MODULES line:MODULES="nvme"Now update the bootloader:# mkinitcpio -p linuxYou are all set to boot into your Arch system. But we still have more work to do.Step 5: Set languages and time zoneImage by DellI am setting up my system for US English, and choosing EDT as the time zone.Open the locale.gen file:# nano \/etc\/locale.genHere you will see the list of languages. I have a trick that will save you a lot of scrolling: US English is listed on top of the list as an example, just uncomment it there: \u201cen_US.UTF-8\u201dSave (Ctrl+O) and close (Ctrl+X) the file and then run the following commands:# locale-gen# echo LANG=en_US.UTF-8 > \/etc\/locale.conf# export LANG=en_US.UTF-8Set-up the time zone with this command and follow the instructions:# tzselectOnce done, just create a symlink to set it as localtime:# ln -s \/usr\/share\/zoneinfo\/America\/New_York \u00a0\/etc\/localtimeHowever, we will be using UTC for hardware clock:# hwclock --systohc --utcStep 6: Create user and passwordImage by DellFirst we need to create the root password for the system so that we can perform administrative tasks as root. Run the following command and then enter a password when asked:# passwdNow create a user for this system. I'm using my own name in this example:# useradd -m -G wheel,users -s \/bin\/bash swapnilAnd now give this user a password:# passwd swapnilIf you want, you can give this user sudo powers. Install sudo package:# pacman -S sudoAnd then run the following command:# EDITOR=nano visudoFind this line and uncomment it:%wheel ALL=(ALL) ALLNow let\u2019s give this system a decent hostname (that\u2019s the name that will appear on the network)# echo swapnil > \/etc\/hostnameWe now have a fully working system. But we still need GUI tools and a desktop environment.Step 7: Install GNOME and complete installationImage by DellGNOME works best on the HiDPI display of this system, but you can install any DE you like. (I also like Cinnamon on it.)# pacman -S gnome gnome-extraTo be able to manage the network from the GUI (we have been using command line tools so far), we need to install some packages that are not part of GNOME:# pacman -S iw wpa_supplicant dialog network-manager-applet networkmanagerWe will also install support for the touchpad:# pacman -S xf86-input-libinputNow tell systemd to start GNOME Display Manager and networking at the boot time:# systemctl enable NetworkManager.service# systemctl enable gdm.serviceBefore you reboot into your new system, exit the chroot environment and then unmount the partitions that we mounted during installation:# exit# umount -R \/mntAnd now reboot the system:# rebootYou now have brand new Arch Linux on your Dell XPS 13.