Laptop logo

Приобрел себе Toshiba Satellite a100-906, снес Windows и принялся ставить свой любимый Linux-дистрибутив Gentoo. Стоит заметить, что Ubuntu и Kubunu на этом лэптопе работают без проблем (пришлось только исправить /etc/X11/xorg.conf для поддержки родного разрешения – 1280×800).

Конфигурация Toshiba Satellite a100-906

$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller IDE (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation G70 [GeForce Go 7600] (rev a1)
05:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
07:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
07:06.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller
07:06.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
07:06.3 Class 0805: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller
07:08.0 Ethernet controller: Intel Corporation PRO/100 VE Network Connection (rev 02)

Настройка /etc/make.conf

Конфигурацию прописал согласно инструкции по Toshiba Satellite P100:

# Core Solo/Duo GCC 4.1
#CFLAGS="-O2 -march=prescott -fomit-frame-pointer -pipe"
# Core Solo/Duo GCC 4.2
#CFLAGS="-O2 -march=prescott -mtune generic -fomit-frame-pointer -pipe"
# Core 2 Solo/Duo GCC 4.2
#CFLAGS="-O2 -march=nocona -mtune generic -fomit-frame-pointer -pipe"

# Core 2 Solo/Duo GCC 4.1
CFLAGS="-O2 -march=nocona -fomit-frame-pointer -pipe"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"

INPUT_DEVICES="evdev keyboard mouse synaptics"
VIDEO_CARDS="nv nvidia vesa"
LINGUAS="en"

Hibernate и Suspend-to-ram

Настройку делал согласно статье HOWTO: Software Suspend2. Со старой версией BIOS (кажется 2.20) работал и suspend-to-disk, и suspend-to-ram.
С какого то момента перестал работать suspend-to-ram, хотя раньше работал без проблем. Не знаю, что еще можно сделать 🙁
Проблема крылась в кривом DSDT нового BIOS. Решение проблемы я описал в статье Toshiba a100-906, BIOS 5.90 + suspend-2-ram.
На данный момент у меня установлено ядро 2.6.22-gentoo-r2, прошит BIOS версии 5.90 – работает suspend-2-ram и suspend-2-disk.

А где девайс /dev/ppp?

Неудобно каждый раз после ребута выполнять команду mknod /dev/ppp c 108 0. Можно прописать ее в /etc/conf.d/local.start и забыть о проблеме.

Вторым вариантом (предпочтителен) является изменение параметра RC_DEVICE_TARBALL в /etc/conf.d/rc с NO на YES.

К сожалению у меня первый и второй вариант не устроили (второй не дружит с udev версии 114 в моей системе, хотя на десктопе он работает). Поэтому был использован третий вариант (и как оказалось, весьма удобный).
В файле /etc/conf.d/net пишем следующие строки (или правим уже существующие):

preup() {
   # if device not exist, make it
   [ ! -e /dev/ppp ] && mknod /dev/ppp c 108 0

   # Remember to return 0 on success
   return 0
}

CD-ROM и DMA

К сожалению CD-ROM на современных лэптопах (с ICH7 на борту – $ lspci | grep -i ide) не корректно определяется – как PATA устройство, на самом деле таковым не являясь. Скорость работы с приводом оставляет желать лучшего. Стандартный танец с hdparm -d1 /dev/hdc приводит к ошибке. Но решить эту проблему проще – нужно при загрузке подсказать ядру что привод у вас SATA – прописываем в конфиге загрузчика combined_mode=libata – перегружаемся и наслаждаемся.

Наиболее простым решением будет полностью отключить старую подсистему (ATA/ATAPI/MFM/RLL support), и воспользоваться новой (Serial ATA (prod) and Parallel ATA (experimental) drivers).
Вариант с отключением ATA/ATAPI/MFM/RLL support годится только в том случае, если у вас отсутствуют PATA-устройства.

Bluetooth

Возникла проблема Bluetooth – пропало устройство, lsusb не видел его. Оказывается, переключатель на корпусе не подключает Bluetooth к USB. Для решения данной проблемы можно воспользоваться кернел-модулем omnibook, а точнее его svn-версией.

svn co https://svn.sourceforge.net/svnroot/omnibook/omnibook/trunk omnibook-svn
cd omnibook-svn
make
make install
echo "options omnibook ectype=14" > /etc/modules.d/omnibook
modules-update
depmod -a
modprobe omnibook

Все, устройство доступно.

WiFi

В данный момент использую ядро 2.6.22-gentoo-r1. Драйвера для Intel Corporation PRO/Wireless 3945ABG net-wireless/iwlwifi.
Установка проста – размаскать необходимые пакеты, установить их (при необходимости переконфигурировать ядро в соответствии с просьбой пакета iwlwifi).
Для ядра версии 2.6.21 и более ранних нужно установить патч net-wireless/mac80211.

Полезные ссылки:

Video и LCD

В консоли получилось выставить неродное разрешение 1024×768 используя vesafb (работает так же и vesafb-tng). Но при переключении из “иксов” в консоль изображение растягивается на весь монитор, и выглядит не очень приятно. Установить родное разрешение не удалось вообще. Попытка использовать nvidiafb (video=nvidiafb без дополнительных аргументов) приводила к установке правильного разрешения (во всяком случае отображаемые точки выглядели не искаженными), но на экране был набор мусора. Попытка передать ядру еще и аргументы, приводило к установке неродного разрешения, прочесть что либо было весьма проблематично.

Похоже, что установить разрешение 1280×800 в консоли не получится (vbetest из пакета sys-libs/lrmi):

# vbetest
VBE Version 3.0
NVIDIA
[256] 640x400 (256 color palette)
[257] 640x480 (256 color palette)
[259] 800x600 (256 color palette)
[261] 1024x768 (256 color palette)
[270] 320x200 (5:6:5)
[271] 320x200 (8:8:8)
[273] 640x480 (5:6:5)
[274] 640x480 (8:8:8)
[276] 800x600 (5:6:5)
[277] 800x600 (8:8:8)
[279] 1024x768 (5:6:5)
[280] 1024x768 (8:8:8)
[304] 320x200 (256 color palette)
[305] 320x400 (256 color palette)
[306] 320x400 (5:6:5)
[307] 320x400 (8:8:8)
[308] 320x240 (256 color palette)
[309] 320x240 (5:6:5)
[310] 320x240 (8:8:8)
[317] 640x400 (5:6:5)
[318] 640x400 (8:8:8)

(не забываем к значению в квадратных скобочках прибавить 512 – это и будет требуемое значение для кернела для параметра vga)

Яркость подсветки LCD можно регулировать записью нужного значения в

# echo 10 > /proc/acpi/video/GFX0/LCD/brightness

В ядре 2.6.21 яркость регулируется с помощью Fn комбинаций на клавиатуре. В Мортоновском ядре 2.6.22 яркость не регулируется.

Modem

Настройка модема оказалась весьма простой. В кернеле включаем поддержку модема:

Device Drivers --->
  Sound --->
    Advanced Linux Sound Architecture --->
      PCI devices --->
        Intel/SiS/nVidia/AMD MC97 Modem

Устанавливаем пакет slmodem и прописываем демон в стартап, в секцию default:

USE="-usb" emerge -av slmodem
rc-update add slmodem default

Хороший вариант прописать флаг -use в /etc/portage/package.use дабы при обновлении мира slmodem не компилялся с поддержкой usb.

Правим конфиг /etc/conf.d/slmodem – указываем нужную страну.

Добавляем пользователя в группу dialout:

gpasswd -a USER_ID dialout

На данный момент в подсистеме ALSA присутствует ошибка – попытка набрать номер тут же заканчивается неудачей – NO CARRIER. Переписка с разработчиком slmodem прояснила, что проблема кроется в ALSA. Разработчики которой, извещены о данной ошибке. Прошло уже больше месяца, выходят новые версии ALSA, а модем не работает.
Последняя подходящая версия ядра – 2.6.19. Более поздние не позволяют работать с модемом. Можно, наверное, попробовать установить на свежее ядро старую версию ALSA. Увы, установка alsa-driver-1.0.13 на ядро gentoo-sources-2.6.22 успехом не увенчалась – не компилируются.

Card reader

Device Drivers  --->
   MMC/SD Card support  --->
     <*> MMC support
     <*>   MMC block device driver
     <*>   TI Flash Media MMC/SD Interface support

Добавляем в /etc/fstab строчку:

/dev/mmcblk0 /mnt/mmcsd vfat noauto,users,rw,iocharset=utf8,codepage=866 0 0

Fingerprint (сканер отпечатков пальцев)

Одним работающим устройством в системе стало больше. На bugs.gentoo.org берем ебилд thinkfinger, копируем его в локальное дерево портежей – /usr/local/portage/sys-auth/thinkfinger, создаем дигест и емержим пакет:

cd /usr/local/portage/sys-auth/thinkfinger
ebuild thinkfinger-0.2.2-r1.ebuild digest
emerge thinkfinger

Сканируем свой отпечаток пальца и настраиваем pam:

tf-tool --acquire
tf-tool --verify
mv /tmp/test.bir /etc/pam_thinkfinger/DESIRED_USER_NAME.bir

В файле /etc/pam.d/system-auth прописываем следующие строки (те, что выделены жирным шрифтом):

auth    required     pam_env.so
auth    sufficient   pam_unix.so likeauth nullok
auth    sufficient   pam_thinkfinger.so
auth    required     pam_deny.so