MagOSM для MagOS_2016.64

Почему MagOSM ?
Раньше MagOSM я расшифровывал как MagOS-Mаgeia
Но понадобилось мне запускать на моей сборке (MagOS Магея) сам MagOS (Rosa) и Ubuntu 19.10
Теперь уж не знаю как расшифровывать …
На удивление Магея и Ubuntu 19.10 имеют много общего, но все же есть и различия
Делать для каждого дистра свой магос-модуль хлопотно, т к это все делаю руками
И что нибудь да забываешь исправить а выясняется это только после нескольких запусков системы. Так что попробовал запускать Mageia 7.1, Ubuntu 19.10 и MagOS_2016.64_20191024 на одном магос-модуле. Названия не придумал да так и оставил MagOSM
Оказалось что и MagOS_2016.64 можно так же запустить с общего магос-модуля, хотя хлопот тут было больше, чем с Ubuntu 19.10

  • тема значков /usr/share/icons/ Papirus
    В Ubuntu это основная тема значков
    Опробовал на Магее, МагОС и результаты хорошие
    Поинтереснее чем Breeze и это векторная графика и должна открываться что на больших экранах и на маленьких с одинаковым качеством
  • в скриптах логи загрузки выводятся на экран
    Вообще то это нечестно скрывать от юзера логи загрузки
  • 51-autologin 52-desktop 53-language - изменены для работы в Магее, Росе, Убунту
  • 50-xorg - возможность определения видеокарты системой при загрузке
  • 11-xorg - Генерация Modeline выбранного в grub2 разрешения
  • все темы переведены на использование default.png
    В самой сборке МагОС в основном используется default.jpg
    Но есть темы на default.png. Что то непонятно
    В общем привел все к одному варианту, тем более что в Магее и Убунту пользуют ~.png

Cкачать MagOS-MagOSM.zip - https://cloud.mail.ru/public/PftP/3Bn6hnWDN
Все модули положить в MagOS/base и запускать вместе с 88-MagOS

  • uird - свежий загрузчик для сборки 20191226
    Запускал на UIRD
    Причем использовать надо только сежую версию UIRD
  • 89-magos-pach.xzm, 95-magosm.xzm - это сам мой МагОС
    Трудно сделать один МагОС модуль кот бы запускал Магиа, Росу и Убунту
    При всей схожести есть и отличия. Поэтому получилось два модуля
    95-magosm.xzm - это сам общий магос-модуль. Запуск во всех дистрах
    89-magos-pach.xzm - отличия запуска для Росы. Лежит в папке base дистра
    Но для МагОС-сборки оба модуля лежат в MagOS/base
  • 94-uird.xzm - это свежая версия UIRD для Росы
    Сам /usr/share/uird авторский
    Подробнее о сборке МагОС с моими предпочтениями - https://forum.mageia.org.ru/viewtopic.php?pid=15958#p15958
  1. Общие правки
  • Системный каталог
    В Магее и Росе это /etc/sysconfig
    В Ubuntu это /etc/default
    Разбираться что правильнее не стал а сделал /memory/etc и системный MagOS.ini лежит теперь там. Формирует его /usr/lib/magos/rc.preinit/01-inifile
    Теперь

в Магее
/etc/sysconfig/MagOS это ссылка на /memory/etc/MagOS
В Ubunte
/etc/sysconfig это ссылка /memory/etc

  • /usr/lib/magos/rc.preinit/10-accounts
    В MagOS ADMUID=500 а в Магее ADMUID=1000
    Пока сделал что ADMUID берется из /usr/lib/magos/os-config где ADMUID=500
    Или из MagOS.ini и для Магеи там ADMUID=1000
  1. Systemd
  • Systemd с последними предложениями но … есть снова и отличия
    Использовал свой вариант в /usr/lib/magos/Systemd. Работает как часы
    С предложенным у меня были проблемы и запустить не смог.
    Т к сохранение изменений системы у меня может задаваться из системы
    Но в MagOS.ini надо записать опции

SERVICESMASK=magos-shutdown,magos-pre-shutdown
AUTODESKTOP=yes
SAVETOMODULE=yes
SAVERPM=no
DISTR=MagOS
BASEDIR=/Linux/$DISTR/base
SAVE_BASE=91-save-base.pfs
FIRSTBOOT=90-firstboot.xzm
RPMBASE=93-rpmbase.xzm
HOMEDIR=/Linux/$DISTR/machines
SAVE_HOME=96-save-home.pfs
MACHINES_FL=/Linux/$DISTR/machines/dynamic

  1. SDDM
    Сделан на базе /etc/sddm.conf от МагОС
  • Сделал правки :

/usr/share/sddm/scripts/Xsession это ссылка на /usr/share/X11/xdm/Xsession
/usr/share/sddm/scripts/Xsetup это ссылка на /usr/share/X11/xdm/Xsetup_0

В Росе скрипт /usr/share/sddm/scripts/Xsession глючный
Если допустим запустился в LXQt то в Плазму уже не загрузишся
Это дало возможность использовать один и тот же /etc/sddm.conf для трех систем

  • Добавена моя тема MagOSM (на базе темы Breeze)
    Поинтереснее чем MagOS, но если не определилась видеосистема, то может и не запуститься

2.1) MagOS-applications.menu

Дополнил /etc/xdg/menus/MagOS-applications.menu для запуска в Магее

  • Дополнена /Настройки/Системные для запуска приложений с категорией System
    Есть в Магее и Ubuntu такие приложения. Где только эта категория и все
  • В корне меню добавлен подменю MagOS, для запуска приложений с категорией MagOS
    Более удобно находить нужные утилиты
  • Присутствует /etc/xdg/menus/MagOSM-applications.menu
    Тут добавлены подменю Игры, Разработка и др из Магеи
  1. /usr/lib/magos/rc.preinit.d/20-services
    Изменил

#[ -z “$SERVICESSTART” -a -z “$SERVICESNOSTART” ] && exit 0
[ -z “$SERVICESSTART” -a -z “$SERVICESNOSTART” -a -z “$SERVICESMASK” ] && exit 0

Иначе опция SERVICESMASK не запускалась

  1. /usr/lib/magos/rc.post/01-system

Если есть опция SERVICESMASK, то должна быть и опция SERVICESUNMASK
Но в 20-services эта опция не работала и удалось запустить SERVICESUNMASK только из 01-system

  1. Скрипты 51-autologin 52-desktop 53-language из /usr/lib/magos/rc.preinit.d/ изменены для возможности запуска Магеи и MagOS (Rosa) и Ubuntu 19.10
    Допустим /usr/share/xsessions/lxqt.desktop в MagOS имеет имя LXQT а в Магее этот же сервис имеет имя LXQt Desktop и в Ubunte имя вроде LXQtDesktop
    Т е имя для /usr/share/xsessions/lxqt.desktop переписывается как LXQT для всех систем.

  2. Определение видеооборудования

  • В /usr/lib/magos/rc.preinit.d/50-xorg сделал опцию

SysXdrake=no (Started MagOS)
SysXdrake=yes (Started System)

Теперь при SysXdrake=no это определенте видеокарты как в MagOS
При SysXdrake=yes определенте видеокарты происходит при старте системы а 50-xorg только информирует на мониторе о найденной видеокарте

  • /usr/lib/magos/rc.post.d/11-xorg
    Изменил в стр XORG_RES=1280x1024

echo “$XORG_RES” | grep -q ^[0-9]x[0-9]$ || XORG_RES=1280x1024

  • Генерация Modeline
    Иногда нужное разрешение монитора отсутствует по дефолту
    Сделал генерацию Modeline для установки нужного разрешения монитора
    Теперь допустим установка разрешения 1600x1200 для моего домашнего монитора
    Для Grub 2

set gfxpayload=‘1600x1200’
xres=$gfxpayload в стр запуска ядра

Или для Grub4dos в стр запуска ядра записал

xres=1600x1200

Теперь мой монитор (1920x1080) нормально запускается с нужным разрешением 1600x1200
Особенно раздражает запуск монитора с разрешением 1920x1080 на разрешении 1024x768

2 Симпатий

Спасибо. Очень подробно. Надеюсь Михаил найдет что можно унифицировать.

Да мне самое главное пункты 0, 1, 2

  • МагОС-сервисы перенести из /lib/systemd в /usr/lib/systemd
  • правки пункта 2 это только для МагОС и в Ubuntu их делать нельзя, т к sddm не войдет в систему

Иначе при запуске MagOS из MagOSM приходится делать пач-модуль

А перенос /etc/sysconfig/MagOS в /memory/etc/MagOS это должно быть очень удобно для uird
Т е конфиг всегда для uird “под рукой”

Спасибо за модуль и подробное описание. Обязательно всё рассмотрю. Быстро не обещаю, завал на работе, но по возможности постараюсь к декабрьской сборке применить большую часть изменений. Кроме указанных систем, модуль должен быть совместим со старым механизмом initrd. Нужно будет всё проверить.

Сейчас тема значков /usr/share/icons/ Papirus установил и что то она мне все больше нравится.
Может самовнушение, но даже Роса быстрее стала работать

Сделал пач где по дефолту установлена Papirus
Положить в /MagOS/base и перезагрузиться
89-1-magos_pach-papirus.xzm - https://cloud.mail.ru/public/qmuh/592ziQHk2

Здесь во всех темах для sddm и в /usr/share/wallpapers используется default.png (ссылка на /usr/share/magos/wallpapers/default.png )
И в Магее и Ubunte в темах используются default.png

  • В /usr/lib/magos/rc.local.d/01-background установил по дефолту формирование default.png без черных полосок сверху и снизу
    Иначе на темных темах кнопки в правом верхнем углу, при запуске приложений, не были видны
    Во всех темах по дефолту установил default.png
    Plasma
  • /usr/share/plasma/wallpapers/org.kde.image взял из Магеи. Работает во всех 3 системах
    Вариант из Росы не подошел к Магее
  • /usr/share/plasma/desktoptheme/default взято из Росы. Работает во всех 3 системах
    Иначе а Убунту например запускалась по дефолту тема Next, которую хотелось как можно быстрее выключить.
    В Магее тема по дефолту у меня и не установлена и был черный экран.

Сохранение инфы

МагОС-сервисы из /lib/sysnemd/ перенесены, для совместимости с Магеей и Убунту, в /usr//lib/sysnemd/
В /usr/lib/magos/rc.halt/80-savetomodule в стр 63

Заменил

create_module $SRC “$SAVETOMODULENAME” -ef /tmp/excludedfiles $SAVETOMODULEOPTIONS

на

mksquashfs $SRC “$SAVETOMODULENAME” -ef /tmp/excludedfiles $SAVETOMODULEOPTIONS

Как выяснилось, в моей сборке create_module не работает
Проверял последнюю сборку MagOS и там работает
Видимо пути другие и к тому же у create_module нет ндикатора процесса выполнения
А mksquashfs имеет индикатор процесса выполнения. И видно, что запись прошла и все ок
Сам процесс записи, для наглядности, выделил зеленым цветом
Теперь сохранение инфы в режиме machines работает и в моей сборке

PS
Ну Роса стала работать гораздо живее и это ощутимо
Правда это будет видно, скорее всего, на слабых машинах
На моем рабочем компе это видно.

1 Симпатия

Не всё пока посмотрел, времени мало
По поводу файла /etc/sysconfig/MagOS
Переность в /memory его нельзя, потеряется работоспособность в initrd, он не будет попадать в модуль сохранения системы, что недопустимо. Предлагаю, наоборот, делать ссылку в memory.
Если в других дистрах нет /etc/sysconfig то можно поступить разными способами:

  • оставить как есть, если в убунте будет папка /etc/sysconfig то это ей не навредит
  • вычислять где его создавать - в /etc/sysconfig или /etc/defaults - это как-то не хорошо, пользователи могут запутаться
  • перенести в /etc/MagOS - будет короткий путь, при входе mc в папку /etc/ он будет отображать его сверху
  • брать значение из os-config. Минус в том что придётся везде подключать этот файл, это может затормозить процесс загрузки

хочу попробовать перенос в /etc/MagOS и посмотреть будут ли проблемы. Но это не в декабрьскую сборку, времени сейчас нет почти, эксперименты будут на каникулах, наверное. …Если каникулы у меня будут в этом году…

То что в убунте наcтройки на локаль и клаву лежат в других местах, можно решить либо проверкой в скриптах, либо переменными в os-config. Пока что склоняюсь к вашему варианту с проверкой в скриптах. Тут возможна ситуация, когда пользователь изменит локаль через ини файл и создаст файлы в /etc/sysconfig а в /etc/default будут совсем другие значения. Для убунту нужен другой шаблон ини или можно считать файлы в /etc/sysconfig более высшим приоритетом и изменять файлы в /etc/default на аналогичные

создавать rc.halt.reboot.MagOS не вижу необходимости, надо поставить проверку на создание модуля, чтобы он не создавался если система не была полностью загружена.

ADMUID и SERVICESMASK поправил, проверим в декабрьской, с остальным ещё разбираюсь.

не понял зачем надо писать в конфиге иксов xorg.conf секции ServerFlags Module и пр если они уже есть в папке /etc/X11/xorg.conf.d ?

зачем в /usr/lib/magos/scripts/xzm2dir вызов xterm? это же консольная утилита

по переносу служб из /lib/systemd в /usr/lib/systemd тоже много непоняток. В росе такой папки нет вообще да и сама архитектура linux подразумевает что /lib/ нужен для загруки системы а /usr/lib для программ на уровне пользователя. В чём причина переноса в /usr/lib/ ? В каких-то дистрах нет /lib вообще ? или они некорректно отрабатывают?

Сборку на Магее вы собираете с нуля или берёте готовый образ как в ubuntu?

скрипт mkuird -это хорошая идея, но его надо бы дописать, добавить комментарии и перенести в /usr/lib/magos/scripts, надо потом не забыть это сделать

Давно о таком думаю. Хотелось бы универсальный для разных систем, чтоб в uird добавить, но чет не клеится. Может правда нужно для каждого случая свой скрипт.

Сделал скрипт mk-uird
Опции
-rcl - скачать и перекофигурировать uird
-k - интерактивно выбрать ядро
-с - интерактивно выбрать конфиг

После того как /usr/share/uird/mkuird отработает все что нужно копируется в папку запуска mk-uird

Сам mk-uird

#!/bin/bash

if [ “$(id -un)” != “root” ] ;then
beesu -l “/bin/bash ‘$0’ $@”
exit 0
fi

CUR_PWD=$(pwd)
mkonfig=/memory/layer-mounts/0/tools/uird_configs
. /etc/initvars
rm -rf ${CUR_PWD}/*
#[ -f “/usr/bin/dialog” ] && DIALOG=“dialog”
[ -f “/usr/bin/Xdialog” ] && DIALOG=“Xdialog”
kernel=$(uname -r)
config=“MagOS”
script=“mkuird”
#UIRDMOD=$CUR_PWD
UIRDMOD=/memory/layer-base/0/modules
if [ “$1” = “-rcl” ] ;then
cd /usr/share
if [ -f “/usr/bin/git” ] ;then
rm -rf /usr/share/uird
if [ -f “/usr/bin/xterm” ] ;then
xterm -e “git clone --recursive https://github.com/neobht/uird.git
else
git clone --recursive https://github.com/neobht/uird.git
fi
else
echo “Установите пакет git”
fi
fi

if [ “$1” = “-rcl” ] || [ “$1” = “-rc” ] ;then
cd /usr/share/uird
if [ -f “/usr/bin/xterm” ] ;then
echo “Start make_busybox.sh”
xterm -e “./make_busybox.sh”
echo “Start make_dracut.sh”
xterm -e “./make_dracut.sh”
else
echo “Установите пакет xterm”
echo “Start make_busybox.sh”
./make_busybox.sh
echo “Start make_dracut.sh”
./make_dracut.sh
fi

echo “Start save uird”
rm -rf $UIRDMOD/60-uird-r
mkdir -p $UIRDMOD/60-uird-r/usr/share/uird/
cp -r /usr/share/uird $UIRDMOD/60-uird-r/usr/share/
mkdir -p $UIRDMOD/60-uird-r/usr/bin/
cp -r /usr/bin/mk-uird $UIRDMOD/60-uird-r/usr/bin
fi

echo “Start search kernel”
if [ “$1” = “-k” ] || [ “$2” = “-k” ] ;then
#cd /usr/lib/modules/
[ -d “/lib/modules” ] && SELECT1=/lib/modules
[ -d “usr/lib/modules” ] && SELECT1=/usr/lib/modules
KERNEL=$($DIALOG --stdout --title “Выберите ядро” --dselect $SELECT1/ 40 50) || exit 1
#echo “KERNEL=$KERNEL”
kernel=${KERNEL##*/}
#echo “kernel=$kernel”
fi

[ -d “$mkonfig” ] && [ -d “/usr/share/uird” ] && cp -r $mkonfig/* /usr/share/uird/configs/uird_configs/
if [ “$2” = “-c” ] || [ “$3” = “-c” ] ;then
#cd /usr/share/uird/configs/uird_configs/
SELECT2=/usr/share/uird/configs/uird_configs
CONFIG=$($DIALOG --stdout --title “Выберите конфиг” --fselect $SELECT2/ 40 50) || exit 1
config=${CONFIG##*/}
fi

MSG=“script=$script \n kernel=$kernel \n config=$config \n Все правильно ?”
$DIALOG --yesno “$MSG " 10 70
#[ $? = 0 ] && kernel=”$1"
[ $? = 1 ] && exit 1

cd /usr/share/uird
echo “Start script=$script config=$config kernel=$kernel”
export kernel config CUR_PWD
cd /usr/share/uird
if [ -f /usr/bin/xterm ] ;then
#echo “Start script=$script config=$config kernel=$kernel”
xterm -e “echo ‘Start $script config=$config kernel=$kernel’ && ./$script $config -k $kernel -l”
else
echo “Start script=$script config=$config kernel=$kernel”
./$script $config $kernel -l
fi
cd /usr/share/uird
mv ./uird* ${CUR_PWD}/
mv ./*.log ${CUR_PWD}/
[ ! -f “${CUR_PWD}/vmlinuz-$kernel” ] && [ -f “/boot/vmlinuz-$kernel” ] && cp -r /boot/vmlinuz-$kernel ${CUR_PWD}/
[ ! -f “${CUR_PWD}/vmlinuz” ] && [ -f “/boot/vmlinuz-$kernel” ] && cp -r /boot/vmlinuz-$kernel ${CUR_PWD}/vmlinuz
cd $PWD
exit 1

Я видел mkuird иначе. Сборка и установка uird в систему. То есть собрать с нужным конфигом , скопировать в нужное место и в идеале еще прописать в загрузчике.

Магея /etc/X11/xorg.conf от МагОС не принимала и при запуске drakx11 появлялась инфа об ошибке и drakx11 переделывал xorg.conf
За основу был взят /etc/X11/xorg.conf от Магеи и как выяснилось вроде подходит и к Росе и к Убунте
В Убунте, кроме /etc/X11/xorg.conf.d/00-modes.conf у меня вообще ничего нет
В магее то же вроде не особо в xorg.conf. d

Вызов xterm у меня идет в xzm2dir
Для dir2xzm сделал вызов xterm в команде create_module из /usr/lib/magos/functions
Дело в том, что иногда формирование модуля командой dir2xzm у меня подвисало а индикатор работы dir2xzm на панели часто сбрасывался и в результате неоднократно получал незагружаемый модуль
А тут видно что паковка модуля закончилась.
Так работает же все ?
В Магее 6 индикатор работы dir2xzm на панели работал очень хорошо
В Магее 7, как правило, индикатор работы dir2xzm у меня сбрасывался где то на середине процесса записи
Ну это может быть и флэшка старая и комп слабый и т д

[quote=“ingvaro, post:10, topic:112”]
Так работает же все ?
[/quote],

То что работает в стандарнтных, стерильных условиях - не аргумент. Надо смотреть шире, где и почему может не работать. Так писать можно только для себя. Сам этим страдаю, а Михаил потом переписывает :slight_smile:

Ну а что можно использовать вместо xtem
Иначе. если модуль большой да и флэшка подвисает, вообще непонятно закончилась запись или нет

Тут решил “улучшить” Магею и слегка переделал режим работы одного сервиса и выяснил потом, что все зря. По дефолту самый оптимальный вариант. Это в Магею надо обращаться а будут ли они делать ?

Консольные утилиты обязаны работать вообще без иксов. А если нужны дополнительно иксовые возможности, то логичнее делать еще один скрипт “обертку”. А в конкретном случае чет не понял в чем проблема? В каком случае не понятно закончилась запись или нет?

Это dir2xzm еще не закончил работу и неизвестно когда закончит а системного индикотора работы dir2xzm, на панели уже нет. Т е система ошибочно информирует что работа dir2xzm закончена

А вы его не в консоли запускаете что-ли? При выключении? Или как?

Не из консоли а используя сервисы /usr/share/kservices5 (Plasma) для правой кнопки мыши

Вот там и надо встраивать индикатор завершения, а не в самом dir2xzm.

Но xterm тут работает, можно сказать, действительно в стерильных условиях
Ничего другого не делаю и задаю только паковку и пока работает даже мыкой не двигаю

!!!

Ну, как выяснил, можно и без xterm

qterminal -e “comand”

Где опция

-e, --execute Execute command instead of shell

Или так то же нельзя ?