Чтобы статья не развалилась на куски, мы четко зафиксируем задачу: собрать свой rootfs с рабочим столом MATE, простым текстовым редактором и браузером под свой ноутбук или ПК. Все это лирика, вернемся к нашему сборщику debootstrap.
Чтобы установить его, введите в терминале:
apt install -y debootstrap

Чтобы приступить к созданию образа, нам нужно вызвать debootstrap с определенными командами:
debootstrap stable /path/to/rootfs http://deb.debian.org/debian/
Где stable— это последний стабильный выпуск, /path/to/rootfs — путь, где будет лежать наш rootfs, а http://deb.debian.org/debian/ — репозиторий или зеркало, откуда будут скачиваться пакеты.
Note: использовать --variant=minbase в наших целях противопоказано, он не устанавливает некоторые критические части, что в будущем может привести к отсутствию звука, как пример. Дальше остается только ждать, пока все скачается, распакуется и появится строчка:
I: Base system installed successfully.
После распаковки нашего базового образа нам нужно в него «войти», для этого мы будем использовать chroot. Просто так написать chroot /path/to/rootfs не выйдет: установщику apt, как и многим утилитам, в процессе настройки и конфигурации нужен доступ к ядру системы (VFS ядра, если быть точным). Для оживления нашего rootfs будем подключать системные папки /dev, /proc, /sys.
mount --rbind /dev /path/to/rootfs/dev mount --make-rslave /path/to/rootfs/dev # конкретно в моем случае это было /srv/main00 mount -t proc proc /path/to/rootfs/proc mount --rbind /sys /path/to/rootfs/sys mount --make-rslave /path/to/rootfs/sys # --make-rslave нужен для правильного размонтирования в конце
Все приготовления закончены, заходим в наш rootfs командой:
chroot /path/to/rootfs
Чтобы не ставить мусор в виде рекомендованных пакетов, нужно добавить правило в пакетный менеджер apt. Напишите nano /etc/apt/apt.conf.d/99no-recommends и в окне вставьте:
APT::Install-Recommends "false"; APT::Install-Suggests "false";

Делаем apt update и начинаем ставить пакеты. Для контекста: в Debian есть зависимые пакеты, рекомендательные, советуемые и мета-пакеты. Зависимые — это обязательная часть ПО, без которой оно даже не запустится. Рекомендательные — это иконки, шрифты или иные пакеты, влияющие на функционал ПО или дополняющие его. Советуемые (Suggested packages) пакеты аналогичны рекомендованным, но с еще большим количеством мусора. Мета-пакеты — просто пакеты-заглушки, объединяющие другие зависимости в один пакет. Яркий пример — firmware-linux, ставящий большую часть распространенных прошивок.
Подготовка завершена, приступаем к установке нужного ПО в наш rootfs:
apt install -y mate-core l3afpad firefox-esr locales-all
Note: мы не ставим все языки и кодировки текста и оставляем стандартный C.utf-8, но без всех локалей некоторое ПО может не запускаться.
mate-core обозреваемый в статье не имеет в зависимых пакетах важные части без которых система не загрузится до рабочего стола, чтобы избавиться от прописования cli комманд для подключения к интернету и успешно загрузиться, нужно вручную установить x11 и апплеты:
apt install -y xorg lightdm network-manager-gnome mate-media mate-utils # Три последних нужны для минимального трея сети и звука
Далее определяемся с прошивками. Чтобы apt увидел несвободные бинарные компоненты, нужно внести изменения в файл /etc/apt/sources.list. Просто откройте его через nano /etc/apt/sources.list и допишите в конец non-free-firmware

Система у нас минималистичная, и у нас есть два пути: простой и банальный, занимающий больше места (ставим мета-пакет firmware-linux и забываем, что это такое), либо идем сложным путем. Здесь нет мета-пакетов, и придется найти, из чего состоит наш ПК/ноутбук, его видеокарту и сетевые адаптеры. Например, если видеокарта у нас AMD, мы ставим пакет firmware-amd-graphics, если сетевая карточка или свисток от Realtek — ставим firmware-realtek (парадокс, но он содержит прошивки еще и для аудиочипов). В общем, тут ориентируемся по названию вендора чипа. В моем личном случае это выглядит так:
apt install -y firmware-atheros firmware-amd-graphics firmware-linux-free
Система без ядра Linux — не система, переходим к нему: ставим сначала dracut вместо initramfs-tools:
apt install -y dracut
И уже после его установки ставим мета-пакет ядра:
apt install -y linux-image-amd64
Note: в репозиториях Debian stable ядро дремучее, а у нас тут «Arch». Есть второй вариант для тех, кому нужно новое ядро. Прописываем репозиторий backports:
nano /etc/apt/sources.list.d/backports.sources
И вставьте:
Types: deb URIs: http://deb.debian.org/debian/ Suites: stable-backports Components: main Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Обновляем древо пакетов apt:
apt update
И ставим (или обновляем) свежее ядро: apt install -y linux-image-amd64/stable-backports
До конца статьи совсем немного, крепимся дальше. Нам не нужен обрубок без звука и сети, нам понадобятся NetworkManager, pipewire и опционально bluetooth-апплетдля контроля подключений.
Ставим сетевую и звуковую части:
apt install -y network-manager-l10n wpasupplicant wireless-regdb modemmanager pipewire-audio wireplumber gnome-keyring
Опционально еще и blueman для bluetooth-подключений:
apt install -y libspa-0.2-bluetooth blueman rfkill bluez-tools
Напоследок, чтобы не забыть случайные драйвера и триггеры для dracut, пишем:
dracut -f --kver 7.0.12+deb13-amd64

Все, это конец. Выходим из нашего rootfs командой exit и размонтируем /dev, /proc, /sys:
umount -R /path/to/rootfs/dev umount -R /path/to/rootfs/sys umount -R /path/to/rootfs/proc

Пакуем наш rootfs с помощью:
mksquashfs /path/to/rootfs/* /path/to/mate-rootfs.sqfs

Промежуточный итог: мы собрали свой собственный золотой образ дистрибутива Debian stable со своим ПО под свои задачи без лишних пакетов. Я специально не расписывал про добавление пользователей, настройку паролей и установку, иначе гайд разрастется в длинный лонгрид. В следующей части мы разберем установку нашего образа вместе с настройкой через efistub. Вторая часть выйдет не скоро, образ системы я уже протестировал и она рабочая
