Mój Przewodnik Instalacji Arch Linux

· 11min · Pondo
Mój przewodnik instalacji Arch Linux

Moja konfiguracja Arch Linux to minimalne, bezpieczne i wydajne środowisko dostosowane do codziennej pracy.

W sercu tego systemu znajduje się zbudowany własnoręcznie DWM (Dynamic Window Manager) oraz kompletny zestaw narzędzi suckless (w tym dwm, dmenu, dwmblocks, st, wszystko z własnymi łatkami), oferując szybkie, sterowane klawiaturą doświadczenie bez zbędnego balastu.

Instalacja została zaprojektowana z myślą o bezpieczeństwie i wydajności:

  • Pełne szyfrowanie dysku przy użyciu LUKS2 dla ochrony przed kradzieżą lub nieautoryzowanym dostępem.

  • Secure Boot z podpisanym Unified Kernel Image (UKI) w celu zapewnienia integralności procesu rozruchu.

  • System plików: XFS, zoptymalizowany pod kątem wydajności NVMe.

  • Swap obsługiwany przez dedykowaną zaszyfrowaną partycję lub opcjonalnie zram dla systemów z mniejszą ilością pamięci.

Będąc mocno zainspirowanym Secure Arch Guide autorstwa Bai-Chiang oraz filozofią twórców takich jak Luke Smith, ta konfiguracja zastępuje btrfs systemem XFS ze względu na jego prostotę i wydajność w określonych zastosowaniach. Moim głównym celem jest bezpieczeństwo procesu rozruchu, a nie wzmacnianie na poziomie systemu jak SELinux. Nie używam TPM do automatycznego odblokowywania LUKS2; kombinacja podpisanego UKI i hasła LUKS2 zapewnia pożądaną ochronę.

Niezależnie od tego, czy konfigurujesz to dla osobistego laptopa, czy minimalnej maszyny deweloperskiej, ten przewodnik przeprowadzi Cię przez każdy krok - bezpiecznie i czysto.

Mój pulpit Arch

Przegląd pakietów

info
Uwaga

Pakiety oznaczone (AUR) wymagają pomocnika AUR (np. yay).

KategoriaPakiety
Base & CLIgit, htop, bashtop, base-devel, reflector, rsync, openssh, man-db, wget, lsof, usbutils, ncdu, mediainfo, xarchiver
Desktop & Filesthunar, thunar-volman, gvfs, gvfs-mtp, udisks2, polkit-gnome, ffmpegthumbnailer, tumbler, gnome-keyring, libsecret, libjxl, nsxiv, rclone, nextcloud-client
Media & Netmpv, ffmpeg, qbittorrent
Devrust
Themingadwaita-icon-theme, adwaita-icon-theme-legacy, libadwaita, gnome-themes-extra
DWM stackslock, xdotool, xclip, xorg-xprop, xcompmgr, xorg-xset, xorg-xinit, xorg-xwininfo, xorg-server, libxft, xterm, noto-fonts, noto-fonts-emoji, bc, dunst, xwallpaper, libnotify, ttf-fira-code, python-pywal, xorg-xrandr, less, xf86-input-evdev, scrot, xss-lock
Audiopipewire-pulse, wireplumber, pulsemixer, pipewire-jack
Virtualizationqemu-desktop, qemu-img, libvirt, virt-install, virt-manager, virt-viewer, edk2-ovmf, dnsmasq, iptables-nft, swtpm
Extras (AUR)brave-bin (AUR), localsend-bin (AUR), bambustudio-bin (AUR), rustrover (AUR), rustrover-jre (AUR), pycharm-professional (AUR), telegram-desktop-bin (AUR), windscribe-v2-bin (AUR), ab-av1 (AUR), obsidian (AUR)
sudo pacman -S --needed \
  git htop bashtop base-devel reflector rsync openssh man-db wget lsof usbutils ncdu mediainfo xarchiver \
  thunar thunar-volman gvfs gvfs-mtp udisks2 polkit-gnome ffmpegthumbnailer tumbler gnome-keyring libsecret libjxl nsxiv \
  rclone nextcloud-client mpv ffmpeg qbittorrent rust \
  adwaita-icon-theme adwaita-icon-theme-legacy libadwaita gnome-themes-extra \
  slock xdotool xclip xorg-xprop xcompmgr xorg-xset xorg-xinit xorg-xwininfo xorg-server libxft xterm \
  noto-fonts noto-fonts-emoji bc dunst xwallpaper libnotify ttf-fira-code python-pywal xorg-xrandr less xf86-input-evdev scrot xss-lock \
  pipewire-pulse wireplumber pulsemixer pipewire-jack \
  qemu-desktop qemu-img libvirt virt-install virt-manager virt-viewer edk2-ovmf dnsmasq iptables-nft swtpm
yay -S --needed brave-bin localsend-bin bambustudio-bin rustrover rustrover-jre \
  pycharm-professional telegram-desktop-bin windscribe-v2-bin ab-av1 obsidian

Część 1: Przygotowanie środowiska Live

Ta sekcja obejmuje przygotowanie środowiska instalacyjnego live.

1.1. Uruchomienie i weryfikacja trybu UEFI

Upewnij się, że system został uruchomiony w trybie UEFI. To polecenie powinno zwrócić 64 bez błędu.

cat /sys/firmware/efi/fw_platform_size

1.2. Sprawdź status Secure Boot

Na tym etapie Secure Boot powinien być wyłączony.

bootctl status | grep "Secure Boot"

Wyjście powinno pokazać Secure Boot: disabled (setup mode).

1.3. Weryfikacja menedżera rozruchu UEFI

Sprawdź, czy efibootmgr może odczytać bieżące zmienne rozruchowe.

efibootmgr --unicode

Powinno to zwrócić listę wpisów rozruchowych, na przykład:

BootCurrent: 0004
BootOrder: 0004,0000,0001,0002,0003
Timeout: 30 seconds
Boot0000* Diskette Drive(device:0)
Boot0004* Arch Linux

1.4. Ustawienie układu klawiatury

loadkeys pl

1.5. Połączenie z Internetem

Użyj ip a, aby zidentyfikować interfejs bezprzewodowy (np. wlan0).

iwctl
station <interface_name> scan
station <interface_name> get-networks
station <interface_name> connect "Nazwa_Twojej_Sieci_WiFi"
exit

Zweryfikuj połączenie:

ping archlinux.org

1.6. Synchronizacja zegara systemowego

Możesz wyświetlić wszystkie dostępne strefy czasowe za pomocą timedatectl list-timezones.

timedatectl set-ntp true
timedatectl set-timezone Europe/Warsaw
systemctl enable --now systemd-timesyncd.service

Część 2: Partycjonowanie i formatowanie dysku

Ta sekcja szczegółowo opisuje, jak przygotować docelowy dysk do instalacji.

2.1. Identyfikacja dysku docelowego

lsblk
DISK=/dev/sdX # np. /dev/nvme0n1 lub /dev/sda
danger
Niebezpieczeństwo

Wszystkie poniższe kroki usuwają dane na $DISK.

2.2. (Opcjonalnie) Sprawdzenie i ustawienie rozmiaru sektora 4K

Dla dysków NVMe użycie natywnego rozmiaru sektora 4K może poprawić wydajność. Przeczytaj więcej tutaj. Sprawdź obsługę:

nvme id-ns -H $DISK

Wyjście powinno pokazać dostępne formaty LBA, na przykład:

LBA Format  0 : Metadata Size: 0 bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good
LBA Format  1 : Metadata Size: 0 bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better (in use)

Jeśli 4K jest obsługiwane i chcesz go użyć, wykonaj następujące polecenie (sformatuje to dysk):

nvme format --lbaf=1 --force $DISK
danger
Uwaga

Jeśli to zrobisz, pamiętaj o dodaniu flagi --sector-size 4096 do polecenia cryptsetup.

2.3. Wyczyszczenie i partycjonowanie dysku (sgdisk)

Całkowicie wyczyść tablicę partycji dysku.

blkdiscard -f $DISK
sgdisk --zap-all "$DISK"

Opcja A: Z dedykowaną partycją SWAP (Zalecane) Rozmiar swapu powinien idealnie odpowiadać ilości Twojego RAM.

sgdisk \
  -n1:1MiB:+2GiB -t1:ef00 -c1:EFI \
  -n2:0:+8GiB    -t2:8200 -c2:SWAP \
  -n3:0:0        -t3:8304 -c3:ROOT \
  "$DISK"

# Przypisz zmienne partycji
EFI=${DISK}1
SWAP=${DISK}2
ROOTFS=${DISK}3

Opcja B: Bez partycji SWAP

sgdisk \
  -n1:1MiB:+2GiB -t1:ef00 -c1:EFI \
  -n2:0:0        -t2:8304 -c2:ROOT \
  "$DISK"

# Przypisz zmienne partycji (użyj przedrostka 'p' dla dysków NVMe)
EFI=${DISK}p1
ROOTFS=${DISK}p2

Przeładuj tablicę partycji i zweryfikuj:

lsblk "$DISK"

2.4. Zaszyfrowanie partycji głównej (LUKS2)

Ustaw silne hasło dla szyfrowania dysku.

# usuń --sector-size 4096 jeśli Twój dysk nie obsługuje sektorów 4K
cryptsetup --type luks2 --sector-size 4096 --verify-passphrase --verbose luksFormat ${ROOTFS}

# Otwórz zaszyfrowany kontener
cryptsetup open ${ROOTFS} cryptroot

2.5. Formatowanie systemów plików (mkfs, mkswap)

# Partycja EFI
mkfs.fat -F32 ${EFI}

# System plików XFS dla roota - usuń -s size=4096 jeśli Twój dysk tego nie obsługuje
mkfs.xfs -s size=4096 /dev/mapper/cryptroot
danger
Uwaga – nieodwracalne

Uruchom mkswap tylko jeśli utworzyłeś partycję swap:

# Opcjonalnie: uruchom tylko przy użyciu partycji swap ⚠️
[ ! -z "$SWAP" ] && mkswap ${SWAP}

2.6. Montowanie systemów plików

mount /dev/mapper/cryptroot /mnt
mount --mkdir ${EFI} /mnt/efi
danger
Uwaga – nieodwracalne

Uruchom swapon tylko jeśli utworzyłeś partycję swap:

# Opcjonalnie: uruchom tylko przy użyciu partycji swap ⚠️
[ ! -z "$SWAP" ] && swapon ${SWAP}

Część 3: Instalacja i podstawowa konfiguracja

3.1. Instalacja systemu bazowego i niezbędnych pakietów (pacstrap)

Zainstaluj wszystkie niezbędne pakiety na raz, aby uniknąć wielokrotnego uruchamiania pacman w chroocie.

# Wybierz amd-ucode lub intel-ucode
pacstrap -K /mnt base base-devel linux linux-firmware neovim \
networkmanager wpa_supplicant \
sbctl efibootmgr <amd-ucode|intel-ucode>

3.2. Generowanie FSTAB

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

Wskazówka: Po wygenerowaniu możesz użyć nvim /mnt/etc/fstab i zmienić relatime na noatime dla systemu plików root na SSD, aby zmniejszyć operacje zapisu.

3.3. Wejście do środowiska Chroot ze zmiennymi

Ta sprytna sztuczka używa bash -c do przekazania naszych zmiennych środowiskowych do sesji chroot.

arch-chroot /mnt /bin/bash -c "
export DISK='$DISK'
export EFI='$EFI'
export ROOTFS='$ROOTFS'
[ ! -z \"$SWAP\" ] && export SWAP='$SWAP'
export PS1='(chroot) # '
exec /bin/bash"

Teraz możesz używać zmiennych takich jak echo $DISK wewnątrz chroota.

Część 4: Konfiguracja systemu (wewnątrz Chroot)

Teraz działasz wewnątrz nowo zainstalowanego systemu.

4.1. Ustawienie strefy czasowej

ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
hwclock --systohc

4.2. Konfiguracja lokalizacji (język i klawiatura)

Odkomentuj pl_PL.UTF-8 UTF-8 i en_US.UTF-8 UTF-8 w /etc/locale.gen. Możesz wyświetlić wszystkie lokalizacje za pomocą locale -a i wszystkie mapy klawiszy za pomocą localectl list-keymaps.

nvim /etc/locale.gen
locale-gen

echo "LANG=pl_PL.UTF-8" > /etc/locale.conf
echo "KEYMAP=pl" > /etc/vconsole.conf

4.3. Ustawienie nazwy hosta

echo "BasedArch" > /etc/hostname

4.4. Konfiguracja sieci

Pakiety zostały zainstalowane przez pacstrap; teraz tylko włączamy usługi.

systemctl enable NetworkManager.service
systemctl enable wpa_supplicant.service
systemctl enable systemd-resolved.service

# Linkowanie pliku stub resolvera systemd dla DNS
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

4.5. Kluczowy krok: Konfiguracja procesu rozruchu (UKI + systemd)

Teraz, we właściwej kolejności, konfigurujemy wszystko, co jest potrzebne do uruchomienia systemu.

4.5.1. Konfiguracja Initramfs (/etc/mkinitcpio.conf)

Edytuj plik, aby używać hooków systemd i sd-encrypt do odblokowania partycji LUKS podczas rozruchu.

nvim /etc/mkinitcpio.conf

Znajdź linię HOOKS i zastąp ją:

HOOKS=(base systemd autodetect modconf keyboard sd-vconsole sd-encrypt microcode kms block filesystems)
4.5.2. Utworzenie pliku linii poleceń jądra (/etc/kernel/cmdline)

Ten plik będzie zawierał parametry przekazywane do jądra przy każdym rozruchu.

# Pobierz UUID zaszyfrowanej partycji ROOT
ROOT_UUID=$(lsblk -dno UUID ${ROOTFS})

# Utwórz plik cmdline. Jeśli planujesz używać zram, dodaj zswap.enabled=0
echo "root=/dev/mapper/cryptroot" > /etc/kernel/cmdline
4.5.3. Utworzenie Initramfs Crypttab (/etc/crypttab.initramfs)

Ten plik informuje sd-encrypt (wewnątrz initramfs), którą partycję odszyfrować. Opcja discard jest zalecana dla dysków SSD. Zobacz dm-crypt/Specialties aby uzyskać więcej informacji.

# Użyj tego samego UUID z poprzedniego kroku
LUKS_UUID="$(cryptsetup luksUUID "$ROOTFS")"
echo "cryptroot UUID=${LUKS_UUID} - password-echo=no,no-read-workqueue,no-write-workqueue,discard" > /etc/crypttab.initramfs
4.5.4. Modyfikacja presetu mkinitcpio dla UKI

Edytuj plik .preset, aby mkinitcpio budował UKI bezpośrednio na partycji EFI.

nvim /etc/mkinitcpio.d/linux.preset

Zmodyfikuj plik, aby wyglądał tak:

ALL_kver="/boot/vmlinuz-linux"
PRESETS=('default')

default_uki="/efi/EFI/Linux/ArchLinux.efi"
# Opcjonalnie: dodaj ekran powitalny
default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"
4.5.5 (Opcjonalnie) Szyfrowanie Swap

Aby użyć UUID zamiast /dev/sdX3 w /etc/crypttab, musimy utworzyć mały system plików o rozmiarze 1MiB na /dev/sdX3, zobacz dm-crypt/Swap encryption#UUID and LABEL. Najpierw dezaktywuj partycję swap

(chroot) # swapoff /dev/sdX3

Następnie utwórz system plików ext2 o rozmiarze 1MiB z etykietą cryptswap

(chroot) # mkfs.ext2 -F -F -L cryptswap /dev/sdX3 1M

Dodaj wpis do /etc/crypttab

# <nazwa>   <urządzenie>      <hasło>       <opcje>
cryptswap  UUID=_SWAP_UUID_  /dev/urandom  swap,offset=2048

Pobierz SWAP_UUID poleceniem lsblk -dno UUID /dev/sdX3. Opcja offset to przesunięcie startowe w sektorach 512-bajtowych. Więc 2048 sektorów 512 bajtów to 1MiB. Edytuj wpis swap w /etc/fstab, zmień UUID=xxxx na /dev/mapper/cryptswap

# <system_plików>   <katalog>  <typ>  <opcje>    <dump>  <pass>
/dev/mapper/swap  none       swap   defaults   0       0
4.5.6 (Opcjonalnie) ZRAM

Zainstaluj pakiet zram-generator. Następnie utwórz Edytuj /etc/systemd/zram-generator.conf

[zram0]
zram-size = min(ram / 2, 4 * 1024)
compression-algorithm = zstd
fs-type = swap

zram-size to funkcja zmiennej ram, całkowitego rozmiaru pamięci. min(ram / 2, 4 * 1024) utworzy zram jako urządzenie swap o rozmiarze połowy całkowitej pamięci, maksymalnie 4GB. Zobacz zram-generator.conf(5) § OPTIONS dla innych obsługiwanych operatorów arytmetycznych i funkcji.

Utwórz następujący plik konfiguracyjny, aby zoptymalizować zram

edytuj /etc/sysctl.d/99-vm-zram-parameters.conf

vm.swappiness = 180
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.page-cluster = 0

Ponieważ oficjalnie wspierane jądra mają domyślnie włączony zswap. Aby go wyłączyć, musimy dodać zswap.enabled=0 do parametrów jądra

4.5.7. Generowanie Unified Kernel Images (mkinitcpio -P)

Mając wszystkie konfiguracje na miejscu, wygeneruj obrazy.

mkdir -p /efi/EFI/Linux

# Generuj UKI
mkinitcpio -P

Jeśli operacja się powiedzie, znajdziesz dwa pliki .efi w /efi/EFI/Linux/.

4.6. (Opcjonalnie) Konfiguracja Secure Boot (sbctl)

4.6.1. Utworzenie i zarejestrowanie kluczy

Użycie flagi --microsoft jest zalecane dla maksymalnej kompatybilności sprzętowej. Wybierz swoją opcję:

sbctl create-keys

sbctl enroll-keys
# lub
sbctl enroll-keys --microsoft
# lub usuń klucze Microsoft
sbctl enroll-keys --no-microsoft
4.6.2. Podpisanie Unified Kernel Images

Flaga -s (--save) nadpisuje oryginalny plik podpisaną wersją.

sbctl sign -s /efi/EFI/Linux/ArchLinux.efi

Zweryfikuj podpisane pliki

sbctl sign -s /efi/EFI/Linux/ArchLinux.efi
4.6.3. Weryfikacja automatycznego podpisywania

sbctl instaluje hook pacman, aby automatycznie podpisywać jądro po każdej aktualizacji. Możesz sprawdzić jego status:

sbctl status

4.7. Utworzenie wpisów rozruchowych UEFI (efibootmgr)

Sprawdź kolejność rozruchu:

efibootmgr
warning
Ostrożnie

Usuwanie nieprawidłowych wpisów może sprawić, że inne systemy operacyjne staną się niebootowalne.

efibootmgr --bootnum 000X --delete-bootnum --unicode

Teraz informujemy firmware UEFI o naszych podpisanych obrazach:

# Użyj --part 1 lub prawidłowego numeru partycji dla ESP
# Zwróć uwagę na cudzysłowy i ukośniki dla ścieżki loadera
efibootmgr --create --disk "$DISK" --part 1 --label "Arch Linux" \
  --loader 'EFI\Linux\ArchLinux.efi' --unicode

Jeśli potrzeba, dostosuj kolejność rozruchu (zastąp 0003,0004,0005 pożądaną kolejnością):

efibootmgr --bootorder 0003,0004,0005 --unicode

4.8. Ustawienie hasła root

passwd

4.9. Wyjście z Chroot i ponowne uruchomienie

Konfiguracja jest prawie zakończona!

exit
umount -R /mnt
systemctl reboot --firmware-setup

Komputer uruchomi się ponownie w ustawieniach UEFI/BIOS. To jest czas na włączenie Secure Boot (ustaw na "Enabled" lub "User Mode"). Zapisz zmiany i pozwól systemowi uruchomić się z dysku.

Część 5: Finalizacja i dostosowanie (po ponownym uruchomieniu)

Zaloguj się za pomocą nowo utworzonego konta użytkownika, aby zakończyć konfigurację.

5.1. Pierwsze logowanie

Po ponownym uruchomieniu i wprowadzeniu hasła LUKS, zaloguj się jako root

Dodanie użytkownika

useradd -m -G wheel sieciowiec
passwd sieciowiec
EDITOR=nvim visudo
warning
Polityka sudo

Włączenie NOPASSWD dla grupy wheel jest wygodne, ale osłabia bezpieczeństwo. Rozważ wymaganie hasła.

odkomentuj %wheel ALL=(ALL:ALL) NOPASSWD: ALL

przeloguj się tutaj na nowego użytkownika

5.2. (Opcjonalnie) Konfiguracja zaszyfrowanego swapu

Jeśli utworzyłeś dedykowaną partycję swap i chcesz ją zaszyfrować, wykonaj te kroki. Więcej szczegółów znajdziesz w Arch Wiki na Swap Encryption. Najpierw zdezaktywuj partycję swap, jeśli została automatycznie włączona.

sudo swapoff ${SWAP}

Utwórz mały system plików ext2 na partycji, aby przypisać mu UUID.

sudo mkfs.ext2 -F -L cryptswap ${SWAP} 1M

Dodaj wpis do /etc/crypttab.

# Pobierz SWAP_UUID za pomocą 'lsblk -dno UUID ${SWAP}'
# Następnie dodaj tę linię do /etc/crypttab
# <nazwa>      <urządzenie>         <hasło>         <opcje>
cryptswap   UUID=<SWAP_UUID>   /dev/urandom   swap,offset=2048,cipher=aes-xts-plain64,size=256

Na koniec edytuj /etc/fstab i zmień wpis swap, aby wskazywał na zamapowane urządzenie.

# <system_plików>           <katalog>  <typ>  <opcje>    <dump> <pass>
/dev/mapper/cryptswap  none       swap   defaults   0      0

5.3. (Opcjonalnie) Konfiguracja zram

Jako alternatywę dla partycji swap możesz użyć zram. Zainstaluj generator:

sudo pacman -S zram-generator

Utwórz plik konfiguracyjny:

# /etc/systemd/zram-generator.conf
[zram0]
zram-size = min(ram / 2, 8 * 1024)
compression-algorithm = zstd

Aby zoptymalizować zram, utwórz /etc/sysctl.d/99-vm-zram-parameters.conf:

vm.swappiness = 180
vm.watermark_boost_factor = 0
vm.watermark_scale_factor = 125
vm.page-cluster = 0

Pamiętaj, aby dodać zswap.enabled=0 do /etc/kernel/cmdline i wygenerować ponownie UKI (sudo mkinitcpio -P), jeśli używasz zram.

5.4. Konfiguracja Pacman (równoległe pobieranie)

Edytuj /etc/pacman.conf i odkomentuj ParallelDownloads.

ParallelDownloads = 10

Opcjonalnie: odkomentuj Color i VerbosePkgLists

5.5. Optymalizacja listy mirrorów (reflector)

sudo pacman -S reflector
sudo reflector --country Poland,Germany --latest 10 --sort rate --save /etc/pacman.d/mirrorlist

Możesz również włączyć reflector.timer, aby aktualizować tę listę co tydzień.

5.6. Włączenie okresowego TRIM dla dysków SSD

sudo systemctl enable --now fstrim.timer

Twój system bazowy jest teraz w pełni skonfigurowany. Stąd możesz kontynuować instalację środowiska graficznego, serwerów audio i osobistych plików konfiguracyjnych.

TMPFS w RAM - dodaj to do /etc/fstab

sudo nvim /etc/fstab

tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

zastosuj zmiany i sprawdź, czy tmp jest teraz tmpfs

sudo mount -a
findmnt /tmp

powinno wyświetlić coś w rodzaju:

[sieciowiec@sieciowiec ~]$ findmnt /tmp
TARGET SOURCE FSTYPE OPTIONS
/tmp   tmpfs  tmpfs  rw,nosuid,nodev,size=15938524k,nr_inodes=1048576,inode64

Ustaw logi systemd w RAM - logi nie będą trwałe między restartami.

sudo nvim /etc/systemd/journald.conf

# ustaw Storage=
Storage=volatile

5.7. Wiązanie TPM2 -> nie będzie działać z crypttab

Sprawdź, czy twoje urządzenie ma TPM2

$ cat /sys/class/tpm/tpm0/device/description
TPM 2.0 Device

systemd-analyze has-tpm2

systemd-cryptenroll --tpm2-device=list

Sprawdź sloty kluczy luks twojego cryptroot:

sudo cryptsetup luksDump /dev/sdXpX

Utwórz wiązanie tpm przeczytaj więcej

sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+2+7+11 /dev/sdXpX

Przywracanie dotfiles

git clone --bare https://github.com/Pondiniii/dotfiles.git $HOME/.dotfiles

rm .bashrc

alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'

dotfiles checkout

Może pojawić się błąd dotyczący konfliktujących plików, które już istnieją w katalogu domowym i zostałyby nadpisane. Ponieważ jest to świeżo zainstalowany system, po prostu je usuwamy. Lub uruchom to polecenie, a następnie ponownie checkout

dotfiles checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | xargs -I{} rm {}
dotfiles checkout

Jeśli używasz GitHub, zmień zdalny URL, aby używać klucza SSH ~/.dotfiles/config

...bash
[remote "origin"]
    url = git@github.com:_username_/dotfiles.git
...
dotfiles push

Instalacja narzędzi suckless

cd .local/src/
ls

dla każdego folderu tutaj dmenu dwm dwmblocks st wejdź do niego i wykonaj: sudo make install

cd dwm
sudo make clean install
cd ..
cd dmenu
sudo make clean install
cd ..
cd st
sudo make clean install
cd ..
cd dwmblocks
sudo make clean install
cd

utwórz symlink .xinitrc

cd
ln -s ~/.config/x11/.xinitrc ~/.xinitrc

uruchom dwm

startx

skonfiguruj dpi -> zmień 120 na preferowane dpi. po ustawieniu zrestartuj DWM (wyjdź z dwm -> ponownie startx)

echo "120" > .config/x11/.dpi

(opcjonalnie) aktualizowanie firmware

sudo pacman -S fwupd
sudo fwupdmgr refresh
sudo fwupdmgr get-updates
sudo fwupdmgr update

Instalacja pomocnika AUR - YAY

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
cd ..
rm -r yay

Optymalizacja budowania AUR

Usuń wszelkie CFLAGS -march i -mtune, a następnie dodaj -march=native w /etc/makepkg.conf.

sudo nvim /etc/makepkg.conf

CFLAGS="-march=native -O2 -pipe ..." następnie dodaj -C target-cpu=native do RUSTFLAGS: RUSTFLAGS="-C opt-level=2 -C target-cpu=native" zmień MAKEFLAGS=j2 na MAKEFLAGS="-j$(nproc)"

Pakiety:

git htop bashtop base-devel reflector rsync obsidian openssh keepassxc thunar man-db mpv qbittorrent ffmpeg openssh gparted telegram-desktop-bin linux-headers dkms rust usbutils lsof wget docker docker-compose mediainfo xarchiver ncdu rclone nextcloud-client gnome-keyring libsecret libjxl nsxiv

wtyczki thunar: thunar-volman gvfs gvfs-mtp udisks2 polkit-gnome ffmpegthumbnailer tumbler

hack dev: usbipd

DWM: slock xdotool xclip xorg-xprop xcompmgr xorg-xset xorg-xinit xorg-xwininfo xorg-server libxft xterm noto-fonts noto-fonts-emoji bc dunst xwallpaper notify-send ttf-fira-code python-pywal xorg-xrandr less xf86-input-evdev scrot xss-lock

AUR: brave-bin localsend-bin bambustudio-bin rustrover rustrover-jre pycharm-professional windscribe-v2-bin ab-av1

ciemny motyw: adwaita-icon-theme adwaita-icon-theme-legacy libadwaita gnome-themes-extra

audio: sudo pacman -S pipewire-pulse wireplumber pulsemixer pipewire-jack systemctl --user restart pipewire.service pipewire-pulse.service wireplumber.service

Wirtualizacja: sudo pacman -S qemu-desktop qemu-img libvirt virt-install virt-manager virt-viewer
edk2-ovmf dnsmasq iptables-nft swtpm

  • qemu-full - emulator KVM w przestrzeni użytkownika, zarządza komunikacją między hostami a maszynami wirtualnymi
  • qemu-img - zapewnia tworzenie, konwersję, modyfikację i migawki offline'owych obrazów dysków
  • libvirt - open-source'owe API, daemon i narzędzie do zarządzania wirtualizacją platformy
  • virt-install - narzędzie CLI do tworzenia maszyn wirtualnych gościa
  • virt-manager - narzędzie GUI do tworzenia i zarządzania maszynami wirtualnymi gościa
  • virt-viewer - konsola GUI do łączenia się z uruchomionymi maszynami wirtualnymi
  • edk2-ovmf - włącza obsługę UEFI dla maszyn wirtualnych
  • dnsmasq - lekki forwarder DNS i serwer DHCP
  • swtpm - TPM (Trusted Platform Module) emulator dla maszyn wirtualnych
  • guestfs-tools - zapewnia zestaw rozszerzonych narzędzi CLI do zarządzania maszynami wirtualnymi
  • libosinfo - biblioteka do zarządzania informacjami o systemach operacyjnych dla wirtualizacji.
  • tuned - usługa dostrajania systemu dla linuxa pozwala nam zoptymalizować hypervisor pod kątem szybkości.

zdefiniuj niestandardową nazwę interfejsu

sudo nvim /etc/udev/rules.d/70-persistent-net.rules

i dodaj

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="XX:XX:XX:XX:XX:XX", NAME="enp11s0"

pamiętaj o zmianie XX:XX na prawdziwy adres MAC

reboot

Przewodnik konfiguracji wirtualizacji

włącz usługę:

sudo systemctl enable libvirtd --now

dodaj bieżącego użytkownika:

sudo usermod -aG libvirt $USER

konfiguracja sieci:

sudo virsh net-list --all
sudo virsh net-start default
sudo virsh net-autostart default

zdefiniuj główny interfejs twojego PC

INTERFACE_NAME=lan

utwórz sieć mostkową

sudo nmcli connection add type bridge con-name br-home ifname br-home
sudo nmcli connection add type ethernet slave-type bridge con-name 'br-home-port' \
    ifname $INTERFACE_NAME master br-home
sudo nmcli connection modify br-home connection.autoconnect-slaves 1
sudo nmcli connection up br-home
sudo nmcli device status
sudo virsh net-define /dev/stdin <<EOF
<network>
  <name>home-lan</name>
  <forward mode="bridge"/>
  <bridge name="br-home"/>
</network>
EOF

sudo virsh net-start home-lan
sudo virsh net-autostart home-lan

izolacja GPU kvm

dopisz intel_iommu=on lub amd_iommu=on

etc /etc/kernel/cmdline

znajdź GPU

lspci -nn | grep -i vga

dodaj GPU i sterowniki do czarnej listy w /etc/modprobe.d/vfio.conf

options vfio-pci ids=10de:2c05,10de:22e9
blacklist nouveau
blacklist nvidia

plik konfiguracyjny X11 amdgpu

plik konfiguracyjny dla zintegrowanej grafiki na X

/usr/share/X11/xorg.conf.d/amd.conf

Section "Device"
	Identifier "AMD"
	Driver "modesetting"
	BusID "PCI:16:0:0"
EndSection


Section "Screen"
    Identifier "Screen0"
    Device "AMD"
    Monitor "Monitor0"
    DefaultDepth 24
    SubSection "Display"
        Depth 24
        Modes "3840x2160_120.00"
    EndSubSection
EndSection