Úvod:
Chceš mít systém, který odolá chybám, nečekaným pádům nebo špatným aktualizacím? S kombinací Btrfs a Snapperu získáš automatické snapshoty, rychlé rollbacky a obnovu systému přímo z GRUB.
Co tě v návodu čeká?
- Instalace Debianu 12 s Btrfs
- Nastavení Snapperu a správy snapshotů
- Možnost obnovy systému při startu
- Ochrana před rozbitými aktualizacemi
Výhody? Rychlé návraty do funkčního stavu, šetření místem a vyšší stabilita systému.
Prvotní instalace:
- Spustíme instalaci Debian 12 a zvolíme ruční rozdělení systémového disku.
- Následně nastavíme konfiguraci disku:
- Tabulku oddílů nastavíme na GPT.
- Přidáme následující oddíly:
/boot/efi/
s velikostí 1000M.
*pozn.: pokud používáte stále bios použijeme /boot oddíl/
(kořenový adresář) – použijeme zbytek úložiště a přiřadíme mu souborový systém Btrfs. (v mém případě jsem oddelil /home kvůli šifrování a lepší záloze dat, což vy nemusíte.)- Minimální doporučená velikost:
- Bez GUI (serverová instalace): 15–20 GB
- S GUI (desktopová instalace): 25–30 GB
- S více aplikacemi, aktualizacemi a Snapperem: 40+ GB
- Poznámka: Jelikož Snapper využívá Btrfs snapshots, doporučuje se ponechat dostatečnou rezervu na zálohy. Pokud plánujete časté aktualizace a práci se snímky, doporučuje se 50+ GB.
- Minimální doporučená velikost:
/home
(domovský adresář) – v mém případě jsem zvolil ext4 a zapnul šifrování pomocí LUKS.SWAP
– odkládací prostor nastavíme dle potřeby.
Poznámka:
Při prvním spuštění nového OS je klávesnice nastavena na EN. Pokud se vám nedaří odemknout šifrovaný OS, pište pomocí EN klávesnice, po spuštění OS a jeho následného restartu se to přenastaví na CZ.
Po instalaci OS
Po dokončení instalace je vhodné systém hned aktualizovat:
sudo apt update && sudo apt upgrade -y
Tento příkaz:
sudo apt update
– aktualizuje seznam balíčků z repozitářů.sudo apt upgrade -y
– instaluje všechny dostupné aktualizace.
Pozn.:Doporučuje se provádět aktualizace pravidelně pro zajištění stability a bezpečnosti systému.
Zprovoznění Snapper záloh
Příprava adresářů pro Snapper
-
Vytvoření hlavního adresáře pro Btrfs
sudo mkdir -p /btrfsroot
-
Zjištění ID hlavního disku (
/
)df --output=source / | tail -n 1
-
Přidání hlavního Btrfs subsvazku (
subvolid=5
) do/etc/fstab
printf "$(df --output=source / | tail -n 1) /btrfsroot btrfs defaults,subvolid=5 0 0\n" | sudo tee -a /etc/fstab
-
Připojení Btrfs root subsvazku
sudo mount /btrfsroot
Příprava /etc/fstab
struktury
Přesun /home
do samostatného subsvazku na Btrfs (pokud není šifrován a na samotném diskovém oddílu, jako v mém případě)
Přesunutí /home
do subsvazku v běžícím systému může být složitější, ale následující postup funguje pro jednouživatelský systém:
-
Vytvoření subsvazku pro
/home
sudo btrfs subvol create /btrfsroot/@home
-
Zkopírování obsahu současného
/home
do nového subsvazkusudo cp -a --reflink=always /home/. /btrfsroot/@home
-
Nastavení správných oprávnění
sudo chown -R $(whoami):$(whoami) /btrfsroot/@home
-
Úprava
/etc/fstab
pro nový/home
printf "$(df --output=source / | tail -n 1) /home btrfs defaults,subvol=@home 0 0\n" | sudo tee -a /etc/fstab
-
Restart systému, aby se změny projevily
sudo reboot
-
Po restartu a ověření správného připojení
/home
smažte starý adresář (pokud již není potřeba)sudo rm -rf /btrfsroot/@rootfs/home
Poznámka
Tento postup lze aplikovat i na další uživatelské složky, např. /home/${USER}/data
, pokud chcete oddělit specifické adresáře. V takovém případě není nutný restart systému – stačí provést odpojení a připojení (umount
a mount
). Já osobně jsem se tomuto vyhnul, protože neplánuji dělat snapper zálohy domovského adresáře a jak jsem zmínil, mám adresář šifrovaný na jiném diskovém oddíle.
Příprava dalších podadresářů v Btrfs
Stejný postup jako u /home
lze použít i pro přesunutí dalších systémových adresářů do vlastních subsvazků, bez změny vlastnictví souborů. V závislosti na konkrétní cestě nemusí být nutný restart systému.
Vytvoření samostatného subsvazku pro /var/log
(nutné pro grub-btrfs
)
Důvod: /var/log
obsahuje logovací soubory, které mohou rychle růst. Oddělení do vlastního subsvazku zajistí lepší správu záloh.
-
Vytvoření subsvazku pro
/var/log
sudo btrfs subvol create /btrfsroot/@var_log
-
(Volitelně) Zkopírování stávajícího obsahu
(Ignorujte případné chyby.)sudo cp -RT --reflink=always /var/log /btrfsroot/@var_log
-
Přidání subsvazku do
/etc/fstab
printf "$(df --output=source / | tail -n 1) /var/log btrfs defaults,subvol=@var_log 0 0\n" | sudo tee -a /etc/fstab
-
Připojení subsvazku bez restartu
sudo systemctl daemon-reload sudo mount /var/log
-
Odstranění starého obsahu
/var/log
sudo rm -rf /btrfsroot/@rootfs/var/log/*
Vytvoření samostatného subsvazku pro /tmp
Důvod: /tmp
slouží k dočasným souborům, které se často mění. Samostatný subsvazek pomáhá zabránit jejich uchování v zálohách.
Pozor: Tento proces obvykle vyžaduje restart systému.
-
Vytvoření subsvazku pro
/tmp
sudo btrfs subvol create /btrfsroot/@tmp
-
Zkopírování stávajícího obsahu
/tmp
sudo cp -RT --reflink=always /tmp /btrfsroot/@tmp
-
Přidání subsvazku do
/etc/fstab
printf "$(df --output=source / | tail -n 1) /tmp btrfs defaults,subvol=@tmp 0 0\n" | sudo tee -a /etc/fstab
-
Restart systému
sudo reboot
-
Po restartu smazání starého obsahu
/tmp
sudo rm -rf /btrfsroot/@rootfs/tmp/* sudo rm -rf /btrfsroot/@rootfs/tmp/.* 2>/dev/null
(Druhý příkaz odstraní i skryté soubory, ale může vyvolat chybu, pokud žádné nejsou – tu lze bezpečně ignorovat.)
Kontrola /etc/fstab
po úpravách
Po dokončení všech kroků by měl soubor /etc/fstab
obsahovat následující položky:
subvolid=5 -> /btrfsroot
subvol=@home -> /home
subvol=@var_log -> /var/log
subvol=@tmp -> /tmp (volitelné, ale doporučené)
Instalace aplikací pro zprovoznění Snapper záloh
K zajištění plné funkčnosti Snapperu budeme potřebovat tři základní aplikace:
- Snapper – správa snapshotů (snímků systému).
- Grub-BTRFS – integrace snapshotů do zavaděče GRUB.
- Snapper-Rollback – nástroj pro obnovu systému ze snapshotu.
Než je nainstalujeme, je potřeba doinstalovat potřebné závislosti:
sudo apt-get install btrfs-progs python3-btrfsutil gawk inotify-tools make build-essential git
Instalace a konfigurace Snapperu
1️. Instalace Snapperu
sudo apt install snapper
2️. Konfigurace Snapperu
- Vytvoření základní konfigurace pro
/
sudo snapper -c root create-config /
-
Vytvoření subsvazku pro snapshoty
sudo btrfs subvol create /btrfsroot/@snapshots
-
Vytvoření připojovacího adresáře pro snapshoty
sudo mkdir -p /.snapshots
-
Přidání subsvazku do
/etc/fstab
a jeho připojeníprintf "$(df --output=source / | tail -n 1) /.snapshots btrfs defaults,subvol=@snapshots 0 0\n" | sudo tee -a /etc/fstab sudo mount /.snapshots
Instalace Grub-BTRFS
- Stažení repozitáře
git clone https://github.com/Antynea/grub-btrfs.git
- Přechod do složky a spuštění instalace
cd grub-btrfs sudo make sudo make install
- Povolení služby pro automatickou detekci snapshotů
sudo systemctl enable grub-btrfsd sudo systemctl start grub-btrfsd
- Aktualizace GRUB
Poznámka: Pokud se zobrazí varování, že nebyly nalezeny žádné snapshoty, není to problém – systém je čerstvě nainstalován a žádné snapshoty zatím neexistují.sudo update-grub
Instalace Snapper-Rollback
Stejně jako u Grub-BTRFS budeme muset aplikaci stáhnout z GitHubu:
- Stažení repozitáře a instalace
git clone https://github.com/jrabinow/snapper-rollback.git cd snapper-rollback sudo cp snapper-rollback.py /usr/local/bin/snapper-rollback sudo cp snapper-rollback.conf /etc/
Test Snapperu v praxi
Pro ověření funkčnosti snapshotů provedeme test:
- Nainstalujeme testovací aplikaci (
btop
)sudo apt install btop -y
- Aktualizujeme GRUB, aby reflektoval nový snapshot
sudo update-grub
- Restartujeme systém
sudo reboot
Po restartu si v GRUB všimneme nové položky snapshots
. Klikneme na ni a vybereme snapshot označený jako PRE
(před instalací aplikace btop
).Zapamatujeme si číslo snapshotu, např. 1
.
-
Spuštění systému ze snapshotu
Po startu ze snapshotu zjistíme, že aplikacebtop
není nainstalovaná, což potvrzuje správnou funkčnost Snapper rollbacku. -
Trvalé vrácení systému k tomuto snapshotu
Pokud chceme, aby systém vždy startoval z tohoto bodu obnovy, spustíme:sudo snapper-rollback 1
Potvrdíme příkaz opsáním slova
CONFIRM
velkými písmeny.
Pozn.: před tvrdou obnovou snapper zálohy si můžeme snapper pouze vyzkoušet a to příkazem: snapper-rollback 1 --dry-run
tím se vyzkouší zda-li snapper není poškozen a je bezpečné jej obnovit.
Další tipy a automatizace správy GRUB
Pokud chceš automatizovat aktualizaci GRUB po instalaci nových balíčků nebo jádra, můžeš použít tento postup:
1️. Vytvoření APT hooku pro automatickou aktualizaci GRUB
APT umožňuje spouštět vlastní skripty po dokončení instalací a aktualizací. Můžeme toho využít k automatické aktualizaci GRUB.
Postup:
- Vytvoř soubor s hookem:
sudo nano /etc/apt/apt.conf.d/99update-grub
- Přidej následující obsah:
DPkg::Post-Invoke { "if [ -x /usr/sbin/update-grub ]; then /usr/sbin/update-grub; fi"; };
- Ulož soubor (
CTRL + X
, potéY
aEnter
).
Tento skript zajistí, že se update-grub
spustí po každé operaci apt upgrade
nebo apt install
.
2️. Použití dpkg
triggeru (doporučeno pro aktualizaci jádra)
Pokud chceš aktualizovat GRUB jen při instalaci nového jádra, je lepší použít trigger přímo v dpkg
.
Postup:
- Vytvoř soubor v adresáři
postinst.d
:sudo nano /etc/kernel/postinst.d/update-grub
- Přidej tento obsah:
#!/bin/sh set -e /usr/sbin/update-grub
- Ulož soubor a nastav mu spustitelná práva:
sudo chmod +x /etc/kernel/postinst.d/update-grub
Tento skript se spustí pouze při instalaci nového jádra.
Grafické rozhraní pro Snapper
Pokud preferujete GUI pro správu snapshotů, doporučuje se nainstalovat aplikaci snapper-gui
:
sudo apt install snapper-gui
Tuto aplikaci je nutné spouštět s oprávněním root, protože Snapper spravuje systémové snapshoty:
sudo snapper-gui
Snapper-GUI umožňuje jednodušší správu snapshotů pomocí vizuálního rozhraní, což je užitečné zejména pro začátečníky nebo ty, kteří chtějí mít lepší přehled nad historií změn v systému.
Tento návod vychází z projektu GitHub. Velké poděkování autorovi za jeho skvělou práci a sdílení užitečných informací!
Líbí se vám moje práce? Podívejte se na mou Wiki, kde najdete třeba podrobný návod na instalaci Debianu 12.