Коротко: інсталюємо через 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 MiBnvme0n1p2— Btrfs ROOT (для/, субтом@)nvme0n1p3— Btrfs HOME (окремий розділ без субтомів)
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), без компресії; fallocate → mkswap → запис у /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)
- ESP + Btrfs ROOT + Btrfs HOME.
- На ROOT створити
@(і опц.@log). - Змонтувати:
@→ /mnt,@log→ /mnt/var/log, HOME-розділ → /mnt/home, ESP → /mnt/boot/efi. - debootstrap trixie /mnt → chroot → sources.list → базові пакети.
- Локалі/таймзона/користувач.
- Згенерувати fstab з UUID.
- Встановити GRUB (UEFI) і update-grub.
- (Опц.) KDE, NetworkManager.
- Увімкнути zram.
- Встановити Timeshift, зробити перший снапшот, увімкнути таймери.
- Демонтувати та 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