пятница, 9 января 2009 г.

Напильник для Fedora 10 (Russian Fedora) под ноутбук Dell D430

1. Установка

Скачать: http://russianfedora.ru/rf10-announcement
Russian Fedora, т.к. у нее сразу встроены репы rpmfusion и tigro, а также есть профиль установки XFCE-десктопа без сети (его я и ставил).
После установки сделал
# yum update

2. Отключение pc speaker

Ищем модуль поддержки этого чуда:
# lsmod | grep sp
pcspkr 6272 0

Чтобы не пищал в текущей сессии:
# rmmod pcspkr

Чтобы модуль не загружался при запуске ОС:
#vi /etc/modprobe.d/blacklist
blacklist pcspkr

3. Отключение графической загрузки.

В Федоре 10 по умолчанию используется графическая загрузка средствами plymouth. Идея этого графического загрузчика, конечно, хороша: после старта ядра экран переключается в нужный режим и более, даже при старте X, не мерцает, а показывает симпатичную заставку.
Но, для работы plymouth необходим DRM kernel modesetting driver. Судя по всему, он есть только для некоторых ATI и Intel. Для моего Intel'а (945GM/GMS/GME) - нет.

Сразу скажу, что для плимута есть кучка тем, как графических (их дополнительно можно ставить yum'ом), так и текстовых. Если плимуту не удается стартануть с графической темой (solar by default - там про планету что-то - можно на ютубе посмотреть :), то он запускается с текстовой (text - внизу экрана ползет трёхцветная полосочка с надписью Fedora 10).
Все темы лежат в каталоге /usr/lib/plymouth/ в виде .so:
# ls -l /usr/lib/plymouth/
total 64
lrwxrwxrwx 1 root root 10 2009-01-06 23:17 default.so -> details.so
-rwxr-xr-x 1 root root 9292 2008-11-17 23:52 details.so
-rwxr-xr-x 1 root root 7068 2008-11-17 23:52 label.so
-rwxr-xr-x 1 root root 29768 2008-11-17 23:52 solar.so
-rwxr-xr-x 1 root root 10344 2008-11-17 23:52 text.so

Так вот, у меня, конечно, плимут показал полосочку, что меня огорчило, т.к. олдскульный экран с запуском служб куда эффектней :). Олдскульная тема плимута тоже есть. Она называется details.

Поменять тему плимута можно так:
#plymouth-set-default-plugin
И обновить initrd:
#/usr/libexec/plymouth/plymouth-update-initrd

Да, включить графическую загрузку можно и без поддержки DRM kernel modesetting, если выставить видео режим framebuffer'а с помощью параметра ядра vga=... (будет работать почти у всех т.к. VESA поддерживает большинство видеокарт). Посмотреть как это сделать можно по ссылкам ниже. У меня такая загрузка заработала, но экран, конечно, при запуске X, мерцал и загрузка шла немного дольше - от такого варианта я отказался.

Далее, хотелось бы на пару секунд все же видеть меню grub и логи ядра при запуске.
Для этого, нужно подправить /boot/grub/grub.conf:

закомментировать hiddenmenu (чтобы показывалось меню), выставить timeout=2 (показывать меню 2 секунды) и убрать из строчки kernel параметр quiet (чтобы были видны логи загрузки ядра)

Ссылки по теме plymouth:
http://www.my-guides.net/en/content/view/125/26/1/12/
http://spoilt.blogsite.org/wordpress/index.php/2008/12/23/fedora-10-graphical-bootloader-plymouth

4. Отключение IMSETTINGS.

Честно говоря, не совсем понял архитектуру этой новой системы контроля методов ввода. Но то, что я понял, позволило сделать вывод, что эта штука мне не нужна :) Т.к. я пользуюсь только двумя языками, оба языка с алфавитом и письмом слева направо.

# vi /etc/X11/xinit/xinitrc.d/50-xinput.sh
DISABLE_IMSETTINGS=true

См.: http://crossonline.blogspot.com/2008/11/howto-stop-imsetting-daemon-im-info.html

5. Отключение SELINUX

В Русской Федоре он, правда, и так в режиме Permissive, но я им не умею пользоваться абсолютно (пока не умею) - поэтому просто его выключил.

#vi /etc/selinux/config
SELINUX=disabled

6. Настройка wifi с WPA и без NetworkManager.

Да, у меня wifi карточка Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01) -- из lspci.
Для нее нужен микрокод (firmware) от производителя, который придется скачать и извлечь из проприетарных дров самостоятельно.

Пока микрокод не загружен в карточку, wpa_supplicant отвечал ошибкой:
SIOCSIFFLAGS: No such file or directory
Could not set interface 'wlan0' UP

А в логи ядра сыпались ошибки:

kernel: firmware: requesting b43/ucode5.fw
kernel: b43-phy0 ERROR: Firmware file "b43/ucode5.fw" not found
kernel: b43-phy0 ERROR: You must go to http://linuxwireless.org/en/users/Drivers/b43#devicefirmware and download the latest fi
rmware (version 4).
firmware.sh[2229]: Cannot find firmware file 'b43/ucode5.fw'

По url: http://linuxwireless.org/en/users/Drivers/b43#devicefirmware есть подробная инструкция как выдрать Firmware.
Вкратце:
# mkdir b43firmware
# cd b43firmware/
# export FIRMWARE_INSTALL_DIR="/lib/firmware"
# wget http://mirror2.openwrt.org/sources/broadcom-wl-4.150.10.5.tar.bz2
# tar xjf broadcom-wl-4.150.10.5.tar.bz2
# cd broadcom-wl-4.150.10.5/driver
# b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" wl_apsta_mimo.o

Бинарь b43-fwcutter из пакета b43-fwcutter. Если он не стоит - нужно проинсталлировать yum'ом.

Все, микрокод есть!

Я не люблю NetworkManager.

# yum erase NetworkManager
и зависимости туда же

Но мне нужен wifi.
Для настройка wifi с wpa в федоре нужно поправить 3 файла и запустить демон wpa_supplicant.

/etc/sysconfig/wpa_supplicant - конфигурационный файл демона wpa_supplicant:

# Use the flag "-i" before each of your interfaces, like so:
# INTERFACES="-ieth1 -iwlan0"
INTERFACES="-iwlan0"

# Use the flag "-D" before each driver, like so:
# DRIVERS="-Dwext"
DRIVERS="-Dwext"

# Other arguments
# -u Enable the D-Bus interface (required for use with NetworkManager)
# -f Log to /var/log/wpa_supplicant.log
OTHER_ARGS="-u -f /var/log/wpa_supplicant.log"

Тут вроде все интуитивно понятно. Указать беспроводные интерфейсы и тип драйвера (wext - использовать драйверы из ядра? :)

Добавить wpa_supplicant в нужные уровни запуска:
# chkconfig wpa_supplicant on

/etc/wpa_supplicant/wpa_supplicant.conf - конфигурация беспроводных сетей:
Всех параметров не помню. По-русски можно почитать на доках гентушников (сам из них :)
http://www.gentoo.org/doc/ru/handbook/handbook-x86.xml?part=4&chap=4#doc_chap2

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
ap_scan=1

network={
ssid="SSID_WLAN"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk="P@$$w0rD"
priority=2
}

/etc/sysconfig/network-scripts/ifcfg-wlan0 - конфигурационный файл сетевого интерфейса:

DEVICE=wlan0
HWADDR=you_mac
ONBOOT=no
BOOTPROTO=dhcp
DHCP_HOSTNAME=my_laptop
TYPE=Wireless
ESSID=SSID_WLAN
MODE=Managed
RATE=Auto
USERCTL=yes
IPV6INIT=no
NM_CONTROLLED=no
WPA=yes

Ноутбук получает параметры сети по dhcp от точки доступа.

Что-то не работает? Как проверить где проблема?
1. Остановить wpa_supplicant
# service wpa_supplicant stop
2. Поубивать работающие экземпляры wpa_supplicant
# killall wpa_supplicant
3. Запустить wpa_supplicant вручную
# wpa_supplicant -B -Dwext -iwlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Он останется висеть в консоли. Вылетает с ошибками? Проблема, видимо, с драйверами. М.б. микрокод? dmesg в помощь.
4. Из другого терминала посмотреть настройки iwconfig.
Подхватилась ли сетка на уровне wifi? Назначился ли ESSID, Encryption key?
Если нет, значит проблема в настройках wpa (/etc/wpa_supplicant/wpa_supplicant.conf).
5. Если да, то получаем по dhcp/назначаем параметры ip сети и пробуем работать.

7. [НЕ] Приятные мелочи.

a. Выключаю PakageKit апплет (все равно софт ставлю из консоли yum'ом)
# xfce4-autostart-editor
или копать в сторону ~/.config/autostart/ и /etc/xdg/autostart/ - это для всех
opendesktop.org совместимых DE

b. Нравятся мне murrine-based темы
# yum install gtk-murrine-engine

c. Terminus = True
# yum install terminus-font-console terminus-font-x11

d. MS corefonts - особо не нужны, но вдруг...
# wget http://www.my-guides.net/en/images/stories/fedora9/msttcore-fonts-2.0-2.noarch.rpm
# rpm -ivh msttcore-fonts-2.0-2.noarch.rpm

e. PgUp/PgDown - поиск в истории bash по введенной части команды - "попробуй - полюбишь"

# vi /etc/inputrc
добавить куда-нибудь перед последним $endif:

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
"\e[5~": history-search-backward
"\e[6~": history-search-forward

f. Хочется, что б scroll lock загорался на русской раскладке... а xorg.conf - то отсутствует... (Актуально для XFCE. Переключалка еще не умеет зажигать светодиод)
Ну и не нужен он (хотя, при желании - можно создать).
setxkbmap -layout "us,ru" -model "pc105" -option "grp:ctrl_shift_toggle,grp_led:scroll"
в автозапуск DE.
Хм... может, это можно было сделать средствами отключенного мной X INPUT METHOD?

g. Мне нужна Sun Java.

В репе tigro есть JDK (устанавливается в /usr/java). Можно поставить ее (ок 80Мб) и сконфигурить по инструкции http://www.fedoralinux.ru/content/view/102/50/#23_2_sunjava
Либо все сделать по этой инструкции :) - т.е. самостоятельно скачать JDK/JRE, распаковать и настроить.

1 комментарий:

Unknown комментирует...

plymouth у вас не заработал, вероятно, из-за отсутствия проги v86d которая запускает 32 битные бинарники в виртуальном окружении (так работает плимут). У меня было тоже (в Debian), но способ я нарыл и написал простенькую инструкцию: http://hwtlf.blogspot.com/2010/05/plymouth-debian.html на команды можно забить, главное суть. Особо не расписывал но в целом понятно. Правда у меня solar без планет, как их включить не знаю :(