From 1abdb83a10f56070b7e86aefd1c4185a095eb705 Mon Sep 17 00:00:00 2001 From: asmeron Date: Wed, 23 Aug 2023 12:33:20 +0600 Subject: [PATCH] Add new parametrs for server block --- .../{60-virtualbox => 70-virtualbox} | 0 ublinux/rc.preinit.d/{61-vmware => 71-vmware} | 0 ublinux/rc.preinit.d/{62-hyperv => 72-hyperv} | 0 ublinux/rc.preinit.d/73-qemu | 23 +++++++ .../rc.preinit.d/80-server-containers-storage | 55 ++++++++++++++++ ublinux/rc.preinit.d/81-server-qemu-storage | 65 +++++++++++++++++++ ublinux/templates/ublinux-data.ini | 30 ++++++--- 7 files changed, 164 insertions(+), 9 deletions(-) rename ublinux/rc.preinit.d/{60-virtualbox => 70-virtualbox} (100%) rename ublinux/rc.preinit.d/{61-vmware => 71-vmware} (100%) rename ublinux/rc.preinit.d/{62-hyperv => 72-hyperv} (100%) create mode 100755 ublinux/rc.preinit.d/73-qemu create mode 100755 ublinux/rc.preinit.d/80-server-containers-storage create mode 100755 ublinux/rc.preinit.d/81-server-qemu-storage diff --git a/ublinux/rc.preinit.d/60-virtualbox b/ublinux/rc.preinit.d/70-virtualbox similarity index 100% rename from ublinux/rc.preinit.d/60-virtualbox rename to ublinux/rc.preinit.d/70-virtualbox diff --git a/ublinux/rc.preinit.d/61-vmware b/ublinux/rc.preinit.d/71-vmware similarity index 100% rename from ublinux/rc.preinit.d/61-vmware rename to ublinux/rc.preinit.d/71-vmware diff --git a/ublinux/rc.preinit.d/62-hyperv b/ublinux/rc.preinit.d/72-hyperv similarity index 100% rename from ublinux/rc.preinit.d/62-hyperv rename to ublinux/rc.preinit.d/72-hyperv diff --git a/ublinux/rc.preinit.d/73-qemu b/ublinux/rc.preinit.d/73-qemu new file mode 100755 index 0000000..8e5f974 --- /dev/null +++ b/ublinux/rc.preinit.d/73-qemu @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Initial script for Live operating system +# This script are launching before starting init from linux-live script. +# Current dir allways must be set to root (/) +# All system path must be relative, except initrd dirs + +ENABLED=yes +[[ ${ENABLED} == "yes" ]] || exit 0 +DEBUGMODE=no + +PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin + +unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. +SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +debug_mode "$0" "$@" + +if grep -qi qemu /sys/devices/virtual/dmi/id/*vendor; then + [[ -f usr/lib/systemd/system/qemu-guest-agent.service ]] && ln -sf /usr/lib/systemd/system/qemu-guest-agent.service etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service +else + rm -f etc/systemd/system/multi-user.target.wants/qemu-guest-agent.service +fi diff --git a/ublinux/rc.preinit.d/80-server-containers-storage b/ublinux/rc.preinit.d/80-server-containers-storage new file mode 100755 index 0000000..9e5d9c8 --- /dev/null +++ b/ublinux/rc.preinit.d/80-server-containers-storage @@ -0,0 +1,55 @@ +#!/bin/bash +# +# Initial script for Live operating system +# This script are launching before starting init from linux-live script. +# Current dir allways must be set to root (/) +# All system path must be relative, except initrd dirs + +ENABLED=yes +[[ ${ENABLED} == "yes" ]] || exit 0 +DEBUGMODE=no + +PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin + +unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=. +SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +debug_mode "$0" "$@" + +SYSCONF="${ROOTFS}/${SYSCONF}" +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/server; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null + +exec_storage_containers_path(){ + FILE_STORAGE_CONTAINERS_CONF="${ROOTFS}/etc/containers/storage.conf" + STORAGE_CONTAINERS_PATH_SYSTEM="/var/lib/containers/storage" + STORAGE_CONTAINERS_PATH_DEFAULT="/memory/layer-base/1/storage.containers" + + if [[ -n ${STORAGE_CONTAINERS_PATH} ]]; then + if [[ ${STORAGE_CONTAINERS_PATH,,} == @(y|yes|enable) ]]; then + STORAGE_CONTAINERS_PATH=${STORAGE_CONTAINERS_PATH_DEFAULT} + elif [[ ${STORAGE_CONTAINERS_PATH,,} == @(bind) ]]; then + STORAGE_CONTAINERS_PATH=${STORAGE_CONTAINERS_PATH_SYSTEM} + [[ -d ${ROOTFS}/${STORAGE_CONTAINERS_PATH_DEFAULT} ]] || install -dm0700 ${ROOTFS}/${STORAGE_CONTAINERS_PATH_DEFAULT} + mount -o bind ${ROOTFS}/${STORAGE_CONTAINERS_PATH_DEFAULT} ${ROOTFS}/${STORAGE_CONTAINERS_PATH_SYSTEM} + fi + [[ -d ${ROOTFS}/${STORAGE_CONTAINERS_PATH} ]] || install -dm0700 ${ROOTFS}/${STORAGE_CONTAINERS_PATH} + if [[ -d ${ROOTFS}/${STORAGE_CONTAINERS_PATH} ]] && ! grep -qi "^\s*graphroot = \"${STORAGE_CONTAINERS_PATH}\"" ${FILE_STORAGE_CONTAINERS_CONF}; then + if grep -qi "^\s*graphroot" ${FILE_STORAGE_CONTAINERS_CONF}; then + sed -r "s:^\s*(graphroot).*:\1 = \"${STORAGE_CONTAINERS_PATH}\":g" -i ${FILE_STORAGE_CONTAINERS_CONF} + elif grep -qi "^\s*#graphroot" ${FILE_STORAGE_CONTAINERS_CONF}; then + sed "/^\s*#graphroot\s*/agraphroot = \"${STORAGE_CONTAINERS_PATH}\"" -i ${FILE_STORAGE_CONTAINERS_CONF} + else + sed "/^\s*\[storage\]\s*/agraphroot = \"${STORAGE_CONTAINERS_PATH}\"" -i ${FILE_STORAGE_CONTAINERS_CONF} + fi + fi + + fi +} + +################ +##### MAIN ##### +################ + + exec_storage_containers_path $@ diff --git a/ublinux/rc.preinit.d/81-server-qemu-storage b/ublinux/rc.preinit.d/81-server-qemu-storage new file mode 100755 index 0000000..05bf312 --- /dev/null +++ b/ublinux/rc.preinit.d/81-server-qemu-storage @@ -0,0 +1,65 @@ +#!/bin/bash +# +# Initial script for Live operating system +# This script are launching before starting init from linux-live script. +# Current dir allways must be set to root (/) +# All system path must be relative, except initrd dirs + +ENABLED=yes +[[ ${ENABLED} == "yes" ]] || exit 0 +DEBUGMODE=no + +PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin + +[[ -d /usr/lib/ublinux ]] && { unset ROOTFS; unset CMD_CHROOT; } || { ROOTFS='.'; CMD_CHROOT='chroot . '; } +SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0 +debug_mode "$0" "$@" + +SYSCONF="${ROOTFS}/${SYSCONF}" +SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/system; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null +SOURCE=${SYSCONF}/server; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null + +exec_storage_qemu_path(){ + STORAGE_QEMU_POOL_NAME="storage.qemu" + STORAGE_QEMU_PATH_DEFAULT="/memory/layer-base/1/storage.qemu" + if [[ -n ${STORAGE_QEMU_PATH} ]]; then + if [[ ${STORAGE_QEMU_PATH,,} == @(y|yes|enable) ]]; then + STORAGE_QEMU_PATH=${STORAGE_QEMU_PATH_DEFAULT} + fi + [[ -d ${ROOTFS}/etc/libvirt/storage/autostart ]] || install -dm0755 ${ROOTFS}/etc/libvirt/storage/autostart + [[ -d ${ROOTFS}/${STORAGE_QEMU_PATH} ]] || install -dm0755 ${ROOTFS}/${STORAGE_QEMU_PATH} + if [[ -d ${ROOTFS}/${STORAGE_QEMU_PATH} ]]; then + ln -sf /etc/libvirt/storage/${STORAGE_QEMU_POOL_NAME}.xml ${ROOTFS}/etc/libvirt/storage/autostart/${STORAGE_QEMU_POOL_NAME}.xml + cat < "${ROOTFS}/etc/libvirt/storage/${STORAGE_QEMU_POOL_NAME}.xml" + + + + ${STORAGE_QEMU_POOL_NAME} + 22e1f043-1fcb-4017-8afd-d44ebea9c8e4 + 0 + 0 + 0 + + + + ${STORAGE_QEMU_PATH} + + +EOF + fi + + fi +} + +################ +##### MAIN ##### +################ + + exec_storage_qemu_path $@ diff --git a/ublinux/templates/ublinux-data.ini b/ublinux/templates/ublinux-data.ini index bf34e98..099f985 100644 --- a/ublinux/templates/ublinux-data.ini +++ b/ublinux/templates/ublinux-data.ini @@ -39,7 +39,7 @@ VERSION= ## Default user password is 'ublinux' ## Что-бы получить хэш "openssl passwd -6 -salt ubsalt password" ## Хэш пароля для пользователя по умолчанию (стандартно ublinux) -## Если пароль стандартный то будет подсказка + FIRSTSTART=yes > /etc/DESKTOP (Первый запуск для настройки системы) +## Если пароль стандартный, то будет подсказка + FIRSTSTART=yes > /etc/DESKTOP (Первый запуск для настройки системы) DEFAULTPASSWD='$6$E7stRhRS8fCKk7UU$Qoqw62AUaUa5uLIc2KC7WV3MUThhrR8kjXtCODmnKCzKe2zHu1/wmsiWBHZEIk/IQnk/aELQYbUK93OUtrwg60' ## Default root password is 'ublinux' @@ -252,6 +252,18 @@ GRUB_BOOT_SILENT="splash" ## usbcore.autosuspend=-1 ## Отключить авто засыпание USB устройств в режиме suspend ## GRUB_CMDLINE_LINUX="modprobe.blacklist=nouveau" +################################################################################ +## Настройка сервера +[/etc/ublinux/server] +## Задать путь хранилища контейнеров containers/podman/docker +## STORAGE_CONTAINERS_PATH=<путь>|y|yes|enable +## <путь> # Путь до каталога хранилища контейнеров +## y|yes|enable # Задаст путь /memory/layer-base/1/storage.containers +## Создать хранилище образов для QEMU +## STORAGE_QEMU_PATH=<путь>|y|yes|enable +## <путь> # Путь до каталога хранилища пула образов +## y|yes|enable # Задаст путь /memory/layer-base/1/storage.qemu + ################################################################################ ## Настройка сохранений [/etc/ublinux/save] @@ -586,7 +598,7 @@ NSSWITCHWINBIND=yes ## Квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup. man 5 systemd.resource-control ## CGROUP_QUOTA[unit|user]=property_1=value,property_2=value,property_n=value ## Получить древовидный список cgroups и запущенных процессов: systemd-cgls --no-page -## Показать монторинг потребляемых ресурсов: systemd-cgtop -c; systemd-cgtop -m +## Показать мониторинг потребляемых ресурсов: systemd-cgtop -c; systemd-cgtop -m ## Показать статус и используемые ограничения: systemctl status user.slice --no-page ## Единицы измерения: %, K, M, G, T ## unit: system.slice, user.slice, user-0.slice, user-1000.slice, smb.service, cups.service, httpd.service, @@ -764,12 +776,12 @@ NSSWITCHWINBIND=yes ################################################################################ [/etc/ublinux/video] ## Загрузить подходящий видеодрайвер, вначале пытаемся запустить проприетарный, после свободный. -## Модули видеодрайверов с нужной версией, должны быть подключен. По умочанию отключено (no). +## Модули видеодрайверов с нужной версией должны быть подключены. По умолчанию отключено (no). ## VGADRV_AUTO=yes|*no #VGADRV_AUTO=yes -## Отключить свободные radeon/nouveau, использовать проприетарные видео драйвера nvidia/amdgpu, -## при подключенных модулях станут активны проприетарные драйвера. По умочанию отключено (no). +## Отключить свободные radeon/nouveau, использовать проприетарные видеодрайвера nvidia/amdgpu, +## при подключенных модулях станут активны проприетарные драйвера. По умолчанию отключено (no). ## VGADRV_NOFREE=yes|*no|nouveau|radeon ## =yes # Отключить nouveau и radeon ## =nouveau # Отключить nouveau @@ -820,10 +832,10 @@ NSSWITCHWINBIND=yes ## Выбор обоев рабочего стола: XFCE4, Plasma ## BACKGROUND_DE=none|%файл%|%путь_до_каталога% ## =none # Отключить сборку векторных фирменных обоев /usr/share/backgrounds/background.jpg -## =%файл% # Выбранный файл установить как обою +## =%файл% # Выбранный файл установить как обои ## =%путь_до_каталога% # Из каталога, выбрать случайную картинку для обоев ## ='#002d55' # Установить сплошным цветом выбранный шестнадцатеричный код цвета -## Если параметр не задан, то фирменная обоя по умолчанию собирается в /usr/share/backgrounds/background.jpg +## Если параметр не задан, то фирменные обои по умолчанию собираются в /usr/share/backgrounds/background.jpg #BACKGROUND_DE=/mnt/livedata/ublinux-data/backgrounds/wallpapers/ ## Метод масштабирования: XFCE4, Plasma @@ -835,10 +847,10 @@ NSSWITCHWINBIND=yes ## Выбор обоев экранного менеджера Display Manager: Lightdm ## BACKGROUND_DM=none|%файл%|%путь_до_каталога% ## =none # Отключить сборку векторных фирменных обоев /usr/share/backgrounds/dm.jpg -## =%файл% # Выбранный файл установить как обою +## =%файл% # Выбранный файл установить как обои ## =%путь_до_каталога% # Из каталога, выбрать случайную картинку для обоев ## ='#002d55' # Установить сплошным цветом выбранный шестнадцатеричный код цвета -## Если параметр не задан, то фирменная обоя по умолчанию собирается в /usr/share/backgrounds/dm.jpg +## Если параметр не задан, то фирменные обои по умолчанию собираются в /usr/share/backgrounds/dm.jpg #BACKGROUND_DM=/mnt/livedata/ublinux-data/backgrounds/wallpapers/ ## Метод масштабирования экранного менеджера Display Manager: Lightdm