Ú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/fstabprintf "$(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
/homesudo btrfs subvol create /btrfsroot/@home -
Zkopírování obsahu současného
/homedo 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/fstabpro nový/homeprintf "$(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í
/homesmaž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/logsudo 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/fstabprintf "$(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/logsudo 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
/tmpsudo btrfs subvol create /btrfsroot/@tmp -
Zkopírování stávajícího obsahu
/tmpsudo cp -RT --reflink=always /tmp /btrfsroot/@tmp -
Přidání subsvazku do
/etc/fstabprintf "$(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
/tmpsudo 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/fstaba 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 aplikacebtopnení 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 1Potvrdíme příkaz opsáním slova
CONFIRMvelký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éYaEnter).
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. ![]()










