Чтобы статья не развалилась на куски, мы четко зафиксируем задачу: собрать свой 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";
Нажимаем ctrl+s и выходим на ctrl+x.
Нажимаем ctrl+s и выходим на ctrl+x.

Делаем 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

Note: 7.0.12+deb13-amd64 можно и нужно заменить на свое, dracut ищет совпадения по имени в /lib/modules/%kernelname
Note: 7.0.12+deb13-amd64 можно и нужно заменить на свое, dracut ищет совпадения по имени в /lib/modules/%kernelname

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

umount -R /path/to/rootfs/dev
umount -R /path/to/rootfs/sys
umount -R /path/to/rootfs/proc
на всякий случай лучше проверить правильно ли все размонтировалось командой: findmnt | grep /path/to/rootfs
на всякий случай лучше проверить правильно ли все размонтировалось командой: findmnt | grep /path/to/rootfs

Пакуем наш rootfs с помощью:

mksquashfs /path/to/rootfs/* /path/to/mate-rootfs.sqfs

образ собран
образ собран

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

Комментарии (15)


  1. Shaman_RSHU
    15.07.2026 11:19

    Как только не изголяются, чтобы не ставить Arch :) /s


    1. executionerrok Автор
      15.07.2026 11:19

      Арч это прошлое вот компиляция Gentoo.....


      1. Shaman_RSHU
        15.07.2026 11:19

        Тогда уж LFS


        1. Zazza
          15.07.2026 11:19

          Не знаю, кто тебя минусил и за что. Поставил плюс. Я когда студентом был, мы ещё сравнивали у кого на системе за сколько glibc и gcc собирается)


          1. executionerrok Автор
            15.07.2026 11:19

            Явно те кто не компилировал исходные коды. Предполагаю что не распознали шутку


          1. Shaman_RSHU
            15.07.2026 11:19

            Иногда не понимают сарказм, есть возможность уменьшить карму только потому, что мыслишь по другому :)


  1. mlp2
    15.07.2026 11:19

    Спасибо за статью!

    • Я слышал часть пакетов linux переписали на rust. Есть просто способ поставить их вместо обычных?

    • Как на счёт обновления с официальных репозиториев debian? Как оно организованно ?

    • Как туда добавить свои пакеты например яндекс браузер + сервер с которого это ПО будет обновляется напрямую?

    • российское шифрование, российские SSL - сертификаты из коробки ?


    1. executionerrok Автор
      15.07.2026 11:19

      Про пакеты на rust тоже слышал, конкретно с debian stable переписывали apt но пока это прероготива свежих ubuntu

      Обновление реопзиториев? stable релиз автоматически перезжает на новый релиз как выйдет(forky) но чтобы обновить систему нужен dist-upgrade вроде

      Пакеты добавляються вместе с рпеозиториям того же яндека, по аналогии с тем что написано в статье про бэкпорты. Сертификаты, гост это отдельное ПО не в составе debian


  1. alfos
    15.07.2026 11:19

    Посмотрите лучше в сторону mmdebstrap.

    Вот немного кода.

    RUN mmdebstrap \
    --architectures="amd64" \
    --variant=custom \
    --skip=usrmerge \
    --include="base-files base-passwd bash coreutils dash dpkg diffutils findutils" \
    --include="grep gzip libc-bin perl-base sed tar usrmerge" \
    --include="ca-certificates curl git jq" \
    --aptopt='APT::Install-Recommends "false"' \
    --aptopt='APT::Install-Suggests "false"' \
    --dpkgopt='path-exclude=/usr/share/doc/*' \
    --dpkgopt='path-exclude=/usr/share/man/*' \
    --dpkgopt='path-exclude=/usr/share/locale/*' \
    --dpkgopt='path-include=/usr/share/doc/*/copyright' \
    --dpkgopt='path-include=/usr/share/doc/*/changelog.Debian.*' \
    --hook-dir='/usr/share/mmdebstrap/hooks/merged-usr' \
    --hook-dir='/hooks' \
    bookworm ${ROOTDIR};\
    rm -rf "${ROOTDIR}"/var/cache/apt/* "${ROOTDIR}"/var/lib/apt/lists/* "${ROOTDIR}"/tmp/* "${ROOTDIR}"/root/.android/cache


    1. executionerrok Автор
      15.07.2026 11:19

      Про mmdebstrap не знал спасибо, только для целей разворачивания на диск как полноценной десктоп системы не подойдет, он превратиться в обычный debootstrap. chroot нужен как никак


      1. alfos
        15.07.2026 11:19

        Если у вас задача собрать десктопный Debian, то у меня вопрос. Зачем вы делаете это?

        APT::Install-Recommends "false";
        APT::Install-Suggests "false";
        


        1. executionerrok Автор
          15.07.2026 11:19

          Уменьшение места, каждый мегабайт должен быть сэкономлен. Без них подтянеться как минимум ffmpeg, gnome-keyring и др. Это как минимум 200мб к образу


  1. serg12345678
    15.07.2026 11:19

    надо будет попробовать


  1. NutsUnderline
    15.07.2026 11:19

    официальная netinstall версия debian изначально содержит очень мало, и много галочек. я убрал при установке практически все. и далее просто много разных apt. из немногого где приходиться "поугадывать" это networkmanager. я одно время просто забил текстовый конфиг и вообще не ставил эти пакеты. и в таком виде уже где с 10 по 13 апгрейдилось без лишних пакетов. Так что не вижу особого повода делать какуюто особую сборку для дектопа.

    Для чего встраиваемого - другое дело, но это совсем другая история. Я пробовал bulidroot и для сборки простого десктопного "монолита", но иногда хочется обновлять софт без перересборки ядра.


  1. NutsUnderline
    15.07.2026 11:19

    в репозиториях Debian stable ядро дремучее, а у нас тут «Arch»

    и вот тут я и не понял: а откуда оно появилось? особенно после

    Система без ядра Linux — не система, переходим к нему: ставим сначала dracut вместо initramfs-tools

    который как бы создает initrd. понять это можно очень по разному.

    и уж только по мелкой подписи к картинке

    Note: 7.0.12+deb13-amd64 можно и нужно заменить на свое, dracut ищет совпадения по имени в /lib/modules/%kernelname

    можно предположить что именно dracut че то там умеет выкачивать откуда то