LINUX.ORG.RU
ФорумAdmin

Debian. Создание и кастомизация установочного дистрибутива(LVM, ACL, conf, media)

 , ,


0

2

Здравствуйте, жители ЛОР. Я давно читаю этот форум, в основном в поисках ответа на вопрос, однако сегодня ночью, наконец, решился зарегистрироваться :)


А что бы не превращать топик в разделе администрирования в анкету на сайте знакомств предлагаю обсудить сабж. Кто бы как решал эту задачу, возможно кто-то уже решал такие задачи? да и вообще хотелось бы услышать ваше мнение на этот счёт.


Пролог: есть дебиан 10, на нем уже больше полу-года денно-нощьно ведется разработка, скажем так, сконфигурированной системы для выполнения определенных задач и обеспечения безопасности их выполнения. В системе используется LVM шифрование* всего блочного устройства, система ставится на весь диск, без разделений на /home и тд. В системе стоит пароль на GRUB. Так же, стоят кастомные обоины и конфигурация на загрузчик (нету вариантов загрузки, нету ожидания). Кроме того, в системе есть папочка, на которую довольно долго выставлялись права. Используется ACL, attr и дополнительно использует ACL в конфигурации smbd которая с этой папочкой работает. Так же есть пару здоровых файлов весом под 12 гб. И несколько совсем не больших скриптов-работяг, которые этим всем распоряжаются. Скрипты живут в своей папочке, которая в корне, по соседству с ними - папочка с большими файлами, а с помощью символа `.` на погонах прячется в корне очень важная папочка, в ней подпапочки бегают, и у них есть звания и ранги которые осуществлены с помощью ACL.
Так вот, все это обрамлено минимальным оконным менеджером openbox и экраном входа lightdm, которые тоже настроенны и сконфигурированны. А распределение ролей и рангов в системе выполнено с помощью .xsession файла в корне пользовательских директорий, откуда уже идет обращение в папочки, и весь этот мир оживает. Некоторые вещи я уже и не помню как именно реализовал.... но оно работает. и очень даже не плохо.


Суть: нужно теперь из этого сделать дистрибутив. нормальный. желательно конечно в нем рядом с надписью DEBIAN «тут был вася» нацарапать, но такие задачи я обычно делаю пока думаю как реализовать основные) Но я успел пол дебиана перерисовать уже, однако дистрибутива так и не вышло. Сперва я пробовал софт типа respin и systemback, который снимает слепок с доменной системы и запаковывает его в squash-fs образ, который в свою очередь упакован в iso образ. ядро он берет из доменного дистрибутива, кладет рядом с файловой системой, но, предварительно переделывает систему по своему вкусу. А именно, вырезает к черту всех пользователей, кромсает настройки менеджера входа, задает автологин в систему, и так далее. Да и поставить этот лайв как дистрибутив не имеется возможности, так как при попытке загрузиться в «инсталятор» с этого лайв образа - мы получаем тоже самое, что и при просто загрузке лайв образа. Аналогичный софт, aka respin принципиально ничем не отличается.


Далее я решил более плотно углубиться в процесс создания дистрибутивов, разобрал и собрал обратно пару официальных *.iso от Debian, вносил модификации в squash-fs и упаковывал обратно - все тщетно. На этапе установки стабильно вылазила ошибка при копировании файлов. Возможно, это из-за огромных файлов? Нет, без них - тоже та же ошибка.


Линукс - он как BMW - это болезнь. Я решил разобраться с тем, как и чем вообще делают дистрибутив, и познакомился с утилитой debian-cd, вернее, с ее надстройкой - simple-cdd. Вообще мне кажется что в слове «simple» этой утилиты иронии over 9000. Создал локальные базовый репозиторий, вернее склонировал его с зеркала этой утилитой, все ок, переделал штатный .preseed файл под себя (тут начались вопросы, нашел способ добавить в дистрибутив те файлы, которые мне нужны (тут вопросов стало больше), и собрал все это в исошник (почему-то все надписи на стенах про васю стерлись, хотя я надежно писал их в папку /usr/share/debian-cd/ откуда build-simple-cdd берет инфу для сборки).


во время загрузки на прочь отказывается грузиться обоина GRUB. что в PNG что в TGA. хоть убей. с другими такого не было. Первое, что я вижу после загрузки в гуи инсталлер - это ошибку по раскладке клавиатуры. Я пробовал разные опции .preseed файла, но все без толку. Потом, почти до самого конца, процесс автоматический. Был вроде бы вопрос по обьему LVM. после перезагрузки (GRUB опять, падло, без обоин и без пароля) я получаю голый дебиан с установленными из списка пакетами. По сути все это = установить minimal + for p in apk.txt ; do apt install $p .....
Я отчаянно пытался скопировать shadow passwd groups и конфиги из squashfs, предварительно смонтировав систему - болт. системные юзеры не желают что бы их айдишники менялись, а совпадать они так же не хотят. Я пробовал востановить все из *.tar архива - болт, он вообще отказался со мной работать ссылаясь на симлинки....
Я пытался сделать это с помощью .preseed файла, в конце которого есть команда, которая выполняется перед перезагрузкой. что-то типа `cp -LRF /.secret /target/ && cp -LRF /my_world /target/ && chroot /target && adduser ... addgroup ...` но пока только в уме.

Есть идеи?

p.s. Спасибо, если ты дочитал это до конца.

Я давно читаю этот форум
папочка папочкой папочке папочки

«Не верю» (c) Станиславский

anc ★★★★★
()
Ответ на: комментарий от swagcat228

Г-н Кот, заверяю вас в вашей тотальной анскильности и в крайне запартном понимании тех слов, что вы написали. Ну и самое главное, этот раздел форума не для вашей потуги, ван надо в разделе Job объявить вакансию.

Anoxemian ★★★★★
()
Ответ на: комментарий от anc

мне нравятся произведения Пелевина и Суворова, что плохого в прозе? окей, есть дириктории в корневом каталоге, в некоторых из них хранятся скрипты с ограниченными на чтение и выполнение правами, в других - медиа файлы, и в одной из них - используется атрибутика ACL. Это все нужно перенести с моего ПК на дистрибутив, для последствуещего развертывания где-либо.

swagcat228
() автор топика
Ответ на: комментарий от Anoxemian

Товарищ Anoxemian, видетe-ли, в этом мире все относительно, так что я считаю, что Ваше суждение - ложно. А за скилзами в области копирования файлов, пользователей и конфигураций из номинальной системы в дистрибутив, не поверите, я пришел на этот ресурс.

p.s. в вакансиях не нуждаюсь, спасибо.

swagcat228
() автор топика
Ответ на: комментарий от anc

подскажи, с какими ключами использовать tar? и еще, если заюзать tar на диру с бнарниками и либами - после распаковать на минимальном дистре - dpkg выдаст же кучу ошибок? либо, предварительно все поставить?

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

подскажи, с какими ключами использовать tar

man tar Мне кажется это не очень сложно.

      --acls Enable POSIX ACLs support.
       --selinux
              Enable SELinux context support.
       --xattrs
              Enable extended attributes support.

И так далее.

и еще, если заюзать tar на диру с бнарниками и либами - после распаковать на минимальном дистре - dpkg выдаст же кучу ошибок? либо, предварительно все поставить?

Вот тут вариантов действительно больше одного. Бывало и на рабочей можно. Но правильно только с внешнего загрузчика. Это 100 процентный вариант.

anc ★★★★★
()

Букв много… Читать лень…

Помогать подпольному казино или нашей либерде желания нет.

anonymous
()
Ответ на: комментарий от anonymous

снова мимо) в двух словах это первый мой проект, который можно назвать white hat.

anc, спасибо)) в последний раз тар матерился на ключ –xattrs или –acls, но я нашел Копирование. Сохранить атрибуты файлов. (комментарий) вот этот пост, подправил под себя и вроде бы оно пакуется. в принципе, в кастомный дистриб того же FAI, или же дистр из simple-cdd я запихаю tar, и исошник перепакую с помощью xoriso, так как он будет больше 10гб.

обязательно отпишусь. спасибо.

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Ты лапшу на уши другим вешай, а тут публика таких как ты щёлкает только так.

anonymous
()

Так то оно понятно что ты хочешь сделать какой то форк типа элементари и еже подобной оси , но я тебе говорю как прошедшии все эти тернии пока папки lib , lib32 и ещё несколько будут ссылками ничего хорошего не будет в итоге останется форкать тебе 18.10 и все будут косится , а того ли ты форкнул и тоже так хотеть так что оставь эту вещь и делай по другому , а конкретно это вычисления кто работает на каноникал и здесь развлекается на тамошние полученные миллионы.

anonymous
()
Ответ на: комментарий от anc

https://ibb.co/fYmcLnr /sys не скопировался. Попробую без него. Сейчас команда выглядит так: https://ibb.co/5s6vLX1

Я вот ещё что хотел спросить. По ACL. Для того, что бы юзать ACL - нужно перемонтировать устройство с этим атрибутом, верно? А устройство lvm не желает перемонтироваться с этим атрибутом. Хотя при этом никакой ошибки нету, но и атрибута в выводе mount не наблюдается.

swagcat228
() автор топика
Ответ на: комментарий от anonymous

Не в милионах счастье, скоро нефть закончится и пизд€ц настанет всем, кто ещё на Марсе помидоры типа не выращивает…..

swagcat228
() автор топика

если у вас debian live, то можно попробовать через remastersys. А если у вас обычный debian, то можно архивировать акронисом. Можно посоветоваться со сборщиками кастомных минтов на сайте mintlinux.

dimh
()
Ответ на: комментарий от dimh

Настольный дистрибутив, на котором и разрабатывалась сборка.

На счёт remastersys - пробовал, нету возможности потом установить все это на системе. Только лайв.

На счёт акрониса - идея хорошая. Я думал, если по людски не получится - сделать что-то вроде dd. Не знал что акронис есть под Никс. Думал это оффтоповская приблуда.

Щас попробую развернуть тар из исошника в виртуалке поверх чистого минимально дебиана, посмотрим, что из этого выйдет

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

/sys не скопировался

Удивительно не правда ли?

Для того, что бы юзать ACL - нужно перемонтировать устройство с этим атрибутом, верно?

Да. У когото это по умолчанию, у кого-то нет (это я про разные *nix) Если вы сделали полную копию tar или rsync на другой носитель то тащето не должно быть проблем.

anc ★★★★★
()
Ответ на: комментарий от anonymous

Блин) я не отстреливаю половину из тех слов, что ты написал, но лепит тебя нормально

swagcat228
() автор топика

Яннп.
Фу какая длинная портянка, тс явно не уважает время читателей, которые вроде бы и готовы помочь, но начинают разбирать этот бред, и тупо закрывают вкладку.
Тс, разбей на подзадачи, 1 2 3. К каждой краткое мать его описание!

По теме, есть опыт переработки Debian installer с нуля, preseed адская недокументированная хрень, решилось своим мега скриптом на основе debootstrap и chroot.

Bers666 ★★★★★
()
Ответ на: комментарий от anc

Не, не удивительно) я с /sys из андроида знаю, что там хранится firmware :)

Rsync пока прокрастинирую. Скоро по tar отпишу

swagcat228
() автор топика
Ответ на: комментарий от Bers666

Ого. + Принял. На счёт отсутствия документации так же солидарен.

Почти расколупал его до нужного результата, осталось победить ошибку по клавиатуре и разпаковать тар в /target командой в конце. Вот и кастомный дистр получится.

swagcat228
() автор топика
Ответ на: комментарий от bormant

Благодарю, читал ваш комментарий, на соседней ветке, но отвлекся сторону –acls. Изучу принцип его работы и так же добавлю.

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Вот честно говоря. Не то что даже на просторах «этих ваших интернетов» здесь уже много раз обсуждалась тема создания кастомных дистров. Просто используйте поиск.

anc ★★★★★
()

Так толсто, что у меня даже из монитора жир потёк.

anonymous
()
Ответ на: комментарий от anc

Да я знаю о существовании поиска. Я им пользуюсь активно. Просто сделать дистр одному это не просто. Как отметил товарищ Bers666 некоторые штуки не имеют нормальной документации, не то что поиск…. И когда во всем этом разбираешься начинаешь усложнять инерцеонно простые, казалось бы, вещи.

Затер fatab разпаковкой tar. А так вполне красивый шрифт в консольке стал))

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Подправил в ручную fstab. Все работает, мать его. И юзеры, и .xsession. единственное, что не работает - обои к grub. Почему не понимаю. Должны работать.

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Ладно есть пример в /etc/default/grub из linux lite

Linux Lite Grub background

GRUB_BACKGROUND=«/boot/grub_linux_lite.png»

Ну меняй , но вот меня звали как будто специально короче как ты понял grub_linux_lite.png ты можешь сделать картинку с другим названием типа bsd_elementary.png

Делается этот раздел записи после пример и обновляешь граб

GRUB_CMDLINE_LINUX=""

Linux Lite Grub background

GRUB_BACKGROUND=«/boot/grub_linux_lite.png»

А , дальше как я понял ты доидешь до того что и будет в твоем легком дистре это либо кде либо гтк2

anonymous
()
Ответ на: комментарий от anonymous

Lightdm+obenbox. То есть gtk. И ты прав. При запуске qemu-system-x86_64 ошибка

Unable to init server: Could not connect: Connection refused gtk initialization failed.

Однако, из под root все работает. Более того, user1 являетс членом группы sgrp, которой в /etc/sudoers разрешено запускать вышенаписанное с sudo без запроса пароля. При использовании sudo с qemu из под user1 ошибка та же.

swagcat228
() автор топика
Ответ на: комментарий от dimh

Услышал. Спасибо. Обязательно загляну.

Просто каждому решению есть дюжина вариантов, так что я стараюсь брать несколько из дюжины и их прорабатывать. Иначе вместо дистрибутива можно научиться упаковывать исошник всеми способами))

Пора мне поспать не много, ато низкий заряд батареи.

Клевый у вас комьюнити. До скорого.

swagcat228
() автор топика
Ответ на: комментарий от amd_amd

Лол, Денис Попов патлатый рокер, а я уже давно не был в школе.

swagcat228
() автор топика
Ответ на: комментарий от dimh

Ознакомился, увы, системы семейства *buntu не подойдут.

swagcat228
() автор топика
Ответ на: комментарий от Bers666

1 скопировать системные разделы с конфигурацией, бинарниками, либами, и прочим в какой-либо архив с поддержкой передачи атрибутики файлов.

2 собрать установочный образ с добавлением этого архива.

3 В конце preseed файла, после установки системы, считать и выполнить команду, которая распакует архив из п1 в /target, потом чрутнится в /target обновит граб, к примеру, и ребутнется.

Как-то так.

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

Его пути ведут в /usr/local/bin т.е это уже не /usr/bin , но это не бсд

anonymous
()
Ответ на: комментарий от swagcat228

Все херня, у меня пресид не работал, там вообще нереально его заткнуть так, чтоб он не задавал юзеру вопросы, чуть что не так, он сразу кидает окно с диалогом, даже если задаёшь ему режим не беспокоить уровня 100.
поэтому пришлось отказаться от d-i вообще. Ну у меня была цель именно unattended установка.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

там в РИДМИ разных версий есть инфа, что, мол, если не хочешь морочиться с пресиид файлом - можешь поставить систему в обычном режиме, а потом debconf-get-selections и она тебе выдаст тот пресиид, который сгенерился в процессе установки.

но, debconf-get-selections = bash: debconf-get-selections: команда не найдена.

wtf?

swagcat228
() автор топика
Ответ на: комментарий от swagcat228

sudo apt install debconf-utils

И потом попробуй , но как выше писал не советую выше 18.10 прыгать именно на неё еще пока есть возможность отреставрировать
upstart

anonymous
()
Ответ на: комментарий от swagcat228

Да фигня совет, у меня было то, что я хотел полностью оффлайн unattended установку, а d-i триггерился на отсутствие инторнета. Или его наличие на второй сетевухе. Да и дебажить задолбало, 15 минут ждать, пока что-то не выскочит, и опять по новой, и так часами. В общем я выкинул d-i.

Bers666 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.