Mój Przewodnik Instalacji Arch Linux
Table of Contents
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.
Przegląd pakietów
Pakiety oznaczone (AUR) wymagają pomocnika AUR (np. yay).
| Kategoria | Pakiety |
|---|---|
| Base & CLI | git, htop, bashtop, base-devel, reflector, rsync, openssh, man-db, wget, lsof, usbutils, ncdu, mediainfo, xarchiver |
| Desktop & Files | thunar, thunar-volman, gvfs, gvfs-mtp, udisks2, polkit-gnome, ffmpegthumbnailer, tumbler, gnome-keyring, libsecret, libjxl, nsxiv, rclone, nextcloud-client |
| Media & Net | mpv, ffmpeg, qbittorrent |
| Dev | rust |
| Theming | adwaita-icon-theme, adwaita-icon-theme-legacy, libadwaita, gnome-themes-extra |
| DWM stack | 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 |
| Audio | pipewire-pulse, wireplumber, pulsemixer, pipewire-jack |
| Virtualization | qemu-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
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
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
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
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/fstabi zmienićrelatimenanoatimedla 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
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
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 wirtualnymiqemu-img- zapewnia tworzenie, konwersję, modyfikację i migawki offline'owych obrazów dyskówlibvirt- open-source'owe API, daemon i narzędzie do zarządzania wirtualizacją platformyvirt-install- narzędzie CLI do tworzenia maszyn wirtualnych gościavirt-manager- narzędzie GUI do tworzenia i zarządzania maszynami wirtualnymi gościavirt-viewer- konsola GUI do łączenia się z uruchomionymi maszynami wirtualnymiedk2-ovmf- włącza obsługę UEFI dla maszyn wirtualnychdnsmasq- lekki forwarder DNS i serwer DHCPswtpm- TPM (Trusted Platform Module) emulator dla maszyn wirtualnychguestfs-tools- zapewnia zestaw rozszerzonych narzędzi CLI do zarządzania maszynami wirtualnymilibosinfo- 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