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

Автор Тема: modprobe для автоподключаемых при загрузке .pfs  (Прочитано 11861 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Чтобы загрузить модуль ядра командой modprobe - этот модуль предварительно должен быть проиндексирован depmod . Увидеть, что модуль загружен - lsmod
Самый простой и экономичный (по RAM-сохраненке и времени) вариант - включать результат depmod в модуль
Но если >=2 х модулей - сработает только модуль из верхнего слоя aufs
Pro предложил загружать командой insmod. Было бы идеально, но на практике иногда не срабатывает

http://forum.puppyrus.org/index.php/topic,13104.msg85457.html#msg85457
В initrd не нашел "modprobe"
Модули ядра были в проприетарных дровах. Там я засунул результат выполнения depmod (/usr/lib/modules*) в модуль. Это плохая идея. Надо убрать и добавить
Код
[ "$(find /mnt/live/memory/images -maxdepth 1 -type d -name '*.pfs' | grep -v /000-kernel. 2>/dev/null \
| while read mountpoint; do find "${mountpoint}/usr/lib/modules" -type f -name "*.ko" 2>/dev/null; done)" ] \
    && depmod &

Только вот в какое место....
1. initrd
2. rc.local
3. systemd
4. bash_profile
5. Startup
« Последнее редактирование: 22 Октябрь 2015, 10:58:19 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #1 : 24 Декабрь 2013, 10:39:05 »
Код
DEPMOD(){
#depmod && modprobe nvidia && echo >/nv-ok
m="$(find /mnt/live/memory/images -maxdepth 1 -type d -name '*.pfs' | grep -v /000-kernel. 2>/dev/null \
    | while read mountpoint; do find "${mountpoint}/usr/lib/modules" -type f -name "*.ko" 2>/dev/null; done)"
        if [ "$m" ] ;then
            echo depmod && $sudo depmod && for i in $m ; do echo "load $i" && $sudo modprobe "`basename "$i" .ko`" ;done
        fi
}
#DEPMOD

1. initrd - рано. Там нет modprobe depmod
2. rc.local - самое то ,но надо добавить в getty@tty1.service
Код
After=systemd-user-sessions.service plymouth-quit-wait.service rc-local.service
чтобы rc.local гарантировано запускался до логина - это по любому надо добавить, не зависимо от depmod
3. systemd
Можно и отдельны й юнит сделать, но не знаю, чем это будет лучше rc.local
4. bash_profile - можно , до startx. Наверное то же что и 2
5. Startup - поздно. Дрова видях должны быть до старта Х

А вообще тут 2 варианта:
1. Как сейчас - результат depmod уже в модуле с .ko
Загрузка быстрее.
Если загружаются 2 модуля с .ko - работать не будет
Но 2х нет - дрова вместе грузить нельзя. virtualbox и т.п. можно проверить подгруженность модуля в его стартовом скрипте

2. depmod в rc.local
Загрузка медленнее. При постоянном использовании это критично

В итоге - 1й вариант (как было)
« Последнее редактирование: 24 Декабрь 2013, 11:07:31 от sfs »

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #2 : 24 Декабрь 2013, 10:46:19 »
есть мнение что если modprobe указывать полный путь к файлу модуля, то он его обработает даже если файл в не прописан в базе depmod
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #3 : 24 Декабрь 2013, 11:27:29 »
если modprobe указывать полный путь к файлу модуля, то он его обработает даже если файл в не прописан в базе depmod
В PRA с модулем nvidia не получилось. С .ko и без , c -f -d

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #4 : 24 Декабрь 2013, 14:28:11 »
значит мнение неправильное :)
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #5 : 10 Август 2015, 14:35:22 »
Доработал шапку.
Предлагаю продолжить поиск оптимального решения
Сделал такое подключение
Есть другие идеи?

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #6 : 10 Август 2015, 17:39:26 »
ну на каком этапе подключаются модули из modules, на том и делать поиск и выполнение  depmod
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #7 : 10 Август 2015, 17:46:00 »
/modules подключается в инитрд.  Там нет modprobe depmod
Сделал такое подключение
Так нормально? вроде универсально... Как это еще раньше сделать не знаю

Оффлайн Pro

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #8 : 10 Август 2015, 17:49:28 »
так ты не выяснил в какое место добавить
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #9 : 10 Август 2015, 18:05:05 »
С broadcom получилось. В этом месте нормально?

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #10 : 22 Октябрь 2015, 11:12:53 »
Универсальное (включен результат depmod в модуль или нет) решение:
Этот аттач (см. функцию D() ) запускается при старте системы
Единственный минус скрипта- если подключен модуль, который на этом железе никак не загрузится (например видеодрайвер ati на видяхе nvidia) - depmod делался зря (а это потраченная память или сохраненка).
Мне протестировать сейчас не начем. Прошу проверить и отписаться

Оффлайн nik152

  • Ветеран
  • *****
  • Сообщений: 456
  • Репутация: +22/-0
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #11 : 22 Октябрь 2015, 15:25:17 »
Вот так попробуйте
Это как? Откуда должен стартовать скрипт?
Только вот в какое место....
2. rc.local - самое то ,но надо добавить в getty@tty1.service
Короче, можно как-то понятнее? Я не в той весовой категории...
Ноутбуки: Lenovo B590 - Intel Core i3-3110M, 2.4 GHz, RAM-4GB, Video - Intel HD Graphics 4000
Acer Extensa 5200 - Intel Celeron M440, 1.86GHz, RAM-1GB, Video - Intel 945GM
Нетбук Asus EeePC 901 - Intel Atom N270, 1.6GHz, RAM-1GB

Оффлайн sfs

  • Администратор
  • Ветеран
  • ****
  • Сообщений: 33967
  • Репутация: +231/-0
  • Автор темы
    • PuppyRus-A
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #12 : 22 Октябрь 2015, 15:47:44 »
Откуда должен стартовать скрипт?
он и так стартует
Просто замените /usr/local/bin/update-caсhe на аттач и пробуйте - всю тему можно не читать
« Последнее редактирование: 22 Октябрь 2015, 15:49:16 от sfs »

Оффлайн nik152

  • Ветеран
  • *****
  • Сообщений: 456
  • Репутация: +22/-0
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #13 : 22 Октябрь 2015, 18:56:31 »
Универсальное решение: Прошу проверить и отписаться
Добавил скрипт в модуль broadcom. При загрузке всё отрабатывает нормально и в systemd и в minirc. В сравнении с модулем с включенным depmod, расход памяти больше на 12МБ. Видеокарты не проверял, их у меня нет.
Ноутбуки: Lenovo B590 - Intel Core i3-3110M, 2.4 GHz, RAM-4GB, Video - Intel HD Graphics 4000
Acer Extensa 5200 - Intel Celeron M440, 1.86GHz, RAM-1GB, Video - Intel 945GM
Нетбук Asus EeePC 901 - Intel Atom N270, 1.6GHz, RAM-1GB

Оффлайн ander

  • Активный участник
  • Старожил
  • ****
  • Сообщений: 300
  • Репутация: +16/-0
Re:modprobe для автоподключаемых при загрузке .pfs
« Ответ #14 : 23 Октябрь 2015, 00:24:08 »
Как-то слишком мудрено и тяжеловесно получается.  В недрах системы скрипт ищет добавленные модули ядра и буде таковые найдутся, грузит их, да еще если insmod не сработает, то для каждого! модуля будет вызван depmod.
Я думаю так.  Есть systemd, у которого есть юнит systemd-modules-load.service.
Юнит отрабатывает по условиям, которые в нем прописаны, одно из возможных условий -непустая директория /etc/modules-load.d, которая, собственно и предназначена для добавления файлов со списками модулей ядра, которые надо грузить.
То есть.  Если есть pfs-файл, содержащий модули ядра и эти модули должны быть загружены без каких-то дополнительных условий, кладется xxx.conf в эту директорию.  Собственно, vbox4322-light-s01.pfs так и делает, хотя правильнее бы было, если бы это делал содержащий сами модули ядра vbox4322-k3.19.2-pf2.pfs.  Получается, если директория непуста, значит, модули добавлялись и юнит отработает.  Вот в него и добавить еще одну строку. Получится
Код
ExecStart=/usr/bin/depmod
ExecStart=/usr/lib/systemd/systemd-modules-load
Мне кажется, так будет проще, чище и удобнее.  Надо будет только при создании пакетов c модулями ядра не забывать класть conf в modules-load.  А можно и создать при надобности pfs с модулями, которые грузиться автоматически не будут - просто не класть conf.