Forked from sk0x1234/Arch-install-btrfs-systemd-boot.txt
Created
March 22, 2022 09:54
-
-
Save ppacher/1b6c176f0f9bbdfe7bdee1cf3c361faa to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Installation on Dell XPS 9570 | |
# Connect to Internet | |
wifi-menu | |
# Sync clock | |
timedatectl set-ntp true | |
# Create three partitions: | |
# 1 512MB EFI partition # Hex code ef00 | |
# 2 rest Linux partiton # Hex code 8300 | |
cgdisk /dev/nvme0n1 | |
# Format EFI partition | |
mkfs.vfat -F 32 -n BOOT /dev/nvme0n1p1 | |
o=compress=lzo,space_cache,noatime,ssd | |
o_btrfs=$o,defaults,x-mount.mkdir | |
# mount -t btrfs /dev/nvme0n1p2 /mnt | |
# Create BTRFS subvolumes + mount directories | |
btrfs subvolume create root | |
btrfs subvolume create home | |
btrfs subvolume create snapshots | |
btrfs subvolume create tmp | |
btrfs subvolume create opt | |
btrfs subvolume create var | |
umount /mnt | |
# Mount BTRFS subvolumes | |
mount -o subvol=root,$o_btrfs /dev/mapper/root /mnt | |
mount -o subvol=home,$o_btrfs /dev/mapper/root /mnt/home | |
mount -o subvol=snapshots,$o_btrfs /dev/mapper/root /mnt/.snapshots | |
mount -o subvol=tmp,$o_btrfs /dev/mapper/root /mnt/tmp | |
mount -o subvol=opt,$o_btrfs /dev/mapper/root /mnt/opt | |
mount -o subvol=var,$o_btrfs /dev/mapper/root /mnt/var | |
# Mount EFI partition | |
mkdir /mnt/boot | |
mount /dev/nvme0n1p1 /mnt/boot | |
# Install the base system plus a few packages | |
pacstrap /mnt base base-devel btrfs-progs zsh neovim git sudo iwd | |
genfstab -Up /mnt >>/mnt/etc/fstab | |
# Verify and adjust /mnt/etc/fstab | |
# Change relatime on all non-boot partitions to noatime (reduces wear if using an SSD) | |
arch-chroot /mnt | |
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen | |
locale-gen | |
localectl set-locale LANG=en_US.UTF-8 | |
# Setup time | |
ln -s /usr/share/zoneinfo/America/Newyork etc/localtime | |
hwclock --systohc --localtime | |
# Set locale | |
echo 'LANG=en_US.UTF-8' > /etc/locale.conf | |
# set hostname | |
echo xcloud >/etc/hostname | |
echo '127.0.0.1 xcloud xcloud.localdomain' > /etc/hosts | |
echo '::1 xcloud xcloud.localdomain' > /etc/hosts | |
# Set password for root | |
passwd | |
# Add real group / user | |
groupadd -g 1001 <groupname> | |
useradd -m -g '<groupname>' -G users,wheel,audio,video -s /bin/zsh '<username>' | |
passwd '<username>' | |
echo '<username> ALL=(ALL) ALL' > /etc/sudoers.d/<username> | |
# Configure mkinitcpio with modules needed for the initrd image | |
vi /etc/mkinitcpio.conf | |
# remove HOOK "fsck", add "keymap encrypt" before "filesystems": | |
# HOOKS="base udev autodetect modconf block btrfs keymap encrypt filesystems keyboard" | |
# Regenerate initrd image | |
mkinitcpio -p linux | |
# Setup systemd-boot | |
bootctl --path=/boot install | |
# Enable Intel microcode updates | |
pacman -S intel-ucode | |
/boot/loader/entries/arch.conf | |
--- | |
title Arch Linux Encrypted | |
linux /vmlinuz-linux | |
initrd /intel-ucode.img | |
initrd /initramfs-linux.img | |
options cryptdevice=UUID=<cryptdevice-UUID>:root root=UUID=<root-UUID> rootflags=subvol=@ rw | |
--- | |
# Set default bootloader entry | |
--- | |
/boot/loader/loader.conf | |
--- | |
default arch | |
timeout 4 | |
editor 0 | |
--- | |
### | |
### Useful services | |
### | |
pacman -S acpid ntp avahi cups cronie | |
systemctl enable acpid | |
systemctl enable ntpd | |
systemctl enable avahi-daemon | |
systemctl enable org.cups.cupsd.service | |
systemctl enable cronie | |
systemctl enable systemd-timesyncd.service | |
systemctl start systemd-timesyncd.service | |
pacman -S networkmanager | |
pacman -S network-manager-applet | |
systemctl enable NetworkManager | |
pacman -S bash-completion | |
vi /etc/modprobe.d/modprobe.conf | |
# content: | |
# blacklist psmouse | |
### | |
### X11 / Gnome | |
### | |
pacman -S xorg-server xorg-xinit | |
pacman -S xf86-video-intel | |
pacman -S alsa-utils alsa-tools pulseaudio pavucontrol nm-connection-editor | |
pacman -S gnome gnome-extra gdm | |
pacman -S chromium emacs openssh | |
# exit arch-chroot | |
exit | |
# cleanup EFI-bootmanager entries | |
efibootmgr | |
efibootmgr -b 0 -B # e.g. remove Boot0000 | |
# unmount all filesystems | |
umount -R /mnt | |
reboot | |
### | |
### Yaourt | |
### | |
# Installation from AUR | |
# install package-query first: | |
curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz | |
tar -xvzf package-query.tar.gz | |
cd package-query | |
makepkg -si | |
# then yaourt itself: | |
cd .. | |
curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz | |
tar -xvzf yaourt.tar.gz | |
cd yaourt | |
makepkg -si | |
systemctl start gdm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment