Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save frankenstein91/03279183008c447ef378b8c12f6b6a3d to your computer and use it in GitHub Desktop.
Save frankenstein91/03279183008c447ef378b8c12f6b6a3d to your computer and use it in GitHub Desktop.
= Arch Linux step-by-step installation =
= http://blog.fabio.mancinelli.me/2012/12/28/Arch_Linux_on_BTRFS.html =
== Boot the installation CD ==
loadkeys de
== Create partition ==
gdisk /dev/sda
Part 1#: SWAP (8200) RAM + 4GB
Part 2#: EFI (EF00) 600MiB
Part 3#: /boot (8300) 3GiB
Part 4#: / (8300) all the rest
== Format the partition ==
mkswap /dev/sda1
mkfs.fat -F32 /dev/sda2
mkfs.btrfs -L "Arch Linux" /dev/sda4
mkfs.ext4 -L "Arch Linux Boot" /dev/sda3
== Mount the partition ==
mkdir /mnt/btrfs-root
mount -o defaults,discard,ssd,nodev,nosuid,compress=zstd /dev/sda4 /mnt/btrfs-root
== Create the subvolumes ==
mkdir -p /mnt/btrfs-root/__snapshot
mkdir -p /mnt/btrfs-root/__current
btrfs subvolume create /mnt/btrfs-root/__current/root
btrfs subvolume create /mnt/btrfs-root/__current/home
== Mount the subvolumes ==
mkdir -p /mnt/btrfs-current
mount -o defaults,discard,ssd,nodev,compress=zstd,subvol=__current/root /dev/sda4 /mnt/btrfs-current
mkdir -p /mnt/btrfs-current/home
mkdir -p /mnt/btrfs-current/boot
mount -o defaults,discard,ssd,nodev,compress=zstd,nosuid,subvol=__current/home /dev/sda4 /mnt/btrfs-current/home
mount /dev/sda3 /mnt/btrfs-current/boot
mkdir -p /mnt/btrfs-current/boot/efi
mount /dev/sda2 /mnt/btrfs-current/boot/efi
== Install Arch Linux ==
nano /etc/pacman.d/mirrorlist
* Select the mirror to be used
== internet needed from here ==
pacstrap /mnt/btrfs-current base base-devel efibootmgr dosfstools gptfdisk intel-ucode networkmanager btrfs-progs zsh zsh-systax-highlighting wget git
genfstab -U /mnt/btrfs-current >> /mnt/btrfs-current/etc/fstab
nano /mnt/btrfs-current/etc/fstab
* copy the partition info for / and mount it on /run/btrfs-root (remember to remove subvol and subvolid parameter! and add nodev,nosuid,noexec parameters)
* remove 2nd subvol params
== Configure the system ==
arch-chroot /mnt/btrfs-current /bin/bash
nano /etc/locale.gen
* Uncomment de_DE.UTF-8 and de_DE*
locale-gen
echo LANG=de_DE.UTF-8 > /etc/locale.conf
export LANG=de_DE.UTF-8
echo "KEYMAP=de-latin1" > /etc/vconsole.conf
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc --utc
echo 'hackbook-ng' > /etc/hostname
nano /etc/hosts
127.0.0.1 localhost hackbook-ng
::1 localhost hackbook-ng
systemctl enable NetworkManager.service
nano /etc/mkinitcpio.conf
* Remove fsck and add btrfs to HOOKS
mkinitcpio -p linux
passwd
== Install boot loader ==
pacman -S grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
nano /etc/default/grub
* Edit settings (e.g., disable gfx, quiet, etc.)
grub-mkconfig -o /boot/grub/grub.cfg
exit
== Unmount and reboot ==
umount /mnt/btrfs-current/home
umount /mnt/btrfs-current/boot/efi
umount /mnt/btrfs-current/boot
umount /mnt/btrfs-current
umount /mnt/btrfs-root
swapoff -a
reboot
== Post installation configuration ==
sudo nano /etc/pacman.conf
#Color. Uncomment it by removing the hashtag (#) infront, and directly below write ILoveCandy
https://steemkr.com/tutorial/@dimitrisp/useless-but-fun-linux-terminal-tips-arch-pacman-and-pac-man-also-pi
=== Hardening ===
chmod 700 /boot /etc/{iptables,arptables}
nano /etc/sysctl.d/01-icmp-Hardening.conf
* net.ipv4.icmp_echo_ignore_broadcasts = 1
=== Snapshot ===
echo $(date "+%Y%m%d-%H%M%S") > /run/btrfs-root/__current/root/SNAPSHOT
echo "Fresh install" >> /run/btrfs-root/__current/root/SNAPSHOT
btrfs subvolume snapshot -r /run/btrfs-root/__current/root /run/btrfs-root/__snapshot/ROOT@$(head -n 1 /run/btrfs-root/__current/root/SNAPSHOT)
cd /run/btrfs-root/__snapshot/
ln -s ROOT@$(cat /run/btrfs-root/__current/root/SNAPSHOT) fresh-install
rm /run/btrfs-root/__current/root/SNAPSHOT
==== Software Installation ===
visudo
* Enable sudo for wheel
groupadd frank
useradd -m -g frank -G users,wheel,storage,power,network,audio -s /bin/zsh -c "Frank Name" frank
passwd frank
mkdir -p /tmp/pacaur_install
cd /tmp/pacaur_install
pacman -S terminology
pacman -Syu
curl -o PKGBUILD https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=cower
makepkg PKGBUILD --skippgpcheck --install --needed
curl -o PKGBUILD https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=pacaur
makepkg PKGBUILD --install --needed
cd ~
rm -r /tmp/pacaur_install
shutdown -r now
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment