Arch Linux Reinstall on MacBookPro11,3

Posted on Fri 17 April 2026 in Macbook • [12 min read]

Cel: czysta reinstalacja Arch Linux na MacBookPro11,3 z układem ESP + LUKS2 + LVM + ext4, z działającą hibernacją, osobnym /home, szyfrowaniem całego systemu poza ESP i backupem na zewnętrzny dysk.

Spis treści

Założenia

  • Sprzęt: MacBookPro11,3, Intel i7-4960HQ, grafika Intel jako główna, sway/Wayland.
  • Instalacja od zera, nie migracja istniejącego rootfs.
  • systemd-boot jako bootloader.
  • ESP pozostaje nieszyfrowane.
  • Reszta dysku wewnętrznego jest zaszyfrowana jako jeden kontener LUKS2.
  • Wewnątrz LUKS2 działa LVM.
  • System plików dla root i home: ext4.
  • Hibernacja jest realizowana przez osobny logiczny wolumen swap.
  • Zewnętrzny dysk ~1 TB służy do backupu danych, konfiguracji i list pakietów.

Dlaczego ten układ

  • ESP musi być widoczne dla firmware i bootloadera, więc pozostaje poza szyfrowaniem.
  • Jeden kontener LUKS2 na całą resztę dysku daje prosty model bezpieczeństwa i prostą obsługę przy starcie.
  • LVM pozwala oddzielić root, home i swap bez sztywnego dzielenia GPT na wiele partycji systemowych.
  • ext4 jest prostsze operacyjnie niż btrfs i mniej problematyczne dla hibernacji.
  • Dedykowany LV swap upraszcza resume i eliminuje komplikacje swapfile.
  • Dla Wi-Fi Broadcom BCM4331 na tym konkretnym laptopie należy uwzględnić sterownik wl z pakietu broadcom-wl albo broadcom-wl-dkms, bo to właśnie ten sterownik działa na obecnym systemie.

Docelowy układ dysku

Zakładany dysk wewnętrzny: nvme0n1 ~447 GiB

  • nvme0n1p1 1 GiB FAT32 ESP montowane jako /boot
  • nvme0n1p2 reszta dysku jako LUKS2

Wewnątrz LUKS2:

  • vg0/root 100 GiB ext4
  • vg0/swap 32 GiB
  • vg0/home reszta ext4

Dlaczego root = 100 GiB

100 GiB nie jest minimalnym wymaganiem. To świadomy zapas.

Powody:

  • Na obecnym systemie samo /usr zajmuje około 31 GiB.
  • Obecne /opt zajmuje około 7.7 GiB.
  • Obecne /var zajmuje około 46 GiB, ale to jest mocno zawyżone przez cache i ślady starej instalacji.
  • Po czystej reinstalacji realne zużycie świeżego systemu będzie dużo niższe, ale laptop developerski z GUI, przeglądarką, toolchainami, Flatpakami i dodatkowymi runtime'ami potrafi z czasem urosnąć.

100 GiB daje komfort:

  • nie trzeba agresywnie czyścić cache po każdej większej aktualizacji,
  • jest miejsce na kilka kerneli, initramfs i większe pakiety,
  • jest zapas na narzędzia developerskie, build cache, logi i lokalne eksperymenty,
  • nie trzeba szybko robić lvresize, jeśli system zacznie rosnąć.

Jeśli kiedyś uznasz, że to za dużo, LVM pozwala to skorygować. Przy nowej instalacji lepiej mieć umiarkowanie za dużo root niż za mało.

Co z dawnych notatek nadal jest aktualne

Twoje starsze artykuły o instalacji Linuksa na tym laptopie nadal są przydatne jako kontekst sprzętowy, ale nie jako dokładna instrukcja userspace dla nowego systemu.

Nadal przydatne:

  • nie tworzyć drugiej partycji EFI, jeśli już istnieje jedna poprawna ESP,
  • pamiętać o specyfice MacBookPro11,3 i pracy głównie na grafice Intel,
  • testować usypianie i hibernację świadomie, po kolei,
  • traktować hibernację jako osobny temat wymagający poprawnego resume.

Nie kopiować już bezpośrednio do nowego systemu:

  • ścieżek opartych o Xorg, .xinitrc, .Xmodmap, xev,
  • konfiguracji opartych o ly i klasyczny login X,
  • przepisu na rEFInd albo GRUB jako domyślną ścieżkę,
  • starego podejścia do blokady ekranu przez xscreensaver.

Nowy system budujemy wokół:

  • systemd-boot,
  • sway,
  • swayidle,
  • lockera zgodnego z Wayland,
  • systemd-logind do obsługi pokrywy,
  • systemctl suspend i systemctl hibernate jako interfejsów wysokiego poziomu.

Wi-Fi na tym modelu

Na tym egzemplarzu Wi-Fi to:

  • Broadcom BCM4331 [14e4:4331]
  • subsystem Apple AirPort Extreme [106b:00ef]
  • obecnie działający sterownik: wl

Wniosek praktyczny:

  • po świeżej instalacji nie należy zakładać, że sam linux-firmware wystarczy,
  • w docelowym systemie trzeba doinstalować sterownik Broadcoma już na etapie pacstrap,
  • najprostsza ścieżka to broadcom-wl,
  • bardziej odporna na przyszłe aktualizacje kernela jest ścieżka broadcom-wl-dkms + dkms + linux-headers.

Dla tej instrukcji przyjmujemy prostszy wariant:

  • broadcom-wl

Jeśli później będziesz używał wielu kerneli albo chcesz maksymalnie ograniczyć ryzyko chwilowego braku Wi-Fi po aktualizacji kernela, zamień go na:

  • broadcom-wl-dkms
  • dkms
  • linux-headers

Przebieg prac

  1. Wykonać backup danych i konfiguracji na zewnętrzny dysk.
  2. Przygotować listy pakietów i eksport ustawień.
  3. Uruchomić Arch ISO.
  4. Przebudować dysk i stworzyć nowy układ ESP + LUKS2 + LVM.
  5. Zainstalować bazowy Arch ręcznie.
  6. Skonfigurować boot, initramfs, resume, użytkownika i sieć.
  7. Odtworzyć pakiety, konfiguracje i dane z backupu.
  8. Przetestować suspend.
  9. Przetestować hibernate.
  10. Dopiero po testach włączyć automatyczne akcje na zamknięcie pokrywy.

Faza 1: Backup starego systemu

Gotowe wersje skryptów z tej sekcji znajdują się tutaj:

Co backupować

Obowiązkowo:

  • cały /home/paczor z wyłączeniem dużych cache, jeśli chcesz skrócić backup,
  • /etc,
  • listę pakietów pacmana,
  • listę pakietów AUR, jeśli ich używasz,
  • ważne lokalne skrypty i notatki spoza /home,
  • wpisy bootloadera i bieżącą konfigurację zasilania do porównania,
  • kopię tablicy partycji.

Opcjonalnie:

  • ~/.ssh,
  • ~/.gnupg,
  • ~/.config,
  • ~/.local/share,
  • profile przeglądarek,
  • niestandardowe fonty,
  • eksport bazy aplikacji, jeśli masz takie dane poza home.

Jak przygotować zewnętrzny dysk

Załóżmy, że po podłączeniu jest widoczny jako /dev/sdX1 i montuje się pod /run/media/... albo ręcznie pod /mnt/backup.

Najpierw sprawdź:

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL

Jeśli trzeba zamontować ręcznie:

sudo mkdir -p /mnt/backup
sudo mount /dev/sdX1 /mnt/backup

Skrypt: eksport metadanych systemu

Ten skrypt nie robi kopii danych użytkownika. Zbiera listy pakietów i konfigurację referencyjną.

#!/usr/bin/env bash
set -euo pipefail

DEST="${1:?podaj katalog docelowy na dysku backupu}"
STAMP="$(date +%F-%H%M%S)"
OUT="$DEST/arch-migration-metadata-$STAMP"

mkdir -p "$OUT"

pacman -Qqe > "$OUT/pkglist-explicit.txt"
pacman -Qqm > "$OUT/pkglist-aur.txt" || true
cp -a /etc "$OUT/etc"
cp -a /boot/loader "$OUT/boot-loader" 2>/dev/null || true
cp -a /etc/mkinitcpio.conf "$OUT/" 2>/dev/null || true
cp -a /etc/fstab "$OUT/" 2>/dev/null || true
cp -a /etc/systemd "$OUT/systemd" 2>/dev/null || true
cp -a /etc/default "$OUT/default" 2>/dev/null || true
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,UUID,PARTUUID > "$OUT/lsblk.txt"
findmnt -R / > "$OUT/findmnt-root.txt"
swapon --show --bytes > "$OUT/swapon.txt"
cat /proc/cmdline > "$OUT/proc-cmdline.txt"
lscpu > "$OUT/lscpu.txt"
sudo sgdisk --backup="$OUT/nvme0n1.gpt.backup" /dev/nvme0n1

echo "Zapisano metadata w: $OUT"

Skrypt: backup home

Ten skrypt kopiuje katalog domowy przy użyciu rsync.

#!/usr/bin/env bash
set -euo pipefail

SRC="${1:-/home/paczor/}"
DEST="${2:?podaj katalog docelowy na dysku backupu}"
STAMP="$(date +%F-%H%M%S)"
OUT="$DEST/home-backup-$STAMP"

mkdir -p "$OUT"

rsync -aAXHv --numeric-ids \
  --delete \
  --exclude=".cache/" \
  --exclude=".cargo/registry/" \
  --exclude=".local/share/Trash/" \
  --exclude="Downloads/" \
  "$SRC" "$OUT/"

echo "Zapisano backup home w: $OUT"

--exclude="Downloads/" usuń, jeśli chcesz pełny backup bez wyjątków.

Zalecenie

Uruchom oba skrypty przed jakimikolwiek zmianami na dysku wewnętrznym. Po backupie ręcznie sprawdź, czy na dysku zewnętrznym faktycznie są:

  • pkglist-explicit.txt
  • kopia /etc
  • backup home
  • kopia GPT

Faza 2: Przygotowanie do instalacji

Przygotuj nośnik Arch ISO

Użyj aktualnego obrazu Arch Linux i przygotuj bootowalny pendrive.

Ważne: pacstrap nie zakłada pakietów z pendrive'a instalacyjnego

Nie zakładaj, że pacstrap weźmie broadcom-wl albo inne dodatkowe pakiety bezpośrednio z nośnika USB, z którego bootujesz live ISO.

W praktyce:

  • domyślnie pacstrap pobiera pakiety z mirrorów zdefiniowanych w mirrorlist,
  • live ISO nie przenosi automatycznie wszystkich swoich pakietów do nowej instalacji,
  • jeśli chcesz doinstalować dodatkowe pakiety, takie jak broadcom-wl, najprościej zapewnić internet już w środowisku live,
  • jeśli internetu nie będzie, potrzebujesz planu awaryjnego.

Dlatego poniżej są trzy warianty.

Sprawdź tryb bootu

Po uruchomieniu z ISO sprawdź:

ls /sys/firmware/efi/efivars

Jeśli katalog istnieje, system live działa w trybie UEFI.

Włącz sieć

Jeśli używasz Wi-Fi:

iwctl

W środku:

device list
station wlan0 scan
station wlan0 get-networks
station wlan0 connect NAZWA_SIECI
exit

Potem sprawdź:

ping -c 3 archlinux.org
timedatectl set-ntp true

Faza 2A: Plan awaryjny dla Wi-Fi podczas instalacji

Twoja karta Broadcom BCM4331 może nie działać od razu w środowisku live tak, jak w docelowym systemie z broadcom-wl. Nie planuj instalacji tak, jakby internet po Wi-Fi był gwarantowany bez dodatkowych kroków.

Wariant 1: internet działa już w live ISO

To jest wariant najlepszy.

Jeśli po starcie live środowiska masz internet:

  • użyj go normalnie do pacstrap,
  • dodaj broadcom-wl albo broadcom-wl-dkms do listy pakietów,
  • po pierwszym boocie nowy system powinien mieć już właściwy sterownik.

Wariant 2: USB tethering z telefonu

To jest najlepszy plan awaryjny, jeśli live ISO nie ma działającego Wi-Fi.

Po stronie telefonu:

  • włącz tethering USB,
  • podepnij telefon kablem do MacBooka.

W live ISO sprawdź:

ip link
nmcli device status

Zwykle pojawi się nowy interfejs przewodowy albo USB-network i od razu dostanie IP z DHCP. Sprawdź:

ping -c 3 archlinux.org

Jeśli działa:

  • kontynuuj instalację normalnie,
  • zostaw broadcom-wl w pacstrap.

Wariant 3: instalacja offline z lokalnego pakietu

Jeśli nie chcesz polegać na sieci podczas instalacji, przygotuj wcześniej pakiety na drugim nośniku.

Na działającym Arch przed reinstalacją pobierz paczki do osobnego katalogu:

mkdir -p /tmp/arch-offline-pkgs
sudo pacman -Sw --cachedir /tmp/arch-offline-pkgs broadcom-wl

Jeśli wybierzesz wariant DKMS:

mkdir -p /tmp/arch-offline-pkgs
sudo pacman -Sw --cachedir /tmp/arch-offline-pkgs broadcom-wl-dkms dkms linux-headers

Potem skopiuj ten katalog na zewnętrzny dysk lub drugi pendrive.

Po pacstrap i wejściu do arch-chroot, zamontuj nośnik z pakietami i zainstaluj lokalnie:

pacman -U /ścieżka/do/pakietów/*.pkg.tar.zst

Ten wariant jest dobry jako zabezpieczenie, ale nie zastępuje pełnego internetu podczas instalacji, jeśli chcesz od razu zainstalować większą liczbę dodatkowych pakietów.

Zalecenie praktyczne

Najlepszy realny plan:

  1. Miej przygotowany live ISO.
  2. Miej przygotowany backup na dysku zewnętrznym.
  3. Miej przygotowany awaryjnie katalog z broadcom-wl na zewnętrznym dysku.
  4. Jeśli live ISO nie ma Wi-Fi, użyj USB tetheringu.
  5. Jeśli tethering nie zadziała, dokończ bazową instalację i doinstaluj broadcom-wl lokalnie w arch-chroot z przygotowanego nośnika.

Faza 3: Przebudowa dysku

Ostrzeżenie

Kolejne polecenia kasują obecny układ dysku. Nie wykonuj ich, jeśli backup nie został sprawdzony.

Docelowy schemat GPT

  • p1 1 GiB EFI System
  • p2 cała reszta Linux filesystem, później użyta jako LUKS2

Polecenia

Zakładam dysk /dev/nvme0n1.

wipefs -af /dev/nvme0n1
sgdisk --zap-all /dev/nvme0n1

sgdisk -n 1:0:+1G -t 1:ef00 -c 1:"EFI System" /dev/nvme0n1
sgdisk -n 2:0:0   -t 2:8309 -c 2:"Linux LUKS" /dev/nvme0n1

partprobe /dev/nvme0n1
lsblk -o NAME,SIZE,TYPE,FSTYPE,PARTLABEL /dev/nvme0n1

Format ESP

mkfs.fat -F32 -n EFI /dev/nvme0n1p1

Faza 4: LUKS2 i LVM

Utwórz kontener LUKS2

cryptsetup luksFormat --type luks2 /dev/nvme0n1p2
cryptsetup open /dev/nvme0n1p2 cryptroot

Utwórz LVM

pvcreate /dev/mapper/cryptroot
vgcreate vg0 /dev/mapper/cryptroot
lvcreate -L 100G -n root vg0
lvcreate -L 32G  -n swap vg0
lvcreate -l 100%FREE -n home vg0

Utwórz systemy plików

mkfs.ext4 /dev/vg0/root
mkfs.ext4 /dev/vg0/home
mkswap /dev/vg0/swap

Faza 5: Montowanie i instalacja bazowa

Montowanie

mount /dev/vg0/root /mnt
mkdir -p /mnt/home /mnt/boot
mount /dev/vg0/home /mnt/home
mount /dev/nvme0n1p1 /mnt/boot
swapon /dev/vg0/swap

Instalacja pakietów bazowych

Minimalny zestaw:

pacstrap -K /mnt \
  base base-devel linux linux-firmware \
  lvm2 cryptsetup mkinitcpio \
  networkmanager wpa_supplicant iwd \
  broadcom-wl \
  sudo vim git \
  intel-ucode \
  efibootmgr

Wariant alternatywny, jeśli wolisz DKMS:

pacstrap -K /mnt \
  base base-devel linux linux-firmware linux-headers dkms \
  lvm2 cryptsetup mkinitcpio \
  networkmanager wpa_supplicant iwd \
  broadcom-wl-dkms \
  sudo vim git \
  intel-ucode \
  efibootmgr

Jeśli chcesz od razu dołożyć podstawy pod późniejszy desktop:

pacstrap -K /mnt \
  sway swayidle foot kitty waybar \
  xdg-desktop-portal-wlr \
  pipewire wireplumber \
  brightnessctl

Nie traktuj tego jako pełnej listy aplikacji użytkownika. To tylko pakiety startowe.

Generowanie fstab

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

Wejście do arch-chroot

arch-chroot /mnt

Faza 6: Konfiguracja systemu w arch-chroot

Strefa czasu i zegar

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

Locale

Odkomentuj potrzebne locale w /etc/locale.gen, np.:

en_US.UTF-8 UTF-8
pl_PL.UTF-8 UTF-8

Potem:

locale-gen
printf 'LANG=pl_PL.UTF-8\n' > /etc/locale.conf

Hostname i hosts

printf 'macbookpro11-3\n' > /etc/hostname
cat > /etc/hosts <<'EOF'
127.0.0.1 localhost
::1       localhost
127.0.1.1 macbookpro11-3.localdomain macbookpro11-3
EOF

Włącz usługi

systemctl enable NetworkManager

Hasło roota

passwd

Użytkownik

useradd -m -G wheel -s /bin/bash paczor
passwd paczor
EDITOR=vim visudo

Odkomentuj linię:

%wheel ALL=(ALL:ALL) ALL

Faza 7: mkinitcpio, resume i boot

Upewnij się, że HOOKS zawiera encrypt, lvm2, resume

W /etc/mkinitcpio.conf ustaw:

HOOKS=(base udev autodetect modconf block keyboard keymap consolefont encrypt lvm2 filesystems resume fsck)

Jeśli nie używasz consolefont, możesz go usunąć.

Ustal UUID kontenera LUKS i swap

blkid /dev/nvme0n1p2
blkid /dev/vg0/swap

Zbuduj initramfs

mkinitcpio -P

Zainstaluj systemd-boot

bootctl install

/boot/loader/loader.conf

default arch.conf
timeout 3
console-mode max
editor no

/boot/loader/entries/arch.conf

Podstaw właściwe UUID:

title   Arch Linux
linux   /vmlinuz-linux
initrd  /intel-ucode.img
initrd  /initramfs-linux.img
options cryptdevice=UUID=LUKS_UUID:cryptroot root=/dev/vg0/root resume=UUID=SWAP_UUID rw loglevel=3 modprobe.blacklist=nouveau nouveau.modeset=0

Uwagi:

  • cryptdevice= działa dobrze z mkinitcpio hookiem encrypt.
  • resume= musi wskazywać UUID urządzenia swap.
  • nouveau pozostaje wyłączone, jeśli chcesz iść drogą Intel-only jak obecnie.

Faza 8: Wyjście, reboot i pierwszy start

exit
umount -R /mnt
swapoff -a
reboot

Po restarcie:

  • odblokuj LUKS,
  • zaloguj się jako root albo paczor,
  • upewnij się, że działa sieć,
  • sprawdź, czy system bootuje z systemd-boot.

Szybki test Wi-Fi po pierwszym boocie

lspci -nnk | rg -A4 -i 'network|wireless|broadcom'
lsmod | rg 'wl|b43|bcma|brcm'
nmcli device status

Oczekiwany wynik:

  • Kernel driver in use: wl
  • moduł wl jest załadowany
  • interfejs Wi-Fi jest widoczny dla NetworkManager

Jeśli moduł nie wstał od razu:

sudo modprobe wl
sudo depmod -a

Pakiet broadcom-wl dostarcza własną blacklistę konfliktujących modułów, więc przy instalacji z repo zwykle nie trzeba ręcznie dopisywać blacklist dla b43, bcma, brcm80211, brcmfmac, brcmsmac i ssb.

Faza 9: Odtworzenie pakietów i danych

Odtwórz podstawowe pakiety

Jeśli backup zawiera pkglist-explicit.txt, skopiuj go do nowego systemu i uruchom:

sudo pacman -S --needed - < pkglist-explicit.txt

W praktyce warto tę listę najpierw przejrzeć i usunąć:

  • stare pakiety tylko do X11,
  • pakiety, których już nie potrzebujesz,
  • pakiety związane ze starą konfiguracją bootu lub sterownikami, których nie chcesz używać.

Odtwórz home

Najpierw zamontuj dysk zewnętrzny.

Potem:

sudo rsync -aAXHv --numeric-ids /mnt/backup/home-backup-YYYY-MM-DD-HHMMSS/paczor/ /home/paczor/
sudo chown -R paczor:paczor /home/paczor

Odtwarzanie konfiguracji

Nie kopiuj ślepo całego starego /etc.

Kopiuj wybiórczo:

  • konfiguracje sieci,
  • własne skrypty,
  • wybrane pliki z /etc/systemd,
  • wpisy dotyczące sway, terminala, fontów, audio, input,
  • własne usługi user/systemd.

Nie kopiuj bezrefleksyjnie:

  • starego mkinitcpio.conf,
  • starego fstab,
  • starego arch.conf,
  • konfiguracji pod X11,
  • rzeczy związanych ze starym układem partycji.

Faza 10: Konfiguracja suspend

Najpierw nie włączaj automatyki na pokrywę. Testujemy ręcznie.

Ustawienia neutralne na czas testów

W /etc/systemd/logind.conf ustaw:

[Login]
HandlePowerKey=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore

W /etc/systemd/sleep.conf ustaw tylko wtedy, jeśli chcesz jawnie wymusić głęboki sen:

[Sleep]
AllowSuspend=yes
AllowHibernation=yes
AllowSuspendThenHibernate=no
MemorySleepMode=deep

Przeładuj:

sudo systemctl restart systemd-logind

Test ręczny

systemctl suspend

Po wybudzeniu sprawdź:

journalctl -b -1 -u systemd-suspend.service --no-pager
journalctl -b --no-pager | rg -i 'suspend|resume|sleep'

Cel testu:

  • system usypia się bez zawieszenia,
  • wybudza się z klawiatury, touchpada albo myszki,
  • ekran wraca poprawnie,
  • sesja sway działa po wybudzeniu.

Faza 11: Konfiguracja hibernate

Sprawdzenie warunków

swapon --show
cat /proc/cmdline
grep '^HOOKS=' /etc/mkinitcpio.conf
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,UUID

Upewnij się, że:

  • swap to vg0/swap,
  • resume=UUID=... wskazuje właściwy swap,
  • initramfs zawiera resume,
  • system startuje z wpisu systemd-boot, który to zawiera.

Test ręczny

systemctl hibernate

Po wznowieniu sprawdź:

journalctl -b --no-pager | rg -i 'hibernate|resume'
nmcli device status

Cel testu:

  • system wraca do tego samego stanu sesji,
  • ekran się podnosi,
  • Wi-Fi wraca poprawnie,
  • sway i aplikacje nie są w stanie uszkodzonym.

Faza 12: Automatyka po zamknięciu pokrywy

Włącz to dopiero po pozytywnych testach ręcznych.

Opcja zalecana

Na początek ustaw zwykły suspend po zamknięciu pokrywy:

[Login]
HandleLidSwitch=suspend
HandleLidSwitchExternalPower=suspend
HandleLidSwitchDocked=ignore

To jest najbezpieczniejsze ustawienie na start.

Gdy suspend i hibernate są stabilne

Możesz rozważyć:

[Login]
HandleLidSwitch=suspend-then-hibernate
HandleLidSwitchExternalPower=suspend-then-hibernate
HandleLidSwitchDocked=ignore

oraz w /etc/systemd/sleep.conf:

[Sleep]
AllowSuspend=yes
AllowHibernation=yes
AllowSuspendThenHibernate=yes
HibernateDelaySec=60min
MemorySleepMode=deep

To daje:

  • szybkie uśpienie po zamknięciu pokrywy,
  • automatyczne przejście w hibernację po godzinie.

Jeśli priorytetem jest prostota i przewidywalność, zostań przy samym suspend na pokrywie i używaj hibernate ręcznie albo przez timeout.

Faza 13: Sway i lock screen

systemd powinien odpowiadać za zasilanie i pokrywę. sway powinien odpowiadać za UX sesji: lock, wygaszanie, idle.

Przykład dla ~/.config/sway/config:

exec swayidle -w \
  timeout 600 'swaylock -f -c 000000' \
  before-sleep 'swaylock -f -c 000000'

Jeśli używasz własnego lockera albo pluginu, dopasuj komendy do niego.

Nie dubluj obsługi pokrywy w sway, jeśli robi to logind.

Skrypt: sanity check po instalacji

Ten skrypt nie zmienia konfiguracji. Tylko sprawdza kluczowe warunki.

#!/usr/bin/env bash
set -euo pipefail

echo '== lsblk =='
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,UUID

echo
echo '== swapon =='
swapon --show

echo
echo '== cmdline =='
cat /proc/cmdline

echo
echo '== mkinitcpio hooks =='
grep '^HOOKS=' /etc/mkinitcpio.conf || true

echo
echo '== boot entry =='
sed -n '1,200p' /boot/loader/entries/arch.conf

echo
echo '== sleep config =='
sed -n '1,200p' /etc/systemd/logind.conf
sed -n '1,200p' /etc/systemd/sleep.conf 2>/dev/null || true

echo
echo '== current mem_sleep =='
cat /sys/power/mem_sleep

echo
echo '== available sleep states =='
cat /sys/power/state

Rzeczy, których nie robić

  • Nie kopiuj starego /etc hurtowo na nowy system.
  • Nie konfiguruj pokrywy przed ręcznym testem suspend i hibernate.
  • Nie mieszaj jednocześnie GRUB i systemd-boot.
  • Nie wracaj do starych rozwiązań opartych o Xorg, jeśli nowy system ma być na sway/Wayland.
  • Nie testuj hibernacji na za małym swapie.
  • Nie zakładaj, że konfiguracja z poprzednich artykułów będzie działać 1:1 na obecnym Arch i systemd.

Lista kontrolna

  • Backup danych wykonany i sprawdzony.
  • Kopia GPT wykonana.
  • Lista pakietów wyeksportowana.
  • Arch ISO uruchomione w UEFI.
  • Nowy układ ESP + LUKS2 + LVM utworzony.
  • root, home, swap utworzone i zamontowane.
  • Arch zainstalowany przez pacstrap.
  • mkinitcpio, resume i systemd-boot skonfigurowane.
  • System bootuje.
  • Dane i konfiguracje przywrócone.
  • suspend działa ręcznie.
  • hibernate działa ręcznie.
  • Dopiero potem włączona automatyka dla pokrywy.

Dalsze kroki po tej procedurze

Po zakończeniu reinstalacji warto zrobić osobny, mały dokument tylko dla:

  • konfiguracji sway i lockera,
  • doboru pakietów użytkownika,
  • dostrojenia audio, jasności i input,
  • ewentualnej kontroli dGPU i zasilania specyficznej dla MacBookPro11,3.