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

Автор Тема: [закрыто]Не работает blacklist для модулей  (Прочитано 33700 раз)

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

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Не работает blacklist для модулей
« Ответ #30 : 19 Декабрь 2010, 16:24:44 »
Вобщем поступило предложение (мое) составить письмо Барри Каулеру с просьбой подсказать возможное решение проблемы.

В письмо приложить нужные файлы.

ВОПРОС: Кто знаком с английским в объеме достаточном для написания 1-2 абзацев в описанием нашей проблемы?
То что Барри окажет помощь я не сомневаюсь, я уже списывался с ним по некоторым вопросам.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн jel

  • Постоялец
  • ***
  • Сообщений: 137
  • Репутация: +11/-0
  • Автор темы
Re: Не работает blacklist для модулей
« Ответ #31 : 19 Декабрь 2010, 16:38:59 »
Мысль неплохая, но с письмом помочь не смогу. Мой английский read only.  :-\

Оффлайн Hatch

  • Старожил
  • ****
  • Сообщений: 229
  • Репутация: +2/-0
Re: Не работает blacklist для модулей
« Ответ #32 : 20 Декабрь 2010, 14:08:46 »
Возьмусь за письмо. Pro, скинь мне нужный для перевода текст.

Оффлайн Фарватер

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 552
  • Репутация: +41/-0
Re: Не работает blacklist для модулей
« Ответ #33 : 07 Январь 2011, 15:42:31 »
Есть один трюк.

Попробовал убрать командой 'blacklist' в /etc/modprobe.conf:
Код
#rmmod 8139cp
#echo 'blacklist 8139cp' >> /etc/modprobe.conf
#modprobe 8139cp
- Загружается модуль. Нехорошо.

Убираем командой 'alias':
Код
#rmmod 8139cp
#echo 'alias 8139cp off' >> /etc/modprobe.conf
#modprobe 8139cp
FATAL: Module off not found
#lsmod | grep 8139cp
#
- Модуль не загружен. Т.е. мы победили. :)

Т.е. мы принуждаем modprobe идти по пустому alias при попытке загрузить модуль с данным именем.



« Последнее редактирование: 07 Январь 2011, 15:44:37 от Фарватер »

Оффлайн kostik

  • Постоялец
  • ***
  • Сообщений: 123
  • Репутация: +19/-0
Re: Не работает blacklist для модулей
« Ответ #34 : 07 Январь 2011, 16:31:37 »
Гугл говорит, что сия фича описана в неком man modules.conf
alias some_module off заставляет modprobe игнорировать загрузку данного модуля
      Спасибо Фарватер. Это надо законспектировать :-)

Оффлайн Фарватер

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 552
  • Репутация: +41/-0
Re: Не работает blacklist для модулей
« Ответ #35 : 07 Январь 2011, 20:05:36 »
Соответственно, патчим rc.sysinit ( и любые другие скрипты, в которых мы `grep backlist`  следующим образом:

В rc.sysinit, например, строка 122:
BLACKLISTVARS="`echo "$SKIPLIST" | tr '\-' '_' | tr ' ' '\n' | sed -e 's/^/blacklist /' | grep -v ' $'`"
выполняет замену "mymodule" на "blacklist mymodule". (результат потом записывается в конфиг, где слово blacklist, как мы поняли, благополучно игнорируется modprobe)

Заменяем
sed -e 's/^/blacklist /'
на
sed -e 's/.*/alias & off/'
что даст замену "mymodule" na "alias mymodule off" в итоговом файле конфига.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Не работает blacklist для модулей
« Ответ #36 : 09 Январь 2011, 15:25:19 »
эм.... а  в /sbin/pup_event_modprobe нельзя сказать что делать надо?
там по другому работа с блеклистом идет ..........
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Фарватер

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 552
  • Репутация: +41/-0
Re: Не работает blacklist для модулей
« Ответ #37 : 09 Январь 2011, 20:37:20 »
Цитата
эм.... а  в /sbin/pup_event_modprobe нельзя сказать что делать надо?

Наверное, так:
/sbin/pup_event_modprobe:
Код
93:  echo 'alias usb_storage off' > /etc/modprobe.d/blacklist-usb_storage.conf
...
129: echo "alias $MODULE off" > /etc/modprobe.d/blacklist-${MODULE}.conf

Поиск в каталоге /sbin других файлов, упомянающих blacklist не нашел:
Код
find /sbin -print0 | xargs -0 grep blacklist
Но можешь проверить таким же методом и другие каталоги (только / не проверяй  ;D )

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Не работает blacklist для модулей
« Ответ #38 : 10 Январь 2011, 05:23:57 »
Наверное, так:
/sbin/pup_event_modprobe:
там есть еще какой то поиск по этим файлам /etc/modprobe.d/blacklist-${MODULE}.conf которым исчется по слову blacklist теперь то критерий поиска измениться да?
Пожалуйста, проверь эти 4 файла, я не осилю сам :(
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Фарватер

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 552
  • Репутация: +41/-0
Re: Не работает blacklist для модулей
« Ответ #39 : 10 Январь 2011, 06:38:30 »
Цитата
там есть еще какой то поиск по этим файлам /etc/modprobe.d/blacklist-${MODULE}.conf которым исчется по слову blacklist теперь то критерий поиска измениться да?
Пожалуйста, проверь эти 4 файла, я не осилю сам :(

Ты имеешь в виду, что если мы записываем в /etc/modprobe.d/somemodule.conf значение "alias somemodule off" вместо "blacklist somemodule", то /etc/rc.d.sysinit и pup_event_modprobe уже их не смогут распознать как блокированных, т.к. они ищут по строке "blacklist" ?   Логично.

Тогда просто добавим строку, по которой будут делать тоже самое, но с поиском по слову "off" вместо "blacklist".

Тогда в rc.sysinit делаем так:
Код
121: замена 
sed -e 's/^/blacklist /'
на
sed -e 's/.*/alias & off/'
(это уже было выше)

125: вставка строки
cat /etc/modprobe.d/* 2>/dev/null | grep -o '^alias *[a-zA-Z0-9_-]* off' | tr -s ' ' >> /tmp/pup_event_modprobe.conf

pup_event_modprobe - тех изменений, кторые я привел, должно быть достаточно, т.к. он читает результат работы rc.sysinit

В /usr/sbin есть пара файлов, записывающих модули в blacklist, но, т.к. их вызов предшествует pup_event_modprobe и rc.sysinit, то не вижу смысла их править.

Больше исполняемых файлов, работающих с blacklist я пока не нашел. Если вдруг найду - дам знать.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Не работает blacklist для модулей
« Ответ #40 : 10 Январь 2011, 07:46:41 »
Извини Фарватер, в b7 я не те файлы поставил :(
вот во вложении глянь.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Фарватер

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 552
  • Репутация: +41/-0
Re: Не работает blacklist для модулей
« Ответ #41 : 11 Январь 2011, 07:59:27 »
В файле pup_event_backend_modprobe, думаю, будет достаточно добавить после строчки 176:
Код
177: echo "alias $MODULE off" > /tmp/pup_event_prefhit_blacklist-$$
(эта строчка будет использоваться для вызова modprobe в стр. 179/180)

И после строчки 181/182:
183:
Код
echo "alias $xMODULE off" >> /tmp/pup_event_prefhit_blacklist-$$
(эта строчка, вроде, нигде не используется, но, на всякий случай, думаю записать :) )

Строку 185/186
Код
 modPATTERN="`cat /tmp/pup_event_prefhit_blacklist-$$ | sed -e s/blacklist\ /\^/ -e s/$/\$/ | tr '\n' '|' | sed -e s/\|$//`"
заменить на
Код
 modPATTERN="`cat /tmp/pup_event_prefhit_blacklist-$$ | sed -e 's/alias\s*\(.*\)\s*off/^\1/' | sed -e s/$/\$/ | tr '\n' '|' | sed -e s/\|$//`"

В файле pinstall.sh:
Строка 126 содержит команду поиска модулей по слову "blacklist", дописываемую к файлу /etc/rc.d/sysinit. Добавляем в эту строку также поиск по шаблону "alias mymodule off". В исправленом варианте строка 126 выглядит так:
Код
-e "s%^#\.\.\.read in /sbin/pup_event_backend_d.*%&\n#100921 Append any blacklists from /etc/modprobe\.d...\ncat /etc/modprobe.d/* 2>/dev/null | grep -o '^blacklist  *[a-zA-Z0-9_\-]*' | tr -s ' ' >> /tmp/pup_event_modprobe.conf\ncat /etc/modprobe.d/* 2>/dev/null | grep -o '^alias\s*.*\s*off' | tr -s ' ' >> /tmp/pup_event_modprobe.conf%" \

Т.е. здесь мы добавили в конец записываемой в rc.sysinit строки команду
Код
cat /etc/modprobe.d/* 2>/dev/null | grep -o '^alias\s*.*\s*off' | tr -s ' ' >> /tmp/pup_event_modprobe.conf



Наверное, этого будет достаточно. Надо пробовать.


Оффлайн Фарватер

  • Почетный участник
  • Ветеран
  • *
  • Сообщений: 552
  • Репутация: +41/-0
Re: Не работает blacklist для модулей
« Ответ #42 : 11 Январь 2011, 09:51:12 »
Все равно меня преследует мысль, что проблема в modeprobe. Просто из всех версий modprobe только одна игнорирует blacklist, если не включен параметр -b. И именно эта версия сейчас установлена в PuppyRus-2.0. Может, попробовать заменить на другую версию modprobе? Просто добавить ее в /usr/bin или ссылку на нее.
« Последнее редактирование: 11 Январь 2011, 09:55:40 от Фарватер »

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Не работает blacklist для модулей
« Ответ #43 : 11 Январь 2011, 09:59:05 »
modprobe (и вобще все утилиты module-init-tools)  стоят штаные от Puppy-420-ru
попытки заменить (а они были на заре работы) к хорошему не приводили (правда менялся весь комплекс программ rmmod, insmod, depmod и т.п.)
будет ли замененный modprobe корректно обрабатывать модули ядра сжатые gz , как существующий, ясности нет.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.

Оффлайн Pro

  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 10737
  • Репутация: +113/-2
Re: Не работает blacklist для модулей
« Ответ #44 : 11 Январь 2011, 16:06:44 »
все записал по файлам, будем проверять и надеяться.
Я загружаю новые пакеты сюда: http://file.puppyrus.org/users/ а дальше можно найти самостоятельно.