среда, 4 июля 2012 г.

Решаем проблему /sbin/modprobe: invalid option -- 'l' при компиляции программ из имходников.


В последней версии modprobe была выпилена опция -l из за чего ломается установка некоторых программ у которых modprobe вшит в Makefile.

Что же теперь можно сделать

Можно создать скрипт который будет выполнять нудную нам зядачу, а всё остальное будет перенаправлять настоящему модпробу.
cat > /sbin/modprobe.sh <<EOF
#!/bin/bash

if [[ \$1 == -l ]]
then

if [ -z \$2 ]    
then
find /lib/modules/\$(uname -r) -name '*.ko' | sed -e "s#\\/lib\/modules\/\$(uname -r)\/##g"
else
find /lib/modules/\$(uname -r) -name '*.ko' | sed -e "s#\/lib\/modules\/\$(uname -r)\/##g" | grep \$2
fi

else
/sbin/modprobe \$@
fi
EOF
Но этого мало. Теперь сделаем его исполняемым, и пропишем алиас в систему.
chmod +x /sbin/modprobe.sh
alias modprobe=/sbin/modprobe.sh
echo "alias modprobe=/sbin/modprobe.sh" >> /etc/bash.bashrc
Хотя в некоторых случаях и этого будет не достаточно. Если адрес к modprobe жестко указан в Makefile, то зайдите в директорию проекта и выполните следующее.
cp Makefile Makefile.save
sed -i -e 's/^MODPROBE.*/MODPROBE := \/sbin\/modprobe.sh/g' Makefile

Enhanced by Zemanta

Комментариев нет:

Отправить комментарий