Обустройство пингвинария: IBM ThinkPad notebook
Вячеслав Логачев, оригинал
Установить ОС Linux на портативный компьютер не так просто - ведь почти все устройства в нем интегрированы и довольно специфичны
- Мужик, ты чем занимаешься?
- Кроликов развожу.
- Лохов надо разводить, лохов.
Народное творчество
С немалым удивлением и восхищением наблюдаем мы за ростом популярности операционной системы Linux. Еще пять лет назад ни один аналитик не предполагал, что она будет теснить своих конкурентов не только в качестве серверной операционной системы, но и в качестве пользовательской. Системные требования Linux к аппаратному обеспечению невысоки, поэтому его можно установить на все, что подвернется под руку,- например, на ноутбук. Тем более что существует вторичный рынок компьютерной техники - и обладателем ноутбука сейчас можно стать без оглядки на его стоимость.
Но установить OC Linux на портативный компьютер сложнее, так как почти все устройства в нем интегрированы и довольно специфичны.
Поэтому, закончив установку и настройку ASPLinux на свой ноутбук IBM ThinkPad 600, я подумал - жаль тратить время других людей, которые тоже будут устанавливать эту операционку на свой ноутбук. Почему бы не упростить жизнь и себе (может, когда переустанавливать буду), и другим. Пожалуйста...
Конфигурация IBM ThinkPad 600(E) |
модель: IBM ThinkPad 600(E), Type 2645-41U;
процессор: Pentium II 233 МГц (512 Кб);
оперативная память: 224 Мб RAM;
жесткий диск: 3,2 Гб;
экран: 13.3 XGA TFT (1024 x 768);
CD-ROM: 24X;
модем: 56 K, встроенный (ACP);
сетевой адаптер: 3Com 10Base-T PCMCIA card (3C589D-TP). |
Подготовка
Из множества представленных на нашем рынке разновидностей OC Linux выбор пал на ASPLinux. Этот дистрибутив появился пару лет назад, он разработан на базе RedHat Linux. Преимуществом этого продукта является качественная русификация системы и документация. Да и наличие большого количества программ для пакета RedHat стало дополнительным стимулом для установки именно ASPLinux.
Условные обозначения: |
$ - приглашение командного процессора для пользователя;
# - приглашение командного процессора для администратора;
<3.2> - версия пакета. На момент выхода статьи может быть большей. При вводе команд скобки необходимо пропускать. |
Все описываемые ниже действия были проверены для версий 7.2 (Байкал) и 7.3 (Восток). Процесс установки операционной системы достаточно хорошо описан в документации к дистрибутиву, поэтому будем считать, что собственно установка ASPLinux произведена, и необходимо выполнить только настройку отдельных компонент - звука, видео и т.п.
Исходные данные: |
загрузчик операционной системы - LiLo;
при установке выбран режим "графический" (что соответствует пятому уровню исполнения);
оконный менеджер - КДЕ;
все действия выполняются от имени администратора "root".
|
Первое включение после установки
Если в ноутбуке установлено более 64 Мб оперативной памяти, необходимо сообщить об этом ядру при загрузке. Для этого при каждом включении или перезагрузке следует после появления приглашения boot: ввести строку:
boot: linux-V.V.V append "mem=xxK"
|
где linux-V.V.V - это название загружаемого ядра (соответствует значению label в /etc/lilo.conf), а xxK - это количество оперативной памяти, установленной в ноутбуке (рассчитывается по формуле:
xK=1024*n-576
где n - количество памяти в мегабайтах).
У нас имеется 224 Мб. Соответственно, значение xK равно:
1024 x 224 - 576 = 228800
Таким образом, строка для приглашения будет выглядеть так:
boot: linux-2.4.9 append "mem=228800K"
|
Для того чтобы не производить эти действия каждый раз, необходимо изменить конфигурационный файл /etc/lilo.conf. В данном случае была добавлена строка:
После внесения в конфигурационный файл изменений необходимо выполнить команду lilo - иначе изменения не вступят в силу.
Настройка параметров ноутбука
Далее речь пойдет о специфических настройках, которые необходимы только для ноутбуков компании IBM. Каждый производитель компьютерной техники стремится расширить спектр настроек своего оборудования, чтобы конечный пользователь мог изменять не только стандартные параметры (такие как яркость и контрастность монитора), но и более специфичные настройки: режимы работы IR-порта, жесткого диска и т.п. Для того чтобы воспользоваться этими возможностями в OC Linux, необходимо установить пакеты с драйверами и утилитами. Список поддерживаемых моделей ноутбуков можно найти внутри рассматриваемых пакетов. Сначала необходимо скачать пакеты из интернета.
Понадобятся следующие пакеты:
- thinkpad_<3.7>.tar.gz (драйверы, необходимые для работы с содержимым CMOS);
- tpctl_<3.7>.tar.gz (утилита, обеспечивающая доступ и изменение памяти CMOS).
Для установки необходимо перейти в директорию с сохраненными пакетами, скопировать их в папку /usr/src и распаковать, выполнив следующую последовательность команд:
# /bin/cp./thinkpad_<3.7>.tar.gz /usr/src
# /bin/cp./tpctl_<3.7>.tar.gz /usr/src
# cd /usr/src
# /bin/tar xvfz./thinkpad_<3.7>.tar.gz
# /bin/tar xvfz./tpctl_<3.7>.tar.gz
|
Следующим шагом будет установка драйверов:
# cd thinkpad-<3.7>
# /usr/bin/make all
# /usr/bin/make install
|
После того как драйверы скомпилированы и установлены в директорию /lib/modules/<2.4.9-13>/thinkpad, создаем новое устройство в системе /dev/thinkpad. Это можно сделать посредством следующей команды:
# /bin/mknod --mode=644 /dev/thinkpad c 10 170
|
Для установки утилиты tpctl нужно выполнить следующую последовательность команд:
# cd /usr/src/tpctl-<3.7>
# /usr/bin/make all
# /usr/bin/make install
|
Результатом выполненных действий станут скомпилированные программы tpctl и ntpctl, которые можно найти в папке /usr/bin. В папке же /usr/lib будет находиться скомпилированная библиотека - libsmapidev.so.1.
После этого необходимо добавить в файл /etc/modules.conf следующие строки:
keep
path [thinkpad]=/lib/modules/`uname -r`/thinkpad
options thinkpad enable_smapi=1 enable_superio=1
enable_rtcmosram=1 enable_thinkpadpm=1
alias char-major-10-170 thinkpad
alias /dev/thinkpad thinkpad
alias /dev/thinkpad/thinkpad thinkpad
alias /dev/thinkpad/smapi smapi
alias /dev/thinkpad/superio superio
alias /dev/thinkpad/rtcmosram rtcmosram
alias /dev/thinkpad/thinkpadpm thinkpadpm
|
После добавления вышеописанных строк необходимо выполнить команду:
Этой командой подгружаются драйвера для работы с памятью CMOS ноутбука. Проверить правильность выполненных действий и - как следствие - корректности загрузки драйвера, можно одной из утилит tpctl или ntpctl:
или
Если программы работают, значит, драйвер загружается корректно. Во время работы данных утилит можно выполнить команду:
Должны появиться следующие строки (или им подобные):
smapi 2756 0 (autoclean)
thinkpad 2852 1 (autoclean) [smapi]
|
С помощью указанных утилит предоставляется возможность настройки параметров ноутбука (параметры экрана, порты и т.п.).
На момент написания статьи последней версией была 4.1 для ядра версии 2.4.19 и выше.
Настройка звука
Для настройки драйверов звукового устройства в операционной системе должен быть установлен пакет sndconfig. В противном случае необходимо установить его с помощью графической утилиты менеджера пакетов (GnoRPM или Kpackage). Или из командной строки, выполнив команду в окне эмулятора терминала:
# /bin/rpm -Uhv./sndconfig-<0.65.2-1>.i386.rpm
|
Для настройки звуковой платы следует запустить программу-конфигуратор звукового устройства:
Первое, что появится, это окно приветствия. Поскольку в данном ноутбуке интегрирована звуковая плата ISA, то после нажатия кнопки "Оk" программа начнет искать - и безрезультатно - устройства PNP и PCI. После чего будет предложено выбрать тип звуковой карты из имеющегося списка. Необходимо выбрать Crystal CS423x sound chip и установить затем его параметры. Приведу примеры параметров, которые устанавливаются по умолчанию:
Port io = 530
IRQ = 5
DMA1 = 1
DMA2 = 0
MPU io = 330
MPU irq = 9
|
После этих установок и нажатия кнопки "Ok" программа попробует загрузить драйвер выбранного устройства с указанными параметрами. Если последние заданы правильно, будет предложено прослушать звуковое приветствие и ответить на вопрос, слышали ли вы его. Затем пользователю предложат прослушать MIDI-фрагмент и, опять-таки, подтвердить его прослушивание. После этого в файл /etc/modules. conf будут добавлены следующие строки:
alias sound-slot-0 cs4232
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc
-L >/dev/null 2>&1 ||:
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S
>/dev/null 2>&1 ||:
options sound dmabuf=1
alias synth0 opl3
options opl3 io=0x388
options cs4232 io=0x530 irq=5 dma=1 dma2=0 mpuio=0x330 mpuirq=9
|
А в файл /etc/sysconfig/soundcard будет добавлена строка:
Несмотря на то что установка драйвера прошла успешно и вы услышали звуковое приветствие, при последующей загрузке может возникнуть проблема с "заиканием" звуковой платы. Для устранения этого дефекта необходимо перезагрузить драйвер. Чтобы не делать это после каждой загрузки, можно создать скрипт с именем cs4232, выполнив следующие действия:
#!/bin/bash
# chkconfig: 345 84 16
# description: Starts/stops the CS4232 driver at boot time and shutdown
HOME=/etc
case "$1" in
start)
echo "Starting CS4232 driver"
rmmod cs4232
modprobe cs4232
;;
stop)
echo "Stopping CS4232 driver"
rmmod cs4232
;;
restart)
$0 stop
$0 start
;;
status)
echo "Status (NO-OP)"
;;
*)
echo "Usage: cs4232 {start|stop|status|restart}"
exit 1
esac
exit 0
|
Скрипт помещаем в каталог /etc/rc.d/init.d.
Далее необходимо запустить графическую утилиту редактора скриптов SysV (ksysv) или ее консольный вариант - ntsysv:
# /usr/sbin/ntsysv -levels 5
|
После запуска утилиты появится колонка, соответствующая заданному уровню загрузки - пятому. Необходимо пометить скрипт cs4232, чтобы он выполнялся при загрузке операционной системы.
При запуске графической утилиты ksysv вы увидите окно с семью уровнями запуска: от 0 до 6. Чтобы поместить скрипт cs4232 в исполняемые при запуске, нужно перетянуть его и колонки "Доступные сервисы" в колонку "Уровень запуска 5". Порядковый номер запуска следует установить равным 84 (согласно рекомендациям разработчиков).
Настройка модема
Закончив со звуковой картой, можно заняться интегрированным модемом.
Вся программная часть внутреннего модема вынесена в приложение, которое исполняется в операционной системе - в отличие от внешних модемов, которые содержат некоторую часть программной реализации.
Сотрудники фирмы IBM не бросили свое детище (в смысле ноутбук) на произвол судьбы и написали для него драйвер для DSP-модема. Вследствие чего имеем Linmodem.
Загрузить пакет с драйвером можно с сайта IBM - в разделе Download the ACP Modem driver необходимо выбрать пункт Current source code. Затем его следует распаковать и сконфигурировать. В первый раз желательно оставить все конфигурационные файлы без изменений и выполнить следующие команды:
# tar zxvf mwavem-<1.0.3>.i386.tar.gz
# cd mwavem-<1.0.3>
#./configure -enable-mwavedd
|
Во время выполнения команды может возникнуть ошибка с сообщением "Не найден каталог /usr/src/linux" - она устраняется созданием символической ссылки на существующее ядро:
# /bin/ln -s /usr/src/linux-<2.4.9-13> /usr/src/linux
|
А затем необходимо скомпилировать и установить драйвер:
После этого в системе, помимо файлов различных программ и утилит, будет создано устройство /dev/modems/mwave и драйвер /lib/modules/<2.4.9-13>custom/kernel/drivers/char/mwave/mwave.o. Далее необходимо скопировать папку с драйвером mwave. o в /lib/modules/<2.4.9-13>/kernel/drivers/char, а папку /lib/modules/<2.4.9-13>custom/ со всем ее содержимым удалить.
Затем нужно выполнить команду, которая перенастроит файл описания драйверов /lib/modules/<2.4.9-13>/modules.dep:
# cd /lib/modules/<2.4.9-13>
# /sbin/depmod
|
Перейдем к созданию устройства /dev/modems/mwave и редактированию конфигурационного файла /usr/local/etc/mwavem.conf.
В разделе [WORLDTRADE] необходимо установить значение переменной Country равным 7, что соответствует стране "Россия". Поскольку переменной "Украина" в этом списке нет, остановимся на таком варианте.
Теперь загрузим драйвер mwave:
Проверим его:
Если выводится строка:
значит, драйвер модема загрузился успешно, в таком случае два следующих абзаца можно пропустить и переходить к установке скрипта mwaved.
Если же указанная строка не вывелась на консоль, то, вероятнее всего, возникла ошибка, связанная с неверно установленными значениями irq и io. Для данной модели ноутбука методом проб и ошибок было выявлено, что устройством, "мешающим" загрузке драйвера mwave, является pcmcia-контроллер. Проверить это можно, запустив утилиту редактор скриптов (ntsysv или ksysv) и удалив из пятого уровня загрузки скрипт поддержки pcmcia-контроллера (который так и называется - PCMCIA).
Для чистоты эксперимента следует перезагрузить компьютер, а затем выполнить команду:
Скорее всего, после этого драйвер загрузится. Проверить это можно с помощью команды lsmod. Если же произошло невероятное и выдается сообщение об ошибке, отчаиваться не стоит. Нужно проанализировать содержание файлов /proc/ioports, /proc/dma, /proc/interrupts и определить, какое устройство все-таки "мешает" работать mwave. Измените значения параметров загрузки драйвера (используйте свободные значения io, dma, irq) - и попробуйте еще раз.
Итак, драйвер загружается. Можно считать, что полдела сделано. Предстоит добавить скрипт, который будет загружать модуль mwave при каждом старте OC LINUX. Для этого необходимо скопировать /mwavem-1.0.3/src/mwavem/mwaved в папку /etc/rc.d/init.d. Далее запускаем утилиту ntsysv (ksysv) и добавляем в требуемый уровень загрузки скрипт mwaved с порядковым номером 30 (согласно рекомендациям авторов).
Чтобы драйверы pcmcia и mwaved заработали совместно, необходимо в файле /etc/pcmcia/config.opts убрать символ комментария ("#") перед строкой:
Эта строка указывает скрипту, устанавливающему драйвер pcmcia, что третье прерывание (irq 3) использовать не нужно, так как оно зарезервировано для использования другим устройством.
Теперь следует запустить утилиту ntsysv (ksysv) и вернуть скрипт pcmcia на прежнее место (номер 45). После перезагрузки ноутбука можно проверить, как драйверы устройств ведут себя при одновременной загрузке. Подтверждением успешной загрузки скриптов будет слово "Ok" в строке каждого устройства - и pcmcia, и mwave.
После успешной загрузки драйверов может возникнуть проблема с сетевой картой 3COM 589 - если она "возжелает" занять десятое прерывание (irq 10). Проверить, активен сетевой интерфейс или нет, можно командой, которая показывает состояние всех сетевых интерфейсов:
Если сетевая карта конфликтует с mwave-модемом, необходимо проверить, какие прерывания заняты, а какие свободны. Это можно увидеть, просмотрев содержимое файла /proc/interrupts:
# /bin/cat/proc/interrupts
|
Но вернемся к редактированию файла /etc/pcmcia/config.opts. Если параллельный порт не используется, а в файле /etc/pcmcia/config.opts присутствует строка:
значит, седьмое прерывание (irq 7) зарезервировано и его можно использовать для другого устройства. Достаточно закомментировать эту строку, добавив в начало строки символ "#". Для того чтобы драйвер сетевой карты не пытался занять десятое прерывание (irq 10) необходимо добавить в файл следующую строку:
После этих действий конфликт прерываний должен быть устранен.
Вернемся теперь к настройке модема и создадим "мягкую" ссылку на устройство /dev/ttyS1:
# /bin/ln -s /dev/ttyS1 /dev/modem
|
Для проверки работоспособности модема воспользуемся программой minicom. Ее необходимо выполнить c параметром -s, который позволит настроить программу сразу после ее запуска.
В появившемся окне configuration следует выбрать строку Serial port setup. Возникнет окно, отображающее текущие настройки. Они должны быть следующего содержания:
A - Serial Device: /dev/modem
....
E - Bps/Par/Bits: 38400 8N1
F - Hardware Flow Control: Yes
G - Software Flow Control: No
|
После нажатия клавиши <Enter> и выбора строки Exit происходит инициализация модема. Если она прошла успешно, можно позвонить какому-нибудь провайдеру посредством команды:
где ATDP - команда набора номера в пульсовом режиме, а 1111111 - номер телефона.
В случае успешного соединения через некоторое время вы должны увидеть строку:
Это означает, что модем работает и соединение установлено.
Но может сложиться ситуация, когда модем начнет "общаться", но через 3-4 секунды "зависает", издавая пронзительный писк. При этом звук не слышен через динамики ноутбука. Реанимировать его можно лишь перезагрузкой всей OC. Если у вас происходит описанная ситуация, необходимо исправить раздел [STARTUP] конфигурационного файла /usr/local/etc/mwavem.conf. Строка скорости должна выглядеть так:
После этих изменений все должно успешно заработать.
Настройка видео
Перейдем к настройке графического экрана. За нее отвечает один из двух файлов - /etc/X11/XF86Config и /etc/X11/XF86Config-4. Первый - за настройки Х-сервера версии 3, а второй - Х-сервера версии 4.
В выбранном дистрибутиве ASPLinux по умолчанию используется X-сервер версии 4. Для настройки графического режима рекомендуется воспользоваться программой Xconfigurator. Эта утилита запускается из текстовой консоли, чтобы иметь возможность запустить Х-сервер и протестировать его в заданном режиме. Так как, согласно исходным данным, мы работаем в графическом режиме, то для успешной работы программы необходимо из него выйти. Для этого надо выбрать пункт Выйти в выпадающем меню, которое появится после нажатия кнопки <К>. Когда появится приглашение для входа в систему, следует нажать сочетание клавиш <Ctrl> + <Alt> + <F1> для перехода в консольный режим.
После успешного прохождения авторизации в качестве пользователя root, можно запускать конфигурационную утилиту Xconfigurator:
# /usr/X11R6/bin/Xconfigurator
|
Первым появится приветствие. Следующее окно содержит сведения об обнаруженном видеоустройстве, X-сервере и драйвере. Затем предлагается определиться с монитором. Следует выбрать строку IBM 9513 T55A TFT. Допустимый диапазон частот вертикальной и горизонтальной разверток, выбранного типа, составляют 30-61 кГц и 56-75 кГц, что полностью соответствует рабочим характеристикам TFT-матрицы данного ноутбука. После этого откроется окно, предлагающее провести тестирование и определить оптимальное разрешение и глубину цвета для ноутбука. После нажатия кнопки "Проверить" экран начнет мигать и переключаться в различные режимы. В результате этого тестирования программа предложит использовать разрешение экрана 1024 x 768 с количеством цветов 16 бит на пиксель. Принять это предложением можно, нажав кнопку Использовать настройки по умолчанию. Затем появится предупреждение о том, что утилита запустит Х-сервер для проверки созданной конфигурации. Откроется графический экран. Потребуется подтверждение того, что изображение функционирует нормально (кнопка <Оk>). Программа закроет этот экран и, вернувшись в консольный режим, предложит автоматически запускать Х-сессию при каждой загрузке. Для загрузки операционной системы в графическом режиме следует согласиться - иначе в следующий раз ноутбук загрузится в режиме 3 (текстовый).
Далее все произведенные настройки сохранятся - и программа закончит свою работу.
Последний штрих
В заключение хотелось бы обратить внимание на утилиту, которая позволяет полнофункционально использовать TrackPoint (заменитель мыши, расположенный посреди клавиатуры и используемый для управления курсором). Эта утилита доступна здесь.
Однако в данной статье процесс ее установки и настройки не описывается - по причине того что данная утилита работает не со всеми моделями ноутбуков IBM, оснащенными TrackPoint.
Конфигурационный файл Xconfigurator после внесения изменений |
# XFree86 4.0 configuration generated by Xconfigurator
Section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection
Section "Files"
FontPath "unix/:7100"
EndSection
Section "Module"
Load "dbe" # Double-buffering
Load "GLcore" # OpenGL support
Load "dri" # Direct rendering infrastructure
Load "glx" # OpenGL X protocol interface
Load "extmod" # Misc. required extensions
Load "v4l" # Video4Linux
Load "type1" # Type1 fonts support
# Load "pex5" # PHIGS for X 3D environment (obsolete)
# Load "record" # X event recorder
# Load "xie" # X Image Extension (obsolete)
# You only need the following two modules if you do not use xfs.
# Load "freetype" # TrueType font handler
# Load "type1" # Adobe Type 1 font handler
EndSection
Section "InputDevice"
Identifier "Keyboard0"
Driver "keyboard"
Option "XkbLayout" "ru"
Option "XkbOptions" "grp: ctrl_shift_toggle, grp_led: scroll"
EndSection
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/mouse"
Option "Protocol" "PS/2"
Option "Emulate3Buttons" "on"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "IBM 9513 T55A TFT Monitor"
VendorName "Unknown"
ModelName "Unknown"
HorizSync 30.0-61.0
VertRefresh 56.0-75.0
Option "dpms"
EndSection
Section "Device"
Identifier "Neomagic Corporation|NM2160 [MagicGraph "
Driver "neomagic"
BoardName "Unknown"
Option "externDisp"
Option "internDisp"
Option "XaaNoScanlineImageWriteRect"
Option "XaaNoScanlineCPUToScreenColorExpandFill"
EndSection
Section "Device"
Identifier "Linux Frame Buffer"
Driver "fbdev"
BoardName "Unknown"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Neomagic Corporation|NM2160 [MagicGraph "
Monitor "IBM 9513 T55A TFT Monitor"
DefaultDepth 16
Subsection "Display"
Depth 16
Modes "1024x768"
EndSubSection
EndSection
Section "DRI"
Mode 0666
EndSection |