Ключевые слова:linux, notebook, (найти похожие документы)
From: Вячеслав Калошин <[email protected]>
Newsgroups: http://linuxnews.ru/docs/new/rover/notebook.txt
Date: Mon, 29 Dec 2002 13:01:37 +0000 (UTC)
Subject: Установка Linux на RoverBook
Купил я тут со скуки (дома книжки все перечитаны, телевизора нет, жены уже
нет и вообще тихо) ноутбук. Относительно дешевый ноутбук от Clevo, который
успешно маскируется под отечественный Roverbook Voyager KT5. Продали мне
его аж с лицензионной WinXP HE. Поглядел я на это со всех сторон и решил
поставить все-таки туда линукс. Во-первых, привычнее, а во-вторых, mplayer
играет кино на порядок чище и лучше (Media Player заикается и теряет кадры,
хотя с какого перепугу он это делает - я так и не понял).
Итак, как вы поняли, эта статья посвящена установке linux на ноутбук. То, что
я взял для острастки именно ровер - не имеет значения. Те же действия
я делал со всеми своими ноутами. А их прошло через мои руки штук семь,
не меньше. Три тошибы, два ибм, два ровера и по одному асусу с деллом. Во,
получается девять. На всех с тем или иным успехом стоял линукс.
Как обычно, отмазка: Это писалось в расчете на тех людей, которые не ищут
везде linuxconf и смогут если что, поправить текстовый файл без участия
midnight commander и прочих штучек.
БОЛЬШАЯ ОТМАЗКА: Я грохнул на этот ноут половину декабря, танцуя с бубном
вокруг него. Но это не значит, что я плохо танцую ;). Это значит,
что я специально наступил на все грабли, на которые можно наступить в
этой области. И специально их записывал. Пользуйтесь поисковиками и
пропустите кучу грабель.
Вроде как начало. "Откуда есть пошла земля ноутбучная ..."
Ноутбуки - это довольно хитрые машинки. С одной стороны, задачу облегчает
тот факт, что у всех ноутбуков в пределах одной модели одно и то
же железо, поэтому найти таких же счастливцев не составляет особого труда.
Взять хотя бы сайт http://linux-laptop.net/ - на нем собрано очень
много ссылок на процесс установки linux на разные ноуты. Но с другой стороны,
железо, применяемое в ноутах, иногда настолько экзотично, что бесполезно
к нему даже подступаться с какой-то стороны ...
Как и везде, в linux на ноутбуках есть три стадии поддержки железа. Первая -
это когда все и везде работает с нативной поддержкой. Вторая - это когда
работает, но через обходные пути или с применением трюков. Третья - когда не
работает и работать не будет. У меня в третью стадию пока попадали только
IrDA чипсеты от Texas Instruments.
Ладно, не будем растекаться мыслями по матрице, приступим. Вам необходимо
иметь ноутбук и свой любимый дистрибутив в полном комплекте. В данном
случае я использовал RedHat 7.3.
Да, чуть не забыл. Не всегда вам удасться наступить на все те грабли,
на которые я наступил специально, а может, удасться наступить на те грабли,
на которые я не наступал еще. В общем, это было последнее предупреждение.
Первый этап. "Лишь бы взлететь, а там поглядим ..."
Тут я напарывался на две проблемы. Либо машина не умеет загружаться с CDROM,
либо умеет, но неправильно. Первая проблема характерна для старых ноутбуков,
которые просто не подозревают, что можно загрузиться с компакт-диска. Решение
тривиально - делаем загрузочую дискету и загружаемся. Вторая проблема
сложнее. Я один раз работал с относительно новой тошибой, которая без проблем
загружалась со своих rescue дисков, но наотрез отказывалась воспринимать
любой диск из серии "все в одном" или linux. Это обходится тоже довольно
просто - создается раздел на диске, туда ставится виндовс (дос для
разбирающихся) и рядом ложится полный дистрибутив или загрузчик. К примеру,
с помощью asplinux такое обходится очень легко.
На текущем ровере никаких таких проблем нет, поэтому просто выставляем в биосе
загрузку с компакт-диска и загружаемся.
Так как в 99% случаев конфигуратор не распознает все в ноутбуке, я ставлю
дистрибутив, просто разметив диск и подгоняя его хворостиной. Если
говорить грубо, то я размечаю диск так, как я хочу, говорю ставить все
для девелопмента и ядра с исходниками, запрещаю графический логин и убираю
всякие свистульки типа grub, asploader - lilo привычнее. Главное на этом
этапе - поставить линукс на ноут так, что бы он стоял. Пусть он не видит
модема, видео и всего остального - не беда. Главное, что бы он загружался и
видел привод компакт-дисков. Если он что другое увидит - это будет просто
в плюс.
На этом этапе я сталкивался только с одной проблемой - на слабых машинах для
инсталлятора не хватало памяти. Выход простой - вручную (все дистрибутивы дают
на этапе инсталляции свободную консоль) создать своп и подключить
его. Главное - потом не забыть запретить инсталлятору трогать его.
Второй этап. "Накачивание мускулов"
Этот этап одновременно самый простой и не самый простой. Вам необходимо
обновить дистрибутив до современного состояния. Конечно, можно этот этап
пропустить, но тогда можно напороться на ситуацию, когда пытаешься заставить
работать железку, к которой драйвер лежит в обновлениях. Тут пригодится
привод компакт дисков или работающий сетевой адаптер. Если есть возможность,
попробуйте воткнуть в PCMCIA сетевую карточку - очень много шансов, что
линукс ее подхватит на лету. В общем, не мне вас учить, как обновить
свой дистрибутив до современного состояния.
Итак, дистрибутив обновлен, стоит и загружается без проблем (ну или с легкой
руганью на какие-нибудь ошибки в периферии). Переходим к следующему этапу:
Третий этап. "Кто я? Что я? Где я?".
Определяем, что в ноутбуке видит linux и как это соотносится с реальной
жизнью. Здесь есть несколько подводных камней. Первый камень - linux не видит
то, что есть в ноутбуке. Второй - linux видит то, чего нет. Конфликты
разрешаются путем визуального осмотра ноутбука.
Первичный осмотр я начинаю с команды dmesg|less в консоли. Пойдем по порядку:
Linux version 2.4.18-19.7.x ([email protected]) (gcc version
2.96 20000731 (Red Hat Linux 7.3 2.96-112)) #1 Thu Dec 12 07:49:19 EST 2002
Факт. Именно на это ядро я проапгрейдил красную шляпу.
112MB LOWMEM available.
Да, памяти мало, но именно столько, сколько на самом деле. Если это не так,
попробуйте передать ядру через опцию mem= реальное количество.
CPU: Intel(R) Celeron(R) CPU 1.70GHz stepping 03
Так, процессор определен правильно. Значит, и всякие фишки тоже на нужном
месте будут.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Это всего лишь означает, что никаких ISA карт, поддерживающих PNP, не найдено.
Для данного ноутбука - это логично. Для старых - обычно звук сидит на ISA.
vesafb: framebuffer at 0xf0000000, mapped to 0xc780d000, size 16384k
vesafb: mode is 1024x768x16, linelength=2048, pages=4
vesafb: protected mode interface info at cbc5:0004
vesafb: scrolling: redraw
vesafb: directcolor: size=0:5:6:5, shift=0:11:5:0
Console: switching to colour frame buffer device 128x48
fb0: VESA VGA frame buffer device
Это я переключил вывод ядра в графику 1024x768x16 добвалением команды vga=791
при обновлении ядра и правке /etc/lilo.conf. Как видите, переход в
графику завершен успешно. Визуально это выглядит, как появление пингвина
в левом верхнем углу. Подробнее об этом читайте в документации на ядро.
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SER
IAL_PCI ISAPNP enabled
ttyS1 at 0x02f8 (irq = 3) is a 8250
Очень подозрительная строчка. Выходов последовательного порта у моего ноутбука
нет. Будем надеяться, что это так проявил себя SIR IrDA. На другом ровере
было еще лучше - там в чипсете было два полноценных порта, которые
просто напросто не были разведены на плате. Линукс их видел, делал с ними
все что угодно, но толку от этого было ноль ;-).
PCI: Enabling device 00:02.6 (0000 -> 0001)
PCI: No IRQ known for interrupt pin C of device 00:02.6. Please try using pci=bi
osirq
Это означает, что линукс не понял, где и на что откликается это устройство. Как
мы увидим дальше, это Winmodem от SmartLink'а ...
hda: TOSHIBA MK2018GAP, ATA DISK drive
hdc: QSI CD-ROM SCR-242, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: 39070080 sectors (20004 MB), CHS=2432/255/63, UDMA(100)
ide-floppy driver 0.99.newide
Ура! Линукс прекрасно распознал все шпинделя в ноутбуке и сам включил все, что
полагается.
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
usb-ohci.c: USB OHCI at membase 0xc8866000, IRQ 11
usb-ohci.c: usb-00:02.2, Silicon Integrated Systems [SiS] 7001
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 3 ports detected
usb-ohci.c: USB OHCI at membase 0xc8868000, IRQ 10
usb-ohci.c: usb-00:02.3, Silicon Integrated Systems [SiS] 7001 (#2)
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 3 ports detected
Так. Вот еще один конфликт. Сзади у ноута всего лишь два разьема USB. Линуксу
же контроллеры сказали, что у него их 6. Но это не беда. Лишние порты
так и останутся фантомными и нигде не помешают.
8139too Fast Ethernet driver 0.9.25
PCI: Enabling device 00:0a.0 (0000 -> 0003)
PCI: Found IRQ 11 for device 00:0a.0
divert: allocating divert_blk for eth0
eth0: RealTek RTL8139 Fast Ethernet at 0xc8885000, 00:90:f5:18:c0:26, IRQ 11
eth0: Identified 8139 chip type 'RTL-8139C'
eth0: Setting 100mbps full-duplex based on auto-negotiated partner ability 45e1.
Вот и сеть завелась. Благо в этом ровере стоит честный реалтек. Но и в других
ноутах стоит обычно что-нибудь по умолчанию поддерживамое линуксом. По крайней
мере я тут проблем не встречал.
Все. На этом все закончилось. Приступаем ко второй части. То есть смотрим на
устройства с другой стороны.
В моем ноутбуке по определению нет ISA устройств, поэтому pnpdump я пропускаю.
Кому интересно, прочитайте man isapnp - там все довольно понятно. На крайний
случай попройтесь на linuxnews в разделе документация - я о конфигурировании
ISA PnP карт уже писал.
Поглядим, что у нас есть из PCI. Даем команду lspci
[root@multnote root]# lspci
00:00.0 Host bridge: Silicon Integrated Systems [SiS]: Unknown device 0650
(rev 01)
00:01.0 PCI bridge: Silicon Integrated Systems [SiS] 5591/5592 AGP
00:02.0 ISA bridge: Silicon Integrated Systems [SiS] 85C503/5513
00:02.2 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 07)
00:02.3 USB Controller: Silicon Integrated Systems [SiS] 7001 (rev 07)
00:02.5 IDE interface: Silicon Integrated Systems [SiS] 5513 [IDE] (rev d0)
00:02.6 Modem: Silicon Integrated Systems [SiS] 56k Winmodem (Smart Link
HAMR5600 compatible) (rev a0)
00:02.7 Multimedia audio controller: Silicon Integrated Systems [SiS] SiS7012
PCI Audio Accelerator (rev a0)
00:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C
(rev 10)
00:0b.0 FireWire (IEEE 1394): Texas Instruments TSB43AB21 IEEE-1394 Controller
(PHY/Link) 1394a-2000
00:0c.0 CardBus bridge: ENE Technology Inc: Unknown device 1410
01:00.0 VGA compatible controller: Silicon Integrated Systems [SiS]: Unknown
device 6325
Первым у нас идет системный чипсет. Линукс понял, что это Sis, но модель (650)
не знает. Это в принципе плохо, но на реальной работе никак не сказывается.
Затем следуют PCI и ISA мосты. Тут все в порядке, как и с USB и IDE
контроллерами.
Следующим идет модем. Система его знает, но проинициализировать не смогла
(это я сужу по dmesg). В принципе не логично, но поглядим.
Звук. Про звук мы знаем. Это хорошо. Попробовав на соседней консоли sndconfig,
убеждаемся, что нам показывают фигу, говорят, что он отключен. Опять верно. Ибо
у Sis звук вместе с модемом идет. Надо тоже пинать.
Сетевая работат, это уже проверили. FireWire ... может он и работает. Но у меня
нечем проверить.
CardBus bridge. Как не работает ? Сую в слот pcmcia карточку и не слышу никаких
писков и вообще все тихо. Первый в очередь на разборки.
Видео. Аналогично. Вторая в очередь.
Оглядываем ноут со всех сторон и видим, что осталось одно устройство, которое
никак вроде не дало проявить себя. Это IrDA. findchip молчит как резанный.
Ну что ж. FIR'а нам не видать. Есть слабая надежда на SIR, в общем, третий
в очередь.
Итак, после всех осмотров мы обнаружили в ноутбуке 3 нерабочих устройства.
Это pcmcia слот, видео и инфакрасный порт.
Разборки с PCMCIA
Долго чешем репу, раздумывая с какого конца подобраться. Ведь на самом деле
линукс знает не так много pcmcia контроллеров. Но ведь их не так много и в мире.
Вспоминаем, что Windows ничего такого про контроллер не говорила и обзывала
его стандартным контроллером PCMCIA. Это внушает надежду.
Пробуем по порядку модули: i82092, i82365 и yenta_socket, не забывая выгружать
их. Одновременно смотрим краем глаза в /var/log/messages.
Наконец yenta_socket откликается в логах строчками, содержащими такую
информацию:
PCI: Enabling device 00:0c.0 (0000 -> 0002)
PCI: Assigned IRQ 5 for device 00:0c.0
Yenta IRQ list 0000, PCI irq5
Socket status: 30000006
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x378-0x37f 0x480-0x48f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean
Пока железо горячо, куем его. Правим /etc/sysconfig/pcmcia:
PCMCIA=yes
PCIC=yenta_socket
PCIC_OPTS=
CORE_OPTS=
Теперь радостно суем в pcmcia слот первую попавшуюся карточку. В моем случае -
это CompactFlash.
Dec 21 22:26:09 localhost cardmgr[691]: initializing socket 0
Dec 21 22:26:09 localhost cardmgr[691]: socket 0: ATA/IDE Fixed Disk
Dec 21 22:26:09 localhost kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Dec 21 22:26:09 localhost cardmgr[691]: executing: 'modprobe ide-cs'
Dec 21 22:26:10 localhost kernel: ide-cs: RequestIRQ: Resource in use
Dec 21 22:26:11 localhost cardmgr[691]: get dev info on socket 0 failed: Resourc
e temporarily unavailable
Dec 21 22:36:47 localhost cardmgr[17769]: starting, version is 3.1.22
Dec 21 22:36:48 localhost cardmgr[17769]: config error, file './config.opts' lin
e 8: no function bindings
Dec 21 22:36:48 localhost cardmgr[17769]: open_sock(socket 0) failed: Device or
resource busy
Dec 21 22:36:48 localhost cardmgr[17769]: no sockets found!
Dec 21 22:36:48 localhost cardmgr[17769]: exiting
Ндас. Машина опознала, что в слот что-то запихали. И даже поняла, что
запихали, но не смогла найти ресурсы для этого. Садимся и думаем, что
могло вызвать такие коллизии. Первый и самый вероятный кандидат - это кривые
двайвера. Но тут вроде не подходит, ибо все распозналось. Второй вариант - биос.
Обычно они очень "умные" и дико любят играть прерываниями. Перегруаем машину,
входим в биос и ставим APM вместо APIC (это запрещает некоторые хитрости
с прерываниями и заодно говорит использовать более устаревшую
схему управления питанием) и говорим сбросить всю конфигурацию
(Reset configuration data). Машина послушно соглашается.
Загружаем Linux. Смотрим на /var/log/messages и суем в слот CompactFlash.
Dec 22 12:23:20 pooh cardmgr[652]: initializing socket 0
Dec 22 12:23:20 pooh cardmgr[652]: socket 0: ATA/IDE Fixed Disk
Dec 22 12:23:20 pooh kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Dec 22 12:23:20 pooh cardmgr[652]: executing: 'modprobe ide-cs'
Dec 22 12:23:22 pooh kernel: hde: IBM-DMDM-10340, ATA DISK drive
Dec 22 12:23:22 pooh kernel: ide2 at 0x100-0x107,0x10e on irq 5
Dec 22 12:23:22 pooh kernel: ide-floppy driver 0.99.newide
Dec 22 12:23:22 pooh kernel: hde: 700560 sectors (359 MB) w/96KiB Cache, CHS=695
/16/63
Dec 22 12:23:24 pooh cardmgr[652]: executing: './ide start hde'
Dec 22 12:23:24 pooh kernel: hde: hde1
Dec 22 12:23:24 pooh kernel: ide_cs: hde: Vcc = 3.3, Vpp = 0.0
Dec 22 12:23:48 pooh kernel: hde: hde1
Все опозналось правильно и подключилось прекрасно. Пробуем на других
карточках. Все работает. Можно закрывать эту проблему.
Разборки с видеокартой
Итак, linux не знает, что за видеокарта стоит в машине. Но на то мы и люди,
что бы знать, что у нас видеокарта на чипсете Sis модели 650. И довольно
хорошая карта. Даже на два монитора одновременно может выводить. Но на данном
этапе линукс упорно крутит своей башкой и отказывается заводить драйвера от
sis. Плюем на это с высокой колокольни.
Так как я заранее завел в консоли vesa framebuffer (vga=791) то решаю
завести все через vesa. Второй монитор и прочие цацки будем заводить потом,
если останется желание.
Идем и правим /etc/X11/XF86Config-4. Находим описание драйвера и ставим
там опцию Driver "vesa" (или "fbdev" для старых версий XFree). Затем
ниже говорим, что у нас цветовое разрешение 16 бит на пиксел (DefaultDepth 16
в секции Screen) и разрешение 1024х768.
Сохраняем все это и говорим startx. Скрипт сругается на то, что не смог найти
нормального Window manager'а и будет использовать TWM (я просто грохнул
всякие Gnome и KDE еще на этапе установки - у вас может быть все по другому).
Смотрим на экран - да, графика появилась. Радуемся. Ибо в графике все как-то
приятнее. Выходим. Графика заработала, посему закрываем этот вопрос.
Разборки с IrDA.
Как я говорил, c FIR мы сразу распрощались. Для очистки совести проверим -
может SIR заведется ...
Поглядим на первый и единственный порт.
[root@multnote root]# setserial /dev/ttyS1
/dev/ttyS1, UART: unknown, Port: 0x03f8, IRQ: 4
Хмм ... линукс не понял, что там стоит, да и распределения
прерываний что-то не похожи на реальные. Ладно, попробуем сказать руками.
[root@multnote root]# setserial /dev/ttyS1 uart 8250
[root@multnote root]# setserial /dev/ttyS1
/dev/ttyS1, UART: 8250, Port: 0x03f8, IRQ: 4
[root@multnote root]# irattach /dev/ttyS1
В логах тут же видим:
Dec 22 15:24:35 multnote irattach: tcsetattr: Input/output error
Что в переводе на руский язык означает - фигу тебе, уважаемый товарисч.
Пробуем 16450, 16550, 16550A, 16650, 16650V2, 16750, 16850, 16950, 16954.
В общем, SIR нам тоже не светит. Опять же придеться оставить на будующее -
надо будет поиграться с прерываниями и прочим. Но шансов мало. Чипы от TI
линуксовое сообщество не знает, так как TI не открывает спецификаций ;-(.
Вот. В принципе на этом этапе все, что можно завести сразу, завелось. Что
не смогли - не завелось. В принципе, уже можно работать. Но так работать как-то
неуютно - зная, что ноутбук не раскрывает всех своих возможностей. Поэтому
переходим к четвертому этапу, если вы не устали.
Четвертый этап. "Используй силу, Люк !! ...".
Первое, что мы будем пинать - это модем. Напомню, что линукс видит его как
00:02.6 Modem: Silicon Integrated Systems [SiS] 56k Winmodem (Smart Link
HAMR5600 compatible) (rev a0)
Сходим на сайт http://linmodems.org/, там узнаем, что нам дорога на сайт
производителя этих модемов. Немного погуляв там, я обнаруживаю файлик
http://www.smlink.com/download/Linux/slmdm-2.6.16.tar.gz и утаскиваю его
в каталог /usr/src.
Распаковываю его tar zxvf slmdm-2.6.16.tar.gz. И читаю README.
Как и просят, правлю строку в Makefile на
KERNEL_INCLUDES:= /usr/src/linux-2.4.18-19.7.x/include
Говорою make (вот и пригодился компилятор ;-) и смотрю, что получится.
Получилось то, что и хотелось получиться - все собралось. Даже без ругани.
Теперь согласно README говорим make install-amr. Все опять же выполнилось
без какой-либо ругани. Это обнадеживает.
Добавляю в /etc/modules.conf строчку
options slmdm country=USA
Так как предварительное тестирование этого модема под WinXP показало, что
если поставить страну Russia, то он вместо тоновых сигналов в линию
хрипит совершенно непонятные звуки.
Нусс.. заведем-ка это чудо.
Набираем minicom. Наблюдаем черных экран без каких-либо движений. На клавиатуру
нет никаких реакций. Чешем затылок и идем править настройки. По умолчанию
minicom настроен на /dev/ttyS1 и скорость 38400. Сами понимаете, что это
не то, что мы ожидаем. Меняем на /dev/modem и 115200, сохраняем как настройку
по умолчанию и выходим.
Пускаем еще раз minicom. Вот, совсем другой коленкор.
В логах видим:
Dec 22 15:53:17 multnote kernel: slmdm: country set is 0xb5 (USA).
Dec 22 15:53:17 multnote kernel: Smart Link AMRMO modem.
Dec 22 15:53:17 multnote kernel: amrmo: probe 1039:7013 Silicon Integrated Syste
ms [SiS] 56k Winmodem (Smart Link HAMR5600 compatible) : SiS630 card...
Dec 22 15:53:17 multnote kernel: PCI: No IRQ known for interrupt pin C of device
00:02.6. Please try using pci=biosirq.
Dec 22 15:53:17 multnote insmod: Warning: loading /lib/modules/2.4.18-19.7.x/mis
c/slmdm.o will taint the kernel: non-GPL license - Smart Link Ltd.
Dec 22 15:53:17 multnote insmod: See http://www.tux.org/lkml/#export-tainted f
or information about tainted modules
Dec 22 15:53:17 multnote insmod: Module slmdm loaded, with warnings
Dec 22 15:53:17 multnote insmod: Warning: loading /lib/modules/2.4.18-19.7.x/mis
c/slamrmo.o will taint the kernel: non-GPL license - Smart Link Ltd.
Dec 22 15:53:17 multnote insmod: Module slamrmo loaded, with warnings
В minicom вводим для проверки:
ati2
Smart Link Ltd.
Version 2.6.16
OK
ati7
Country: USA
Serial Number: 98638029
Protocol Factor: 79353128
OK
Модем заработал. Теперь поглядим, как он в деле.
atdt99,7346112
NO CARRIER
В реальности это выглядит так: модем поднимает трубку и чего-то ждет. АТС
через некоторое время начинает бибикать. Все. Что-то не так.
Выходим, меняем страну на RUSSIA. Выгружаем модуль. и снова пробуем.
Ситуация не изменилась. Обращаем внимание на строчку в логах:
PCI: No IRQ known for interrupt pin C of device 00:02.6. Please try using
pci=biosirq.
Перегружаемся и на приглашение lilo вводим linux pci=biosirq
Ничего не изменилось. Модем по прежнему не слышит ответа от станции. Жопа.
На предыдущем ровере этот модем завелся без проблем.
На всякий случай вытягиваю и собираю slmdm-2.6.16_i386.tar.gz. Никакой
разницы.
Иду по поисковикам и обнаруживаю, что не я один мучаюсь с этой проблемой.
практически сразу нахожу ответ - надо собрать ядро с нормальными ACPI патчами и
отключить APM.
Ну что же ... собрать, так собрать. Заодно и ядрышко поновее поставим ...
Вытаскиваю файлы:
http://www.ru.kernel.org/pub/linux/kernel/v2.4/linux-2.4.20.tar.gzhttp://umn.dl.sourceforge.net/sourceforge/acpi/acpi-20021212-2.4.20.diff.gz
Первое, как вы можете догадаться, это ядро. Второе - это патч для него.
Разворачиваем ядро и патч в /usr/src
tar zxvf linux-2.4.20.tar.gz
gzip -d acpi-20021212-2.4.20.diff.gz
ложим acpi-20021212-2.4.20.diff в linux-2.4.20 - мне так удобнее. И накладываем
патч:
patch -p1 < acpi-20021212-2.4.20.diff
На экране пробежит куча строк, завершающаяся
.................
patching file include/asm-i386/mpspec.h
Hunk #1 succeeded at 220 (offset -1 lines).
patching file include/asm-i386/pci.h
patching file include/linux/acpi.h
patching file init/main.c
patching file MAINTAINERS
Hunk #1 succeeded at 1609 (offset -4 lines).
Все. Патч наложен. Можно компилировать ядро.
make menuconfig
make dep
make bzImage
......
Boot sector 512 bytes.
Setup is 4652 bytes.
System is 798 kB
make[1]: Leaving directory `/usr/src/linux-2.4.20/arch/i386/boot'
make modules
make modules_install
Правим lilo и перегружаемся.
Эффекта нет. Говорит, что нету на этой машине ACPI. Офигеваем. Включаем в Bios
ACPI, перезагружаемся. Смотрим - ядро упорно утверждает, что нет ACPI. Включаем
отладку, пересобираем ядро и снова смотрим. Появилось. То есть биос утверждает,
что как такогово acpi на машине нет. Но зато есть кусочки от него. Ладно,
нам и кусочков хватит. Видим, что на этот раз все опозналось и даже включилось.
Пытаемся вставить что-нить в PCMCIA. Вис. Мертвый. Перезагружаемся, собираем
драйвера для модема. При попытке поднять трубку или вообще что-то
сделать с линией - Вис.
(неделя эксперементов с модемом, звуком и pcmcia на разных ядрах пропущена)
Наконец-то индеец "зоркий глаз" замечает на 200 раз излаженном сайте
ссылку на неподдерживаемые драйвера ...
Итак, драйвера надо брать из категории неподдерживаемых. То есть идем и
забираем:
ftp://ftp.smlink.com/Update/linux/unsupported/slmdm-2.7.7.tar.gz
С ними модем больше не вешает машину и довольно шустро свиристит.
atdt99w7346112
CONNECT 38666
Немного радуемся - модем заработал.
Теперь пойдем пинать ногами pcmcia.
Удяляем старые pcmcia-cs и выкачиваем новые
http://unc.dl.sourceforge.net/sourceforge/pcmcia-cs/pcmcia-cs-3.2.3.tar.gz
Разворачиваем, отвечаем на вопросы Configure и говорим make all для сборки
утилит. У меня собралось все без ошибок. говорим make install для установки.
Все установилось.
Правим /etc/sysconfig/pcmcia и говорим /etc/init.d/pcmcia start
На консоль выплюнулось:
Starting PCMCIA services: cardmgr[2042]: watching 1 sockets
done.
В логах:
Dec 27 22:01:47 pooh cardmgr[2042]: watching 1 sockets
Dec 27 22:01:47 pooh kernel: cs: IO port probe 0x0c00-0x0cff: clean.
Dec 27 22:01:47 pooh kernel: cs: IO port probe 0x0800-0x08ff: clean.
Dec 27 22:01:47 pooh kernel: cs: IO port probe 0x0100-0x04ff: excluding 0x378-0x37f 0x480-0x48f 0x4d0-0x4d7
Dec 27 22:01:47 pooh kernel: cs: IO port probe 0x0a00-0x0aff: clean.
Dec 27 22:01:47 pooh cardmgr[2043]: starting, version is 3.2.3
На всякий случай говорим sync и пытается вставить что-нить в pcmcia слот.
Dec 27 22:02:59 pooh kernel: cs: memory probe 0xa0000000-0xa0ffffff: clean.
Dec 27 22:02:59 pooh cardmgr[2043]: socket 0: ATA/IDE Fixed Disk
Dec 27 22:03:00 pooh cardmgr[2043]: executing: 'modprobe ide-cs'
Dec 27 22:03:01 pooh kernel: hde: PQI FLASH DISK, ATA DISK drive
Dec 27 22:03:01 pooh kernel: ide2 at 0x100-0x107,0x10e on irq 5
Dec 27 22:03:01 pooh kernel: hde: 128000 sectors (66 MB) w/1KiB Cache, CHS=500/8/32
Dec 27 22:03:01 pooh kernel: hde: hde1
Dec 27 22:03:01 pooh kernel: ide_cs: hde: Vcc = 3.3, Vpp = 0.0
Dec 27 22:03:01 pooh cardmgr[2043]: executing: './ide start hde'
Работает. Еще одна проблема снялась.
Звук.
Пробуем первым и самым простым путем - sndconfig. Он соглашается, что
у нас SiS7012 звук, но почему-то просит для него драйвера для i810. Обидно,
что я заранее не побеспокоился. Пересобираем ядро и включаем модулями
этот звук.
Перегружаемся, еще раз кличем sndconfig. Все в порядке: Линус рассказал, как
он произносит слово Linux.
Еще раз оглядываемся в логах и замечаем строчку:
ttyS01 at 0x02f8 (irq = 3) is a 16550A
Видимо, новое ядро поняло, что кто и куда ...
тут же зовем на помощь irattach:
[root@pooh root]# irattach /dev/ttyS1
1.1 Tue Nov 9 15:30:55 1999 Dag Brattli
В логах:
Dec 27 22:14:29 pooh kernel: IrDA: Registered device irda0
Dec 27 22:14:29 pooh /etc/hotplug/net.agent: assuming irda0 is already up
Dec 27 22:14:30 pooh irattach: Starting device irda0
Dec 27 22:14:30 pooh irattach: executing: 'echo pooh > /proc/sys/net/irda/devname'
По всей видимости, irda согласилось с тем, что оно будет работать в качестве
SIR, то есть на скоростях до 115200. (В биосе у меня стоит напротив порта
IrDA, а не FIR)
Попробуем это чудо. Ложу рядом с ноутом свой iPaq 3660, включаю в нем Beam,
на ноуте запускаю irdadump и смотрю. Глухо. Странно. Потом вспоминаю, что
Linux просто так ничего делать не будет ;-)
Включаю посылку IrDA пакетов, которые обозначают "Эй, я тут есть, кто меня
видит?".
echo 1 >/proc/sys/net/irda/discovery
На экране появляются строчки, заканчивающиеся на :
19:26:37.648971 xid:cmd d1ff84ee > ffffffff S=6 s=* pooh hint=0400
[ Computer ] (20)
Включаем снова iPaq и радостно наблюдаем на экране:
19:26:34.558967 xid:rsp d1ff84ee < 00000c20 S=6 s=4 MultikPC hint=8224
[ PDA/Palmtop IrCOMM IrOBEX ] (25)
Работает! Для издевательств над сотовым - хватит.
Уффф ... что у нас еще осталось неохваченным из железячных устройств? Видео,
firefire, LPT и USB. С Видео сейчас будем разбираться, железок, которых можно
подключить к firewire или к принтерному порту - у меня нет. Остался USB.
Втыкаем в порт мышку.
Dec 27 22:50:22 pooh kernel: hub.c: new USB device 00:02.2-1, assigned address 3
Dec 27 22:50:22 pooh kernel: Manufacturer: Logitech
Dec 27 22:50:22 pooh kernel: Product: USB-PS/2 Optical Mouse
Dec 27 22:50:22 pooh kernel: input0: Logitech USB-PS/2 Optical Mouse on
usb1:3.0
Dec 27 22:50:22 pooh /sbin/hotplug: arguments (usb) env (PWD=/etc/hotplug
DEVICE=/proc/bus/usb/001/003 INTERFACE=3/1/2 ACTION=add DEBUG=kernel OLDPWD=/
DEVFS=/proc/bus/usb TYPE=0/0/0 SHLVL=1 HOME=/ PATH=/bin:/sbin:/usr/sbin:
/usr/bin PRODUCT=46d/c00e/1110 _=/usr/bin/env)
Dec 27 22:50:22 pooh /sbin/hotplug: invoke /etc/hotplug/usb.agent ()
Dec 27 22:50:25 pooh /etc/hotplug/usb.agent: Setup usbmouse hid for USB
product 46d/c00e/1110
Dec 27 22:50:25 pooh /etc/hotplug/usb.agent: Setup mousedev for USB product
46d/c00e/1110
Как видим, USB тоже работает. Таким образом, я могу с уверенностью сказать,
что у меня работает все железо, представленное в ноутбуке, кроме видео.
Но и с видео сейчас разберемся.
Пятый этап. "Открой личико, гюльчитай ..."
Итак, видео. Первым делом еще раз перечитываем страницу
http://www.winischhofer.net
На ней человек, собаку сьевший с Sis, рассказывает о своих результатах. Вы
можете выжимку прочитать тут. Ну а мне пришлось перечитть все и не один раз.
Итак, у нас чипсет серии 310/325. Понимаем, что sis драйвера на данном этапе
не работают с vesa fb. Перекомпилируем ядро, убрав поддержку vesa fb. так же
убираем драйвера DRI/DRM из ядра. В общем, оставляем все включенным, но
все галочки около sis снимаем. Я заранее примирился с потерей fb консоли
(не так уж много я работаю в ней) в пользу увеличения скорости работы
в XFree и поддержку 2х мониторов одновременно ...
Убираем vga=791 из lilo.conf и перегружаемся.
Идем на страницу http://www.winischhofer.net/linuxsis630.shtml#download
выкачиваем файлы
http://www.winischhofer.net/sis/sis_drv.o_4.2_041102-1.tar.gz
и
http://www.winischhofer.net/sis/sis_dri.so_4.2
Правим по предложеному образцу XF86Config
Заменяем в /usr/X11R6/lib/modules/drivers sis_drv.o на скачанный
С DRI модулем в /usr/X11R6/lib/modules/dri поступаем аналогично.
Запускаем командой startx. Если Иксы вываливаются, идем в /var/log/XFree86.0.log
смотреть на то, что им не понравилось.
У меня по умолчанию запустилось в режиме mirror. То есть на LCD и на мониторе
одно и то же. Это радует - видно, что драйвер понимает, что у карты есть вторая
голова. Пробуем запустить в других режимах.
startx -- -layout office
Ура опять. Появился большой экран, растянутый на два монитора. Это мне и надо.
Подправил частоты для второго монитора. Теперь обычный запуск startx
приводит к синхроному отображению на панели и мониторе одного и того же.
Минус - монитор работает с частотой панели, то есть 60 Герц. А запуск
startx -- -layout office приводит к раскрытию рабочего стола на оба монитора
и перевод CRT монитора в режим 1027х768х100. Для меня этого более чем достаточно.
Говорят, что можно и TVout выход задействовать. Верю. Но проверить не могу
по банальной причине - нет телевизора (вообще) или какой-нить техники
с входом SVideo.
Ну вот и все. Все железо в ноутбуке работает. Теперь осталось самая обычная
работа - подогнать все под себя, выкинуть лишнее и радоваться жизни.
(с) 2002 Вячеслав Калошин. [email protected]http://www.nat.vu.nl/~sandro/gericom.htmlhttp://www.winischhofer.net/ftp://ftp.smlink.com/Update/linux/unsupported/slmdm-2.7.7.tar.gz