Сайт | Скачать | Видео | Wiki

Последние сообщения

Страницы: 1 [2] 3 4 ... 10
11
Надо ли изобретать? Не лучше ли передрать проверенный код у Тинкоре?
12
 :) нашёл причину почему ломается система ,при дезактивации, дело в том что в файл спецификации попадает всё подряд из /mnt/name_module, так как иду почти на ощупь подрываясь на собственых ошибках, то я не продумал логику, вначале я ввел условие для cp не создавать ссылку на файл и симлинк если он существует, но так как в спек файле он фигурирует то он удалялся, то есть я сносил важные части системы  ??? , достаточно было ввести необходимое условие проверяющее перед удалением файл или смволическая ссылка и всё такое поведение было пресечено.
Внимание код еще сырой использовать на виртуальных машинах либо на системе отведеной для издевательств тестов
код:
Код
#!/bin/bash
set -x

while true; do
    # Проверки
    command -v peco >/dev/null || { echo "Требуется утилита peco"; exit 1; }

    # Выбор модуля
    selected_module="$(find ~/modules -maxdepth 1 -type f | sed 's|.*/||' | peco)"

    if [ -z "$selected_module" ]; then
        echo "Выход из скрипта."
        break
    fi

    # Путь к файлу спецификации модуля
    spec_file="$HOME/.config/special_file_${selected_module}.txt"
   
   # Ищем и удаляем битые символические ссылки в системе
   echo "Поиск и удаление битых ссылок: ЖДИТЕ"
    sudo find /usr /var /etc -depth -type l ! \( -path /proc -o -path /sys -o -path /dev \) -prune -o -type l ! -exec test -e {} \; -print -delete
    echo "БИТЫЕ ССЫЛКИ УДАЛЕНЫ!"
    # Меню действия
    ACTION=$(echo -e "Активировать\nДеактивировать" | peco --prompt "Выберите действие:")

    case "$ACTION" in

        "Активировать")

            SOURCE_DIR="$HOME/modules/$selected_module"
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Создаем каталог в /mnt с именем выбранного модуля
            sudo mkdir -p "$TARGET_DIR"

            # Монтируем выбранный модуль в /mnt
            sudo mount -t squashfs -o loop "$SOURCE_DIR" "$TARGET_DIR"

            # Создаем файл спецификации с именем модуля
            spec_file="$HOME/.config/special_file_${selected_module%.*}.txt"
            touch "$spec_file"

            # Копируем все файлы и каталоги из модуля в файловую систему
            # и записываем пути символических ссылок в файл спецификации
            #sudo cp -rs --no-clobber "$TARGET_DIR"/* /
            sudo cp -rsPn "$TARGET_DIR"/* /
            find "$TARGET_DIR" -type f -exec echo {} \; | sed "s|$TARGET_DIR||" >> "$spec_file"

            # Продолжаем с остальными действиями, такими как компиляция схем и т.д.
            sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
            sudo ldconfig
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart

            echo "Модуль АКТИВИРОВАН!"
            sleep 3
            ;;

        "Деактивировать")
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Читаем файл спецификации и удаляем символические ссылки
            #xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sudo rm -f
xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sh -c 'for file do
  if [ -L "$file" ]; then
    sudo rm -f "$file"
  else
    echo "Skipping real file: $file"
  fi
done'
            # Удаляем файл спецификации
            rm -f "$HOME/.config/special_file_${selected_module%.*}.txt"

            # Отмонтируем каталог
            sudo umount "$TARGET_DIR"
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart
            echo "Модуль ДЕАКТИВИРОВАН!"
            sleep 3
            ;;
    esac

    echo "Готово"
done

но могу сказать стало много лучще чем во вчерашнем коде, я приближаюсь к тому что хотел... а хотел я как и заявлял в топике темы добится модульности на любой системе, без aufs , overlayfs
13
PuppyRus-A [PRA] / Re: Видеодрайвера xf86-video-intel vs modesetting
« Последний ответ от krasnyh 11 Апрель 2024, 22:55:12 »
Все тоже самое, что не раз уже писалось. Не стартуют иксы с modesseting+mesa.
X.Org Смена сервера Позволяет GLAMOR вернуться к программному рендерингу Для устаревших графических процессоров
Насколько я понял, с этими изменениями не будет черного экрана при использовании драйвера modesseting со старыми видеокартами (i915), который как раз и падал на ускорителе glamor. И требовалась замена на xf86-video-intel.

Но это не точно. )
14
в шапке теперь финальная версия улучшеный работающий без ошибок скрипт
---------------------------------------------------------------------------------------------------------------

вот следующая итерация моего иследования на тему создания менеджера монтирования модулей используя символические ссылки.
--------
Внимание скрипт может быть опасен, подключаемые модули нужно тестировать в виртуалке.
У меня например sb модуль c libreoffice собраный в minios стабильно ложит систему (распаковал appimage и перепаковал его в sb ,естествено работает понимаю что масло масляное , но хотел понять виноват скрипт или то что положено в модуль  )

Зависимости peco,  мог использовать fzy, но так как скрипт изначально писал с peco сконцентрировался на самом принципе, позже если нужно будет, можно будет переделать с  fzy
-------
что умеет
Ищет в /usr /var /etc битые ссылки и удаляет их.
--
   при выборе опции Активировать)
--
монтирует модуль в /mnt/module_name
--
оттуда прокидывает в систему ссылки с помощью sudo cp -rs --no-clobber
--
также записывает полный путь всех сим_ссылок в спек_файл_имя_модуля в ~/.config для последующей их дезактивации то есть убираем все ссылки одним махом, и модуль дезактивирован
--
 при выборе опции Дезактивировать)
удаляет все символические ссылки прописаные в спек файл модуля
код:
Код
#!/bin/bash
set -x

while true; do
    # Проверки
    command -v peco >/dev/null || { echo "Требуется утилита peco"; exit 1; }

    # Выбор модуля
    selected_module="$(find ~/modules -maxdepth 1 -type f | sed 's|.*/||' | peco)"

    if [ -z "$selected_module" ]; then
        echo "Выход из скрипта."
        break
    fi

    # Путь к файлу спецификации модуля
    spec_file="$HOME/.config/special_file_${selected_module}.txt"
   
   # Ищем и удаляем битые символические ссылки в системе
   echo "Поиск и удаление битых ссылок: ЖДИТЕ"
    sudo find /usr /var /etc -depth -type l ! \( -path /proc -o -path /sys -o -path /dev \) -prune -o -type l ! -exec test -e {} \; -print -delete
    echo "БИТЫЕ ССЫЛКИ УДАЛЕНЫ!"
    # Меню действия
    ACTION=$(echo -e "Активировать\nДеактивировать" | peco --prompt "Выберите действие:")

    case "$ACTION" in

        "Активировать")

            SOURCE_DIR="$HOME/modules/$selected_module"
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Создаем каталог в /mnt с именем выбранного модуля
            sudo mkdir -p "$TARGET_DIR"

            # Монтируем выбранный модуль в /mnt
            sudo mount -t squashfs -o loop "$SOURCE_DIR" "$TARGET_DIR"

            # Создаем файл спецификации с именем модуля
            spec_file="$HOME/.config/special_file_${selected_module%.*}.txt"
            touch "$spec_file"

            # Копируем все файлы и каталоги из модуля в файловую систему
            # и записываем пути символических ссылок в файл спецификации
            sudo cp -rs --no-clobber "$TARGET_DIR"/* /
            find "$TARGET_DIR" -type f -exec echo {} \; | sed "s|$TARGET_DIR||" >> "$spec_file"

            # Продолжаем с остальными действиями, такими как компиляция схем и т.д.
            sudo glib-compile-schemas /usr/share/glib-2.0/schemas/
            sudo ldconfig
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart

            echo "Модуль АКТИВИРОВАН!"
            sleep 3
            ;;

        "Деактивировать")
            TARGET_DIR="/mnt/$(basename "$selected_module" .sb)"

            # Читаем файл спецификации и удаляем символические ссылки
            xargs -a "$HOME/.config/special_file_${selected_module%.*}.txt" sudo rm -f

            # Удаляем файл спецификации
            rm -f "$HOME/.config/special_file_${selected_module%.*}.txt"

            # Отмонтируем каталог
            sudo umount "$TARGET_DIR"
            sudo rm -rf ~/.cache/menus/
            sudo update-desktop-database
            lxpanelctl restart
            echo "Модуль ДЕАКТИВИРОВАН!"
            sleep 3
            ;;
    esac

    echo "Готово"
done

требует максимальной осторожности в использовании
но на нескольких модулях работает попробую его в паре с скриптом repo2app , посмотрю как себя поведёт
из недостатков десктоп файл символическую ссылку на картинку картинкой не  воспринимает почему-то, но это мелочи , со временем можно пофиксить, тут главное отловить все возможные странные поведения системы, а они есть так что еще раз повторюсь тестировать скрипт в виртуалке или на отдельной как например у меня отведенной для тестов системе.  Буду рад выслушать замечания , критику , и идеи, братцы идеи нужны...
15
В tineCore же как-то ссылки работают. Этой системе уже много лет... Не смотрели, как у них реализовано?
у них потому и система такая маленькая, они максимально обезжирили  систему, а потом прокидывают симлинки и так как это поверх очень небольших взаимосвязей то нечему ломаться, в больших же линуксах, на новые симлинки начинаются динамические подключения системы и есть большая вероятность того что она сломается, я так это понимаю, ну ради интереса играюсь с этим https://forum.puppyrus.org/index.php?topic=24216.0 но приделал учет символьных ссылок и их удаление при дезактивации по спек файлу  чуть позже выложу скрипт, для идей и обсуждения.
16
В tineCore же как-то ссылки работают. Этой системе уже много лет... Не смотрели, как у них реализовано?
увы не смотрел... Но иду смотреть. Мне интересно.
17
Вопросы от новичков / Re: Запуск AppImage на LFD10
« Последний ответ от sfs 11 Апрель 2024, 10:02:00 »
вынесен в отдельный модуль, такое вот ноу-хау, заради облегчения сборки.
Ну а как по другому сделать "маленький и быстрый". Использование аппимиджей быстро превращает его в "жирный и неповоротливый". В этом случае лучше ставить какой-то более традиционный дистр и ставить софт из его репы

Недостаюшие либы ищем apt-file
Пререпроверил - в 001-d10-sf31.pfs - apt работает. Т.е. репы все рабочие прописаны
18
В tineCore же как-то ссылки работают. Этой системе уже много лет... Не смотрели, как у них реализовано?
19
как вариант можно создать каждому подключаемому модулю проверку если ссылка есть её не трогать, если нет то создать но прежде записать в специальный (spec) файл, и удалять после перезагрузки эти символические ссылки соотносясь с этим файлом, либо по требованию, то есть создать полноценный менеджер символических ссылок который будет шариться по корневому как у себя дома. (мне от этой идее дурно становится...)
... и не зря дурно стало, в иследовательских целях написал скрипт, который неплохо это всё реализует, активирует модуль(пробрасывает символические ссылки во всю ширь, в корневом с проверками битая не битая ) и кроме этого все символические ссылки прописывает в спек с именем модуля, потом можно с помощью этого спек файла удалять эти ссылки то есть деактивировать модуль, ...но система ломается причем весьма быстро, некоторые пакеты запускаются, на некоторых ломается система. В общем  молимся на aufs ,пока будут люди которые помнят как ядро компилить с его поддержкой всё будет , без него горячего подключения не видать ... я потому и перешел на appimage .
upd: Если кому нужно поглядеть для интереса, могу опубликовать, где-то даже жалко что не сработало, вернее срабатывает, но рушится система... идея интересная , но сама по себе неправильная. 
20
Вопросы от новичков / Re: Запуск AppImage на LFD10
« Последний ответ от krasnyh 10 Апрель 2024, 21:06:58 »
Страницы: 1 [2] 3 4 ... 10