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.
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
# 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)
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
....
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
....
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
....
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"
# 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
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"
....
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
....
# 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
....
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
# 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:
....
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"
....
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
# 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
# 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
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-сервер.
12 марта 2012 в 18:07
12 марта 2012 в 20:39
12 марта 2012 в 21:29
13 марта 2012 в 08:20
7 июля 2012 в 18:20
18 сентября 2012 в 04:05
18 сентября 2012 в 08:17
7 октября 2013 в 15:21
23 февраля 2014 в 13:21
23 февраля 2014 в 15:00
11 марта 2018 в 14:00
11 февраля 2020 в 13:56
11 февраля 2020 в 18:31
18 февраля 2020 в 16:00
19 февраля 2020 в 17:19
20 февраля 2020 в 14:12