Встановлення Debian 13 на Btrfs

← Головна

Коротко: інсталюємо через debootstrap із Live/Rescue Debian. Root — Btrfs з субтомом @ (і, за бажанням, @log), /home — окремий Btrfs-розділ. Завантажувач — GRUB/UEFI. Для снапшотів — Timeshift (BTRFS mode). Рекомендовані опції монтування: compress=zstd, discard=async, noatime.

0) Вимоги UEFI, Live USB, інтернет

  • Система з UEFI (Secure Boot вимкнути або з ключами Debian).
  • Live USB із Debian 13 або будь-який live-образ з debootstrap.
  • Диск NVMe/SSD. У прикладах використано /dev/nvme0n1.
  • Виконувати команди від root. Редактор — vim, пошук — rg (ripgrep).

1) План розмітки диска

  • nvme0n1p1 — EFI System (FAT32), 512 MiB
  • nvme0n1p2 — Btrfs ROOT (для /, субтом @)
  • nvme0n1p3 — Btrfs HOME (окремий розділ без субтомів)
Swap: рекомендується zram. Якщо потрібен класичний swap — окремий розділ або swapfile на Btrfs із вимкненим CoW/компресією.
# Заміни диск за потреби export disk=/dev/nvme0n1 parted -s "$disk" mklabel gpt \ mkpart ESP fat32 1MiB 513MiB set 1 esp on \ mkpart btrfs-root 513MiB 60% \ mkpart btrfs-home 60% 100% mkfs.vfat -F32 -n EFI ${disk}p1 mkfs.btrfs -L ROOT ${disk}p2 mkfs.btrfs -L HOME ${disk}p3

2) Субтоми Btrfs на ROOT

mount ${disk}p2 /mnt btrfs subvolume create /mnt/@ # (опціонально) окремо логи, щоб не потрапляли в снапшоти btrfs subvolume create /mnt/@log umount /mnt # Монтування цільової ієрархії mount -o subvol=@,compress=zstd:3,ssd,discard=async,noatime ${disk}p2 /mnt mkdir -p /mnt/{boot/efi,var/log,home} mount -o subvol=@log,compress=zstd:3,ssd,discard=async,noatime ${disk}p2 /mnt/var/log mount -o compress=zstd:3,ssd,discard=async,noatime ${disk}p3 /mnt/home mount ${disk}p1 /mnt/boot/efi

3) Базова система (debootstrap)

debootstrap --arch=amd64 trixie /mnt http://deb.debian.org/debian # chroot підготовка for i in proc sys dev dev/pts; do mount --bind /$i /mnt/$i; done chroot /mnt /bin/bash

4) APT та базовий набір

cat >/etc/apt/sources.list <<'EOF' deb http://deb.debian.org/debian trixie main contrib non-free non-free-firmware deb http://security.debian.org/debian-security trixie-security main contrib non-free non-free-firmware deb http://deb.debian.org/debian trixie-updates main contrib non-free non-free-firmware EOF apt update apt install -y linux-image-amd64 btrfs-progs grub-efi-amd64 efibootmgr \ firmware-linux-free firmware-amd-graphics \ locales tzdata sudo vim ripgrep less \ network-manager # Локалі, час, hostname, користувач dpkg-reconfigure locales # uk_UA.UTF-8 (+ en_US.UTF-8 за бажанням) dpkg-reconfigure tzdata echo gws > /etc/hostname printf '127.0.1.1\t gws\n' >> /etc/hosts useradd -m -G sudo,adm,plugdev,netdev -s /bin/bash anton passwd anton

5) /etc/fstab з UUID

rootuuid=$(blkid -s UUID -o value ${disk}p2) homeuuid=$(blkid -s UUID -o value ${disk}p3) efiuuid=$(blkid -s UUID -o value ${disk}p1) cat >/etc/fstab <

6) Завантажувач (GRUB/UEFI)

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian update-grub

За потреби виконайте update-initramfs -u.

7) Мережа та (опц.) KDE Plasma 6

systemctl enable NetworkManager apt install -y sddm task-kde-desktop pipewire wireplumber plasma-wayland-session systemctl enable sddm

8) Swap через ZRAM

ZRAM — це стиснутий swap у оперативній пам'яті. Замість того, щоб писати на диск, дані стискаються і зберігаються в RAM. Це швидше за звичайний swap-файл і продовжує життя SSD.

Переваги: у 2-3 рази більше «віртуальної» пам'яті, миттєвий доступ, менше навантаження на диск. Ідеально для систем з 8+ GB RAM.

apt install -y zram-tools cat >/etc/default/zramswap <<'EOF' ALGO=zstd PERCENT=50 EOF systemctl enable --now zramswap

Swapfile на Btrfs: створюйте у директорії з вимкненим CoW (chattr +C), без компресії; fallocatemkswap → запис у /etc/fstab.

9) Timeshift (BTRFS mode)

Timeshift робить снапшоти субтому @. Окремий розділ /home не входить до снапшотів (і це бажано для розділення системи/даних).

apt install -y timeshift # Разовий снапшот після інсталяції timeshift --btrfs --create --comments "fresh-install" --tags O # Перелік снапшотів timeshift --list # Розклад через systemd timers systemctl enable --now timeshift.timer systemctl enable --now timeshift-boot.timer

Відновлення: із live/реск’ю запустіть timeshift --restore після монтування subvol=@, або з однокористувацької цілі (systemd.unit=rescue.target). Після — update-grub.

10) Завершення інсталяції

exit for i in dev/pts dev sys proc; do umount -R /mnt/$i; done umount -R /mnt reboot

11) Перевірки після першого старту

# Монтування lsblk -f mount | rg btrfs # Субтоми sudo btrfs subvolume list / # fstab rg -n "subvol=@|/home|/boot/efi" /etc/fstab

12) Поради та примітки

  • Чому CLI/debootstrap? Повний контроль над топологією Btrfs, чистий fstab, коректні опції компресії/TRIM.
  • Опції Btrfs: compress=zstd:3 (на NVMe/потужному CPU можна :5), noatime, discard=async або увімкніть fstrim.timer.
  • /var/log окремо: субтом @log зменшує шум у снапшотах.
  • /home окремим розділом: спрощує перевстановлення без торкання даних.
  • AMD GPU: для RX 6000 достатньо firmware-amd-graphics.

13) Швидкий чек-лист (TL;DR)

  1. ESP + Btrfs ROOT + Btrfs HOME.
  2. На ROOT створити @ (і опц. @log).
  3. Змонтувати: @/mnt, @log/mnt/var/log, HOME-розділ → /mnt/home, ESP → /mnt/boot/efi.
  4. debootstrap trixie /mnt → chroot → sources.list → базові пакети.
  5. Локалі/таймзона/користувач.
  6. Згенерувати fstab з UUID.
  7. Встановити GRUB (UEFI) і update-grub.
  8. (Опц.) KDE, NetworkManager.
  9. Увімкнути zram.
  10. Встановити Timeshift, зробити перший снапшот, увімкнути таймери.
  11. Демонтувати та reboot.

14) Скрипт автоматичного встановлення пакетів

Після базового встановлення системи можна використати скрипт для швидкого встановлення корисних утиліт та додатків. Збережіть скрипт як /usr/local/scripts/install.sh:

#!/bin/bash echo "=======================================================" echo " Debian Power-Up Script: System Essentials Installer" echo " Target: Fresh Debian installs (with KDE + CLI utilities)" echo " Description: Installs a curated set of CLI and desktop tools" echo "=======================================================" sudo apt update # Define packages in an array packages=( # Editors vim micro nano # File managers mc krusader # System monitors & diagnostics htop btop iotop atop dstat sysstat nmon lshw ioping at # Disk & FS tools pydf btrfs-progs ncdu pv # Networking curl wget git sshfs openvpn openssh-server tcpdump nmap iperf3 fping iftop nload nethogs vnstat # Terminal enhancements exa bat lsd fzf zsh screen command-not-found lsof # APT frontends and utilities at aptitude nala # System tools systemd-timesyncd grub-emu timeshift numlockx # Media tools imagemagick mplayer vlc smplayer minidlna # KDE Desktop & Accessories kde-standard ktorrent krusader kruler krfb oxygen-icon-theme # Browsers & Mail firefox-esr firefox-esr-l10n-uk firefox-esr-l10n-ru thunderbird # Testing & Benchmarking stress-ng sysbench # Remote Access Server # xrdp # Flatpak support flatpak # Random utilities pwgen ) # Run apt install and capture status sudo apt install -y "${packages[@]}" INSTALL_STATUS=$? # Check result if [ $INSTALL_STATUS -eq 0 ]; then echo "=======================================================" echo "✅ Installation Complete. System is now power-primed." echo "=======================================================" else echo "=======================================================" echo "❌ Installation failed with exit code $INSTALL_STATUS." echo " Check the output above for details." echo "=======================================================" exit $INSTALL_STATUS fi # Get the absolute directory path of this script SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Call install-nvim-latest.sh from the same directory bash "$SCRIPT_DIR/install-nvim-latest.sh"

Використання:

sudo mkdir -p /usr/local/scripts sudo nano /usr/local/scripts/install.sh # Вставити скрипт вище sudo chmod +x /usr/local/scripts/install.sh sudo /usr/local/scripts/install.sh

Скрипт встановлює:

  • Редактори: vim, micro, nano
  • Файлові менеджери: mc, krusader
  • Моніторинг системи: htop, btop, iotop, atop
  • Утиліти Btrfs та дисків: btrfs-progs, ncdu, pv
  • Мережеві інструменти: nmap, iperf3, tcpdump, vnstat
  • KDE додатки: ktorrent, kruler, krfb
  • Браузери: Firefox ESR з українською/російською локалізацією
  • Інші: timeshift, flatpak, stress-ng