Amilo Mini and Zenwalk Linux
Posted on Март 1st, 2009 in Linux, Мобильности, Нестандартности | No Comments »
“Это даже не статья – а набросок, который может указать true way к построению системы ‘своей мечты’ на данной модели ноутбука. Естественно данный материал будет пополняться интересностями про дистрибутив zenwalk и использование Linux на нетбуке”
В своей Freelance-деятельности я занимаюсь внедрением и проведением тестов на проникновение. Плотная работа как с проводными, так и беспроводными сетями, поэтому хочется что бы это маленькое устройство было не только развлечением но и гибким сетевым инструментом, чего под проприетарными ОС добится зачастую сложно.
Так сложилось, что в своей ежедневной деятельности моим основным рабочим инструментом, вне офиса, стал нетбук (netbook) от Fujitsu-Siemens Amilo Mini UI3520. Нетбук из коробки поставлялся с предустановленой ОС Windows XP Home SP3 что меня естественно не устроило по ряду причин, обсуждение которых выходит за рамки данного повествования.
Поэтому на нетбуке были опробованы несколько свободных ОС: FreeBSD, OpenBSD, Linux. По ряду причин (отсутствие необходимого софта, неполная поддержка железа) от BSD систем пришлось к сожалению отказаться.
Оставался последний вариант, который в дальнейшем меня полностью устроил – Linux. Я перепробовал несколько дистрибутивов – Feodora 10, Debian, Ubuntu но ни один из них не давал из коробки то что мне хотелось – производительность, поддержку железа из-коробки. Можно было конечно подточить “напильником” , но конфигурационные скрипты данных дистрибутивов оттолкнули меня своей витиеватостью, многочисленностью и избыточностью. Хотелось простоты и понимания, принципов KISS (Keep it simple, stupid). Зачем мне это, в 2009 году? Затем что нормальной системы под современные нетбуки еще не выпустили, и использование любой так или иначе не оправдано расходует ресурсы и заряд батареи, которой много не бывает. Вторым критерием стал вид моей деятельности.
И тут я наткнулся на дистрибутив Zenwalk, на сегодня последняя версия 5.2. Далее я буду говорить именно об этой ОС. Может показать что для этого дистрибутива мало прекомпилированных пакетов програмного обеспечения, но на самом деле это не так, потому как пакеты совместимы с пакетами Slackware и в поисках необходимого пакета, в случае его отсутствия в репозитарии Zenwalk можно зайти на http://linuxpackages.net/. В конце статьи я приведу ряд ссылок на репозитарии.
Основными проблемами при использовании ОС Linux были:
нестандартное разрешение 1024×600 (Intel 945)
использование wi-fi карты (чипсет Atheros)
использование сетевой карты (RTL8101E)
использование web-камеры (Bison)
звуковая карта (Intel HDA Realtec ALC 269)
экономия батареи
Почти все проблемы мне удалось успешно решить, что то я еще оставил на будущее так как жить оно не мешает, а времени не бывает много. Но, обо всем по-порядку.
Дистрибутив Zenwalk встал легко и непринужденно. Ну если не считать того что из iso-образа компакт-диска, мне, в виду отсутствия внешнего cd-привода, пришлось сделать загрузочную флешку. Коротко поясню как это сделать:
Существует с некоторых пор проект unetbootlin (http://unetbootin.sourceforge.net/), который выпускает одноименную программу для Linux и для Windows. Программа позволяет создать загрузочную флешку из дистрибутива ОС (а на выбор их очень много, даж FreeBSD присутствует ) загрузочную установочную флешку.
Нет, конечно можно и руками, с syslinux, и это даже true-way. Но все ли захотят возиться, в то время когда время – деньги?
![]()
Вывод команды lspci на нетбуке:
[netf0x][~]$ lspci
00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (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 Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #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.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E PCI Express Fast Ethernet controller (rev 02)
07:00.0 Ethernet controller: Atheros Communications Inc. AR242x 802.11abg Wireless PCI Express Adapter (rev 01)
Для начала я настроил для использования команду sudo — что бы без заморочек от имени своего пользователя получать права суперадминистратора (root). Так как это мой нетбук и я не планирую что кто-то еще будет им пользоваться по сети или локально я просто добавил следующую строчку в файл /etc/sudoers
%wheel ALL=(ALL) ALL
а своего пользователя (netf0x) в группу wheel еще на этапе установки системы.
[netf0x][~]$ sudo -i
Сразу после установки с kernel.org было скачано последнее ядро, сконфигурировано и установлено.
[root][~]$ cd /usr/src/
[root][src]$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
Я скопировал дефолтную конфигурацию ядра дистрибутива Zenwalk:
[root][src]$ cp /proc/config.gz ./
[root][src]$ gunzip config.gz
[root][src]$ mv config .config
[root][src]$ tar -xjf linux-2.6.28.tar.bz2
[root][src]$ ln -s linux-2.6.28 linux
[root][src]$ cd linux
[root][linux]# cp ../.config ./
[root][linux]# make menuconfig
Я не буду приводить конкретные опции ядра в тексте, но приложу ссылку по которой можно скачать мой текущий конфиг для моего нетбука. Хотя я и не претендую на абсолютную точность своего конфига. Ссылка на конфиг — http://rootfox.com/.config
В ядре я отключил поддержку несуществующих у меня устройств, подключил модулями планируемые к использованию устройства, задействовал функции энергосбережения, указал тип своего процессора — семейство Core 2 (Intel Atom N270), включил Hyperthreating.
Далее я скомпилировал его и установил вместе с модулями:
root[linux]# make && make modules_install && make install
Параллельно русифицируем консоль, для собственных удобств. Я выбрал кодировку UTF-8, внес изменения:
в /etc/rc.d/rc.font
setfont LatArCyrHeb-16.psfu.gz
в /etc/profile.d/lang.sh
export LC_COLLATE=C
if [ "$TERM" = "linux" ]; then
UTF8=""
UTF8=$(echo $LANG | grep utf8)
[ ! "$UTF8" = "" ] && /usr/bin/unicode_start
fi
Перезагрузка и переходим к настройке xorg, настраиваем разрешение, переключение раскладок клавиатуры, подключение внешней USB-mouse совместно с тачпадом, скроллинг тачпада и шрифты. Мой рабочий файл конфигурации с вертикальным скроллингом на тачпаде лежит здесь: http://rootfox.com/xorg.conf
Добавлю одну приятность: при наборе текста в иксах иногда качаешься пальцами тачпада и курсор перемещается, что бывает неприятно. Выход из данной ситуации нашелся командой:
syndaemon -i 1 -d -t -K
Можно просто добавить в автозагрузку оконного менеджера. В XFCE это делается через меню Настроки-Автозагрузка.
Запускаем иксы, настраиваем меню под свои нужды. Дл я установки и удаления приложений можно использовать пакетный менеджер netpkg или его графический аналог xnetpkg. Но я рекомендую использовать более удобный zendo.
Тюнинг.
Для управления функциями энергосбережения необходимо настроить события для демона acpid. В каталоге /etc/acpi/events/
я создал следующие файлы:
[root][events]$ cat ac_adapter
#Реакция на включение/отключение адаптера питания
event=ac_adapter ACAD
action=/scripts/acpiac.sh
Содержимое скрипта указанного в параметре action:
[root][events]$ сat /scripts/acpiac.sh
#!/bin/bash
# Script to handle AC plug and unplug events
# find out if adapter is plugged in or not
if [ "`sed -e "s/.[^ ]* *//" /proc/acpi/ac_adapter/ACAD/state`" = "on-line"]
then
logger "ACPI: AC adapter is on-line, setting hdparm values"
hdparm -B 240 /dev/sda
# set spindown timeout to 30 minuts
hdparm -S 241 /dev/sda
# step processor(s) up to full power
/etc/rc.d/rc.syslog start
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "performance" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
else
logger "ACPI: AC adapter is off-line, setting hdparm values"
/etc/rc.d/rc.syslog stop
hdparm -B 180 /dev/sda
# set hard drive timeout to 2 minutes
hdparm -S 60 /dev/sda
# step processor(s) down to powersave mode
echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "powersave" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
fi
Вкратце, суть в следующем: при отключении питания переводим процессор на частоту 800Mhz, переводим в экономичный режим жесткий диск, отключаем syslog что бы не писать лишний раз на жесткий диск и он долбше находился в спящем состоянии. При подключении питания включаем максимальную производительность. Для меня это оптимальный режим.
[root][events]$ cat lid
#Реакция на закрытие/открытие крышки ноутбука.
event=lid
action=/scripts/susp2ram.sh
[root][events]$ cat /scripts/susp2ram.sh
if grep -q open /proc/acpi/button/lid/LID/state
then
/usr/bin/xset -display :0.0 dpms force on
else
/usr/bin/xset -display :0.0 dpms force off
fi
echo 3 >/proc/acpi/sleep
Отключаем питание дисплея и отправляем в спячку. При открытии крышки проснется сам.
[root][events]$ cat power
#Реакция на нажатие кнопки выключения нетбука
event=power
action=/scripts/susp.sh
[root][events]$ cat /scripts/susp.sh
#!/bin/sh
echo shutdown > /sys/power/disk
echo disk > /sys/power/state
/etc/rc.d/rc.font
Система сбрасывает на указаный мной в конфигурационном файле ядра раздел образ оперативной памяти и выключает питание. При загрузке автоматически восстанавливает состояние памяти. /etc/rc.d/rc.font было добавлено в связи с одним неприятным глюком — не восстанавливались кириллические шрифты в консоли при просыпании.
Такой подход к управлению питанием я выбрал потому что он универсален и работает как при запущеном X-сервере так и без него.
Настраиваю доступ к домашней сети wi-fi:
root[etc]# wpa-passphrase net password
network={
ssid="net"
#psk="password"
psk=59caffc4e46452de248475881adbd426f9e95ad4f07e3f658c7c83972a61c52c
}
Эти данные помещаю в файл /etc/wpa_supplicant:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
network={
scan_ssid=0
ssid="net"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP
#WEP104 WEP40
#psk="password"
psk=59caffc4e46452de248475881adbd426f9e95ad4f07e3f658c7c83972a61c52c
}
И управляю этим подключением используя свой скрипт:
root[etc]# cat /scripts/homewifi.sh
#!/bin/sh
wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant.conf -B
echo "nameserver 192.168.1.1" > /etc/resolv.conf
ifconfig wlan0 192.168.1.85
route add default gw 192.168.1.1
Я делаю так потому, что мне нравится когда ни чего, ни куда без моего ведома не подключается. По идее можно использовать для этих целей менеджер сетевых подключений wicd.
Далее я решил побаловаться с вебкамерой раз уж она у меня есть)
Первое что пришло на ум — установить Skype. На сайти Skype пакета для Slackware или Zenwalk не было, но это меня не огорчило — есть проект deb2tgz (code.google.com/p/deb2tgz/) позволяющий сконвертировать скомпилированый пакет Debian в пакет Slackware.
Установив я естественно подключился и в настройках включил web-камеру. Она заработала и даже показала картинку. Но при попытке позвонить меня ждало разочарование — микрофон не работал. Я пробовал подключать внешний микрофон, встроенный, игрался с драйверами, но завести микрофон у меня не удалось — будем надеятся разработчики чипсета исправят в ближайшее время этот недочет, или вы окажетесь более удачливыми)
Установка ПО в Zenwalk, как я уже писал выше, удобнее всего производится посредством пакетного менеджера netpkg. Например установка hping:
root[~]# netpkg hping
[N][extra/n] Found hping3-20051105-i486-48.1.tgz on the repository : not installed
what should I do ?
1) install
2) download
3) skip
#? 1
Собственно система готова к употреблению и тяжелым боевым будням. На этом я заканчиваю приведением ряда полезных ссылок начинающему пользователю дистрибутива Zenwalk.
http://zenwalk.org/ – Сайт проекта Zenwalk
http://zur.zenwalk.org/ – пользовательский репозитарий — именно здесь можно найти самые свежие версии необходимого тебе ПО (я брал отсюда OpenOffice 3)
http://linuxpackages.net/ – крупнейшее хранилище прекомпилированых пакетов
Используемые мною репозитарии (прописываются в файле /etc/netpkg.conf):
Internet_mirror = http://distro.ibiblio.org/pub/linux/distributions/zenwalk/i486/current
Internet_mirror = http://zen-repo.meticul.eu/i486/current
Internet_mirror = http://mirror.meleeweb.net/pub/linux/zenwalk/i486/current
Internet_mirror = http://ftp.nux.ipb.pt/pub/dists/zenwalk/i486/current
Internet_mirror = http://zenwalk.linuxish.net/i486/current
Internet_mirror = http://chronos.iut-bm.univ-fcomte.fr/distributions/zenwalk/i486/current
# Snapshot repository (the most up2date, the developpement version)
Internet_mirror = http://distro.ibiblio.org/pub/linux/distributions/zenwalk/i486/snapshot
Internet_mirror = http://mirror.meleeweb.net/pub/linux/zenwalk/i486/snapshot
Internet_mirror = http://zenwalk.linuxish.net/i486/snapshot
Internet_mirror = http://zenwalk.enialis.net/i486/snapshot
# Restricted Repository, Current version (Warning, packages with patent issues)
Internet_mirror = http://zenwalk.enialis.net/restricted/current
Internet_mirror = http://restricted.meticul.eu/current
# Restricted Repository, Snapshot version (Warning, packages with patent issues)
Internet_mirror = http://zenwalk.enialis.net/restricted/snapshot
Internet_mirror = http://restricted.meticul.eu/snapshot