From ed4d02470f768f0a28550c9243a89811f9a80936 Mon Sep 17 00:00:00 2001 From: Hau Nguyen Date: Sun, 25 Dec 2022 15:38:53 +0700 Subject: [PATCH] feat: archlinux --- docs/2022-12-25-archlinux.html | 126 ++++++++++++ posts/2022-12-25-archlinux.md | 340 +++++++++++++++++++++++++++++++++ 2 files changed, 466 insertions(+) create mode 100644 docs/2022-12-25-archlinux.html create mode 100644 posts/2022-12-25-archlinux.md diff --git a/docs/2022-12-25-archlinux.html b/docs/2022-12-25-archlinux.html new file mode 100644 index 0000000..76e97cc --- /dev/null +++ b/docs/2022-12-25-archlinux.html @@ -0,0 +1,126 @@ +Index

Install Arch Linux

Install Arch Linux is thing I always want to do for my laptop/PC since I had my laptop in ninth grade.

This is not a guide for everyone, this is just save for myself in a future and for anyone who want to walk in my shoes.

Installation guide

Pre-installation

Check disks carefully:

lsblk
+

USB flash installation medium

Verify the boot mode

Check UEFI mode:

ls /sys/firmware/efi/efivars
+

Connect to the internet

For wifi, use iwd.

Partition the disks

GPT fdisk:

cgdisk /dev/sdx
+

Partition scheme

UEFI/GPT layout:
Mount pointPartitionPartition typeSuggested size
/mnt/efi/dev/efi_system_partitionEFI System Partition512 MiB
/mnt/boot/dev/extended_boot_loader_partitionExtended Boot Loader Partition1 GiB
/mnt/dev/root_partitionRoot Partition

BIOS/GPT layout:
Mount pointPartitionPartition typeSuggested size
BIOS boot partition1 MiB
/mnt/dev/root_partitionRoot Partition

LVM:

# Create physical volumes
+pvcreate /dev/sdaX
+
+# Create volume groups
+vgcreate RootGroup /dev/sdaX /dev/sdaY
+
+# Create logical volumes
+lvcreate -l +100%FREE RootGroup -n rootvol
+

Format:

# efi
+mkfs.fat -F32 /dev/efi_system_partition
+
+# boot
+mkfs.fat -F32 /dev/extended_boot_loader_partition
+
+# root
+mkfs.ext4 -L ROOT /dev/root_partition
+
+# root with btrfs
+mkfs.btrfs -L ROOT /dev/root_partition
+
+# root on lvm
+mkfs.ext4 /dev/RootGroup/rootvol
+

Mount:

# root
+mount /dev/root_partition /mnt
+
+# root with btrfs
+mount -o compress=zstd /dev/root_partition /mnt
+
+# root on lvm
+mount /dev/RootGroup/rootvol /mnt
+
+# efi
+mount --mkdir /dev/efi_system_partition /mnt/efi
+
+# boot
+mount --mkdir /dev/extended_boot_loader_partition /mnt/boot
+

Installation

pacstrap -K /mnt base linux linux-firmware
+
+# AMD
+pacstrap -K /mnt amd-ucode
+
+# Intel
+pacstrap -K /mnt intel-ucode
+
+# Btrfs
+pacstrap -K /mnt btrfs-progs
+
+# LVM
+pacstrap -K /mnt lvm2
+
+# Text editor
+pacstrap -K /mnt neovim
+

Configure

fstab

genfstab -U /mnt >> /mnt/etc/fstab
+

Chroot

arch-chroot /mnt
+

Time zone

ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
+
+hwclock --systohc
+

Localization:

Edit /etc/locale.gen:

# Uncomment en_US.UTF-8 UTF-8
+

Generate locales:

locale-gen
+

Edit /etc/locale.conf:

LANG=en_US.UTF-8
+

Network configuration

Edit /etc/hostname:

myhostname
+

Initramfs

Edit /etc/mkinitcpio.conf:

# LVM
+# https://wiki.archlinux.org/title/Install_Arch_Linux_on_LVM#Adding_mkinitcpio_hooks
+HOOKS=(base udev ... block lvm2 filesystems)
+
+# https://wiki.archlinux.org/title/mkinitcpio#Common_hooks
+# Replace udev with systemd
+
mkinitcpio -P
+

Root password

passwd
+

Addition

# NetworkManager
+pacman -Syu networkmanager
+systemctl enable NetworkManager.service
+
+# Bluetooth
+pacman -Syu bluez
+systemctl enable bluetooth.service
+
+# Clock
+timedatectl set-ntp true
+

Boot loader

systemd-boot

GRUB

General recommendations

Always remember to check dependencies when install packages.

System administration

Sudo:

pacman -Syu sudo
+
+EDITOR=nvim visudo
+# Uncomment group wheel
+
+# Add user if don't want to use systemd-homed
+useradd -m -G wheel -c "The Joker" joker
+
+# Or using zsh
+useradd -m -G wheel -s /usr/bin/zsh -c "The Joker" joker
+
+# Set password
+passwd joker
+

systemd-homed (WIP):

systemctl enable systemd-homed.service
+
+homectl create joker --real-name="The Joker" --member-of=wheel
+
+# Using zsh
+homectl update joker --shell=/usr/bin/zsh
+

Note:
Can not run homectl when install Arch Linux.
Should run on the first boot.

Desktop Environment

Install Xorg:

pacman -Syu xorg-server
+

GNOME

pacman -Syu gnome-shell \
+	gnome-control-center gnome-system-monitor \
+	gnome-tweaks gnome-backgrounds gnome-screenshot gnome-keyring gnome-logs \
+	gnome-console gnome-text-editor \
+	nautilus xdg-user-dirs-gtk file-roller evince eog
+
+# Login manager
+pacman -Syu gdm
+systemctl enable gdm.service
+

KDE (WIP)

pacman -Syu plasma-meta \
+	kde-system-meta
+
+# Login manager
+pacman -Syu sddm
+systemctl enable sddm.service
+

List of applications

pacman

Uncomment in /etc/pacman.conf:

# Misc options
+Color
+ParallelDownloads
+

Pipewire (WIP)

pacman -Syu pipewire wireplumber \
+	pipewire-alsa pipewire-pulse \
+	gst-plugin-pipewire pipewire-v4l2
+

Flatpak (WIP)

pacman -Syu flatpak
+

Improving performance

https://wiki.archlinux.org/index.php/swap#Swap_file

https://wiki.archlinux.org/index.php/swap#Swappiness

https://wiki.archlinux.org/index.php/Systemd/Journal#Journal_size_limit

https://wiki.archlinux.org/index.php/Core_dump#Disabling_automatic_core_dumps

https://wiki.archlinux.org/index.php/Solid_state_drive#Periodic_TRIM

https://wiki.archlinux.org/index.php/Silent_boot

https://wiki.archlinux.org/title/Improving_performance#Watchdogs

https://wiki.archlinux.org/title/PRIME

In the end

This guide is updated regularly I promise.

Feel free to ask me via email +Mastodon \ No newline at end of file diff --git a/posts/2022-12-25-archlinux.md b/posts/2022-12-25-archlinux.md new file mode 100644 index 0000000..92a9075 --- /dev/null +++ b/posts/2022-12-25-archlinux.md @@ -0,0 +1,340 @@ +# Install Arch Linux + +Install Arch Linux is thing I always want to do for my laptop/PC since I had my laptop in ninth grade. + +This is not a guide for everyone, this is just save for myself in a future and for anyone who want to walk in my shoes. + +## [Installation guide](https://wiki.archlinux.org/index.php/Installation_guide) + +### Pre-installation + +Check disks carefully: + +```sh +lsblk +``` + +[USB flash installation medium](https://wiki.archlinux.org/index.php/USB_flash_installation_medium) + +#### Verify the boot mode + +Check UEFI mode: + +```sh +ls /sys/firmware/efi/efivars +``` + +#### Connect to the internet + +For wifi, use [iwd](https://wiki.archlinux.org/index.php/Iwd). + +#### Partition the disks + +[GPT fdisk](https://wiki.archlinux.org/index.php/GPT_fdisk): + +```sh +cgdisk /dev/sdx +``` + +[Partition scheme](https://wiki.archlinux.org/index.php/Partitioning#Partition_scheme) + +UEFI/GPT layout: + +| Mount point | Partition | Partition type | Suggested size | +| ----------- | ------------------------------------- | ------------------------------ | -------------- | +| `/mnt/efi` | `/dev/efi_system_partition` | EFI System Partition | 512 MiB | +| `/mnt/boot` | `/dev/extended_boot_loader_partition` | Extended Boot Loader Partition | 1 GiB | +| `/mnt` | `/dev/root_partition` | Root Partition | | + +BIOS/GPT layout: + +| Mount point | Partition | Partition type | Suggested size | +| ----------- | --------------------- | ------------------- | -------------- | +| | | BIOS boot partition | 1 MiB | +| `/mnt` | `/dev/root_partition` | Root Partition | | + +LVM: + +```sh +# Create physical volumes +pvcreate /dev/sdaX + +# Create volume groups +vgcreate RootGroup /dev/sdaX /dev/sdaY + +# Create logical volumes +lvcreate -l +100%FREE RootGroup -n rootvol +``` + +Format: + +```sh +# efi +mkfs.fat -F32 /dev/efi_system_partition + +# boot +mkfs.fat -F32 /dev/extended_boot_loader_partition + +# root +mkfs.ext4 -L ROOT /dev/root_partition + +# root with btrfs +mkfs.btrfs -L ROOT /dev/root_partition + +# root on lvm +mkfs.ext4 /dev/RootGroup/rootvol +``` + +Mount: + +```sh +# root +mount /dev/root_partition /mnt + +# root with btrfs +mount -o compress=zstd /dev/root_partition /mnt + +# root on lvm +mount /dev/RootGroup/rootvol /mnt + +# efi +mount --mkdir /dev/efi_system_partition /mnt/efi + +# boot +mount --mkdir /dev/extended_boot_loader_partition /mnt/boot +``` + +### Installation + +```sh +pacstrap -K /mnt base linux linux-firmware + +# AMD +pacstrap -K /mnt amd-ucode + +# Intel +pacstrap -K /mnt intel-ucode + +# Btrfs +pacstrap -K /mnt btrfs-progs + +# LVM +pacstrap -K /mnt lvm2 + +# Text editor +pacstrap -K /mnt neovim +``` + +### Configure + +#### [fstab](https://wiki.archlinux.org/index.php/Fstab) + +```sh +genfstab -U /mnt >> /mnt/etc/fstab +``` + +#### Chroot + +```sh +arch-chroot /mnt +``` + +#### Time zone + +```sh +ln -sf /usr/share/zoneinfo/Region/City /etc/localtime + +hwclock --systohc +``` + +#### Localization: + +Edit `/etc/locale.gen`: + +```txt +# Uncomment en_US.UTF-8 UTF-8 +``` + +Generate locales: + +```sh +locale-gen +``` + +Edit `/etc/locale.conf`: + +```txt +LANG=en_US.UTF-8 +``` + +#### Network configuration + +Edit `/etc/hostname`: + +```txt +myhostname +``` + +#### Initramfs + +Edit `/etc/mkinitcpio.conf`: + +```txt +# LVM +# https://wiki.archlinux.org/title/Install_Arch_Linux_on_LVM#Adding_mkinitcpio_hooks +HOOKS=(base udev ... block lvm2 filesystems) + +# https://wiki.archlinux.org/title/mkinitcpio#Common_hooks +# Replace udev with systemd +``` + +```sh +mkinitcpio -P +``` + +#### Root password + +```sh +passwd +``` + +#### Addition + +```sh +# NetworkManager +pacman -Syu networkmanager +systemctl enable NetworkManager.service + +# Bluetooth +pacman -Syu bluez +systemctl enable bluetooth.service + +# Clock +timedatectl set-ntp true +``` + +#### Boot loader + +[systemd-boot](Applications/System/systemd-boot.md) + +[GRUB](https://wiki.archlinux.org/index.php/GRUB) + +## [General recommendations](https://wiki.archlinux.org/index.php/General_recommendations) + +Always remember to check **dependencies** when install packages. + +### System administration + +[Sudo](https://wiki.archlinux.org/index.php/sudo): + +```sh +pacman -Syu sudo + +EDITOR=nvim visudo +# Uncomment group wheel + +# Add user if don't want to use systemd-homed +useradd -m -G wheel -c "The Joker" joker + +# Or using zsh +useradd -m -G wheel -s /usr/bin/zsh -c "The Joker" joker + +# Set password +passwd joker +``` + +[systemd-homed (WIP)](https://wiki.archlinux.org/index.php/Systemd-homed): + +```sh +systemctl enable systemd-homed.service + +homectl create joker --real-name="The Joker" --member-of=wheel + +# Using zsh +homectl update joker --shell=/usr/bin/zsh +``` + +**Note**: +Can not run `homectl` when install Arch Linux. +Should run on the first boot. + +### Desktop Environment + +Install [Xorg](https://wiki.archlinux.org/index.php/Xorg): + +```sh +pacman -Syu xorg-server +``` + +#### [GNOME](https://wiki.archlinux.org/index.php/GNOME) + +```sh +pacman -Syu gnome-shell \ + gnome-control-center gnome-system-monitor \ + gnome-tweaks gnome-backgrounds gnome-screenshot gnome-keyring gnome-logs \ + gnome-console gnome-text-editor \ + nautilus xdg-user-dirs-gtk file-roller evince eog + +# Login manager +pacman -Syu gdm +systemctl enable gdm.service +``` + +#### [KDE (WIP)](https://wiki.archlinux.org/title/KDE) + +```sh +pacman -Syu plasma-meta \ + kde-system-meta + +# Login manager +pacman -Syu sddm +systemctl enable sddm.service +``` + +## [List of applications](https://wiki.archlinux.org/index.php/List_of_applications) + +### [pacman](https://wiki.archlinux.org/index.php/pacman) + +Uncomment in `/etc/pacman.conf`: + +```txt +# Misc options +Color +ParallelDownloads +``` + +### [Pipewire (WIP)](https://wiki.archlinux.org/title/PipeWire) + +```sh +pacman -Syu pipewire wireplumber \ + pipewire-alsa pipewire-pulse \ + gst-plugin-pipewire pipewire-v4l2 +``` + +### [Flatpak (WIP)](https://wiki.archlinux.org/title/Flatpak) + +```sh +pacman -Syu flatpak +``` + +## [Improving performance](https://wiki.archlinux.org/index.php/improving_performance) + +https://wiki.archlinux.org/index.php/swap#Swap_file + +https://wiki.archlinux.org/index.php/swap#Swappiness + +https://wiki.archlinux.org/index.php/Systemd/Journal#Journal_size_limit + +https://wiki.archlinux.org/index.php/Core_dump#Disabling_automatic_core_dumps + +https://wiki.archlinux.org/index.php/Solid_state_drive#Periodic_TRIM + +https://wiki.archlinux.org/index.php/Silent_boot + +https://wiki.archlinux.org/title/Improving_performance#Watchdogs + +https://wiki.archlinux.org/title/PRIME + +## In the end + +This guide is updated regularly I promise.