I forked this guide installing Arch Linux (June 2018).
gloriouseggroll.tv/arch-linux-efi-install-guide
I only followed 75% of his instructions, and modified a few things. He had a few errors this guide will correct.
efivar -l
If it spits out a list of stuff (UEFI variables), then you are using UEFI mode.
lsblk
For my 250gb NVMe drive, I choose 4 partitions that look like this when finished:
/dev/nvme0n1
/dev/nvme0n1p1 200M EFI System
/dev/nvme0n1p2 4G Linux swap
/dev/nvme0n1p3 200G Linux filesystem
/dev/nvme0n1p4 28.7G Linux filesystem
Pick a drive to install linux on. Format drive with one of three tools (cfdisk, fdisk, gdisk). Cfdisk is the easiest to use.
Gdisk is probably the most powerful and hardest to use. Gdisk has a nice feature that wipes the entire drive clean in
one command. Then I use Cfdisk to finish the rest.
This will wipe entire drive clean.
gdisk /dev/nvme0n1
x
z
y
y
When you run one of the
mkfs commands, that's when it erases all the data.
mkfs.fat -F32 /dev/nvme0n1p1
mkswap /dev/nvme0n1p2
swapon /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3
mkfs.ext4 /dev/nvme0n1p4
Mount the partitions.
mount /dev/nvme0n1p3 /mnt
mkdir /mnt/boot
mkdir /mnt/home
mount /dev/nvme0n1p1 /mnt/boot
mount /dev/nvme0n1p4 /mnt/home
Install the Arch base files and development files.
You could just type
pacstrap /mnt and that works too.
pacstrap -i /mnt base base-devel vim
Generate fstab file, and look at it.
genfstab -U -p /mnt >> /mnt/etc/fstab
nano /mnt/etc/fstab
Hop off LIVE-USB, and onto new system drive.
arch-chroot /mnt
I uncommented
en_US.UTF-8 on either line #14 or #175
nano /etc/locale.gen
locale-gen
Set your language.
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
Time zones
ls /usr/share/zoneinfo/
ln -s /usr/share/zoneinfo/America/Chicago > /etc/localtime
hwclock --systohc --utc
Set hostname
echo Rairden > /etc/hostname
Enabling multilib and Arch AUR community repositories.
If you are running a 64bit system then you need to enable the multilib repository.
uncomment line #93 and 94.
[multilib] Include = /etc/pacman.d/mirrorlist
nano /etc/pacman.conf
pacman -Syu
passwd
useradd -m -g users -G wheel,storage,power -s /bin/bash erik
passwd erik
Type this in and it edits the file
/etc/sudoers.tmp
You uncomment a line, and add a line at the very end.
EDITOR=nano visudo
%wheel ALL=(ALL) ALL #uncomment
Defaults rootpw #add
I have an Intel i7 8700k CPU. So I need the ucode package. Here's how the bootloader will look at the end of this guide. Skip the 3rd line if you don't have an Intel CPU.
/boot/loader/entries/arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID=47ce9137-8891-434a-bd7e-1f185bb74c6d rw nvidia-drm.modeset=1
Grab some packages
pacman -S bash-completion
pacman -S intel-ucode
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
bootctl install
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.
├─nvme0n1p3 259:3 0 200G 0 part /
Skip this part. Only to show/verify what my system looks like. Type in
blkid
/dev/nvme0n1p1: UUID="B6D8-DB33" TYPE="vfat" PARTUUID="909aa21b-262a-2a47-bff2-67c171c64420"
/dev/nvme0n1p2: UUID="e8058de4-e625-4d30-a66c-cff86065f789" TYPE="swap" PARTUUID="a6c9af9b-1125-4d48-a9b3-d8ca2b62c70b"
/dev/nvme0n1p3: UUID="79a54d05-7694-49ca-a017-8bc4eb36127e" TYPE="ext4" PARTUUID="47ce9137-8891-434a-bd7e-1f185bb74c6d"
/dev/nvme0n1p4: UUID="612dcfc9-02a1-4ff0-8f6c-b6130fe94513" TYPE="ext4" PARTUUID="65dc9735-93ae-c140-b079-48d6f2dbe9a5"
/dev/sdc1: LABEL="backup" UUID="6A4985B551D5BDF0" TYPE="ntfs" PTTYPE="dos" PARTUUID="dd96c158-7381-440b-800a-bbb6db87ab77"
/dev/sdb2: LABEL="storage" UUID="DCAC4A0AAC49DF9E" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="0cc3b7bf-8fd8-49aa-aa32-1556915949a8"
/dev/sda2: UUID="1C5AB5725AB54972" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="f26a20f6-7121-4bcb-9d48-ca66f7646189"
Manually create a config file to add an entry for Arch Linux to the gummiboot manager.
nano /boot/loader/entries/arch.conf
Now type these 4 lines to the arch.conf file.
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
We need to add our last line to the boot loader.
echo "options root=PARTUUID=$(blkid -s PARTUUID -o value /dev/nvme0n1p3) rw" >> /boot/loader/entries/arch.conf
Now my arch.conf looks like this. Almost done!
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID=47ce9137-8891-434a-bd7e-1f185bb74c6d rw
Now check your ethernet adapter name. Usually the 2nd one, and not 'lo'. Mine is
enp0s31f6 and we’re going to enable it via systemctl.
ip link
sudo systemctl enable dhcpcd@enp0s31f6.service
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
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
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 it 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=47ce9137-8891-434a-bd7e-1f185bb74c6d rw
add
nvidia-drm.modeset=1
like this:
options root=PARTUUID=47ce9137-8891-434a-bd7e-1f185bb74c6d 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. The hooks folder doesn't exist for me, so lets create it.
cd /etc/pacman.d && mkdir hooks && cd hooks && touch nvidia.hook
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
My install had a glitch with the swap still being enabled (swapon), and hung forever on reboot. So try this instead before you reboot:
exit
umount -R /mnt
swapoff /dev/nvme0n1p2
reboot
Now we add 3d support, and install X, which is our display manager.
sudo pacman -S mesa
sudo pacman -S xorg-server xorg-apps xorg-xinit xorg-twm xorg-xclock
install KDE
sudo pacman -S plasma sddm
sudo systemctl enable sddm.service
Actually, non of the AUR helpers would be recommended.
The recommended approach is the “Arch” way, which means:
Browse the AUR until you find the package you want.
Download the tarball.
Unpack the tarball.
cd into the folder you just unpacked via terminal.
View/edit the PKGBUILD to make sue it’s safe and does what you want.
Run makepkg -scir in that folder, to install dependencies, build package, clean out source files, install the package and
then remove any leftover dependencies.
I'm ditching
yaourt, and trying the AUR helper called
yay. This installs it (delete your leftover yay folder).
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Grab some packages (my personal preferences that I want)
sudo pacman -S konsole dolphin dolphin-plugins git alsa-plugins alsa-tools alsa-utils gnome-alsamixer gwenview spectacle
screenfetch gparted rsync clementine ntfs-3g vpnc networkmanager-vpnc vlc
yay consolas-font google-chrome p7zip-gui spotify visual-studio-code-bin foxitreader
Clementine music player needs some libs to play audio files (mp3, flac, etc).
sudo pacman gst-plugins-base
sudo pacman gst-plugins-base-libs
sudo pacman gst-plugins-good
yay gstreamer0.10
yay gstreamer0.10-base
yay gstreamer0.10-base-plugins
I've installed a lot of packages. How do I see what I installed?
pacman -Qqet # see what you explicitly installed
pacman -Qe # see all packages installed
# if you have sublime text, type in the next 2 lines:
pacman -Qq > mypackages
subl mypackages
wiki.archlinux.org/index.php/Pacman/Tips_and_tricks
pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h
expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <(pacman -Qqg base base-devel | sort)) | sort -n
Make CPU use hyperthreading. Instead of 8% CPU usage using makepkg, it will use 100%.
sudo pacman -S ccache
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)
I'm using a 8700k CPU (6 core, 12 threads). -l12 is 12 threads, -j13 is +1 the # of threads.
find
MAKEFLAGS=
change it so it looks similar to:
MAKEFLAGS="-j13 -l12"
In order for makepkg to use 100% CPU from bash, add these two lines to end of
~/.bashrc
export PATH="/usr/lib/ccache/bin/:$PATH"
export MAKEFLAGS="-j13 -l12"
For my soundblaster Z card, I must have the pkg
gnome-alsamixer. And in order for the settings to be remembered on every reboot, I must download
alsa-utils so I can use the command
alsactl. Get your device number (it's always 2 or 3 for me).
cat /proc/asound/cards
sudo alsactl store 2
Mounting issues
In 2015, I tried linux mint. Loved it, but drivers weren't there.
This summer of 2018, I tried several distros and really liked Mint 18. Then I liked Fedora 28 more, then Kubuntu 18.04
was my fav. Then I tried Manjaro and was the most impressed of all. Least buggy, smoothest install, and most solid.
All distros are bloatware. A Windows 10 install is 25gb.
Manjaro 900 packages, 6 GB install
Antergos 884 packages, 6.4 GB install
Arch 650 packages, 5 GB install
All distros would auto-mount the external drives, but I could not write to them despite having permissions.
In order to write to an external NTFS on arch, you must install the
ntfs-3g pkg.
Here is my
/etc/fstab file.
# Static information about the filesystems.
# See fstab(5) for details.
# [file system] [dir] [type] [options] [dump] [pass]
# /dev/nvme0n1p3
UUID=79a54d05-7694-49ca-a017-8bc4eb36127e / ext4 rw,relatime,data=ordered 0 1
# /dev/nvme0n1p1
UUID=B6D8-DB33 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro
0 2
# /dev/nvme0n1p4
UUID=612dcfc9-02a1-4ff0-8f6c-b6130fe94513 /home ext4 rw,relatime,data=ordered 0 2
# /dev/nvme0n1p2
UUID=e8058de4-e625-4d30-a66c-cff86065f789 none swap defaults,pri=-2 0 0
#/dev/sdb2
UUID=DCAC4A0AAC49DF9E /run/media/erik/storage ntfs-3g auto,users,uid=1000,gid=985,rw,dmask=027,fmask=137 0 0
#/dev/sdc1
UUID=6A4985B551D5BDF0 /run/media/erik/backup ntfs-3g auto,users,uid=1000,gid=985,rw,dmask=027,fmask=137 0 0
#blkid output:
#/dev/nvme0n1p1: UUID="B6D8-DB33" TYPE="vfat" PARTUUID="909aa21b-262a-2a47-bff2-67c171c64420"
#/dev/nvme0n1p2: UUID="e8058de4-e625-4d30-a66c-cff86065f789" TYPE="swap" PARTUUID="a6c9af9b-1125-4d48-a9b3-d8ca2b62c70b"
#/dev/nvme0n1p3: UUID="79a54d05-7694-49ca-a017-8bc4eb36127e" TYPE="ext4" PARTUUID="47ce9137-8891-434a-bd7e-1f185bb74c6d"
#/dev/nvme0n1p4: UUID="612dcfc9-02a1-4ff0-8f6c-b6130fe94513" TYPE="ext4" PARTUUID="65dc9735-93ae-c140-b079-48d6f2dbe9a5"
#/dev/sda2: UUID="1C5AB5725AB54972" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="f26a20f6-7121-4bcb-9d48-ca66f7646189"
#/dev/sdb2: LABEL="storage" UUID="DCAC4A0AAC49DF9E" TYPE="ntfs" PARTLABEL="Basic data partition" #PARTUUID="0cc3b7bf-8fd8-49aa-aa32-1556915949a8"
#/dev/sdc1: LABEL="backup" UUID="6A4985B551D5BDF0" TYPE="ntfs" PTTYPE="dos" PARTUUID="dd96c158-7381-440b-800a-bbb6db87ab77"
In the above fstab, I would use the string
ntfs and it would not work. You have to type in
ntfs-3g to be able to write.
These mount settings:
#/dev/sdb2
UUID=DCAC4A0AAC49DF9E /run/media/erik/storage ntfs-3g auto,users,uid=1000,gid=985,rw,dmask=027,fmask=137 0 0
...produce these permissions. And now I can write to an external NTFS drive.
Exported from konsole
erik@Rairden:/run/media/erik/storage/Docs2$ id -u && id -g && ls -lh --group-directories-first
1000
985
total 86M
drwxr-x--- 1 erik users 4.0K Jun 21 23:59
AsRock z370 extreme4 drivers
drwxr-x--- 1 erik users 4.0K Jun 23 00:21
My Web Sites
drwxr-x--- 1 erik users 4.0K May 24 03:10
pubgStreamingTest
-rw-r----- 1 erik users 3.7M Sep 30 2017
20170930_220813.jpg
-rw-r----- 1 erik users 1.2M Jan 30 20:02
20180130_200234.jpg
-rw-r----- 1 erik users 638K Mar 10 16:54
ASCII-Table-wide.svg
Two techniques produce identical results.
First line uses two packages (aha and xsel).
The second line is using a shell script, but formats the html with tons of css in a huge style sheet.
ls -lh --group-directories-first --color=always | aha | xsel -i -b
ls -lh --group-directories-first --color=always | ~/ansi2html.sh > ls.html
total 86M
drwxr-x--- 1 erik users 4.0K Jun 21 23:59 AsRock z370 extreme4 drivers
drwxr-x--- 1 erik users 4.0K Jun 23 00:21 My Web Sites
drwxr-x--- 1 erik users 4.0K May 24 03:10 pubgStreamingTest
-rw-r----- 1 erik users 3.7M Sep 30 2017 20170930_220813.jpg
-rw-r----- 1 erik users 1.2M Jan 30 20:02 20180130_200234.jpg
-rw-r----- 1 erik users 638K Mar 10 16:54 ASCII-Table-wide.svg
Setting up Manjaro
Raw
.bashrc text files:
Manjaro 17.1 (architect KDE-minimal).
Ubuntu 18.04
Here's my
/etc/fstab,
/etc/hosts and
/boot/grub/grub.cfg files.
fstab
hosts
grub
Place the bashrc files in both ~/.bashrc and /root/.bashrc
Set up Z shell as default
After you install oh-my-zsh-git package for themeing, set it as default in this file
/etc/passwd
And there's an auto login bug for Manjaro 17.1.11. Fix that by editing the file /etc/sddm.conf for lines #5-9 to
look like this:
# Autologin session
Session=plasma.desktop
# Autologin user
User=erik
Tired of that "watchdog" thing when rebooting taking 1-2mins sometimes?
Edit
/etc/systemd/system.conf and uncomment the two lines and set to:
leave RuntimeWatchdogSec at 0
set ShutdownWatchdogSec to 0
sudo pacman -S bash-completion ccache git vim
sublimetext.com/3
curl -O https://download.sublimetext.com/sublimehq-pub.gpg && sudo pacman-key --add sublimehq-pub.gpg && sudo pacman-key
--lsign-key 8A8F901A && rm sublimehq-pub.gpg
echo -e "\n[sublime-text]\nServer = https://download.sublimetext.com/arch/stable/x86_64" | sudo tee -a /etc/pacman.conf
sudo pacman -Syu sublime-text
appnee.com/sublime-text-3-universal.....
gist.github.com/abriemme/8004951
I used this for sublime 3, 3176 on linux:
----- BEGIN LICENSE -----
sgbteam
Single User License
EA7E-1153259
buy..... this.... software ........
115F202E 7B91AB2D 0D2A40ED 352B269B
76E84F0B CD69BFC7 59F2DFEF E267328F
215652A3 E88F9D8F 4C38E3BA 5B2DAAE4
969624E7 DC9CD4D5 717FB40C 1B9738CF
20B3C4F1 E917B5B3 87C38D9C ACCE7DD8
5F7EF854 86B9743C FADC04AA FB0DA5C0
F913BE58 42FEA319 F954EFDD AE881E0B
------ END LICENSE ------
Install my favorite packages.
yay -S copyq oh-my-zsh-git p7zip-gui spotify xnviewmp google-chrome
yay -S discord
yay -S visual-studio-code-bin foxitreader
yay -S ttf-ms-fonts powerline-fonts-git consolas-font
yay -S intellij-idea-ce jdk
yay -S android-studio
yay -S datagrip
yay -S masterpdfeditor-free
yay -S digimend-kernel-drivers-dkms-git # tablet driver
yay -S onlyoffice-bin
sudo pacman -S yay
sudo pacman -S mariadb
sudo pacman -S pamac
sudo pacman -S mediainfo-gui
sudo pacman -S okteta meld # hex editor and diff viewer
sudo pacman -S graphviz # for UML diagrams in IntelliJ
sudo pacman -S fail2ban filezilla avidemux-qt obs-studio
sudo pacman -S php-apache
sudo pacman -S gparted
sudo pacman -S bind-tools
sudo pacman -S whois
sudo pacman -S krita
sudo pacman -S libvirt
sudo pacman -S virt-manager qemu vde2 ebtables dnsmasq bridge-utils openbsd-netcat
sudo pacman -Rs konversation octopi
#sudo pacman -Rs partitionmanager
#yay -S ttf-google-fonts-git
# the best PDF editor I've used is on window10 (Nitro PDF, same as Foxit but allows editing)
fosslinux.com/2484/how-to-install-virtual-machine-manager-kvm-in-manjaro
Sublime text. Add this to your keybinding user settings to tab through parentheses/quotes.
Preferences > Key Bindings ... paste.
gist.github.com/craiggists/2268146
Add Windows OS to grub menu
[erik@Rairden
~
]$
sudo os-prober
/dev/sda2@/efi/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi
[erik@Rairden
~
]$
sudo update-grub
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/manjaro/theme.txt
Found linux image: /boot/vmlinuz-4.17-x86_64
Found initrd image: /boot/intel-ucode.img /boot/initramfs-4.17-x86_64.img
Found initrd fallback image: /boot/initramfs-4.17-x86_64-fallback.img
Found Windows Boot Manager on /dev/sda2@/efi/Microsoft/Boot/bootmgfw.efi
Found memtest86+ image: /boot/memtest86+/memtest.bin
/usr/bin/grub-probe: warning: unknown device type nvme0n1.
done