Выпущен очередной кривой дистрибутив Linux - Chimbalix 23.1 Alphachi

Меня уже давно просили выпустить "Alpha" версию дистрибутива, и вот этот момент настал...
1 января 2024, понедельник 18:10
Hard-Workshop для раздела Блоги

Я уже достаточно долго использую MX Linux 23 в качестве основной операционной системы, попутно работаю над своим дистрибутивом Chimbalix (основан на MX Linux 23.1), и знаете, настало время переустанавливать Linux...

Есть несколько проблем, которые решены в моём дистрибутиве, например, меня очень напрягает отсутствие каталога "Program Files" (portsoft), и софт приходиться хранить абы как где попало... А меню пуск вообще похоже на свалку из всего и вся, в которой найти нужное приложение тот ещё геморрой на голову, ведь в линуксах система меню категоричная, неполноценная и неорганизованная:

Как следствие неполноценности и неорганизованности линуксоидных систем, панель управления тоже похожа на свалку, как и домашняя папка спустя некоторое время использования:

В таком хаосе продолжать работу весьма затруднительно, а значит пришло время перейти на дистрибутив Chimbalix, да, он всё еще очень "сырой", но им уже гораздо приятнее пользоваться, чем изначальным "линуксом":

Но не будем торопиться, сначала поработаем над мелочами, так как дистрибутив пойдёт в публичный доступ, важно направить пользователей на правильный способ установки драйвера видеокарт NVIDIA, чтобы один раз установили и забыли о проблемах вроде "OpenCL/CUDA недоступен":

Алгоритм действий элементарен, скачиваем полноценный CUDA ToolKit драйвер с сайта NVIDIA (весит около 4 ГиБ), располагаем в корневой домашней папке и переименовываем в более простое имя во избежание лишних сложностей, переходим в терминал Linux по сочетанию ctrl+alt+f1, авторизуемся, останавливаем lightdm сервис и наконец запускаем установочный файл драйвера.

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

Далее нужно поработать над Wine, я всякого собрал воедино, даже символические ссылки в system32/syswow64 переделал правильно, чтобы они работали по относительным путям, и обновление того же dxvk было максимально элементарной задачей (просто заменить dll файлы в отдельной папке):

Наверное каждый слышал от линуксоидов про "великий и прекрасный" Proton, так вот, я решил внедрить Port Proton вместо обычного префикса Wine, как бы странно это не звучало, вообще эта гадость зависима от Steam в оригинальном виде, а порт сделан весьма криво, но у меня вроде получилось исправить и отвязать от лишних зависимостей, однако оно не протестировано должным образом...

Теперь надо поработать над удобством и практичностью, а именно сделать символические ссылки на базовые каталоги пользователя вроде ".local", однако есть проблема, если делать ссылку через контекстное меню проводника, оно указывает полный путь к каталогу, а надо относительный:

Как-то так, это будет работать даже если изменить путь к домашней папке:

Почему ссылки начинаются с "B_"? Можно найти множество смыслов, но истинный лишь один, это сделано чтобы элементы находились вместе и не размазывались по всему домашнему каталогу при стандартной сортировке по имени.

Отлично, теперь можно отключить показ скрытых файлов, и быстро получить доступ к таким основным каталогам как ".config", ".local", ".wine" и т.д.:

А если не по нраву "B_", можно переименовать в "C_", и вообще как угодно, только важно заметить, это не аналогия с диском "C" в Windows :)

Про контекстное меню не забываем, нужно добавить раздел архиватора:

Вот и готово, правда скриншот нужно переделывать, он испортился...

Что же пошло не так? Хм, просто в розетке пропал "свет", прямо в момент сохранения скриншота:

Ладно, вернёмся к делу, вот собственно и контекстное меню, я не выставлял ограничения на тип файла для команды "распаковать", не вижу смысла так поступать при текущей реализации:

Хм, я так подумал, и решил вернуть в систему архиватор file-roller, ведь с моим подходом архиваторы не будут конфликтовать между собой...

Отлично, всё же у разных архиваторов есть свои особенности, было бы неразумно полагаться лишь на один вариант находясь в Linux:

Вот и наглядный пример, архиватор Ark без проблем распаковывает архив с нестандартным расширением, а вот GNOME поделка File Roller не осилила такую ситуацию, однако с другой стороны Ark не может создавать ISO "архивы", так что в зависимости от потребностей под рукой есть разные инструменты:

Для сравнения вот так ведёт себя линуксоидный подход к архиваторам, мало того контекстное меню раздувается сразу тремя элементами, так ещё они конкурируют между собой, постоянно спрашивая "какой использовать", эти танцы с бубном столь характерные для линуксов очень напрягают:

Я уже не говорю про сложность добавления дополнительных архиваторов, с линуксоидной реализацией без бубна не обойтись...

Но с моим подходом всё работает чуть проще, не хватает только одного, пункта "открыть архив...", впрочем, проблема легко решилась парой строчек в скрипте и дополнительным пунктом меню, заодно выразил "грань" между разными архиваторами:

Не забываю наполнять дистрибутив софтом, которым сам же буду пользоваться, нужно будет поработать над инсталляционным пакетом как-нибудь, чтобы ярлыки не копировать руками в меню "Пуск" и на рабочий стол:

Кстати, надо привести в порядок кривые ярлыки архиваторов и перенести в положенное для них место:

Почистив root пользователя и домашний каталог от мусора я задумался, чего-то тут явно не хватает...

Правильно! Нужно положить пример в папку изображений!

Осталось собрать дистрибутив и посмотреть что из этого вышло:

Итого получился образ размером 3.9 ГиБ:

Проверяем сначала в виртуальной машине, само собой приветственное окно осталось от MX Linux, возьмусь ли я это переделывать прямо сейчас? Конечно нет, иначе выпуск затянется до следующего года:

И первый же серьёзный косяк состоит в неправильных часовых поясах доставшихся от оригинального MX Linux, выбирая ETC/GMT +4 на самом деле выбирается -4, а это создает разницу во времени неправильную, с чем я уже когда-то возился, но сами файлы не исправлял:

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

Готово, одной серьёзной проблемой меньше, теперь можно спокойно использовать числовой формат часового пояса, и он работает правильно:

Вторая серьёзная проблема это пропавший каталог "portsoft":

Причём в установочном образе эта папка точно есть, но после установки её нет, а это значит лишь одно... Установщик MX Linux неполноценно установил систему проигнорировав "неправильную" папку, не соответствующую линуксоидным "философиям"...

На всякий случай перепроверил наличие каталога в Live режиме, и он есть в образе, выходит дело действительно именно в установщике, ну что, нужно разбираться в очередных линуксоидных "граблях", почему оно не работает как надо, и думать над исправлением очередной проблемы, что так характерно для Linux в целом:

Что же делать... Всякие "preseed/late_command" слишком непонятно работают, хрен знает как даже подойти к этим линуксоидным штукам... Точно! Если инсталлятор пропускает копирование нужного каталога, значит разработаем временный костыль:

Я не хочу застревать надолго с этой проблемой, а потому временно размещу папку в "/opt", и сделаю символическую ссылку в корень файловой системы:

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

Собственно на этом пока хватит, пришло время собрать новый установочный образ с исправленными косяками:

А пока всё подготавливается, под предыдущей моей статьёй появился комментарий по существу, человек прямо в точку попал, ведь я по сути сейчас споткнулся о костыли, пришлось городить скрипт для прикручивания теряющейся папки portsoft...

И да, это моя вина, что не смог прямо сейчас без костылей прикрутить папку, чтобы она не терялась где-то в недрах "пингвина" после установки дистрибутива, но думаю с этой проблемой как-нибудь разберусь в будущем:

Меня лишь одно забавляет, не прошло и 10 минут с даты публикации комментария, как нашёлся какой-то "недовольный", скорее всего один из ботов накручивающих рейтинги, ибо накрутка рейтингов в минус для моих (и не только) статей обычное явление с того момента, как я начал наглядно демонстрировать что на самом деле представляют собой линуксы, без розовых соплей в стиле "10 причин почему Linux лучше Windows".

...

Так, образ приготовился, пора проверять:

И на этот раз будет создана учётная запись с паролем, чтобы была видна работа моего скрипта:

Да, работает как надо, правда окно MX Welcome немного мешалось, но пользователь точно не пропустит терминал с запросом пароля:

Что дальше? Выгрузить дистрибутив в общий доступ? Конечно нет! Настал этап установки на реальный ПК, правда перед этим следует скопировать все важные данные с системного диска, например игру Genshin Impact, не очень приятно будет ~96 ГиБ выкачивать из интернета заново:

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

Устанавливаю свой дистрибутив вместо MX Linux 23, файл подкачки отключаю, с моим объёмом памяти от него больше вреда, чем пользы, да и если включить поддержку режима гибернации, то подкачка сожрёт "лишних" 72 ГБ места на системном диске, оно мне надо?

Часовой пояс выставляю GMT+4, и надеюсь что никаких типичных для Linux проблем больше не всплывёт в ходе тщательного тестирования...

Готово, система установлена, и я забыл достать флешку из ПК, но это поправимо:

Идём далее, и снова проблема с "потерянным" фоном рабочего стола, неприятно однако, но важнее другое, сейчас работает конфликтный Nouveau драйвер, файл в "modprobe.d" просто потерялся после установки, ох уж этот линукс, как дряхлый дед, вечно что-нибудь теряет...

Ну да ладно, запускаю свой скрипт для блокировки Nouveau и перезагружаю систему:

Сейчас важно установить адекватный драйвер на видеокарту (GTX 1070), так как у меня уже есть самый свежий адекватный установочный пакет от NVIDIA (cuda_12.3.1_545.23.08_linux.run), то мне не нужно выкачивать заново драйвер, достаточно просто скопировать в домашнюю папку, перейти в терминал Linux (ctrl+alt+f1), закрыть X server через остановку сервиса lightdm, и установить:

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

Осталось проверить предустановленный мною софт и Wine, и вот тут снова проблемы... Я не могу нормально запустить Genshin Impact через префикс на основе Port Proton, и это очень неприятно, ведь игра раньше прекрасно работала с немного модифицированным оригинальным Wine префиксом.

Зато с другими играми особых проблем нет, даже Elemental Demo в DirectX 12 режиме нормально работает, по меркам Linux конечно, ибо линуксам до Windows очень далеко в плане игр, кто бы что не говорил:

Дальше немного пердолинга с линуксоидными DEB пакетами, нужно установить Яндекс Браузер, и в дистрибутиве не хватает зависимости "jq", значит нужно добавить вручную, ведь разработчики из "Яндекс" не позаботились о том, чтобы такую мелочь встроить в установочный пакет браузера... Не похоже, чтобы это было что-то очень базовое для всех дистрибутивов, чтобы хоть как-то оправдать отсутствие данной зависимости в установочном пакете программы:

Точно, нужно ведь Blender проверить, никаких проблем с CUDA и OptiX, ведь сразу был установлен адекватный драйвер NVIDIA вместо линуксоидного мусора из репозиториев:

Собственно на этом вроде всё, не обошлось конечно без лишнего пердолинга после установки, однако танцевал я с бубном всего один вечер, и часть работы была сделана моими же скриптами, это всяко лучше, чем неделю исправлять бесконечные косяки оригинального MX Linux (и многих других дистрибутивов).

Вернёмся к проблеме часовых поясов, ранее я переименовал файлы zoneinfo/Etc, чтобы выбирая "GMT+4" время соответствовало часовому поясу +4, а пользователь не был введён в заблуждение при выборе, однако некоторые веб сайты учитывают проблему противоположного знака, корректируют время с учётом изначально кривого имени, и приводят к бардаку... Я не могу с этим ничего сделать, ибо корень проблемы видимо очень древний, и много костылей для её обхода было сделано уже:

Не припомню, чтобы в "плохой и ужасной" Microsoft Windows был такой бардак с часовыми поясами, чтобы выбирая UTC +4 система указывала часовой пояс -4 вместо ожидаемого +4, это только в линуксах такое мракобесие может быть...

Если создам свою структуру понятную нормальному человеку, то некоторые веб-сайты не осиливают такого прикола и выбирают стандартное GMT0 время, так что просто верну файлам zoneinfo исходное состояние и пока что положу болт на это дерьмо, увы:

Эх, а я надеялся до нового года выпустить "Alpha" версию дистрибутива, но всплыли неожиданные косяки на ровном месте, как всегда, в линуксах... Пожалуй пришло время ещё раз установить в виртуальную машину дистрибутив Chimbalix, исправить некоторые мелочи и снова упаковать:

Установка завершена, на удивление в виртуальной машине нет косяка с "потерянным" фоном рабочего стола, как это происходит при установке на реальный ПК, похоже проблемы с конфигами, но папка "portsoft" всё равно теряется:

Так как пароль установлен, костыль прикручивающий папку ожидает ввода, но про это уже говорилось, так что просто начну исправлять косяки:

Возвращаю к изначальному виду файлы часовых поясов, всё равно и так и сяк работают криво, устанавливаю зависимость "jq", ибо установочный DEB пакет Яндекс Браузера оказался не очень полноценным:

Далее разберёмся с префиксом Wine, пожалуй обойдёмся без всяких Port Proton, ибо с "протонами" как-то всё хуже работает, чем если использовать просто немного модифицированный Wine префикс...

А вот и действие строки "env LC_ALL=ru_RU.UTF-8" перед запуском игры Genshin Impact, непонятно? А теперь представьте, вместо русских букв в чате будут сплошные символы вопроса ("?"), короче говоря благодаря явному указанию "локали" нет проблем с кодировками в игре:

Вот такой префикс Wine можно и внедрить в дистрибутив.

Про инструкцию установки драйвера NVIDIA не забываем, вносим правки исходя из выявленных нюансов в ходе проверок на реальном ПК, кто бы сомневался:

Так же были поправлены всякие мелочи, и пора снова создавать образ:

Записываем флешку:

Но внезапно, образ не проходит проверку целостности данных, судя по всему проблема случилась во время сборки дистрибутива, ведь ISO "диск" правильный исходя из контрольной суммы:

Вообще данную ошибку можно проигнорировать, система нормально устанавливается и работает, но это так оставлять нельзя, похоже я накосячил с чем-то, не знаю даже с чем, вечно в этих линуксах всё через одно место реализовано не по-человечески, эх опять переделывать...

Система пересобрана, проблем больше нет с целостностью:

Однако, я снова столкнулся с проблемой "Wine" пытаясь запустить Genshin Impact:

fixme:wgl:X11DRV_wglGetPixelFormatAttribivARB unsupported 2008 WGL Attribute

Всему виной оказались "зависимости", которыми так славен линукс в целом! Дело в REG файлах, которые генерирует Wine, они создаются под конкретного пользователя Linux и не обновляются при переносе, если пользователь пытается перенести префикс (папку с "Windows") на другой ПК, он получает проблемы решаемые повторной генерацией файлов реестра:

Итого было решено сделать ещё один костыль, раз нельзя по-человечески побороть Wine, чтобы нормально работал с другими пользователями без переустановки префикса и создания специального пользователя, значит буду применять костыли, лишь бы работало и не приходилось танцевать с бубном по таким "мелочам", заодно доработал первый костыль для Linux:

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

Даже боюсь представить, сколько костылей в будущем ещё появится...

Раз уж взялся, сделаю скрипт для создания скриншотов, ибо постоянно ковыряться через кнопочки всплывающего окна, ну совсем не круто:

Теперь создание скриншотов стало гораздо более продуктивным занятием, чем было изначально в Xfce:

Ну всё, пора собирать...

С первого раза конечно не всё получилось правильно, но с третьего косячки подправил.

Время проверять на реальном ПК свой дистрибутив, как можно заметить, косяк с пропажей фона рабочего стола исправлен, это были кривые файлы конфигурации, как и положено очередному кривому дистрибутиву:

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

Собственно пора проверить Wine, и он работает, правда DirectX 12 не поддерживает, ведь сейчас задействован неполноценный драйвер видеокарты Nouveau, с которым моя GeForce GTX 1070 вытягивает максимум на 10% от своих возможностей:

Копирую нормальный драйвер NVIDIA в домашний каталог для удобного и быстрого доступа, блокирую Nouveau, перезагружаю систему:

Перехожу в консоль (alt+ctrl+f1), не забываем остановить lightdm сервис, иначе драйвер выдаст ошибку, запускаю установщик от NVIDIA через sudo и жду пока установит, а после перезагружаю ПК:

Теперь проверяю Elemental Demo DX12, Genshin Impact, работу скрипта для создания скриншотов, каталог portsoft, всё работает:

Конечно не забываю про Blender, включаю OptiX и радуюсь беспроблемной полноценной работе:

Не знаю как будут владельцы AMD видеокарт пердолиться со встроенными в ядро Linux кривыми и неполноценными драйверами, ведь у меня нет "красных" видеокарт для тестирования и подпиливания косяков напильником, так что вы уж держитесь как-нибудь если вдруг у вас Radeon...

На этом пожалуй закончу, от меня просили "Альфа" версию дистрибутива, вот и он, Альфач:

Если вдруг не по нраву вышел дистрибутив - вперёд и с песней на другие дистрибутивы, я ничего не обещаю насчёт удобства/дружелюбности дистрибутива, тем более для "Альфа" версии, в отличие от других:

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

Дистрибутив Chimbalix 23.1 Alphachi на данный момент можно найти в Google диске.

Google Drive: ( https://drive.google.com/drive/folders/1vJwvMnvEqnk92MZ_dmQpAaB9BEUCt03L ).

Так же не забываем про репозиторий GitHub: ( https://github.com/Shedou/Chimbalix ).

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

Есть у меня одна идея, запаковать образ дистрибутива в 7-Zip архив разбив на две части размером чуть меньше 2 ГБ, так можно будет загрузить в репозиторий не упёршись в ограничения:

Вообще следовало бы поднять отдельный сайт для дистрибутива, и располагать образ именно на сайте, однако на текущем этапе это не смеет особого смысла, так что обойдёмся более простыми вариантами:

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

Вот так была выпущена первая "Alpha" версия дистрибутива Chimbalix 23.1, сейчас могу лишь поздравить всех с наступившим Новым Годом, и пожелать всего хорошего!

Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.