пятница, 20 июля 2012 г.

Устанавливаем compat-wireless на Debian/Ubuntu

Список поддерживаемого оборудования вы можете посмотреть тут Supported devices

Устанавливаем всё необходимое для сборки модулей ядра:
apt-get update
apt-get install gawk bzip2 linux-headers-$(uname -r) -y
apt-get build-dep linux-image-$(uname -r) -y
Приступим к установке compat-wireless. По скольку версия compat-wireless сильно привязана к ядру, то качаем нужную ветку тут, либо выполним нижеуказанный скрипт.
# Скачаем compat-wireless 
cd /usr/src
wget $(wget -O - http://linuxwireless.org/en/users/Download/stable | \
grep "compat-wireless-$(read -n 3 KERN <<< $(uname -r); echo $KERN)" | \
gawk -Fref=\" '{ print $2 }' | gawk -F\" '{ print $1 }')

# Распакуем его 
tar xjfv compat-wireless-*

# И зайдём в директорию
cd compat-wireless-*

среда, 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