В Debian Lenny на моём ноутбуке практически всё работает «из коробки». Но существует несколько досадных мелочей, об исправлении которых я расскажу.
Начну с того, что существует баг, мешающий нормальной работе с wi-fi на ноутбуках Asus C90s (возможно, что и на некоторых других) с карточкой Intel PRO/Wireless 3945ABG. Суть в том, что через interfaces вафля работает, но если она в этом файле не упомянута, либо не произошло соединения, то wi-fi отваливается напрочь, и поднять его обычными способами не получается. Невозможно использовать network-manager, wicd подключает нестабильно, сильно осложняется работа.
Я с довольно большим трудом нашёл информацию по проблеме, и этот пост — попытка помочь товарищам по несчастью.
Итак, мы имеем отрубающийся при загрузке вайфай, dmesg выводит
Вафля отваливалась при загрузке, следовательно, решил я, надо копать запускаемые
Ссылка на скрипт, начинающаяся с S, запускается при входе, с K — при выходе. Двузначное число, стоящее после S или K, показывают приоритет запуска: сначала запускаются скрипты с наименьшим приоритетом. Упомянутая выше команда
Ну а теперь опять вернёмся к практическому применению. Sh-скрипт, делавший
После введения подобного костыля вафля перестала падать, стала нормально восприниматься
Решение самой проблемы с интеловской карточкой было найдено спустя многие часы гугления и одну переустановку системы (один товарищ заявил, что ему это помогло, да и я на новый винчестер как раз переезжал, заодно и попробовал предлагаемый пользователю коробочный Дебиан, но об этом в другой раз).
Нашлись IRC-логи, в который некий tvakah предложил упомянутое в самом начале решение проблемы, за что ему огромное спасибо и почёт. Он хоть и написал в багтрак о своей находке, но в гугле решение не всплыло (или не было замечено), а нерешённых тем и вопросов на форумах замечено было предостаточно. Хабр исправно индексируется гуглом, так что я надеюсь, что мой пост поможет хоть кому-нибудь.
Если кому-то интересно, то я подумываю периодически писать обзоры различных линуксовых софтин, сделав из личного блога какое-то подобие «записок дебианщика». У меня самого раньше периодически возникали вопросы вида «какой программой лучше сделать то-то», я тратил почти бесплатный траффик и драгоценное время на гугл и сравнение программ, направленных на решение одинаковых задач или настройку чего-то под себя или своё железо, так что мои знания могут кому-нибудь что-нибудь сэкономить.
Начну с того, что существует баг, мешающий нормальной работе с wi-fi на ноутбуках Asus C90s (возможно, что и на некоторых других) с карточкой Intel PRO/Wireless 3945ABG. Суть в том, что через interfaces вафля работает, но если она в этом файле не упомянута, либо не произошло соединения, то wi-fi отваливается напрочь, и поднять его обычными способами не получается. Невозможно использовать network-manager, wicd подключает нестабильно, сильно осложняется работа.
Я с довольно большим трудом нашёл информацию по проблеме, и этот пост — попытка помочь товарищам по несчастью.
Итак, мы имеем отрубающийся при загрузке вайфай, dmesg выводит
iwl3945: Radio disabled by HW RF Kill switchAlt+F2 не работает, хардварных переключателей на ноутбуке нет.
Решение
Оно оказалось несложным:$ echo 1 > /sys/devices/platform/asus-laptop/wlanПосле этого адаптер сразу включился, о чём сигнализировал загоревшийся светодиод. Но как сделать, чтобы этот костыль работал автоматом?
Вафля отваливалась при загрузке, следовательно, решил я, надо копать запускаемые
init
'ом скрипты. Был написан простенький скрипт, делавший echo
и пятисекундный sleep
, который выполнением команды$ update-rc.d myscript start XX a b c d. stop YY d e f .помещался после проверяемых на вшивость запускаемых системой скриптов.
Про runlevel'ы
Пара слов о процедуре загрузке системы, раз уж я начал так подробно объяснять. Существует семь т.н. «уровней запуска» (runlevels). Нулевой соответствует остановке системы, шестой — перезагрузке, первый — однопользовательскому режиму. Согласно официальной вики, Дебиан не делает различий между остальными пятью. Каждому режиму соответствует набор скриптов, запускаемых при входе в режим и при выходе из него. Ссылки на скрипты хранятся в /etc/rcX.d, где X — номер уровня. (Сами запускаемые скрипты лежат в /etc/init.d/)Ссылка на скрипт, начинающаяся с S, запускается при входе, с K — при выходе. Двузначное число, стоящее после S или K, показывают приоритет запуска: сначала запускаются скрипты с наименьшим приоритетом. Упомянутая выше команда
update-rc.d
позволяет правильно назначить для скрипта эти ссылки, либо удалить их. В упомянутой мной форме синтаксиса этой команды мы даём нашему скрипту myscript
приоритет XX при запуске в runlevel a, b, c и d, и приоритет YY при остановке в runlevel d, e и f. Удалить программу из автозапуска можно так:$ update-rc.d -f myscript remove
Ну а теперь опять вернёмся к практическому применению. Sh-скрипт, делавший
sleep 5
, будучи запихан до и после разных запускаемых системой при загрузке скриптов, показал, что светодиод беспроводного адаптера гаснет аккурат после запуска acpi-support
. Так как его приоритет запуска был 99, то пришлось поменять его на 98 командой $ update-rc.d acpi-support start 98 2 3 4 5. stop 20 1 .Приоритет 20 при останове в runlevel 1 я сохранил. Теперь осталось только переписать мой скрипт, чтобы он поднимал wi-fi:
#! /bin/sh<br># /etc/init.d/mywififix<br><br>touch /var/lock/mywififix<br>case "$1" in<br> start)<br> echo 1 > /sys/devices/platform/asus-laptop/wlan <br> ;;<br> stop)<br> echo 0 > /sys/devices/platform/asus-laptop/wlan <br> ;;<br> *) echo "Usage: /etc/init.d/mywifiscript {start|stop}"<br> exit 1<br> ;;<br>esac<br><br>exit 0
и выполнить$ update-rc.d mywififix defaults 99 99чтобы вписать его в автозагрузку. Отмечу другой синтаксис, в котором скрипту передаётся только приоритет, а параметры ранлевелов берутся дефолтными (старт в 2, 3, 4 и 5, остановка в 0, 1 и 6 ранлевелах).
После введения подобного костыля вафля перестала падать, стала нормально восприниматься
network-manager
'ом, а светодиод при загрузке гаснет на долю секунды.Решение самой проблемы с интеловской карточкой было найдено спустя многие часы гугления и одну переустановку системы (один товарищ заявил, что ему это помогло, да и я на новый винчестер как раз переезжал, заодно и попробовал предлагаемый пользователю коробочный Дебиан, но об этом в другой раз).
Нашлись IRC-логи, в который некий tvakah предложил упомянутое в самом начале решение проблемы, за что ему огромное спасибо и почёт. Он хоть и написал в багтрак о своей находке, но в гугле решение не всплыло (или не было замечено), а нерешённых тем и вопросов на форумах замечено было предостаточно. Хабр исправно индексируется гуглом, так что я надеюсь, что мой пост поможет хоть кому-нибудь.
Если кому-то интересно, то я подумываю периодически писать обзоры различных линуксовых софтин, сделав из личного блога какое-то подобие «записок дебианщика». У меня самого раньше периодически возникали вопросы вида «какой программой лучше сделать то-то», я тратил почти бесплатный траффик и драгоценное время на гугл и сравнение программ, направленных на решение одинаковых задач или настройку чего-то под себя или своё железо, так что мои знания могут кому-нибудь что-нибудь сэкономить.