Павел Закляков
История одной установки Linux на ноутбуке
Установка Linux на ноутбук проходила с трудом, сначала дистрибутив не хотел грузиться, потом Wi-Fi-адаптер не был подхвачен автоматически. Упорное желание установить беспроводную связь в конечном итоге привело к положительному результату. В статье рассказывается одна история такой установки с подробным описанием всех проделанных шагов.
Регулярно общаясь с добрым десятком людей, разбирающихся в технике, я заметил, что ни у одного из них нет ноутбука с Linux, хотя практически все время от времени имеют дело с этой операционной системой, а кто-то только и занимается её администрированием. Лишь у двух человек на компьютере имелся эмулятор VMware, под которым у них был образ Linux-машины на всякий случай.
Вполне возможно, что использование SSH-клиента PuTTY и подключение к Интернету позволяют им решать все свои проблемы без установки этой операционной системы на ноутбуках, а с графической средой X-Window они просто не работают. Также интересен факт, что большая часть неплохих специалистов, использующих Linux на своих настольных системах, ничего не знают о настройке Wi-Fi.
Именно эти факты и сподвигли меня написать статью. В отличие от своих «собратьев-админов», пытающихся сидеть на двух стульях, то есть использовать две операционные системы вышеописанным образом, я решил уйти от этой порочной практики.
Ноутбук был у меня и ранее, но, когда в начале лета я не смог настроить нужную мне программу, так как готового пакета не было, а исходники не хотели компилироваться, в голове прозвучала фраза моей знакомой «Нет шага вперёд, значит, есть шаг назад». Отступать я не привык, поэтому, оценив свои усилия и пожелания, я решил, что пора заменить чем-то современным 256 Мб памяти, диск в 20 Гб и обычный СD-ROM, даже непишущий.
Покупка ноутбука
Найти подходящий ноутбук на замену оказалось непросто. Все люди по своей природе ленивы, и я в том числе. Проблема в том, что производители коммерческих операционных систем делают на этой слабости деньги, предлагая компьютеры с уже установленной системой. Так как большая часть покупателей не специалисты, то их устраивает такая практика, когда цена за операционную систему включается в общую стоимость покупки, а сами покупатели избегают возможных проблем. Но мы-то знаем, что бесплатный сыр бывает в мышеловке. У всех одна система, не надо переучиваться, налицо только польза. А в том-то и дело, что господа маркетологи отучают людей думать. Нет, это не значит, что они плохие, они-то как раз очень хорошо справляются со своей работой, думая за других. Благодаря их работе в обществе поощряется другая система ценностей, что, на мой взгляд, неправильно. «Думать по жизни» становится уделом немногих и не модно. На что только не идёт капитализм ради получения сверхприбыли! По законам РФ, как и с точки зрения здравой логики запретить их работу нельзя, как и нельзя остановить прогресс в целом. Деятельность фирмы, предлагающей купить что-то (например, тот же ноутбук), ничему не противоречит. Проблема в том, что покупателям не позволяют сделать честный выбор, что покупать. Если изначально люди, владеющие компьютерами, вызывали уважение, так как им надо было не только этот компьютер купить вместе с программами, но и суметь его настроить, то сейчас такого глубокого уважения нет, так как пользователь может совсем не знать, как устроено то, чем он пользуется.
Цель моей статьи – показать, что не тот круче, у кого ноутбук дороже, так как я могу себе позволить купить любой продающийся, в пределах разумного, как и добрая половина администраторов, а тот, кто в него душу вложил и что-то сделал сам.
А чтобы привлечь читателей к действию, я постараюсь описать все те проблемы, с которыми столкнулся, и решить их с точки зрения наименьшего сопротивления. Вполне возможно, что у вас будет другая модель или дистрибутив, но общие принципы и подходы могут оказаться полезными и вам.
У каждого на примете будет своя модель, мне же подходящую выбирать долго не пришлось. Число продающихся моделей без операционной системы Windows и одновременно имеющихся в наличии было не так велико, поэтому мой выбор пал на Asus X51RL с процессором M540 1,86 ГГц, 2048 Мб памяти, жёстким диском 160 Гб, видеокартой ATI Radeon Xpress 1100, приводом DVD-SuperMulti DL, Wi-Fi-адаптером (Atheros ARBXB63 (AR5BXB63, AR5007EG), встроенным считывателем SD-карт и установленной системой FreeDOS.
Выбор дистрибутива
Мною был выбран дистрибутив Linux Fedora 8, как давно уже использующийся и проверенный временем, обновления к нему ещё выходят и будут выходить, так что недавний выход Fedora 9 меня не вдохновил.
Проблема загрузки
Первая проблема, с которой я столкнулся: вставил диск c Fedora 8, начинаю установку, запускается меню, после грузится ядро, подключается образ виртуального диска, пишет «Ready.» и виснет (см. рис. 1).
Рисунок 1. Зависание на этапе загрузки, после надписи «Ready.»
Осознавая, что наступает век 64-битных процессоров с обратной совместимостью, у меня закралось подозрение, что по закону подлости её как раз и нет. Скачав и записав на диск Fedora 8 (64-битная версия), я столкнулся с той же самой проблемой – зависание процесса установки на этапе распаковки ядра. Казалось бы, дело зашло в тупик. Возвращать ноутбук на фирму не хотелось, да и в собственных глазах это выглядело бы неправильно. Прийти ремонтировать «железо» по гарантии – вдруг там ошибка, надо знать на что пожаловаться. Желая протестировать подозрительное железо, порывшись у себя на столе, я обнаружил какой-то древний дистрибутив Knoppix, который возьми и заработай. Заодно с него проверил память с помощью memtest86 – сбоев нет. Данная ситуация меня вдохновила, после чего я быстро раздобыл дистрибутив «Fedora 9 beta 64 bit», который на волне удач тоже заработал и начал ставиться, не зависая на этапе распаковки ядра.
Перебирая в голове способы наиболее простого объединения двух установочных дисков в один – загрузчика и ядра с одной и всей системы с другой – и не найдя простого решения, я и моя лень стали искать в Интернете подобные случаи. И, надо сказать, правильно сделали – нашли выход.
Оказалось, что на сайте Red Hat есть Bug №239585 [1], из которого стало ясно, что во время загрузки ядру надо передать параметр «edd=skipmbr» (см. рис. 2).
Рисунок 2. Передача параметров ядру во время загрузки
Что интересно, подобное решение помогает и некоторым настольным системам, где используются жёсткие диски SATA.
В дальнейшем установка прошла без проблем. Автоматически была обнаружена сетевая карта, звуковая и даже считыватель карт SD HC заработал. Единственное, что не заработало, – это поддержка Wi-Fi.
Проблемы с Wi-Fi
На подключение Wi-Fi ушло недели две экспериментов по вечерам, но для читателей этот путь будет пройден гораздо быстрее. Первым делом я решил узнать, какой у меня стоит Wi-Fi-чипсет. Так как программы могут ошибаться, я решил узнать это физически, для чего перевернул ноутбук и осмотрел его на предмет гарантийных наклеек. Наклеек обнаружено не было, а наклейка, указывающая тип Atheros ARBXB63 (см. рис. 3), мне не помогла ничем, поэтому, вооружившись отвёрткой, я аккуратно отвинтил 7 винтов (см. рис. 4) и снял крышку. Под крышкой я увидел процессор, модули памяти и модуль Wi-Fi (см. рис. 5).
Рисунок 3. Наклейка, указывающая тип установленного Wi-Fi-устройства
Рисунок 4. Семь винтов, держащих крышку над отсеком с памятью, процессором и Wi-Fi-модулем
Рисунок 5. Внутренности ноутбука, слева внизу Wi-Fi-модуль
Так как надписи на модули не смогли прояснить ситуацию, я вытащил модуль из разъёма. Обратная сторона оказалась более информативной – это был AzureWave адаптер AW-GE780 (см. рис. 6), но для меня этой информации оказалось мало, поэтому я снял экранирующую крышку с платы и на большой микросхеме прочитал Atheros AR2425 (см. рис. 7).
Рисунок 6. PCI Express MiniCard AzureWave AW-GE780 (AR5BXB63)
Рисунок 7. Микросхема Atheros AR2425 на плате Wi-Fi-модуля
Примечание. Если вы не не радиолюбитель, не очень аккуратны и не уверены в себе, то лучше не разбирать ноутбук, а обойтись командой lspci и базой кодов оборудования, так как разборка может не только лишить вас гарантии, но и привести ноутбук в нерабочее состояние. Не забывайте про статическое электричество, заземляйтесь!
После на сайте www.atheros.com я выяснил, что это адаптер AR5007EG [8] и фотография в описании очень похожа на ту, что у меня. После чего я отправился по адресу проекта MadWifi [2], так как это неплохой проект по поддержке беспроводных сетевых адаптеров Wi-Fi под Linux на базе чипсетов Atheros. К сожалению, установка через:
# yum install madwifi
не прошла, так как для madwifi нужна была новая версия ядра 2.6.25.6-27.fc8, а в репозитариях livna и других оно ещё не присутствовало. Позже вышла новая версия 2.6.26.0-107.fc8, а у вас, читателей, может быть и ещё более свежая. Процесс понятен, выходят новые версии, обновления нужны всегда, таким образом, мною был «открыт» ресурс Rpmfind.Net Server [5]. После скачивания RPM-пакетов ядра и обновления его в системе вручную, командами:
#rpm -Fhv kernel-2.6.....rpm
установка madwifi через yum, как описано выше, не привела к нужному результату, после перезагрузки беспроводные сетевые интерфейсы обнаружены не были. То есть либо не видны и не обнаруживаются системой udev аппаратные идентификаторы (проверить можно командой lspci), либо они видны, но не загрузились нужные модули ядра по поддержке железа, либо эти модули-драйвера не смогли создать необходимый аппаратный интерфейс – псевдофайл в /dev, для этого следует проверить вывод dmesg на наличие ошибок.
Первым делом следует изучить вывод команд dmesg, lspci. Первая показывает сообщения, выдаваемые ядром во время загрузки. Когда использовались ядра серии 2.4.x и более ранние, то все сообщения быстро пробегали на экране, сейчас загрузка идёт тихо, даже если удалён пакет rhgb и нет графического интерфейса. Поэтому, если не предпринять какие-либо действия, пользователи могут и не увидеть проблемы.
Вторая показывает информацию об имеющихся PCI-устройствах. Запускать эту команду лучше с ключом -v или -vv для большей информативности.
Почему стоит начать с этих команд, а не с каких-либо других? Потому, что ситуация чем-то напоминает многоуровневую эталонную модель взаимодействия открытых систем (ЭМВОС, ISO/OSI-RM) [3, стр.66], когда не работает сеть, начинать проверять надо с самых нижних уровней, то есть с физического уровня – есть ли вообще соединение? Так и тут, первым делом надо разобраться, есть ли устройство (в нашем случае сетевая карта) в системе? Поддерживается ли она ядром?
Если устройства нет, оно не будет работать, как его ни настраивай. В моём случае я сам держал в руках сетевую карту, поэтому ситуация «нет устройства» может быть вызвана плохим контактом, что я исключаю, либо случаем «устройство выключено». Поэтому вывод lspci должен показать, включено ли устройство, а также информацию о нём. К моему счастью, адаптер у меня был обнаружен и правильно распознан:
02:00.0 Ethernet controller: Atheros
Communications Inc. AR242x 802.11abg
Wireless PCI Express Adapter (rev 01)
|
Кстати, для USB есть аналогичная команда lsusb.
Что можно сделать, если вы не видите у себя нужное устройство, но, как я, убедились, что физически оно имеется? Надо попытаться его включить.
На некоторых ноутбуках есть переключатель, который может физически отключать питание от сетевой карты, поэтому посмотрите, чтобы питание имелось. Иногда механический выключатель может быть заменён электронным собратом в виде электронной схемы с кнопочкой. У меня была как раз похожая ситуация. Более подробно далее. Считаем, что устройство включено, и поднимаемся на уровень выше.
Посмотрим, что нам выдаёт ядро. В моём случае из команды dmesg я узнал, что ядро при загрузке выдало следующую ошибку:
wifi%d: unable to attach hardware:
'Hardware revision not support
ed' (HAL status 13)
|
Для того чтобы понять, что надо делать, совсем не обязательно быть программистом. Конечно, путь изучения исходных кодов на 100% верный и надёжный, но все ли читатели хотят и умеют программировать и разбираться в железе? Конечно, нет, мир Linux тем и удобен, что полезные вещи делают несколько умных людей, а потом позволяют всем безвозмездно пользоваться их творчеством. Очень часто бывает, что вы не одиноки в вашей проблеме, поэтому поиск по словам, встречающимся в ошибке, приводит вас к решению проблемы.
Поиск привёл меня на тот же сайт MadWifi [2] и форум по Fedora [10], где в разных местах обсуждались проблемы подключения Atheros серий AR5005, AR5006, AR5007.
Было найдено несколько решений по поддержке работы адаптера:
- использовать специальную сборку madwifi;
- наложить patch на ядро и использовать драйвер ath5k;
- использовать NDISwrappers.
Самым простым путём оказался первый, так как перекомпилировать ядро мне не хотелось, а запуск Windows-драйверов под NDISwrappers, судя по сообщениям, не работал под 64-битной версией, и переставлять систему на 32-битную сборку мне тоже не хотелось. Изучая сообщения на форумах, я выяснил, что для работы люди скачивали не то, что предлагается по умолчанию, а специальные сборки, в которые для моего невезучего сетевого адаптера внесены изменения. Так я попал на страницу со специальными сборками [4]. Путём проб и ошибок я выяснил, что для моего ноутбука нужна версия madwifi-hal-0.10.5.6-r3698-20080604. (В процессе написания статьи коллеги сообщили, что к их адаптеру AR5006EG в ASUS Eee PC подходит версия madwifi-ng-r2756+ar5007.)
Поэтому мы выбираем или угадываем, скачиваем, распаковываем нужную версию и запускаем две команды:
# make
# make install
которые решили мои проблемы.
После перезагружаемся или даём команду:
# depmod -a
и выключаем-включаем адаптер, должен появиться интерфейс wlan0, после чего станет возможным его настроить с помощью iwconfig. Проблема решена.
Если вы сразу установили компилятор gcc и заголовки ядра в процессе установки, то первый путь наиболее простой, но не всегда удачный, как может показаться, так как выбранная сборка может у вас не заработать. Несмотря на это, я выбрал этот путь, так как в процессе достижения конечной цели мне удалось узнать несколько интересных вещей, а именно...
Интересное
В моём ноутбуке есть индикатор Wi-Fi, который, как выяснилось, работает автономно. Свечение индикатора можно включать (если при загрузке ядра есть поддержка asus-laptop, см. вывод dmesg) командой:
echo "1">/sys/devices/platform/asus-laptop/wlan
и выключать:
echo "0">/sys/devices/platform/asus-laptop/wlan
Как ни странно, горит лампочка или нет, на работе никак не отражается. Задавшись вопросом, а как сделать управление лампочками более удобным, я нашёл в сети проект «Lapsus – Linux on laptops» [6] для ноутбуков Asus. Небольшая программа, позволяющая в графическом режиме управлять индикаторами. Её недостаток в том, что пока она работает только под KDE.
Аналогичные программы есть и под другие ноутбуки. Например, для Acer существует поддержка специальных дополнительных кнопок [8].
Заключение
Хочется верить, что читатель нашёл полезное в статье либо задумался об установке Linux на ноутбук. Если так, то ещё один ресурс может оказаться полезным [7].
В статье оказались незатронутыми вопросы настройки ACPI, как и многие другие интересные моменты, касающиеся поддержки различных «горячих клавиш» и других вещей.
Пересечение мира Linux и ноутбуков безгранично. Считаю, что начало проложено, а остальное за вами, читателями и будущими авторами! Есть мысли? – пишите в редакцию, будет повод открыть раздел «Linux на ноутбуке».
- Bugzilla Bug 239585: F8 CD/DVD hangs with message «Ready» – https://bugzilla.redhat.com/show_bug.cgi?id=239585.
- Проект MadWifi. Подключение беспроводных сетевых адаптеров под Linux – http://madwifi.org.
- Компьютерные сети. Принципы, технологии, протоколы. /В.Г. Олифер, Н.А. Олифер – СПб: Питер, 2001 г.
- MadWifi Archive of special-purpose snapshots – http://snapshots.madwifi.org/special.
- Сайт, где можно найти различные RPM пакеты – http://rpmfind.net.
- Lapsus – Linux on laptops – http://lapsus.berlios.de.
- Linux on Laptops – http://www.linux-laptop.net.
- Acer Hotkey driver for Linux – http://www.cakey.de/acerhk.
- Описание AR5007EG (AR2425) – http://www.atheros.com/pt/bulletins/AR5007EGBulletin.pdf.
- Обсуждение на форуме Atheros AR5007EG/AR5BXB63 – http://forums.fedoraforum.org/showthread.php?t=174186.
- Сайт проекта NDISwrapper – http://ndiswrapper.sourceforge.net.