- Сообщения
- 4.999
- Реакции
- 11.412
Создание собственного дистрибутива на основе Debian.
До сих пор иногда приходится читать на своих ветках "экспертные заключения" из разряда "я так понял у тебя переделанный Parrot" или "так я и сам смогу (если захочу/если будет время/если + еще какая нибудь хуйня в виде отмазки)". Причем пишут эту ересь как правило те, кто не собирается ничего покупать, и казалось бы логичным решением тут может быть "послать их к ебеней матери". Однако же читают такую ересь и те, кто что то таки покупает. Так что эта статья в первую очередь для покупателей. Что бы они убедились что купят не фуфло или какой то "переделанный Parrot" - а действительно уникальную, не имеющую аналогов на этой планете, полноценную операционную систему, и что я таки мало мало понимаю в этих ваших линуксах.
Linux Live
В Debian было/есть отдельное подразделение, которое занималось направлением Live - Лайв это такая операционная система, которая не требует установки в прямом понимании этого слова. То есть например вот чтобы воспользоваться всеми возможностями Windows да, нужно установить ее через "Мастер установки", или как там сейчас называется эта шляпа. Процесс занимает какое то время, предположим полчаса, там в процессе всякие перезагрузки, ну вы поняли о чем я. Линуксы так же можно ставить через установку - процесс аналогичен. Но, часть линуксов бывает и разновидности Live - в отличии от "обычного" линукса, чтобы начать пользоваться Live линуксом не нужно мудохаться с установкой. Достаточно записать файл - дистрибутив (как правило он имеет расширение .iso) на носитель (сейчас это в большинстве случаев USB накопители), и собственно все. Можно уже загружаться и работать.
При этом это будет не какой то там "пробник" или "демо версия" - это будет на 100% рабочая операционная система, с одим лишь нюансом - она не будет "запоминать" изменения, которые пользователь сделал во время сеанса, поскольку файловая система у таких линуксов всегда монтируется в режиме RO (Read Only/ Только для чтения). Да да, это не "уникальная фишка" T.A.I.L.S. как многие наивно думают. Даже сраненькая убунту записаная на флешку так же не "запомнит" ровным счетом нифига после сеанса.
Правда нашли способ таки сохранять изменения - через так называемую Оверлейную Файловую Систему (OverlayFS) - на носителе создается Persistence раздел (с шифрованием или без него) который монтируется уже в режиме RW (Чтение/Запись). При загрузке операционная система "объединяет" обе файловые в одну и получает таким образом возможность запоминать изменения в настройках и файлах без внесения изменений в оригинальный образ.
Live Build
Инструмент который я использую для создания своей операционной системы - Live Build. Установка пакета происходит командой:
После этого, нам потребуется для удобства две вещи - терминал и файловый менеджер с рут правами, что бы постоянно не писать судо, и не мудохаться с доступом к папке, владельцем которой является root. Так что сразу в после установки в терминале неплохо будет набрать сначала
чтобы терминал стал с правами рута. а потом:
Где xxxxx - ваш файловый менеджер (thunar, caja, nautilus)
Создаем макет системы
Места под сборку линукса нужно много, так что если у вас система попилена на разделы, то не самым удачным решением будет делать папку под сборку в каталоге /root - куда более правильно будет создать ее в /home/имявашейучетки и назвать ее, ну например test-live. Таким образом путь до папки в нашем примере будет /home/user/test-live/
меняем директорию:
и собственно накидываем макет:
После этой команды наша папка test-live будет содержать в себе 4 подпапки:
1 - .buid = в этой папке будут лежать файлики, которые создает лайв - билд в процессе работы, чтобы понимать какие стадии уже выполнены. То есть сейчас, после того как успешно выполнена самая первая стадия - lb config в этой папочке уже лежит файл config, который показывает системе что стадия "конфиг" успешно выполнена и можно ее не делать уже при повторном запуске.
2 - auto = в этой папке ничего нет пока, но во время сборки там должны лежать три скрипта - clean build и самое главное config - в котором прописаны настройки будущего дистрибутива:
3 - config = папка с настройками будущей системы. особенно интересны в ней следующие подпапки:
3.1 - hooks - хуки это скрипты, которые выполняются в процессе сборки, например чтобы удалить ненужные пакеты, которые автоматически поставились "в довесок" к каким то делается "хук" - файлик с названием purge.hook.chroot и содержимым:
3.2 - includes.chroot (вложения стадии чрут, то есть файлы которые нужно скопировать в новую систему в процессе ее создания. в этой папке и лежат все конфиги и настройки, например чтобы в системе после сборки был кастомный файл torrc нужно заранее его создать, проверить и положить в папку /home/user/test-live/config/includes.chroot/etc/tor/torrc):
3.3 - package-lists - в этой папке лежат списки пакетов, которые нужно будет установить в новую систему.
пример списка пакетов:
3.4 - packages.chroot - в эту папку я скидываю deb архивы, что бы в системе были предустановлены те программы, которых нет в репозиториях debian - в первую очередь это атакующие пакеты из репозиториев kali linux.
Ну и наконец папка local, которая я на хрен не знаю зачем вообще предназначена. Видимо нужна.
Сборка
Собственно трудность создания заключается именно вот в этом - в подготовке макета. Когда нужно по сути вот весть каталог /etc в ручную разметить на папки, распихать в папки конфиги - проверить и перепроверить что бы нигде не было опечаток - особенно в названиях файлов и папок. Так же муторно создавать каталог /etc/skel - "скелет" вновь создаваемых пользователей - именно из него система берет все установки и настройки для создания юзеров и т.п.
Кастомное меню Tor Network - как оно выглядит "снаружи" т.е. глазами пользователя (выглядит как подраздел меню ага) и "изнутри" - глазами разработчика (выглядит как набор папок и файлов конфигурации):
А вот как выглядят красивые иконки из кастомного меню "изнутри", глазами разработчика - папка с "лаунчерами":
Сам же процесс сборки линукса автоматизирован и не требует участия - достаточно в терминале ввести команду
и можно полтора часа нихера не делать - лайв билд все "заварит сам":
1. скачает исходники ядра и скомпилирует его
2. установит в него все указанные в списках драйверы
3. скачает, распакует и установит все указанные программы
4. заменит их оригинальные конфиги на кастомные, если найдет их в includes.chroot
5. выполнит все хуки
6. скачает дебиан-инсталлер и урезанные версии пакетов для него (так называемые udebs)
7. сожмет весь макет chroot в файлик squashfs
8. соберет все компоненты (лайв систему, установщик, загрузчики и т.п.) в единый .iso файл.
После чего его можно записывать на флешку, запускаться с нее, сразу же на рабочем столе создавать папку с названием bugs и начинать искать косяки
До сих пор иногда приходится читать на своих ветках "экспертные заключения" из разряда "я так понял у тебя переделанный Parrot" или "так я и сам смогу (если захочу/если будет время/если + еще какая нибудь хуйня в виде отмазки)". Причем пишут эту ересь как правило те, кто не собирается ничего покупать, и казалось бы логичным решением тут может быть "послать их к ебеней матери". Однако же читают такую ересь и те, кто что то таки покупает. Так что эта статья в первую очередь для покупателей. Что бы они убедились что купят не фуфло или какой то "переделанный Parrot" - а действительно уникальную, не имеющую аналогов на этой планете, полноценную операционную систему, и что я таки мало мало понимаю в этих ваших линуксах.
Linux Live
В Debian было/есть отдельное подразделение, которое занималось направлением Live - Лайв это такая операционная система, которая не требует установки в прямом понимании этого слова. То есть например вот чтобы воспользоваться всеми возможностями Windows да, нужно установить ее через "Мастер установки", или как там сейчас называется эта шляпа. Процесс занимает какое то время, предположим полчаса, там в процессе всякие перезагрузки, ну вы поняли о чем я. Линуксы так же можно ставить через установку - процесс аналогичен. Но, часть линуксов бывает и разновидности Live - в отличии от "обычного" линукса, чтобы начать пользоваться Live линуксом не нужно мудохаться с установкой. Достаточно записать файл - дистрибутив (как правило он имеет расширение .iso) на носитель (сейчас это в большинстве случаев USB накопители), и собственно все. Можно уже загружаться и работать.
При этом это будет не какой то там "пробник" или "демо версия" - это будет на 100% рабочая операционная система, с одим лишь нюансом - она не будет "запоминать" изменения, которые пользователь сделал во время сеанса, поскольку файловая система у таких линуксов всегда монтируется в режиме RO (Read Only/ Только для чтения). Да да, это не "уникальная фишка" T.A.I.L.S. как многие наивно думают. Даже сраненькая убунту записаная на флешку так же не "запомнит" ровным счетом нифига после сеанса.
Правда нашли способ таки сохранять изменения - через так называемую Оверлейную Файловую Систему (OverlayFS) - на носителе создается Persistence раздел (с шифрованием или без него) который монтируется уже в режиме RW (Чтение/Запись). При загрузке операционная система "объединяет" обе файловые в одну и получает таким образом возможность запоминать изменения в настройках и файлах без внесения изменений в оригинальный образ.
Live Build
Инструмент который я использую для создания своей операционной системы - Live Build. Установка пакета происходит командой:
Код:
sudo apt update && sudo apt install -y live-build
После этого, нам потребуется для удобства две вещи - терминал и файловый менеджер с рут правами, что бы постоянно не писать судо, и не мудохаться с доступом к папке, владельцем которой является root. Так что сразу в после установки в терминале неплохо будет набрать сначала
Код:
user@wartech:~$ sudo -s
root@wartech:/home/user#
чтобы терминал стал с правами рута. а потом:
Код:
root@wartech:/home/user# sudo -b xxxxx
root@wartech:/home/user#
Где xxxxx - ваш файловый менеджер (thunar, caja, nautilus)
Создаем макет системы
Места под сборку линукса нужно много, так что если у вас система попилена на разделы, то не самым удачным решением будет делать папку под сборку в каталоге /root - куда более правильно будет создать ее в /home/имявашейучетки и назвать ее, ну например test-live. Таким образом путь до папки в нашем примере будет /home/user/test-live/
меняем директорию:
Код:
root@wartech:/home/user# cd test-live
root@wartech:/home/user/test-live#
и собственно накидываем макет:
Код:
root@wartech:/home/user/test-live# lb config
[2019-02-11 05:36:59] lb config
P: Creating config tree for a debian/stretch/amd64 system
P: Symlinking hooks...
root@wartech:/home/user/test-live#
После этой команды наша папка test-live будет содержать в себе 4 подпапки:
1 - .buid = в этой папке будут лежать файлики, которые создает лайв - билд в процессе работы, чтобы понимать какие стадии уже выполнены. То есть сейчас, после того как успешно выполнена самая первая стадия - lb config в этой папочке уже лежит файл config, который показывает системе что стадия "конфиг" успешно выполнена и можно ее не делать уже при повторном запуске.
2 - auto = в этой папке ничего нет пока, но во время сборки там должны лежать три скрипта - clean build и самое главное config - в котором прописаны настройки будущего дистрибутива:
Код:
#!/bin/sh
set -e
lb config noauto \
--clean \
--ignore-system-defaults \
--apt-options "--yes --allow-downgrades" \
--verbose \
--debian-installer live \
--distribution buster \
--debian-installer-distribution daily \
--linux-packages "linux-image linux-headers" \
--archive-areas "main contrib non-free" \
--firmware-binary true \
--firmware-chroot true \
--linux-flavours amd64 \
--source false \
--updates true \
--security true \
--backports false \
--apt-secure false \
--apt-source-archives false \
--apt-indices false \
--iso-application "WARTECH" \
--iso-publisher "WARTECH" \
--iso-volume "WARTECH_3.3" \
--bootappend-install "net.ifnames=0" \
--memtest memtest86+ \
"${@}"
3 - config = папка с настройками будущей системы. особенно интересны в ней следующие подпапки:
3.1 - hooks - хуки это скрипты, которые выполняются в процессе сборки, например чтобы удалить ненужные пакеты, которые автоматически поставились "в довесок" к каким то делается "хук" - файлик с названием purge.hook.chroot и содержимым:
Код:
#!/bin/bash
set -e
sudo apt purge -y имяненужногопакета
sudo apt autoremove -y
3.3 - package-lists - в этой папке лежат списки пакетов, которые нужно будет установить в новую систему.
пример списка пакетов:
Код:
live-boot
live-config
live-config-systemd
# Desktop
task-xfce-desktop
papirus-icon-theme
thunar-archive-plugin
catfish
ristretto
mousepad
gnome-disk-utility
engrampa
rar
synaptic
gimp
xpaint
galculator
gmtp
parole
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-ugly
xsane
libreoffice-calc
libreoffice-writer
evince
menulibre
gnome-maps
### Xorg
xorg
xserver-xorg-input-all
xserver-xorg-legacy
xserver-xorg-video-all
xserver-xorg-video-cirrus
xserver-xorg-video-intel
xserver-xorg-video-modesetting
xserver-xorg-video-amdgpu
3.4 - packages.chroot - в эту папку я скидываю deb архивы, что бы в системе были предустановлены те программы, которых нет в репозиториях debian - в первую очередь это атакующие пакеты из репозиториев kali linux.
Ну и наконец папка local, которая я на хрен не знаю зачем вообще предназначена. Видимо нужна.
Сборка
Собственно трудность создания заключается именно вот в этом - в подготовке макета. Когда нужно по сути вот весть каталог /etc в ручную разметить на папки, распихать в папки конфиги - проверить и перепроверить что бы нигде не было опечаток - особенно в названиях файлов и папок. Так же муторно создавать каталог /etc/skel - "скелет" вновь создаваемых пользователей - именно из него система берет все установки и настройки для создания юзеров и т.п.
Кастомное меню Tor Network - как оно выглядит "снаружи" т.е. глазами пользователя (выглядит как подраздел меню ага) и "изнутри" - глазами разработчика (выглядит как набор папок и файлов конфигурации):
А вот как выглядят красивые иконки из кастомного меню "изнутри", глазами разработчика - папка с "лаунчерами":
Сам же процесс сборки линукса автоматизирован и не требует участия - достаточно в терминале ввести команду
Код:
lb build
и можно полтора часа нихера не делать - лайв билд все "заварит сам":
1. скачает исходники ядра и скомпилирует его
2. установит в него все указанные в списках драйверы
3. скачает, распакует и установит все указанные программы
4. заменит их оригинальные конфиги на кастомные, если найдет их в includes.chroot
5. выполнит все хуки
6. скачает дебиан-инсталлер и урезанные версии пакетов для него (так называемые udebs)
7. сожмет весь макет chroot в файлик squashfs
8. соберет все компоненты (лайв систему, установщик, загрузчики и т.п.) в единый .iso файл.
После чего его можно записывать на флешку, запускаться с нее, сразу же на рабочем столе создавать папку с названием bugs и начинать искать косяки

Последнее редактирование модератором: