LINUX.ORG.RU

Как собрать свой дистрибутив для установщика

 , ,


3

2

Установил на Ubuntu несколько полезных программ. Знаю, что нужно будет поставить систему и эти программы ещё на несколько компьютеров (с друзьями на линукс мигрируем), но если на каждом компьютере после установки системы устанавливать все нужные программы по одной (как это обычно делается), то такой переход займет очень много времени. И тут я вспомнил, что добавлял свои программы в wim образ установщика windows и подумал, что подобное можно было бы провернуть и с линуксом, это бы сэкономило пару десятков часов. Так как мне это сделать? И ещё вопрос: некоторые программы пришлось настроить, их настройки находятся по пути /home/имя_пользователя/.имя_папки, как мне сделать эти настройки стандартными? Я предполагал, что где-то в папке с программой лежит оригиналы этих конфигов, которые в изменённом виде находятся в домашнем каталоге, но таких я не обнаружил… А уже готовая настройка программ не помешала бы…

Напиши скрипт, который установит нужные пакеты после установки системы. В этом случае не нужно тратить время на сборку iso.

Prosto_user ★★★
()

как мне сделать эти настройки стандартными?

Зависит от программ. Первые места где могут лежать сандартные конфиги - /etc, /etc/PROGRAMNAME, /usr/share/PROGRAMNAME но могут и в других, а могут и нигде - ищи наугад, или найди в мануалах или в исходниках

firkax ★★★★★
()

лучше всего не пользоваться готовыми решениями, а начинать установку системы с ее базовой части и потом уже из репы весь необходимый софт подтягивать… то что задумал тс это туфта.

anonymous
()

устанавливать все нужные программы

apt install progname0 <progname+>

некоторые программы пришлось настроить, их настройки находятся по пути /home/имя_пользователя/.имя_папки

Man /etc/skel

erfea ★★★★★
()

Вбейте уже в гугол

unattended installation ubuntu 20.04

и не мучайтесь, что ли.

Infra_HDC ★★★★★
()

Я бы написал bash скрипт для установки всего необходимого, что-то вроде

#!/bin/bash
apt update
apt install program1 program2 program3
Если нужны какие-то настройки, то я бы их переписал с 1-го компа и размножил бы на все остальные. Это тоже делается элементарно. Как ТС правильно заметил, большинство лежит в скрытых каталогах, вида ~/.имя_папки. Большинство лежит в ~/.config

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

Лорчую идею скрипта, настройки тоже можно скриптом с какого гитхаба стянуть.

ololoid ★★★★
()

некоторые программы пришлось настроить, их настройки находятся по пути /home/имя_пользователя/.имя_папки, как мне сделать эти настройки стандартными? Я предполагал, что где-то в папке с программой лежит оригиналы этих конфигов, которые в изменённом виде находятся в домашнем каталоге, но таких я не обнаружил

Есть такая распространенная практика - делать у программы глобальные настройки (system-wide, которые для всех пользователей) и настройки для каждого пользователя. Последние имеют приоритет. Если в них что-то не указано, как делать программе, то она следует глобальным настройкам. Многие программы так написаны. Только в Linux нет папок с программами, а части одной программы лежат по разным папкам, это называется FHS. Конкретно глобальные настройки лежат в /etc/. И как уже сказали, есть /etc/skel. Содержимое этого каталога копируется в домашний каталог каждого нового пользователя. Т.е. чтобы поменять дефолтные настройки, надо поправить файлы в /etc/. Конкретные пути надо смотреть для каждой отдельной программы в документации по ней.

Установка программ технически является добавлением файлов на системный раздел.

Самое сложное - сделать указанные изменения в iso-образе установочного диска. Тут есть варианты. ValdikSS и rumgot дали хорошие инструкции

Как собрать свой дистрибутив для установщика (комментарий)

Как собрать свой дистрибутив для установщика (комментарий)

я напишу свою, которую лично проверил на Kubuntu 18.04.

Эта статья документации за основу.

Распаковываем образ

mkdir livecdtmp
cp kubuntu-18.04-desktop-amd64.iso livecdtmp/
cd livecdtmp/
mkdir mnt
sudo mount -o loop kubuntu-18.04-desktop-amd64.iso mnt/
mkdir extract-cd
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
sudo unsquashfs mnt/casper/filesystem.squashfs
sudo mv squashfs-root edit
sudo mount -o bind /run/ edit/run/
sudo mount --bind /dev/ edit/dev

sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts

В chroot вносим изменения в файловую систему. Здесь можно устанавливать, удалять и настраивать программы.

umount /proc || umount -lf /proc
umount /sys
umount /dev/pts
exit
Запаковываем образ обратно
sudo umount edit/dev
sudo chmod +w extract-cd/casper/filesystem.manifest
sudo su
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
exit
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop
sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs
sudo su
printf $(du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size
exit
В файле extract-cd/README.diskdefines правим название.
cd extract-cd/
sudo rm md5sum.txt 
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt
А вот теперь самое сложное. Осталось создать загрузочный iso-образ диска. В первой команде в документации ошибка, так не загрузится. Тут есть варианты. Вот один из них.
cd ..
sudo chmod -R -w extract-cd
dd if=kubuntu-18.04-desktop-amd64.iso bs=1 count=432 of=isohdpfx.bin
xorriso -as mkisofs -o ubuntu-18.04-mod.iso -isohybrid-mbr isohdpfx.bin -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table ./extract-cd
В файле ubuntu-18.04-mod.iso будет готовый модифицированный установочный образ.

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

вопрос на засыпку
можно ли таким макаром заменить nouveau на nvidia-driver-390 ?


ValdikSS,
может ты пробовал вместо нуво ставить дрова nvidia?


то, что хочет автор темы, вообще не требует ремастеринга - достаточно скриптом устанавливать софт и копировать с заменой конфиги (само собой, что возрастёт потребление ОЗУ, но это уже мелочи)

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

можно ли таким макаром заменить nouveau на nvidia-driver-390 ?

Думаю, можно. А с чего нет?

Попробовал в chroot просто

apt install nvidia-driver-390
Работает. По крайней мере под лайвом.

ValdikSS,
может ты пробовал вместо нуво ставить дрова nvidia?

cast ValdikSS

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

Автоматизация послеустановочных действий != свой болдженос.

damix9 ★★★
()
Ответ на: комментарий от anonymous
$ inxi -G
Graphics:  Card-1: Intel HD Graphics 5500
           Card-2: NVIDIA GM108M [GeForce 940M]
           Display Server: x11 (X.Org 1.19.6 ) drivers: modesetting,nvidia,nouveau (unloaded: fbdev,vesa)
           Resolution: 1366x768@60.02hz
           OpenGL: renderer: N/A version: N/A
$ sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:1c.4/0000:04:00.0 ==
modalias : pci:v000010DEd00001347sv00001025sd0000102Fbc03sc02i00
vendor   : NVIDIA Corporation
model    : GM108M [GeForce 940M]
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-470 - distro non-free
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-495 - distro non-free recommended
driver   : nvidia-driver-450-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

Только надо при загрузке прописать параметр ядра

module_blacklist=nouveau
Наверное можно и сразу без нуво ядро собрать.

Но зачем он нужен, блоб этот глючный?

А возможно ТСу следует рассмотреть сборку образа с нуля, а не перепаковку существующего.

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

дело в том, что у меня старая видюха
и уже не за горами время, когда nouveau станет капризничать, и я буду вынужден шаманить с nvidia-driver-390

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

NVIDIA Corporation GF119 [GeForce GT 610] [10de:104a] (rev a1)

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