Кастомная "чистая" загрузка -- как?

Возможно, хочу странного, но сценарий наверняка полезный.

Итак:

  1. Гружусь с флешки, компы могут быть разные.
  2. Никакой истории на флешке не хранится, режим запуска – “чистый” и в ОЗУ (copy2ram) – это ключевое.
  3. Дополнительно (в зависимости от компа) выбирается DE, свой видеорежим для консоли, отключаются эффекты (кнопками Fx при загрузке).
  4. В систему добавлены свои модули (WINE).
  5. В MagOS.ini сделаны некоторые свои правки (включен IPv6 например).

Всё, загрузились ОК.

Вытаскиваем флешку, убираем в надёжное место на месяц (в идеале) – комп не выключается, ноут тупо кнопкой питания вгоняется в сонный режим STR (SuspendToRAM) при ненадобности. Пробуждается-то за секунду, сразу готовенький – только пароль ввести, всё уже запущено и открыто.
PROFIT!?.. Рано!

Поскольку мы в “чистом” режиме – требуется под себя что-то подшаманить, как то:

  • Настройка интерфейса (на FullHD курсор мыши покрупнее, чувствительность и реакции тачпада – оч. существенно!)
  • Режимы и сценарии по неактивности, при нажатии на кнопку питания, таймауты, закрытие экрана.
  • Виджеты (загрузка CPU и RAM), главное меню Plasma (Классика глючит, ставим Доску приложений).
  • Настройка вида сетки в трей (показ адресов, уровней сигнала, модуляций).
  • Пароли к Wi-Fi.
  • Пара приложений с флешки на рабочий стол (winbox и несколько забитых туда Mikrotik-ов).
  • Настройка FireFox хранить историю, синхронизация с аккаунтом в облаке (там пароли к сайтам и вебмордам устройств!), набор закреплённых вкладок (мониторинг, почта, ЛК).
  • Remmina с сохраненными доступами к необходимым серверам.
  • Midnight Commander с пачкой сохраненных по Ctrl-\ удалённых файловых локаций.
  • Коннекты к VPN
  • Кое-какие свои хосты в /etc/hosts и автодополнения доменов

В общем, в дополнение к “чистому” режиму немного обживаем систему для пущего удобства и жизненно необходимой продуктивности.
Какое-то время (сутки, неделю, месяц – всё было) радуемся прям жизни в полный рост… и тут

:frowning: ЖОПА :frowning:

Нет, не обязательно питание (батарейка ноута в STR спокойно 8 часов память держит, дольше не пробовал).
Иногда FireFox какой-то закладкой зависает почти наглухо – не всегда убивает сам, не всегда удаётся уйти по Ctrl-Alt-F2 на запасную консоль и удачно убить процесс в htop, ибо тормозит вообще всё.
Иногда и OOMkiller успевает что-то отстрелить, и не обязательно то, что можно… в общем, даже после магии плавного Alt-SysRq-REISUB на каком-то из шагов что-то даже пробуждается, десктоп перезапускается – но поверх GUI постоянно моргает консолью и сыплет логами – работать невозможно, приходится таки ребутаться и доставать заветную флешку.

И, млин, ОПЯТЬ НАСТРАИВАТЬ РАБОЧЕЕ ОКРУЖЕНИЕ ЗАНОВО! :nauseated_face:

Следовательно, формулирую вопрос:

Как зафиксировать в “чистом” copy2ram-режиме загрузки если не все (что, понятно, невозможно и даже нежелательно) кастомные настройки, то хотя бы некоторые из безобидных и обычно необходимых?
Желательно без привязки к компьютеру, или раздельно общее (софт, виджеты), раздельно по компам (тачпад, разрешение), притом оставаясь в рамках некоего “чистого” режима.
Типа ROSA Freeze на некотором этапе настроек, как вариант?
Модулями, с разделением функционала, с частичным шифрованием?
Притом с возможностью модифицировать как сами эти кастомизации, так и базовую систему при обновлениях?

Возможно ли такое? И как именно осуществить?

Так чистый режим на то и чистый, что бы загрузить только систему, без сохраненной инфы
Для пользователя в МагОС, на мой взгляд, есть, применительно к загрузчику uird, два режима :slight_smile:

  1. Запуск с опцией uird.mode=machines
    Здесь системные изменения запоминаются отдельно для каждого компа в /MagOS/machines/dynamic . Больше подходит для запуска с флэшки
  2. Запуск с опцией uird.mode=changes uird.changes=changes
    Идеален при установке на диск. Установил как то клиенту второй системой где то полгода назад и собственно забыл про него. Все работает.
    При работе на флэшке может тянуть, если флэшка и комп слабый и очень сильно

Может и еще что то есть, но я пользуюсь этими
В моей сборке для Магеи - https://forum.mageia.org.ru/viewtopic.php?pid=15958#p15958 и в чистом режиме можно писать. Но если запоминать сис-изменения, при работе на разных машинах, где то в одном модуле то все усложняется. Появляется проблема машинно-зависимых файлов, которые не особо то нужны системе.
Поэтому в чистом режиме у меня уже появилось два режима :

  • Linux-admin - для записи изменений системы (вход в root)
  • Linux-Home - для записи пользовательских изменений (вход в user)
    Надо просто загрузиться в этих режимах и настроить систему “под себя” и выключить систему с сохранением в модуль
    Для каждого режима свои фильтра… Короче все сложнее и намного. Долго думал как их “прилепить” к МагОС, но решение нашлось !! Это пока будут режимы для настройки системы, перед применением режимов machines и changes. Если что то не так, то удалил сохраненное для режимов machines и changes и начал работу не с чисто-запущенной системы, а уже предварительно настроенной под свои предпочтения.
    Опять же режимов сохранения в МагОС больше но я выбрал эти.

То, что вы хотите сделать - необходимо будет делать вручную.

На мой взгляд самое простое - это загрузиться в режиме uird.mode=machines, а затем распаковать полученный модуль и убрать из него все машинно-зависимое, а содержимое /home/user перенести в /etc/skel

1 Симпатия

В этом то и главная сложность. И возникает вопрос удалять или не удалять?
Из спорных директорий это к примеру /etc.Там и система пишет, пользовательские конфиги и машиннозависимые файлы. Хорошо бы данную директория разделить. Допустим :

  • /usr/etc - Здесь все для системы
  • /etc - Здесь пользовательские конфиги и машиннозависимые файлы

Тогда бы сохранение системных изменений упростилось
Хотел было попробовать, но если все директории разделить, то это уже надо делать собственный дистр. Да и работы много

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

  • Виджеты (загрузка CPU и RAM), главное меню Plasma (Классика глючит, ставим Доску приложений).
  • Настройка вида сетки в трей (показ адресов, уровней сигнала, модуляций).

Я так понимаю, что то что вы хотите хранится в хомяке. Думаю можно загрузить в чистом, настроить виджеты. Затем сделать папку newskel в любом месте кроме хомяка, в этой папке нужно создать подкаталоги newskel/etc/skel, затем скопировать туда содержимое своего хомяка. То есть /home/user/* скопировать в newskel/etc/skel/. Не пропустите скрытые файлы, копировать надо все. Затем нужно сменинить пользователя на все файлы в newskel на root. Далее mkpfs newskel. Получите модуль newskel.xzm, его копируете в MagOS-Data/modules и пробуйте перегружать.

Хорошо еще подойдет фича с syschanges.

  1. Загружаетесь.
  2. Переходите в /tmp
  3. syschanges
  4. Настраиваете

Упаковываете полученный результат.

1 Симпатия

Я сам всегда работаю в чистом режиме.
Есть несколько вариантов, как можно его настроить под себя.
1 отдельный ini файл, выбираем его отдельной строкой в загрузчике
2 модуль с настройками пользователя помещёнными в /etc/skel При загрузке пользователь будет создан с этими настройками
3 можно просто хомяк скопировать в rootcopy (rootcopy должен быть на линуксовой ФС)

самое простое - 3 пункт, зашли в чистый режим - настроили, вышли из графики, скопировали /home в rootcopy. Недостаток в том, что это будет работать и для обычного чистого режима, его можно обойти отдельным MagOS-Data

Можно сохранённый хомяк сделать модулем и грузить отдельным строкой в загрузчике с использованием параметра uird.load+= Тут желательно данные перенести в /etc/skel сменить пользователя на root, но теоретически и с путём /home должно работать.

Самый кропотливый вариант, но самый красивый технически - настройка ini файла - можно посмотреть, что к примеру пишет remmina в свой конфиг и через ини изменить шаблон в /etc/skel
и так с каждым приложением, если нет бинарных файлов

Вообще вариантов массу можно реализовать, например сделать скрипт, который при старте будет анализировать ситуацию (железо, среду, наличие интернета и пр) и в зависимости от этого распаковывать нужные настройки для нужных программ.
Можно даже зашифровать этот архив ключем, привязанном к устройству

1 Симпатия

Хороший вариант.
Зашел в /tmp, стартовал syschanges, поменял “Классическое меню” на “Доску приложений”, завершил syschanges. Смотрю в изменения – вылез один бинарник от плазмашелла в .cache, но его НЕТ в /etc/skel, вообще. Значит, менюшка изначально формируется каким-то общим конфигом. Возможно, там и не бинарник, а дефолты с названиями и настройками. Надо искать и править, походу.

P.S. Откопал названия всех трёх типов менюшек – kicker, kickoff и kickerdash (это и есть “Доска приложений”), но походу реально много всего меняется при замене апплета основного меню – поле экспериментов, как сделать последний вариант по умолчанию наиболее простым способом.

Сисченджез не индексирует в хомяке, насколько помню, а эти изменения явно там должны быть. Нужно либо разбираться где в плазме по дефолту включаются нужные апплеты, либо делать из хомяка с изменениями новый /etc/skel.

Индексирует – они же туда попадают. Но при смене дефолтного апплета меню там одна строчка в ~/.config/plasma-org.kde.plasma.desktop-appletsrc и остальное – бинарники sqlite и кэши всякие, возможно и не относящиеся к делу.

По идее апплеты сидят в каком то xml.