UMGUM.COM 

Debian Squeeze + Lenovo IdeaPad S10-3 ( Заселяем "Linux Debian 6 Squeeze" на нетбук "Lenovo IdeaPad S10-3". )

9 июня 2011  (обновлено 29 мая 2017)

Эта публикация отнесена в архив. Она неактуальна.

Hard: Lenovo IdeaPad S10-3.
OS: Debian GNU/Linux Sqeeze amd64.

Итак, мы имеем на борту "нетбука" Lenovo IdeaPad S10-3 свеже-установленную операционную систему Debian GNU/Linux Sqeeze amd64. Посмотрим, что у этой железки есть и что из этого мы сможем использовать:

Processor: Intel ATOM Processor N455 ( 1.66GHz 667MHz 512KB );
Graphics: Intel Graphics Media Accelerator 3150;
Memory: 1 GB PC3-10600 DDR3 SDRAM 667MHz;
Cardreader: SD/MMC/MS/MS PRO/xD multicard reader Realtek Semiconductor;
Display: 10.1" SD 1024x600;
WebCam: Lenovo EasyCamera Video Interface 0.3MP;
Pointing device: Industry Standard Touchpad;
Hard Drive: 250GB 5400;
Battery: 6 Cell Lithium-Ion;
Network Card: BCM 4313 BGN Wireless;
Bluetooth: Version 2.1 + EDR.

Для начала инсталлируем утилиты, помогающие жить в Linux:

# aptitude install sudo bind9utils dnsutils telnet cu openssh-server openvpn rsync ntpdate screen mc htop bmon sysstat psmisc unrar zip unzip unace p7zip-full bzip2 arj lha rpm pwgen lsof lynx dosfstools deborphan fuse-utils dmsetup ntfs-3g sshfs smbfs lsb-core


Устанавливаем точное системное время:

# echo "Asia/Almaty" > /etc/timezone
# rm /etc/localtime
# ln -sf /usr/share/zoneinfo/Asia/Almaty /etc/localtime

Синхронизируем время к каким нибудь солидным сервером:

# ntpdate 0.asia.pool.ntp.org

Сохраняем полученные показатели времени в постоянную память BIOS:

# hwclock --systohc --utc

Устанавливаем утилиты сбора информации о конфигурации системы:

# aptitude install dmidecode lshw hdparm

Смотрим, что система нашла и готова применить:

# lspci

....
00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller
....
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
....
05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)
09:00.0 Network controller: Broadcom Corporation BCM4313 802.11b/g/n Wireless LAN Controller (rev 01)

# lsusb

....
Bus 001 Device 004: ID 04f2:b1ce Chicony Electronics Co., Ltd Lenovo EasyCamera Video Interface
Bus 001 Device 003: ID 0bda:0158 Realtek Semiconductor Corp. USB 2.0 multicard reader
....

В Debian GNU/Linux Squeeze автоматически определилось всё вышеперечисленное оборудование, кроме "Wireless BCM4313". Для этого чипа в Debian Squeeze нет готового пакета с драйверами. Придётся собирать альтернативный модуль "wl", поддерживающий работу чипов Broadcom 4311, 4312, 4313, 4321, 4322, 43224, 43225, 43227, 43228 из предлагаемых производителем чипа Broadcom для этого исходных кодов (http://www.broadcom.com/support/802.11/linux_sta.php).

# aptitude install linux-headers-`uname -r` module-assistant wireless-tools broadcom-sta-source

Даём задание умному module-assistant собрать модуль wl по заготовленной конфигурации broadcom-sta:

# module-assistant auto-install broadcom-sta

Module-assistant штука очень приятная, что нужно - скачает, скомпилирует и сконфигурирует модули самостоятельно, по заранее заданному шаблону.

Внесём модуль brcm80211, используемый операционной системой по умолчанию для чипов Broadcom 43xx, в "чёрный список", чтобы он ни при каких обстоятельствах не был загружен при обнаружении системой беспроводного устройства (модуль конфликтует с тем, что мы собрали):

# echo "blacklist brcm80211" >> /etc/modprobe.d/broadcom-sta-common.conf

На всякий случай выгружаем все модули, что могут конфликтовать с wl:

# modprobe -r b44 b43 b43legacy ssb brcm80211

Загружаем модуль wl:

# modprobe wl

Смотрим, что за зверь у нас получился:

# modinfo wl

....
license:  MIXED/Proprietary
....
depends:  lib80211
....

Проприетарный, работает на встроенном в ядро Linux "стеке" lib80211.

Смотрим в потоке системных сообщений, насколько корректно определилось беспроводной устройство:

# dmesg

....
lib80211: common routines for IEEE802.11 drivers
lib80211_crypt: registered algorithm 'NULL'
wl: module license 'MIXED/Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
wl 0000:09:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18
wl 0000:09:00.0: setting latency timer to 64
lib80211_crypt: registered algorithm 'TKIP'
eth1: Broadcom BCM4727 802.11 Hybrid Wireless Controller 5.60.48.36
....

Модуль wl инициализировал интерфейс таким образом, что он определился udev как Ethernet (eth1). Мне это не понравилось и я решил его переименовать в wlan0. Самый простой способ - правка файла конфигурации udev:

# cat /etc/udev/rules.d/70-persistent-net.rules

....
# PCI device 0x14e4:0x4727 (wl)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="mac.address", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="wlan0"

Смотрим, как это теперь выглядит:

# ifconfig -a

....
wlan0  Link encap:Ethernet  HWaddr mac.address
  BROADCAST MULTICAST  MTU:1500  Metric:1
  RX packets:0 errors:0 dropped:0 overruns:0 frame:0
  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
  Interrupt:18

Пробуем привести интерфейс в активное состояние:

# ifconfig wlan0 up

Для проверки работы интерфейса просматриваем доступные ему сетевые беспроводные ресурсы:

# iwlist wlan0 scan

wlan0  Scan completed :
  Cell 01 - Address: mac.address.0
    ESSID:"network.name.0"
    ....
  Cell 02 - Address: mac.address.1
    ESSID:"network.name.1"
....

Регистрируем интерфейс так, как это принято в Debian:

# cat /etc/network/interfaces

....
# The primaty wireless network interface
allow-hotplug wlan0
# iface wlan0 inet dhcp
....

В завершение возни устанавливаем программное обеспечение для работы с WiFi устройством:

# aptitude install wpasupplicant

Ну и, да, с драйверами от производителя беспроводная карта "Broadcom 4313" не может быть переведена в режимы Monitor и Master (Access Point), так что, об анализе безопасности WiFi сетей и предоставлении доступа другим машинам можно на время забыть.

Обеспечиваем программную поддержку Bluetooth и IrDA:

# aptitude install bluetooth bluez-utils irda-utils

Втроенных IrDA устройств в "нетбуке" нет, а вот Bluetooth, вроде как, имеется.

По умолчанию сервис поддержки Bluetooth стартует вместе с операционной системой. Нам это ни к чему:

# cat /etc/default/bluetooth

....
BLUETOOTH_ENABLED=0
....

Для программного управления беспроводными устройствами установим маленькую, но очень полезную программку, которая позволяет определить состояние WiFi, Bluettooth, GPS и прочих интегрированных устройств (включены они или выключены, программно и аппаратно), а также изменить это состояние, если оно может быть изменено программно, взаимодействуя с одноимённым модулем, запускаемым вместе с модулями поддержки беспроводных интерфейсов:

# aptitude install rfkill

Можно обойтись и без утилиты rfkill, взаимодействуя непосредственно с модулем, путём чтения и изменения файлов его состояния, например:

Включение питания Bluetooth:

# echo 1 > /sys/class/rfkill/rfkill1/state

Отключание питания Bluetooth:

# echo 0 > /sys/class/rfkill/rfkill1/state

Кстати говоря, модуль wl, собранный нами для поддержки WiFi из исходных кодов от производителя, не работает с модулем rfkill и не позволяет программно управлять питанием устройства. Это вносит определённую путаницу в работу с интерфейсами, в частности, не во всех реализациях модуль rfkill может безболезненно переварить отсутствие доступа к одному из работающих беспроводных интерфейсов (WiFi, управляемый wl) и отказывается, в связи с этим, работать вообще. Такая вот петрушка из Linux. Как только разработчики открытого драйвера b43 включат в него поддержку чипа Broadcom 4313 следует немедленно снести программную поделку от производителя чипа.

Инициализируем звуковую подсистему:

# aptitude install alsa libasound2-plugins
# alsa reload
# alsamixer

Устанавливаем утилиты для изменения и адаптации к нагрузке частоты процессора. Для "нетбука" одно из необходимых свойств - возможность снижать частоту процессора в зависимости от его нагрузки:

# aptitude install cpufrequtils

По хорошему, инсталлятор сам запускает модуль контроля частоты, но проверить не мешает:

# lsmod | grep acpi-cpufreq

Запускаем модуль принудительно, если в этом будет необходимость:

# modprobe acpi-cpufreq

Смотрим, на что готов наш процессор:

# cpufreq-info

analyzing CPU 0:
  driver: acpi-cpufreq
....
  hardware limits: 1000 MHz - 1.67 GHz
  available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
  available cpufreq governors: powersave, conservative, userspace, ondemand, performance
  current policy: frequency should be within 1000 MHz and 1.67 GHz.
                  The governor "ondemand" may decide which speed to use within this range.
  current CPU frequency is 1000 MHz (asserted by call to hardware).
  cpufreq stats: 1.67 GHz:3.69%, 1.33 GHz:0.07%, 1000 MHz:96.24%  (55)
analyzing CPU 1:
....

Видим, что ядра процессора готовы переключатся между частотой в 1000 MHz и 1667 MHz, шагами по 1667 MHz, 1333 MHz и 1000 MHz. По умолчанию выбрана схема "подачи частоты" по необходимости, не вижу необходимости менять это. Если возникнет желание, то профиль cpufreq в Debian Squeeze меняется прямо в скрипте инициализации:

# cat /etc/init.d/cpufrequtils

....
ENABLE="true"
GOVERNOR="ondemand"
....

Если заменить "ondemand" на "powersave", то процессор будет работать на самой низкой частоте, а если заменить на "performance" - то на самой высокой.

Устанавливаем Xorg:

# aptitude install xserver-xorg x11-xserver-utils xserver-xorg-input-evdev xserver-xorg-input-kbd xserver-xorg-input-mouse xserver-xorg-input-synaptics xserver-xorg-video-vesa xserver-xorg-video-intel xfonts-cyrillic xfonts-100dpi xfonts-75dpi

Перезагружаем "нетбук", чтобы система при запуске использовала обновлённое ядро и соответствующие модули.

Запускаем конфигуратор X-сервера с тем, чтобы он создал образец конфигурационного файла, оптимальный, на его взгляд, для данного устройства:

# Xorg -configure
# cp /root/xorg.conf.new /etc/X11/xorg.conf

Корректируем конфигурационный файл, внося в него изменения, блокирующие автоматическую настройку и явно указывающие на то, чего мы ждём от X-сервера:

# cp /etc/X11/xorg.conf /etc/X11/xorg.conf.backup
# cat /etc/X11/xorg.conf

Section "ServerLayout"
  Identifier     "X.org Configured"
  Screen      0  "Screen0" 0 0
  InputDevice    "Mouse0" "CorePointer"
  InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "ServerFlags"
  Option  "AutoAddDevices"  "false"
  Option  "DontZap"         "yes"
EndSection

Section "Files"
  ModulePath   "/usr/lib/xorg/modules"
  FontPath     "/usr/share/fonts/X11/misc"
  FontPath     "/usr/share/fonts/X11/cyrillic"
  FontPath     "/usr/share/fonts/X11/100dpi/:unscaled"
  FontPath     "/usr/share/fonts/X11/75dpi/:unscaled"
  FontPath     "/usr/share/fonts/X11/Type1"
  FontPath     "/usr/share/fonts/X11/100dpi"
  FontPath     "/usr/share/fonts/X11/75dpi"
  FontPath     "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
  FontPath     "built-ins"
EndSection

Section "Module"
  Load  "glx"
  Load  "dri"
  Load  "extmod"
  Load  "dri2"
  Load  "dbe"
  Load  "record"
EndSection

Section "InputDevice"
  Identifier      "Keyboard0"
  Driver          "kbd"
#  Driver          "evdev"
#  Option          "Device"        "/dev/input/event1"
  Option          "XkbRules"      "xorg"
  Option          "XkbModel"      "pc104"
  Option          "XkbLayout"     "us,ru(winkeys)"
  Option          "XkbVariant"    "nodeadkeys"
  Option          "XkbOptions"    "grp:ctrl_shift_toggle,grp_led:scroll"
EndSection

Section "InputDevice"
  Identifier  "Mouse0"
  Driver      "mouse"
#  Driver      "evdev"
#  Option      "Device"       "/dev/input/mouse1"
  Option      "Protocol"     "auto"
  Option      "Device"       "/dev/input/mice"
  Option      "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
  Identifier   "Monitor0"
  VendorName   "Monitor Vendor"
  ModelName    "Monitor Model"
EndSection

Section "Device"
  Identifier  "Card0"
  Driver      "intel"
  VendorName  "Intel Corporation"
  BoardName   "N10 Family Integrated Graphics Controller"
  BusID       "PCI:0:2:0"
EndSection

Section "Screen"
  Identifier    "Screen0"
  Device        "Card0"
  Monitor       "Monitor0"
  DefaultDepth  24
  SubSection "Display"
    Viewport   0 0
    Depth      16
    Modes      "1024x600" "800x600"
  EndSubSection
  SubSection "Display"
    Viewport   0 0
    Depth      24
    Modes      "1024x600" "800x600"
  EndSubSection
EndSection

Перезапускаем X-сервер.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )