Буває страшно тиснути Enter на черговому apt upgrade? Давайте зробимо безпечний пісочний майданчик: змонтуємо систему через overlayfs, зайдемо у неї через chroot, протестуємо оновлення, а потім просто приберемо шар змін. Ніяких ризиків для вашої основної системи — і всі експерименти з apt командами під контролем. Це один із моїх улюблених трюків Linux 🚀
Коротко: що таке overlayfs і навіщо chroot
overlayfs накладає "верхній" шар (upperdir) змін на "нижній" шар (lowerdir) у режимі лише читання. Ви бачите об’єднане дерево файлів, але всі записи йдуть у upperdir. chroot переключає корінь процесу в інший каталог, щоб програми думали, що це — ціла система. Разом це дозволяє симулювати оновлення Linux і інсталяції так, ніби все відбувається в реальній системі, хоча насправді зміни зберігаються лише у верхньому шарі.
Підготовка sandbox на основі вашої системи
Вам знадобиться сучасне ядро з підтримкою overlayfs, права sudo і трохи сміливості в термінал Linux ⚠️ Перед початком закрийте зайві застосунки і впевніться, що маєте вільне місце на диску.
Крок 0. Перевірка підтримки overlayfs
sudo modprobe overlay
lsmod | grep overlay || echo "overlayfs модуль підвантажено"
Крок 1. Створюємо каталоги та робимо нижній шар лише для читання
sudo mkdir -p /sandbox/{lower,upper,work,root}
# Створюємо read-only відображення вашого / як нижній шар
a) sudo mount --bind / /sandbox/lower
b) sudo mount -o remount,ro,bind /sandbox/lower
Такий read-only bind гарантує, що нижній шар стабільний і ми нічого не змінюємо у хості.
Крок 2. Монтуємо overlay і готуємо chroot
# Монтуємо overlay
sudo mount -t overlay overlay \
-o lowerdir=/sandbox/lower,upperdir=/sandbox/upper,workdir=/sandbox/work \
/sandbox/root
# Підключаємо необхідні псевдо-ФС для коректної роботи apt і dpkg
for d in proc sys dev run; do sudo mount --bind /$d /sandbox/root/$d; done
sudo mount --bind /tmp /sandbox/root/tmp
# DNS у chroot (зв'язок з інтернетом для apt)
sudo cp -L /etc/resolv.conf /sandbox/root/etc/resolv.conf
# Додатковий захист від змін у NVRAM/EFI під час оновлень загрузчика
sudo mkdir -p /sandbox/empty
sudo mount --bind /sandbox/empty /sandbox/root/sys/firmware || true
Крок 3. Заходимо у sandbox і тестуємо оновлення
sudo chroot /sandbox/root /bin/bash
# Ми вже всередині sandbox
apt update
apt -s upgrade # симуляція оновлення (dry-run)
apt upgrade # реальне оновлення, але лише у верхній шар overlay
# Додатково: встановіть або видаліть пакети для тесту
# apt install <pkg> / apt remove <pkg>
exit
Усі зміни потрапили в /sandbox/upper, ваш хост не змінено. Ось така магія apt команд у безпечному середовищі.
Крок 4. Відкат у нуль: розмонтування та прибирання
# Порядок розмонтувань важливий
sudo umount -l /sandbox/root/sys/firmware || true
for d in tmp run dev sys proc; do sudo umount -l /sandbox/root/$d; done
sudo umount -l /sandbox/root
sudo umount -l /sandbox/lower
# Повний відкат: просто видаляємо "upper" і "work"
sudo rm -rf /sandbox
Як зберегти корисні зміни
Якщо хочете перенести результати експерименту на хост, вручну виберіть і скопіюйте потрібні файли з /sandbox/upper. Наприклад, глянути, що саме змінилось:
sudo du -sh /sandbox/upper
sudo find /sandbox/upper -type f | sed 's#^/sandbox/upper##' | sort | less
Автоматизація: міні bash-скрипт
Щоб не набирати все щоразу, тримайте невеликий скрипт. Це справжнісінькі трюки Linux для щоденної практики.
#!/usr/bin/env bash
set -euo pipefail
SANDBOX=/sandbox
prep() {
sudo modprobe overlay || true
sudo mkdir -p "$SANDBOX"/{lower,upper,work,root,empty}
sudo mount --bind / "$SANDBOX"/lower || true
sudo mount -o remount,ro,bind "$SANDBOX"/lower
sudo mount -t overlay overlay \
-o lowerdir="$SANDBOX"/lower,upperdir="$SANDBOX"/upper,workdir="$SANDBOX"/work \
"$SANDBOX"/root
for d in proc sys dev run; do sudo mount --bind /$d "$SANDBOX"/root/$d; done
sudo mount --bind /tmp "$SANDBOX"/root/tmp
sudo cp -L /etc/resolv.conf "$SANDBOX"/root/etc/resolv.conf
sudo mount --bind "$SANDBOX"/empty "$SANDBOX"/root/sys/firmware || true
}
enter() {
sudo chroot "$SANDBOX"/root /bin/bash
}
clean() {
sudo umount -l "$SANDBOX"/root/sys/firmware || true
for d in tmp run dev sys proc; do sudo umount -l "$SANDBOX"/root/$d || true; done
sudo umount -l "$SANDBOX"/root || true
sudo umount -l "$SANDBOX"/lower || true
}
wipe() {
clean || true
sudo rm -rf "$SANDBOX"
}
case "${1:-}" in
prep) prep;;
enter) enter;;
clean) clean;;
wipe) wipe;;
*) echo "Usage: $0 {prep|enter|clean|wipe}"; exit 1;;
esac
Альтернативні способи
- Швидка симуляція без sandbox:
apt -s upgradeіapt-get --just-print install pkgпоказують план дій без змін. - Знімки файлової системи: Btrfs/LVM snapshot перед оновленням — моментальний відкат у випадку проблем.
- Окреме кореневе дерево:
debootstrapстворює чистий Debian/Ubuntu rootfs; даліchrootабоsystemd-nspawnдля тестів. - Контейнери: Docker/Podman для ізоляції, але це вже не ваш системний root, а образ; зручно для перевірки пакетів, що не торкаються ядра/завантажувача.
GUI-спосіб: Timeshift для швидкого відкату
Якщо хочете більше графіки, використайте Timeshift. Це не overlayfs, але дуже зручно для безпечних оновлень:
- Встановіть Timeshift:
sudo apt update && sudo apt install timeshift
- Запустіть Timeshift (GUI), виберіть тип знімків (Btrfs або RSYNC), диск і натисніть Create.
- Виконайте ваші оновлення через apt у терміналі.
- Якщо щось пішло не так — відкрийте Timeshift і відновіться з останнього snapshot.
FAQ
Чи безпечно використовувати lowerdir з кореня системи?
Так, якщо ви монтуєте його як read-only bind, як у кроках вище. Усі записи підуть у верхній шар, а хост лишиться не зміненим.
Служби намагаються стартувати під час оновлення в chroot. Що робити?
Заблокуйте автозапуск служб у sandbox за допомогою policy-rc.d:
echo -e '#!/bin/sh\nexit 101' | sudo tee /sandbox/root/usr/sbin/policy-rc.d >/dev/null
sudo chmod +x /sandbox/root/usr/sbin/policy-rc.d
Це збереже спокій під час оновлення пакунків у chroot.
DNS не працює в chroot
Переконайтеся, що /etc/resolv.conf скопійовано або змонтовано. Просте рішення — як у гайді: cp -L /etc/resolv.conf /sandbox/root/etc/resolv.conf.
Помилка під час монтування overlayfs з lowerdir=/
Використайте схему з read-only bind в окрему теку (ми так і робимо: /sandbox/lower). Це обхід типових обмежень overlayfs щодо прямих монтувань з /.
Чи може оновлення зіпсувати завантажувач або EFI?
Малоймовірно у такому sandbox, бо файли пишуться в upperdir. Але щоб виключити зміни NVRAM/efivars, ми "маскуємо" /sys/firmware через порожню теку. Додатково не зайвим буде policy-rc.d, щоб не стартували служби.
Де зберігаються всі зміни і як очистити місце?
Усі зміни — в /sandbox/upper. Щоб прибрати все, розмонтуйте й видаліть /sandbox. Перевірити зайнятий простір можна через du -sh /sandbox/upper.
Порада від Kernelka
- Комбінуйте: спочатку
apt -s upgradeдля прогона плану, потім — overlayfs+chroot для реального тесту. - Для складних апгрейдів ядра або grub краще мати свіжий Timeshift snapshot або btrfs/lvm знімок — подвійна страховка.
- Зберігайте журнал:
script -c "apt upgrade" /tmp/apt.logу sandbox — легше аналізувати проблеми. - Не забувайте, що це саме sandbox: не зберігайте у ньому секрети й ключі; усе потрібне — переносіть вибірково з upperdir.
Підсумок
- overlayfs + chroot дозволяють безпечно тестувати оновлення та інсталяції apt без ризику для хоста.
- Усі зміни ізолюються в upperdir і миттєво відкидаються простим видаленням sandbox.
- Додатковий захист: policy-rc.d, маскування /sys/firmware та read-only lowerdir.
- Альтернатива для GUI — Timeshift для швидкого відкату.
- Це практичні apt команди у поєднанні з потужними можливостями терміналу Linux — безпечно і гнучко.

Прокоментувати
На сайті відображається лише твоє ім'я та коментар. Електронна пошта зберігається виключно для зв'язку з тобою за потреби та в жодному разі не передається стороннім особам.