Skip to content

Instantly share code, notes, and snippets.

@derekstavis
Last active June 18, 2018 18:22
Show Gist options
  • Save derekstavis/9fe57baca0eee1ebccd7344405982621 to your computer and use it in GitHub Desktop.
Save derekstavis/9fe57baca0eee1ebccd7344405982621 to your computer and use it in GitHub Desktop.
Derek's guide to Arch Linux

Arch Linux is a GNU/Linux distribution that's always in the newest version of software packages, differing it from versionated distributions as Ubuntu and Debian, which updates all package's major/minor only in new releases. Another good point of Arch is that all configurations are the default ones, so you don't get Canonical's or RedHat's opinions in your operating system.

Although, not everything is flowers. Arch's installation isn't graphical, that's why I've created dsome time ago a sequence of commands to help friends to get Arch Linux with GNOME with the setup I consider the best for everyone.

After creating a boot thumb drive and boot it (download in https://www.archlinux.org/download/) just follow the following steps:

WARNING: You need to boot in UEFI mode (disable the CSM mode in your "BIOS" setup)

DISCLAIMER: These commands will erase all your disk contents

## PARTITIONING - ERASE AND SETUP THE DISK FOR INSTALL

> lsblk # will list all your disks
> fdisk /dev/sdX # where X is the disk you want to install on
g<enter>
n<enter>
<enter>
<enter>
+500M<enter> # if it asks something, reply Y
n<enter>
<enter>
<enter>
+60G<enter>
n<enter>
<enter>
<enter>
+2G<enter>
n<enter>
<enter>
<enter>
<enter>
t<enter>
1<enter>
1<enter>
w<enter>
> mkfs.vfat /dev/sdX1
> mkfs.xfs /dev/sdX2
> mkfs.xfs /dev/sdX4
> mount /dev/sdX2 /mnt
> mkdir /mnt/boot

## BASE SYSTEM - INSTALL THE BASE OPERATING SYSTEM

> mount /dev/sdX1 /mnt/boot
> pacstrap /mnt base base-devel
> arch-chroot /mnt
> pacman -S gnome networkmanager sudo vim
> bootctl install
> cp /usr/share/systemd/bootctl/loader.conf /boot/loader/loader.conf
> cp /usr/share/systemd/bootctl/arch.conf /boot/loader/entries/arch.conf
> vi /boot/loader/entries/arch.conf
<esc>:r! blkid /dev/sdX2 # keep "options" like "options    root=PARTUUID=xxxxx rw"
<esc>:wq
> vim /etc/locale.gen # uncomment en_US.UTF-8
> locale-gen
> vim /etc/fstab
<esc>:r! blkid /dev/sdX4
# format the text to be like "PARTUUID=xxxxxx /home xfs rw 0 0" (no quotes on PARTUUID) 
> exit
> reboot # should restart the computer on the text interface

## FINAL SETTINGS - CONFIGURE AND START THE GRAPHICAL ENVIRONMENT

# login with user "root", without password

> localectl set-locale LANG=en_US.UTF-8
> hostnamectl set-hostname <your-hostname>
> systemctl enable gdm NetworkManager
> useradd -m -G wheel <your-username>
> vim /etc/sudoers # and uncomment wheel permissions
> passwd # set a password for "root" user
> systemctl start gdm NetworkManager

After executing this steps, you should see the GNOME login screen.

There are more useful stuff you will probably want:

> pacman -S gst-plugins-good gst-pugins-bad gst-plugins-ugly gst-libav # various codecs
> pacman -S gnome-tweak-tool # change system themes, font size, etc
> pacman -S gnome-boxes # better than virtual box

INFO: It's possible to add all packages in a single pacman -S, you don't need to run every line

Other nice thing on Arch Linux is the Arch User Repository (or AUR). To install a pacman wrapper that also installs packages from AUR (needed for Google Chrome, for example):

> curl -L https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
> curl -L https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz

> tar xvzf package-query
> tar xvzf yaourt

> cd package-query
> makepkg -si

> cd ../yaourt
> makepkg -si

From now you can replace pacman by yaourt. To install Google Chrome:

> yaourt -S google-chrome

More useful stuff on AUR:

> yaourt -S wps-office ttf-wps-fonts # a microsoft office compatible clone
> yaourt -S telegram-desktop-bin # telegram desktop client
> yaourt -S tilix # the best terminal application
> yaourt -S zoom # the video conference tool
> yaourt -S nasc-git # text editor like calculator
> yaourt -S watchman # useful for improving webpack file watcher
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment