Mp

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску

Alt m-p

Клонируем репозиторий сборочницы

git clone git://git.altlinux.org/people/antohami/packages/mkimage-profiles.git mp

Докидываем пакеты

cat << EOF > mp/pkg.in/lists/nntc
1c-preinstall-full
alterator-auth
alterator-gpupdate
cifs-utils
dialog
docker-engine
docker-compose-v2
dpkg
exfatprogs
fuse-gvfs 
fuse-smb
gimp
git
gpupdate
gvfs-backend-mtp
gvfs-backend-smb
hplip
hplip-hpijs
kio-extras
umbrello 
kf5-kio
lazarus
LibreOffice-full
LibreOffice-gtk3
mtpfs
ntfs-3g
openssh
openvpn
pam_mount
pam_script
pve-manager
pwgen
realmd
remmina
remmina-plugins-rdp
remmina-plugins-vnc
samba-client
samba-common-tools
sendmail
sssd-ad
systemd-settings-enable-kill-user-processes
terminator
usrmerge-hier-convert
virtualbox
vlc
virt-viewer
x11vnc
xdg-utils
xsane
arduino
chromium
chromium-gost
dia
freecad
tmate
java-21-openjdk-devel
java-21-openjdk
emacs-gtk3
gcc-c++
gdb
ddd
openssl-gost-engine
afce
alien
rpm-build
snapd
MySQL-client
mysql-workbench-community
systemd-timesyncd
obs-studio
EOF

Докидываем скрипты через фичу

mkdir -p mp/features.in/nntc-gnome
cat << 'EOF' > mp/features.in/nntc-gnome/config.mk
use/nntc-gnome:
	@$(call add_feature)
EOF


mkdir -p mp/features.in/nntc-gnome/install2/files/usr/share/install2/postinstall.d

cat << 'EOF' > mp/features.in/nntc-gnome/install2/files/usr/share/install2/postinstall.d/00-nntc-gnome-install2.sh
#!/bin/sh

ROOT_MOUNTPOINT='/mnt/destination'

cat << 'EEOF' > ${ROOT_MOUNTPOINT}/usr/sbin/nntc-install2-test.sh
#!/bin/sh
echo "Hello from install2!" >> /tmp/nntc-install2-test.log

EEOF

chmod +x ${ROOT_MOUNTPOINT}/usr/sbin/nntc-install2-test.sh
EOF


mkdir -p mp/features.in/nntc-gnome/live/files/usr/share/install2/postinstall.d

cat << 'EOF' > mp/features.in/nntc-gnome/live/files/usr/share/install2/postinstall.d/00-nntc-gnome-live.sh
#!/bin/sh

ROOT_MOUNTPOINT='/mnt/destination'

cat << 'EEOF' > ${ROOT_MOUNTPOINT}/usr/sbin/nntc-live-test.sh
#!/bin/sh
echo "Hello from live!" >> /tmp/nntc-live-test.log

EEOF

chmod +x ${ROOT_MOUNTPOINT}/usr/sbin/nntc-live-test.sh
EOF

Добавляем фичу, список пакетов и включение необходимых сервисов в конфиг

В файле

mp/conf.d/regular.mk

найти секцию похожую на:

distro/regular-gnome: distro/.regular-desktop mixin/regular-gnome \
        +plymouth use/browser/epiphany \
        use/live-install/vnc/listen; @:

и заменить на секцию похожую на:

distro/regular-gnome: distro/.regular-desktop mixin/regular-gnome \
        +plymouth use/browser/firefox use/nntc-gnome \
        use/live-install/vnc/listen
        @$(call add,THE_LISTS,nntc)
        @$(call add,SYSTEMD_SERVICES_ENABLE,sshd.service)
        @$(call add,SYSTEMD_SERVICES_ENABLE,docker.service)

Важные моменты

1. Вторая и последующие строки отделяются не пробелами а табуляцией (одной!):

distro/regular-gnome: distro/.regular-desktop mixin/regular-gnome \
[здесь обязательно TAB, НЕ пробелы!]+plymouth use/browser/firefox use/nntc-gnome \
...

2. Так включаются сервисы через systemd:

...
[здесь обязательно TAB, НЕ пробелы!]@$(call add,SYSTEMD_SERVICES_ENABLE,sshd.service)
[здесь обязательно TAB, НЕ пробелы!]@$(call add,SYSTEMD_SERVICES_ENABLE,docker.service)
...

3. Так включаются сервисы через control:

...
[здесь обязательно TAB, НЕ пробелы!]@$(call add,CONTROL,openssl-gost:enabled)
...

4. Так можно дополнить дистрибутив пакетами из репозитория (см. выше файл в разделе "Докидываем пакеты"):

...
[здесь обязательно TAB, НЕ пробелы!]@$(call add,THE_LISTS,nntc)
...


5. Так можно исключить пакеты из дистрибутива (решётка в начале означает что по факту это не применится (закоментировано)):

...
#[здесь обязательно TAB, НЕ пробелы!]@$(call add,CLEANUP_BASE_PACKAGES,gnome-session-wayland)
...

Собираем

cd mp
make clean
make distclean
make regular-gnome.iso
# или (если надо с подробностями)
# make REPORT=1 DEBUG=1 regular-gnome.iso

После сборки

cp build/out/regular-gnome-latest-x86_64.iso my-super-alt-regular-gnome.iso

Опционально, можно убрать за собой

make clean
make distclean