PLEASE NOTE: THIS GUIDE IS UPDATED REGULARLY AS PER FEEDBACK FROM MY YOUTUBE VIDEOS. IT SHOULD ALWAYS BE RELEVANT.
Part 1 Video:
——————————-
TABLE OF CONTENTS:
PART 1: Preparation and Disk Partitioning
Preparation
-Items necessary
-Downloads necessary
-Details regarding enabling EFI mode via BIOS
-Details regarding booting from USB in EFI mode
-Verifying internet connectivity
-Verifying EFI mode is enabled
Disk Partitioning
-Finding all available drives
-Wiping the existing partition table
-Creating boot partition and the difference between EF00 and EF02 Hex codes
-Creating swap partition, the swap debate, choosing a swap size, and the swap 8200 hex code
-Creating root and home, the differences between them, and choosing whether to keep them on the same partition
-Telling linux which file systems to use for our partition
PART 2: Installing Arch and Making it Boot
-Mounting our partitions
-Setting up our Arch repository mirrorlist
-Installing the Arch base files
-Generating an fstab file
-Language
-Time
-Hostname
-Enabling multilib and Arch AUR community repositories
-Root password and user setup
-Setting up sudoers
-Adding bash-completion
-Installing the bootloader
-Creating the bootloader config file
-Enabling microcode for Intel processors
-Installing video card drivers
PART 3: Making it user friendly and adding a desktop environment
-Enabling internet connection
-Installing touchpad support
-Installing 3D support
-Installing X server display manager
-Installing a desktop manager
——————————-
***PART 1: Preparation and Disk Partitioning***
Preparation:
-Items necessary
1. A 4gb or higher USB stick
-Downloads necessary
2. Arch linux ISO image
https://www.archlinux.org/download/
For creating bootable usb on windows
3. Rufus
For creating bootable usb on linux
3a.
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdX status=progress && sync
(sdX being your USB stick. You can find this withthe command: lsblk)
-Details regarding enabling EFI mode via BIOS
If you are not sure if your computer is booted/can boot in UEFI/EFI mode, check your motherboard manual. It will tell you how to enable it in the BIOS.
-Details regarding booting from USB in EFI mode
You will also need to plug in your new Arch USB stick, then reboot and either go in to your bios and set it as the first boot device, or use the hot key the motherboard specifies during booting to access the boot menu, then select the USB stick as the boot device from that menu. My boot device key is F11, and my BIOS access key is DEL.
Ok, so we have our USB stick, we plug it in. We boot into the USB stick. We select the first option that reads something like “Arch Linux archiso x86_64 UEFI USB”
We are now at a screen that reads
[email protected] ~ #
-Verifying internet connectivity
Before we do anything, we need to confirm we have an internet connection, and that we are actually in EFI mode. I use a wired connection, so linux should auto-detect it. I will post a wifi connection sublink when I am able to make it, for now we are going to just use our LAN connection. Test it by typing:
ping -c 3 www.google.com
if you get a response, your internet is working properly.
-Verifying EFI mode is enabled
Now test if we are using UEFI mode by typing:
efivar -l
if it spits out a list of stuff (uefi variables) then you are using UEFI mode.
——————————-
Disk Partitioning:
-Finding all available drives
First I need to set up my partitions. I wiped my current partitions to make a fresh install using the whole drive. I need to find out which partitions I want to use, by typing:
lsblk
This shows me all of the drives availabe.
In my case, I have 3 drives
sda 238.5GB- this is my 256gb ssd drive
–sda1 – Existing Partition on drive
sdb 931.5GB- this is my 1tb storage drive
–sdb1 – Existing Partition on drive
sdc – this is the usb stick im using to install arch
–sdc1 – Existing Partition on drive
These are known to the system as /dev/sda, /dev/sda1, /dev/sdb, /dev/sdb1 and so forth.
-Wiping the existing partition table
For me, /dev/sda is the drive I want to install linux on, which I will be wiping/deleting partitions from. I need to “zap” the current partition table so that I can re-write it as a GPT partition table
***PLEASE NOTE: THIS WILL WIPE THE ENTIRE DRIVE**
gdisk /dev/sdX (x representing your drive. mine is sda)
x
z
y
y
boom. zapped.
-Creating boot partition and the difference between EF00 and EF02 Hex codes
Now to create my new partitions. So lets start partitioning:
cgdisk /dev/sdX
Any key to continue
Note: the order you create the partitions is the order they will be listed in, so if I create three partitions in order such as boot, swap, root, home on /dev/sda, then “lsblk” again, they will be listed as:
sda
-sda1 (our boot partition)
-sda2 (our swap partition)
-sda3 (our root partition)
-sda4 (our home partition)
I’m going to create my boot partition first. I am using EFI, so EF00 will be our hex code (NOT EF02. I’ve racked my brain over this error before trying to figure out why EFI system wouldn’t boot). I generally dedicate 1Gb (1024MiB) of space to the boot sector so that I have room to breathe in case I need to change anything or add multiple boot kernels, although arch wiki recommends only 200-300Mb. I also will name it “boot”.
[New] Press Enter
First Sector: Leave this blank ->press Enter
Size in sectors: 1024MiB ->press Enter
Hex Code: EF00 press Enter
Enter new partition name: boot ->press Enter
Note the 1007KiB existing before the boot partition we just made. This is where the Protective MBR is, and is present on all GPT partition tables. This cannot be removed/deleted. (This is yet another thing I’ve racked my brain over in the past while trying to create boot partitions). It is OK to ignore.
Now, arrow down to the next free space available, then go to [New] again.
-Creating swap partition, the swap debate, choosing a swap size, and the swap 8200 hex code
To swap, or not to swap, that is the question. There has always been a debate on whether or not to create a swap partition when using an SSD or if you have a large amount of memory.
Short Answer: Yes. Always create a swap partition.
Detailed Explanation:
The way the Linux kernel works, swap isn’t only used when you have exhausted all physical memory. The Linux kernel will take applications that are not active (sleeping) and after a period of time, move the application to swap from real memory. The result is that when you need that application, there will be a momentary delay (usually just a second or two) while the application’s memory is read back from swap to RAM.
If you’re running a laptop or a desktop that you might want to put in ‘hibernate’ mode (Suspend to Disk), then you always want at least as much swap as you have memory. The swap space will be used to store the contents of the RAM in the computer while it ‘sleeps’. Additionally, this allows you to put inactive applications to “sleep”, giving your active applications access to additional RAM.
In the unlikely event that you run out of RAM – perhaps opening a big file, perheps a long running tab in firefox, it doesn’t matter, in that event your kernel OOM killer will kick in and start killing applications to get memory back. From a developer perspective, you also need to have substantial swap space if you are running Java/Java apps.
References:
http://serverfault.com/questions/5841/how-much-swap-space-on-a-high-memory-system
http://askubuntu.com/a/49130
Ok, I’ll create a swap partition, but how big?
Do I want hibernation?
Here is the Redhat preferred reference table for linux swap partition sizes:
(Note: Redhat is another Linux Distribution, however linux partitions are utilized the same across all distros)
Amount of RAM in the system Recommended swap space Recommended swap space
if allowing for hibernation
————————— —————————- —————————
2GB of RAM or less 2 times the amount of RAM 3 times the amount of RAM
2GB to 8GB of RAM Equal to the amount of RAM 2 times the amount of RAM
8GB to 64GB of RAM 0.5 times the amount of RAM 1.5 times the amount of RAM
64GB of RAM or more 4GB of swap space No extra space needed
In my case I have 16GB of RAM, and wish to use hibernation, In cases where you have more than 8GB of ram, you don’t usually need a lot of swap since you have more physical memory to handle tasks, so I went with 0.5 x 16, which is 8GB of swap space:
[New] Press Enter
First Sector: Leave this blank ->press Enter
Size in sectors: 8GiB ->press Enter
Hex Code: 8200 ->press Enter
Enter new partition name: swap ->press Enter
Ok, boot and swap: done.
-Creating root and home, the differences between them, and choosing whether to keep them on the same partition
Root:
Last I’m going to create my root partition. I normally don’t create a home partition, I just store /home inside the root partition since I prefer to not have to worry about the partition size for /home being limited. However
I will explain both for the sake of user options.
What is the difference?
Root-
In comparison to windows, Root is like your C: drive. Generally you don’t wanna mess with anything inside it unless you know what you’re doing.
Home-
Home is where your user files are stored. In windows that would be C:\Users\Someusername, which would then contain My Documents, Downloads, Pictures, Videos etc. All of the folders pertaining to that user. Some may
prefer to have /home on a seperate partition for security or storage sake.
Alright, so what size do I need to make them?
If you are only using root, and storing /home inside of it, you can create root using all of the default values (except giving it the name of “root”) for the new partition options by just pressing Enter.
If you are creating a seperate /home partition, arch wiki recommends the root partition be 15-20GB, and that the /home partition be whatever size you like (I would use the remainder of the disk). You can do this by first creating the root partition, and specifying 20GiB when choosing the size, naming it “root” (all other options just press Enter), then creating the home partition again using all default options and naming it “home”.
Arrow down to the next free space available, then go to [New] again.
For root with /home inside:
[New] Press Enter
First Sector: Leave this blank ->press Enter
Size in sectors: Leave this blank ->press Enter
Hex Code: Leave this blank ->press Enter
Enter new partition name: root ->press Enter
For root with seperate /home partition:
[New] Press Enter
First Sector: Leave this blank ->press Enter
Size in sectors: 20GiB ->press Enter
Hex Code: Leave this blank ->press Enter
Enter new partition name: root ->press Enter
Arrow down to the next free space available, then go to [New] again.
[New] Press Enter
First Sector: Leave this blank ->press Enter
Size in sectors: Leave this blank ->press Enter
Hex Code: Leave this blank ->press Enter
Enter new partition name: home ->press Enter
Arrow over to [Write] to save your new partitions, hit enter, type “yes”, hit enter again.
Lastly, Arrow over to [Quit] and press enter.
Reboot
-Telling linux which file systems to use for our partition
I now need to let linux know the file system for our partitions. For EFI with GPT, boot needs to be Fat32. For swap we simply use mkswap. The rest are default ext4 file systems:
mkfs.fat -F32 /dev/sda1
mkswap /dev/sda2
swapon /dev/sda2
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
root and home done.
——————————-
***PART 2: Installing Arch and Making it Boot***
-Mounting our partitions
Ok, so we have our partitions. We need to mount them.
mount /dev/sda3 /mnt
mkdir /mnt/boot
mkdir /mnt/home
mount /dev/sda1 /mnt/boot
mount /dev/sda4 /mnt/home
-Setting up our Arch repository mirrorlist
Before we initiate the install process let’s select the closest mirror so that you get the best speed while downloading packages. I’ve found the easiest method to do this came via the arch wiki.
Make a backup:
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
EDIT: 8/8/18
Recently arch moved rankmirrors to the pacman-contrib package.. this is kind of an annoying move on their part. What you’ll have to do is manually edit the mirrorlist with
sudo nano /etc/mirrorlist.conf
and uncomment just one of the mirrors for your country, then use ctrl+o to save, ctrl+x to exit, then do:
sudo pacman -Sy
sudo pacman -S pacman-contrib
After doing this, edit /etc/mirrorlist.conf again and re-comment the line you commented out.
Now, instead of going through the list with nano and trying to scroll down a million mirrors, we’re going to do something different. Run the following sed line to uncomment every mirror:
sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.backup
Then run the rankmirrors command below. this will adjust your mirror list properly so that it uses a handful of mirrors with the lowest ping:
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
-Installing the Arch base files
Now we install the arch base files and development files. This will take some time.
pacstrap -i /mnt base base-devel
For any options that come up just press enter or type y and press enter
-Generating an fstab file
and now we generate our fstab file
genfstab -U -p /mnt >> /mnt/etc/fstab
now edit it to make sure an entry is listed for each partition. by typing
nano /mnt/etc/fstab
check to see if there is an entry in fstab for swap since we are here. if there is, it should look something like:
/dev/sda2 none swap defaults 0 0
or
UUID=some-crazy-long-random-id none swap defaults 0 0
Now we are going to chroot into our newly installed system and begin to configure its booting, time, and language
arch-chroot /mnt
-Language
Create locale file:
nano /etc/locale.gen
Uncomment your locale. I uncommented en_US.UTF-8. You can search the file for it by typing ctrl+W, type en_US.UTF-8, hit enter, then uncomment it and press ctrl+x to exit
Now generate that locale by typing:
locale-gen
and then set it as your language with:
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
-Time
List the available time zone info with
ls /usr/share/zoneinfo/
Then link the appropriate one via something like:
ln -s /usr/share/zoneinfo/your-time-zone > /etc/localtime
Mine for example was:
ln -s /usr/share/zoneinfo/America/New_York > /etc/localtime
Now the hardware clock:
hwclock --systohc --utc
-Hostname
This is the name of your machine, when used it will show @hostnameyoupick. I used shittywok because southpark ;x.
echo shittywok > /etc/hostname
Now, many people have SSDs, which have TRIM support. For safe, weekly TRIM service on SSDs and all other devices that enable TRIM support:
systemctl enable fstrim.timer
-Enabling multilib and Arch AUR community repositories
If you are running a 64bit system then you need to enable the multilib repository. Open the pacman.conf file using nano:
nano /etc/pacman.conf
Scroll down and un-comment the multilib repo:
[multilib]
Include = /etc/pacman.d/mirrorlist
then save and close, and update with:
pacman -Sy
optionally, update the system with -Syu instead. I will explain at the end of this guide how to use the AUR.
-Root password and user setup
First set a password for root with:
passwd
Now add a default user with:
useradd -m -g users -G wheel,storage,power -s /bin/bash someusername
and set a pass for that user:
passwd someusername
-Setting up sudoers
Now we have to edit the sudoers file to give this user the much needed sudo powers. Don\92t open this file with a regular editor; it must be edited with visudo command.
EDITOR=nano visudo
Uncomment:
%wheel ALL=(ALL) ALL
And we’re going to make sudoers require typing the root password instead of their own password by adding:
Defaults rootpw
Save and close the file.
Lastly we’re going to install bash-completion which makes it easier with auto-complete of commands and package names.
pacman -S bash-completion
-Installing the bootloader
Now to actually make our install boot without a usb drive.
First we need to double check to see if our EFI variables have already been mounted or not
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
If this says already mounted just ignore and keep following this guide.
As we are doing an UEFI installation of archlinux we are going to use Gummiboot as our boot manager, which has now been incorporated into bootctl/systemd-boot.
bootctl install
Now you will need to manually create a configuration file to add an entry for Arch Linux to the gummiboot manager:
nano /boot/loader/entries/arch.conf
Type the following, make sure sdaX is your root partition (mine is sda3):
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
save and exit.
Next, we need to add the PARTUUID of the /root partition to our bootloader configuration.
You can get a list of hard drive partitions by typing
lsblk
look for the partition that looks like this:
sda3 8:19 0 229.5G 0 part /
In particular the one that has / as the mountpoint. In our case it was sda3. To add this to our boot loader we next type:
echo "options root=PARTUUID=$(blkid -s PARTUUID -o value /dev/sdb3) rw" >> /boot/loader/entries/arch.conf
Please note it is VERY important that you type >> and NOT >, >> adds a line to a file while > overwrites the file.
NOTE: Intel processors
Processor manufacturers release stability and security updates to the processor microcode. While microcode can be updated through the BIOS, the Linux kernel is also able to apply these updates during boot. These updates provide bug fixes that can be critical to the stability of your system. Without these updates, you
may experience spurious crashes or unexpected system halts that can be difficult to track down.
Users of CPUs belonging to the Intel Haswell and Broadwell processor families in particular must install these microcode updates to ensure system stability. But all Intel users should install the updates as a matter of course.
For AMD processors the microcode updates are available in linux-firmware, which is installed as part of the base system. No further action is needed for AMD users.
If you own a Haswell processor or higher (such as a 4770k or 6700k):
pacman -S intel-ucode
then we will have to update our gummiboot by adding another initrd line for intel-ucode as follows:
sudo nano /boot/loader/entries/arch.conf
add the intel-ucode line so it looks like this:
initrd /intel-ucode.img
initrd /initramfs-linux.img
Next, let’s make sure our wired network connection is automatically turned on when we start the machine:
First lets see what network adapters were working with via
ip link
Ignore the one listed as lo, that is loopback and is always listed.
mine was listed as
enp5s0
so we’re going to enable it via systemctl
sudo systemctl enable [email protected]
for the sake of having a simple graphical interface that works across Desktop Environments, we’ll also install and enable NetworkManager:
sudo pacman -S NetworkManager
sudo systemctl enable NetworkManager.service
That’s it! If you need wireless, please see my wireless guide here:
Now before we reboot, we are also going to set up our graphics drivers. Reason being Arch’s kernel is set to use nouveau drivers by default for nvidia cards, and some cards don’t work properly and will cause a freeze/hang (such as my gtx 980 ti..)
I assume you know which GPU you are using. Arch wiki has done a great job at documenting which drivers you need to install for your hardware.
We are using the dkms module so that we don’t have to reinstall nvidia drivers for every different kernel if we decide to try another kernel later. To install dkms modules we need the headers for our kernel:
sudo pacman -S linux-headers
I have an Nvidia GTX 980 TI, so my latest drivers will just be nvidia. I also want the multilib drivers and all dependencies required for the nvidia package, so I will install all of the following:
sudo pacman -S nvidia-dkms libglvnd nvidia-utils opencl-nvidia lib32-libglvnd lib32-nvidia-utils lib32-opencl-nvidia nvidia-settings
We will also want to set nvidia drm kernel modules:
sudo nano /etc/mkinitcpio.conf
find MODULES=
change ot so it looks like:
MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"
We also need to make sure these are loaded during boot, so next we do this:
sudo nano /boot/loader/entries/arch.conf
find the line that looks like this:
options root=PARTUUID=bada2036-8785-4738-b7d4-2b03009d2fc1 rw
add nvidia-drm.modeset=1
like this
options root=PARTUUID=bada2036-8785-4738-b7d4-2b03009d2fc1 rw nvidia-drm.modeset=1
Lastly, we need to make a pacman hook, so that any time the kernel is updated, it automatically adds the nvidia module. This will save us a LOT of headache later on.
sudo nano /etc/pacman.d/hooks/nvidia.hook
add this content, save, and close:
[Trigger]
Operation=Install
Operation=Upgrade
Operation=Remove
Type=Package
Target=nvidia
[Action]
Depends=mkinitcpio
When=PostTransaction
Exec=/usr/bin/mkinitcpio -P
Now you should be able to reboot into your system without the USB stick!
Type the following commands and then remove the USB stick:
exit
umount -R /mnt
reboot
You should now be able to boot into your system and be at a black login screen.
——————————-
***PART 3:Making it user friendly and adding a desktop environment***
-Installing touchpad support
If you are on a laptop and need touchpad support also type
sudo pacman -S xf86-input-synaptics
-Installing 3D support
now we add 3d support
sudo pacman -S mesa
-Installing X server display manager
now install X, which is our display manager
sudo pacman -S xorg-server xorg-apps xorg-xinit xorg-twm xorg-xclock xterm
Now we need to test if X runs:
startx
If you get a screen with a few terminals and a clock, it works! You can type “exit” in the terminals to drop back to the command line.
-Installing a desktop manager
Let’s give ourselves an actual interface to log in to, so we will finally feel at home with our new Arch install:
sudo pacman -S plasma sddm
sudo systemctl enable sddm.service
This is for KDE, I use KDE for a few reasons:
1. Ease of use for beginners
2. Aesthetics are nice
3. The window management options are amazing for gaming. If you need to make a game hide a border or not minimize in full screen mode, you can do so by opening the game, then hitting Alt+F3
After this, you should be able to reboot and safely log into your system!
POST INSTALLATION TWEAKS (IMPORTANT – YOU WILL WANT TO DO THESE):
Once you are in KDE, if you use NVIDIA you will want to get rid of some screen tearing. Open a terminal, run:
sudo nvidia-settings
Click X Server Display Configuration
For each monitor:
click “Advanced”
check Force Composition Pipeline
check Force Full Composition Pipeline
Then click Save to X Configuration File, and quit.
Wwe need a way to install packages from the AUR. Yay is what we use for the AUR. It works just like pacman except we don’t use sudo and it’s for the arch user repository found here: https://aur.archlinux.org/ It is not in the main arch repo so we’ll have to manually download it from the AUR and install it:
wget https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gz
tar -xvzf yay.tar.gz
cd yay
makepkg -csi
cd ..
sudo rm -R yay
What the AUR is, is a collection of USER created packages for Arch Linux users to pull from. These can be game installers, programs compiled from git repositories, beta drivers, or other programs that aren’t included in Arch’s main repos. That being said, it is VERY smart to LOOK at the PKGBUILD of a package before installing it, to see what it does, where it installs things, and if the auther has added any notes about installing it. If you find a package on the AUR you want to install, you use yay the same way as pacman. AUR packages can be found here: https://aur.archlinux.org/
Many AUR packages compile from source, so you will want to speed up compile times. I have a few small tips for that as well. First, you will need to know the amount of cores your processor has, and will need to know if your processor supports Hyperthreading or SMT. For example, if you own an i7 4770k, you have 4 cores and support hyperthreading, essentially giving you 8 cores. Ryzen 1700x 8 cores, 16 threads – counts as 16 cores. If your processor does NOT support SMT/hyperthreading, such as an AMD FX-8350, you would just need to know the core number. FX-8350 has 8 cores.
First install ccache:
sudo pacman -S ccache
Next lets enable ccache and set our makeflags for makepkg:
sudo nano /etc/makepkg.conf
find BUILDENV=
remove the ! in front of ccache so the line looks like this:
BUILDENV=(!distcc color ccache check !sign)
find MAKEFLAGS=
change it so it looks similar to
MAKEFLAGS="-j17 -l16"
replace 17 with your number of cores +1, and 16 with your number of cores. At the time of this edit, I currently am using a Ryzen 1700x, which is why I use -j17 -l16
save, close
Next we need to make sure ccache and makeflags are set at all times in case we compile something without using a package manager:
nano ~/.bashrc
add these lines, save, close:
export PATH="/usr/lib/ccache/bin/:$PATH"
export MAKEFLAGS="-j17 -l16"
again, replace 17 with your number of cores +1, and 16 with your number of cores. At the time of this edit, I currently am using a Ryzen 1700x, which is why I use -j17 -l16
DONE! ENJOY YOUR NEW ARCH LINUX SYSTEM! I HOPE THIS GUIDE HELPED!!!
Feel free to subscribe to my youtube channel for more linux tutorials and plenty of other stuff!
youtube.com/gloriouseggrolltv
References:
http://serverfault.com/questions/5841/how-much-swap-space-on-a-high-memory-system
http://askubuntu.com/a/49130
http://www.tomshardware.com/faq/id-1860905/install-arch-linux-uefi.html
http://www.linuxveda.com/2014/06/07/arch-linux-tutorial/
https://wiki.archlinux.org/
thanks very much for your guide, all up and running perfectly. Is it possible to add expand on your boot loader section to include how you can ad in windows 10 to the boot loader? Having quite a headache trying to work this out.
Sure, I actually plan on doing another article shortly regarding dual booting as many people have asked me about it.
what about grub ?
grub is not used in efi setup as gummiboot/systemctl replaces it
Hi, Loved the Guide. I have been trying to install Arch on my Dell Xps 15 9550 laptop and succeeded using your videos here. Only issue I have is I can not install any Desktop environment. Gnome just installs and then fails when it boots to it.
The laptop has an nvidia gtx 960m as well as intel 530 graphics so I think I’m installing the wrong graphics packages? For cards like mine, which nvidia packages should I use. The rest of the install and configuration goes without a hitch, only thing I am missing is the GUI.
Hey sorry for the late reply here! I’ve actually gotten this question quite a bit, for laptops and nvidia you should setup/install bumblebee:
https://wiki.archlinux.org/index.php/bumblebee#Installing_Bumblebee_with_Intel.2FNVIDIA
Hey, man,
nice tutorial, but I followed it 3 times, and all of them I got a “mount: unknown filesystem type ‘vfat'” error…
any clues?
Thank you so much for this guide. It made installing Arch Linux a breeze with having this along with the beginner guide. To bad that there doesn’t seem to be a way to get Arch Linux to work with the secure boot option, cause it is kind of a nice option for those of us that are also using a Windows. Be sure to make a guide for secure boot, if you ever figure it out. Thanks again!
I spoke to soon. Everything seems to work right, able to boot into gnome, but after 5 mins it dumps me into the screenshot linked below. Then after another 5 mins, it sends me back to the gnome login screen. Any idea what’s going on? Is this related to the intel-ucode?
PC Specs:
CPU: i7-6700K
GPU: Gigabyte GTX 980 To
MB: ASUS Maximus VIII hero
RAM: G.SKILL Ripjaws V Series 16GB DDR4 2666
COOLER: Corsair H100i GTX
PSU: EVGA SuperNOVA 650W
HD: 1x WD Blue 1TB 7200 RPM (Storage)
1x Crucial 250GB SSD (Windows 10 64-bit)
1x WD 160GB 7200 RPM (Arch Linux)
http://imgur.com/sH3Wzp1
Great guide… Everything working like a charm. I have a few doubts, if you could throw some light?
Earlier was running mbr with grub but my disk was partitioned BTRFS, thanks to BTRFS error cannot find root 8, this time I decided to go with EXT4. Eventhough boot time upto login is roughly about the same, after that login seems to take quite longer! The DE is Cinnamon in both the cases and installed Softwares and the ones set to autostart are all the same. And the HDD is a traditional 5400rpm disk not SSD. So no changes except the file system! Can there be significant difference in speed because of that?
Also can you make a guide for Secure Boot installation of Arch as and when you find time?
Thanks.
Hi, I’m trying to install Arch on my Acer Aspire E5-573G, and whenever I type nomodeset(space) and hit enter the screen is frozen black and it doesn’t boot. Any help?
What if efivar isn’t mounted>
Man great guide! Very helpful. I’m new to Linux and I know Arch is a hell of a distro for a newbie to take on. But I figured if I am going to learn a new operating system and learn it as well as I know windows, I might as well jump right in for the challenge and learn it. This helped a lot and gave me a root to be able to research more of the commands and how the file system works. Great Job! Installing on my desktop works great, however my laptop has Nvidia Optimus, so I am still trying to sort that out since you get a blank screen on start of the desktop manager.
Dude thanks for the tutorial! Just one thing… I hate gnome with a burning pasion, and no where else is at all helpfull about installing kde plasma. Since you’re the only person making USEFUL arch tutorials, how the heck do I throw kde on my machine instead of gnome/get it to work?
I wrestled Optimus for months, because I wanted three displays. I found no acceptable Linux implementation. Finally, I realized I could turn it off in BIOS (Dell M6600, runs EFI over BIOS…). That allowed me to get two monitors working properly. Good enough. If Bumblebee guesses correctly someday, or NVIDIA decides to play nice, I’ll be thrilled. If anyone knows some magic, I’d love to hear it.
I wanted to thank you for you videos. I had to use part of your video and another video from a few years ago, to get grub installed. Sadly, I didn’t realize the laptop I was installing Arch on didn’t have UEFI. It is so true what they say, you just don’t install Arch right the first time. It took me three days, with your tutorials I was able to get further each time, and finally now I have my DE.
So, thanks for helping this Grumpy ‘Ole Marine out.
-Semper Fi
Great guide! Just one correction, discards are not recommended for NVMe drives: https://wiki.archlinux.org/index.php/Solid_State_Drives/NVMe#Discards
Hey, 1st of all. Big thank you for making the videos, getting thru the arch install on my efi laptop felt damn near impossible otherwise.
I do have a quick question, and I’d definitely appreciate any guidance.
I’m on laptop, but I ran the “sudo systemctl enable [email protected](my wifi).service” command with my “UP” wifi. Of course, that command is only be for wired desktops so I screwed up a bit. As a result, my Arch system spends 1min 30secs trying to access it when it boots.
I’ve tried “systemctl disable dhcpcd.service” and other simialar variations but I’m seemingly unable to disable it from activiting in boot.
Any advice or suggestions on how to reverse the “sudo systemctl enable [email protected](my wifi).service” would be awesome.
Thanks man
Oh my god can you PLEASE do a tutorial on how to set up AMD drivers (AMDGPU) on arch, this shit is driving me insane
Yes also wondering about AMD GPU drivers , I have crossfire r9 390.
Hopefully you figured it out my now because the process is and was really easy!!
Install this pacman -S Mesa lib32-mesa xf86-video-amdgpu and a few other packages all in archlinux wiki
Those spelling errors / grammer issues were the small android keyboard’s fault. Don’t see a way of correcting them.
My login takes verry long, like 5 minutes gdm starts fast but after I enter my password it takes forever to login. Its not because of hardware, I have a similar setup you have. Any Ideas?
Also I usually dont use a swap partition I create a swapfile in root, so i dont have to create another partition.
You are writing that your root partition is sda1 at some point and which is not correct. it is sda3, which you also later refer it as. However I’m confused, are you meaning to refer to your boot (sda1) or root (sda3). The relevant command is this:
blkid -s PARTUUID -o value /dev/sdxY
sorry for the confusion, I was referring to root which was sda3
What a relief it is to have someone like you in the world. Honestly thank you for this well defined and thorough installation guide. Very newb friendly 🙂 THANK YOU
Hi,
Thanks for the amazing tutorial. Your site is very much useful for me to learn a lot about Arch Linux and related setup guides. I’m finding it hard to disable my discrete graphics card. I’m currently running Arch Linux on my Alienware M14x-R2. I have bumblebee and bbswitch installed with default settings, but the discrete graphics always keeps running and draining power. Can you tell how can I disable the discrete graphics forever or keep it off most of the times as my tasks are not GPU intensive.
Thanks,
Prasad
Hi,
thank you for that guide. I would appreciate if you can tell me how i can make my arch dual booting with my windows.
Do you hava a guide for that too?
I have Nvidia GT840m which driver should I install?
Every time i update the sistem and reboot the system don’t start. “Failed to start Login Service”
What can i do?
Hi ,
I followed your guide several times. When I reboot my system for the first time after part 2 I get the following error:
Failed to open file: initramfs.img
Trying to load files to higher address
Failed to open file: initramfs.img
Hey panos, did you ever figure this out? I’m having the same issue. Been troubleshooting for a few days and can’t figure it out.
Hey man
Firstly, I appreciated for the nicest tutorial ever. Next, I’d be thankful if yo help me to make a network and connect two laptop one running Arch linux and another with Windows 10.
By a way if this helps, Arch comes with XFCE DE.
Followed your tutorial for the EFI Arch install, but running it on an ASUS K501U laptop (gtx960m). Referenced the laptop graphics drivers write up you did too because I kept getting an error that my connection was refused trying to startx to test xserver. Haven’t risked a reboot yet, but had gone ahead and installed the KDE environment anyhow, which went fine. Not finding anything online that helpful as to why xserver is failing, though.
easy way to troubleshoot X:
sudo systemctl disable sddm
or lightdm/gdm whatever display manager you chose. this will stop the service from loading until you can get X working. then reboot. this will put you into tty/command prompt
login, then begin trouble shooting
I’ve found nvidia drivers have a tendency to have drm break regularly specifically for laptops, which can lead to X not loading, which is a pain in the ass. A safe way to troubleshoot this is if you follow the “NOTES REGARDING DRM AND TEARING:” portion of my laptop guide, undo/remove the lines in those instructions. IE remove nvidia_drm nvidia_uvm from the MODULES line in /etc/mkinitcpio.conf and remove nvidia-drm.modeset=1 from /boot/loader/entries/arch.conf options line. Then reboot and try startx. If it works, it means nvidia’s drm shit is broken again, you can either at that point wait for new drivers, or attempt to roll them back.
Has the 2016 text tutorial been updated to match the new 2017 video?
Sorry to ask but as a newbie Arch is very confusing. 🙂
yes it has
I copied all the steps properly but when I do ‘startx’ the screen becomes blank, no terminals and clock
Did you ever make a dual boot tutorial?
I havent yet. I boot from two seperate drives and just switch boot device via bios on bootup. On laptop, I shrunk the drive and used unpartitioned space for linux install. just use that unpartitioned space when setting up the partitions.
Thanks for the guide, man! Love it
Hi friend.
I have a problem.
When I run: rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist.
I get: “zsh: command not found: rankmirrors”
I can’t continue after that.
I read on Reddit that It has been moved into: pacman-contrib, but I’m new and I have no idea.
Thanks.
GloriousEggroll
GloriousEggroll
1 week ago (edited)
Recently arch moved rankmirrors to the pacman-contrib package.. this is kind of an annoying move on their part. What you’ll have to do is manually edit the mirrorlist with
sudo nano /etc/mirrorlist.conf
and uncomment just one of the mirrors for your country, then do
sudo pacman -Sy
sudo pacman -S pacman-contrib
then, edit the mirrorlist again and run the rankmirrors command. this will adjust your mirror list properly so that it uses a handful of mirrors with the lowest ping
hi, just want to say thanks for regularly updating your notes.. was really wondering where rankmirrors went to , now i know
Thank you for the updating. I have been struggling with recent installs, and your (updated) guide is the one I keep turning to to get my system back up and running
Actualy I discovered that some steps in this guide are not needed in my exeprience. I did your guide like 20 times and I can confirm that modifiing mirrorlist and doing sed -i ‘s/^#Server/Server/’ /etc/pacman.d/mirrorlist.backup BEFORE ranking them is not needed. The reason for this is that default mirrorlist has ALL servers enabled. You just do this:
sudo pacman -Sy
sudo pacman -S pacman-contrib
rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist
After that you can install your system.
sudo pacman -S NetworkManager
case sensitive, package is named in lowercase
Hi, thanks for your help. you have been really helpful with the installation.
I just have one problem that I can’t figure it out. When I try to startx I have this error:
Fatal server error: (EE) no screens found(EE)
The solutions that I’ve found seems to be a bit old, since they refer to a file that a cannot find.
Thanks for the Tutorial! It’s very intuitive. Are you inactive, do you want to post more content here or on your channel? Anyway, I have a correction and a note about your guide:
echo “options root=PARTUUID=$(blkid -s PARTUUID -o value /dev/sdb3) rw” >> /boot/loader/entries/arch.conf
The correct one is SDA3 and not SDB3. If someone does not pay attention and write this, arch linux will not start when the installation is complete. And you will fall into the emergency shell, If someone had this problem is very simple to solve, Type these two commands:
mount /dev/sda2 new_root
exit
Arch Linux will start, and you can fix the error by editing the arch.conf file with the correct one.
Another thing, it is not necessary to use “-i” when installing the system, unless you want to choose what to install, otherwise you can simply use this:
pacstrap /mnt base base-devel
I hope I’ve helped.
Cheers!
Let me correct a little typing error that I made and may confuse those who read.
mount /dev/sda2 new_root***
I’ve put SDA2, but here you should put where you made your Root partition (in case that Tutorial is SDA3)
Once I installed Arch Linux and had an error with Pacman when updating, the following message “unable to lock database” appeared, if someone has the same problem, just type the command:
rm /var/lib/pacman/db.lck
Thereafter it returns to normal operation.
A strange thing is that I always managed to install arch linux in UEFI with this tutorial, but recently I could not. The only way I used to get around it was like this:
mount /dev/sda1 /boot
bootctl install
And other strange thing that happened is that when I used the command:
mkinitcpio -p linux
it gived me a error, the only way to get around was typing:
pacman -S linux
Then it returned to normal! What could have caused these errors? I’m sure I followed your tutorial faithfully.
Glorious, I have a doubt, since I installed using Systemd-boot, not grub, is there any way to choose which operating system I’m going to enter on the computer, like that grub menu that allows you to select between Windows 10 and Linux? I am using dual boot, and it is not practical at all to press F11 to change the boot every time I start the computer.
Cheers!
I have used this guide to get my system installed. The issue I’m having is figuring out how to boot an old kernel. 5.0 was just released and either the kernel or a package that was updated is giving fits to my wifi dongle.
I have tried searching for info on booting old kernels, but, I don’t have the needed key words to get the information I need. I noticed booting other kernels is mentioned on this page, but, I haven’t seen anything about how to do it.