Обработка Слаквари напильником

Есть такой замечательный Linux-дистрибутив -- Slackware. Пользуюсь им уже более 7 лет, с версии 10.2. Есть у Слаки особенность -- надо хорошо поработать напильником, чтобы сделать из неё что-то пригодное для работы. На этой страничке собраны доработки, применяемые мной. В первую очередь, наверное, они собраны здесь для того, чтобы мне не пришлось вспоминать при очередной установке Слаки, что и где подкручивать. Ну и, может быть, это пригодится ещё кому-нибудь.

В тексте местами встречаются упоминания конфигов или diff'ов -- все они находятся в одном архиве (см. внизу страницы).

Краткое содержание
Краткий список того, что надо сделать в первую очередь
  1. Настроить локаль
  2. Русифицировать консоль -- шрифт и раскладка клавы
  3. Подправить /etc/inputrc
  4. Подправить /etc/fstab
  5. Настроить LILO
  6. Настроить MC
  7. Завести обычного юзера
  8. ???
  9. PROFIT!
Неотсортированные настройки
Русификация виртуальной консоли

Загрузка шрифта -- /etc/rc.d/rc.font. В этом файле есть одна закомментированная строчка, она устанавливала большой зелёный курсор. Это было нужно для старого ноутбука с тормозной DSTN-матрицей -- обычный мигающий курсор в виде подчёркивания там виден был плохо.

В файле /usr/share/kbd/consolefonts/Cyr_a8x16.psfu.gz нет буквы "ё", поэтому он заменяется альтернативным.

Раскладка клавиатуры -- /etc/rc.d/rc.keymap.

InfoZIP в Slackware 13.1    [+22.02.2010]

Его надо пропатчить, т.к. есть проблемы с кодировками. Если архив создан в DOS/Windows и содержит файлы с русскими именами (в кодировке cp866), то после распаковки в Линухе вместо этих имён будет хрен знает что. Патчи взяты из LFS, слакбилд -- из source/a/infozip. Тарболы с исходниками берутся оттуда же. А вот тарбол с патчами и слакбилдом.

В Slackware 13.0 InfoZIP обновили до версий 3.0 / 6.0, так что тот патч к нему не подходит. Пришлось откатиться до InfoZIP'а из Slackware 12.2...

Добавление юзера    [+22.04.2010]

Не забыть добавить юзера в те группы, который предлагает adduser. И в группу wheel тоже -- для того, чтобы /sbin и т.п. добавились в PATH.

Юзерский bin    [+22.04.2010]

~/bin -- каталог для хранения самодельных скриптов, программ, и т.п. Добавляется в PATH в ~/.bashrc ~/.profile.

Юзер не может форматировать man-страницы

То есть, конечно, может, но при следующем запуске команды man требуемая страница снова будет переформатирована. А у рута всё нормально... Исправляется командами
chmod 777 /var/man
chmod 777 /var/man/cat*
Криво :-(( Но работает.

IrDA для ноутбука    [+18.07.2010]

Для начала -- поставить irda-utils. Конфиги -- /etc/modprobe.d/irda.conf, /etc/rc.d/rc.irda. Затем
mknod /dev/ircomm0 c 161 0
mknod /dev/ircomm1 c 161 1
mknod /dev/irnet c 10 187
chmod -v 666 /dev/ir*

IrDA запускается в /etc/rc.d/rc.local, а останавливается -- в /etc/rc.d/rc.local_shutdown.

А вот если используется udev, создавать файлы устройств вручную нет смысла -- это работа для udev'а. Для этого нужно, как минимум, загрузить модули ircomm и ircomm-tty. [А что ещё?..]

Фортунки с ЛОР'а

Очень уж мне нравятся эти фортунки :-)) Взять их можно здесь: http://www.lorquotes.ru/fortunes.php. Скопировать под именем lor в каталог /usr/share/games/fortunes и выполнить команду
strfile /usr/share/games/fortunes/lor
Затем подправить файл /etc/profile.d/bsd-games-login-fortune.sh, оставив там только lor и linuxcookie.

Граббер экрана    [+22.04.2010]

См. ~/bin/scrgrab.sh. Прописывается в ~/.icewm/keys и реагирует на Ctrl+Shift+f, Ctrl+Shift+w, Ctrl+Shift+r Alt+PrtScr, Ctrl+PrtScr, PrtScr. Грабит окно с рамкой, окно без рамки и корневое окно соответственно. Результат в формате PNG кладётся в домашний каталог под именем `date +%Y%m%d_%H%M%S`.png.

Кстати, недавно на unixforum'е встретилось аналогичное решение, но с использованием import'а из пакета ImageMagick. Его очевидные недостатки -- весьма странная обработка рамок пересекающихся окон (возможно, только в IceWM?) и необходимость кликать мышкой для копирования корневого окна.

/etc/inputrc

Home/End/^Left/^Right/etc для xterm/rxvt. На PgUp/PgDown у меня висит поиск по истории (history-search-{backward,forward}), а {beginning,end}-of-history перенесены на ^[Pg]Up/^[Pg]Down. show-all-if-ambiguous включено -- ИМХО так удобнее. Это всё настраивается в /etc/inputrc.

/etc/sysctl.conf

vm.swappiness=10 -- для того, чтобы ядру поменьше хотелось свопить. См. /etc/sysctl.conf.

/etc/fstab

Чего там полезного:

FUSE

В /etc/fuse.conf надо сказать user_allow_other, чтобы юзер мог юзать allow_other или allow_root при монтировании.

Ускорение загрузки    [+17.10.2010]

/etc/rc.d/rc.M.ldconfig.diff удаляет запуск ldconfig'а при загрузке, а /etc/rc.d/rc.M.xfonts-syslog.diff -- запуск fc-cache. (Он же добавляет запуск syslog-ng.)

Есть более правильный способ, подсмотрен здесь: A Slackware Desktop Enhancement Guide. Тормозные куски rc-скриптов (запуск ldconfig, fc-cache, обновление кэша иконок и т.д.) выделяются в спец. скрипт, ежедневно запускаемый cron'ом (кладётся в /etc/cron.daily).

/etc/sudoers

Добавлена возможность запуска некоторых прог (mount, umount, shutdown, halt, poweroff, reboot, ethereal, pppd, pccardctl, powertop) без запроса пароля.

Локаль    [+25.09.2009]

Настраивается в /etc/profile.d/lang.{,c}sh. Собс-но локаль -- ru_RU.koi8r, LC_MESSAGES -- en_US, LC_NUMERIC -- C.

ACPI для ThinkPad T21    [+06.06.2011]

Все ништяки -- в /etc/acpi. А именно: кнопочка "Power", suspend to RAM при закрывании крышки, suspend to disk при нажатии Fn+F12, переключение мониторов (встроенный/внешний) при нажатиях Fn+F7. На кнопку [ThinkPad] повешена пауза для плеера cmus (при помощи cmus-remote и su).

У обоих suspend'ов есть проблемы со звуком -- драйвера звуковухи нельзя выгрузить, если запущена хоть одна прога, использующая их. А выгружать их надо -- иначе после пробуждения кина звука не будет... Кроме того, замечены проблемы с флоповодом в UltraBay после пробуждения из suspend to disk. Методы решения этих проблем пока не найдены :-( Впрочем, можно с помощью lsof найти, кто открыл какие-нибудь файлы в /dev/snd, прибить эту софтину, а затем выгрузить драйвера. Но это как-то негуманно...

cpufreqd    [16.06.2009] [+18.07.2010]

Тоже для T21. В /etc/rc.d/rc.modules надо раскомментировать строчку с загрузкой модуля speedstep-smi. Конфиг -- /etc/cpufreqd.conf. У моего первого T21 [были :((] доступны всего 2 частоты -- 650 и 800 МГц (у второго -- 600 и 750), поэтому набор правил такой:

CPU \  АКБ  0-20   20-90  90-100
vvv  \ >>>
------------ AC on -------------
 0-50       650    650    650
50-100      650    800    800
------------ AC off ------------
 0-65       650    650    650
65-80       650    650    800
80-100      650    800    800

Слакбилд для cpufreqd взят на slackbuilds.org (для Slackware 12.1).

D-Bus    [25.09.2009]

Чтобы осчастливить GIMP и, возможно, ещё кого-то, сказать:
dbus-uuidgen --ensure
(Это нужно только в том случае, если D-Bus не запускается при старте системы.)

PATH в /etc/profile и ~/.profile    [25.09.2009] [+22.04.2010]

Я категорически против добавления "." в PATH не только для рута, но и для обычного юзера. Поэтому соотв. кусок из /etc/profile я выкинул. С другой стороны, и простому юзеру не помешают /sbin и т.п. Поэтому они добавляются в ~/.bashrc. Также умные люди советовали добавить в PATH /etc/rc.d...

CDPATH в ~/.bashrc    [17.10.2010]

export CDPATH=".:~:~/d" позволяет заходить в подкаталоги домашнего каталога и каталога ~/d, не набирая их полного пути.

Иксы
Конфигурация Иксов для ThinkPad T21    [+06.06.2011]

См. /etc/X11/xorg.conf. Принципиальные изменения:

startx и порт 6000

На /usr/bin/startx накладываем патч для отключения прослушивания Иксами порта 6000.

Шрифты

/usr/share/fonts/cyrillic/fonts.alias -- там устанавливается шрифт "fixed".

~/.gtkrc-2.0 -- настройка шрифта для GTK'шных прог.

Иксы в Slackware 13.0    [26.11.2009]

В Slackware 13.0 применена новая версия Иксов, со всякими "ништяками" :-( Теперь Иксам для нормальной работы нужен HAL, а я его принципиально не юзаю. А без него не работают клава и мышка. Поэтому пришлось добавить в секцию "ServerFlags" файла /etc/X11/xorg.conf четыре дополнительные опции. См. /etc/X11/xorg.conf-13.0.diff.

IceWM    [+06.06.2011]

~/.xinitrc -- копия xinitrc.icewm, но строки с icewmbg и icewmtray удалены, т.к. лишний раз запускать эти проги не стОит.

Файлы /usr/share/icewm/taskbar/{collapse,expand}.xpm отредактированы с целью уменьшения ширины на 6px.

Ещё немного увеличить количество полезной информации, вмещающейся на таскбар, удалось благодаря использованию шрифта "PT Sans Narrow" для индикатора АКБ и для надписей на кнопках ({ApmFontNameXft,QuickSwitchFontNameXft}="PT Sans Narrow:size=12").

В IceWM 1.3.6 при наведении курсора на монитор CPU показывается разная полезная инфа. Мне только не понравилось то, что буква "M" пишется слитно с объёмом памяти и свопа, и (особенно) то, что частота проца указана в ГГц (0.600GHz -- красиво, да?). Лечится сие наложением патча acpustatus.cc.diff.

xpdf в Slackware 13.1    [18.07.2010]

Тормозит при прокручивании страницы средней кнопкой мыши или клавишами Вверх/Вниз. Лечится установкой xpdf из Slackware 13.0.

Доработки Midnight Commander'а
Кривой редактор в MC    [+18.07.2010]

Как оказалось, в Слаквари 12.2 MC немного кривой -- плохо работает выделение текста во встроенном редакторе с помощью Shift+стрелочки. Поэтому оставил MC из 12.1.

Просмотр HTML в MC    [25.09.2009] [+18.07.2010]

Чтобы русский текст отображался правильно, запустить lynx и выставить ``Display character set''. Или отредактировать ~/.lynxrc. Для MC 4.7.x неактуально -- см. ниже.

Юзер не может смотреть консоль в MC

^O нормально работает для простого юзера только в xterm, rxvt, etc. В виртуальной консоли -- пустой экран. Исправляется командами
useradd -g users -d / -s /bin/false vcsa
chown vcsa /dev/vcsa*
chmod +s /usr/libexec/mc/cons.saver
Последнюю команду (chmod ...) надо выполнять при каждом обновлении MC.

Исправление багов extfs

Во-первых, ISO-9660. При попытке войти в iso-образ выскакивает предупреждение; кроме того, есть проблемы с именами файлов. Лечится накладыванием патча /usr/share/mc/extfs/iso9660.diff. Для лечения использовал iso9660 из старой версии MC.

Во-вторых, 7Z. Имена каталогов дублируются. Лечится накладыванием патча /usr/share/mc/extfs/u7z.diff.

Добавления в mc.ext

Исправлены arj, DejaVu (добавлен .djv). Добавлены: Gerber, PCX. См. /etc/mc/mc.ext-*.diff.

Добавления в filehighlight.ini

[archive]: 7z

Кривой MC в Slackware 13.0    [+06.06.2011]

В общем, разработчики много чего исправили, но и поломали не меньше :-( Одна строка функциональных клавиш чего стОит... И "*" при копировании и переименовании поломали (не расширяется до имени файла).

Из мелочей: вместо lynx'а для просмотра HTML теперь используется links, w3m и только в последнюю очередь lynx. Для links'а нужен ключ "-codepage", чтобы текст отображался в правильной кодировке, а не в транслите. Аргументом этого ключа является вывод команды "enca -i ИМЯ_ФАЙЛА". Это необходимо из-за того, что MC автоматически определяет и использует кодировку _исходного_ файла, а не результата работы links'а. Т.о. файл будет отображаться корректно только если кодировки исходного файла и текстового вывода совпадают. Баг: т.к. links не умеет выводить в UTF-8, кодировку таких файлов придётся выбирать вручную ("No translation").

MC 4.7.x    [22.04.2010]

Порадовал MC 4.7.0-pre4 и последующие релизы. Но косяки там всё же имеются... В одной из pre-версий поменяли заголовок xterm'овского окна с привычного "mc - /путь" на извращённое "mc [юзер@хост]:/путь". Лечится применением патча mc-xterm-title.diff.

При редактировании встроенным редактором программ на Perl'е не подсвечиваются интерполируемые переменные (хотя при редактировании shell-скриптов подсвечиваются...). Поэтому /usr/share/mc/syntax/perl.syntax подправлен по аналогии с sh.syntax.

MC 4.7.4    [+06.06.2011]

Разработчики продолжают радовать нововведениями. На этот раз поломали buttonbar -- если на кнопке нет надписи, то и цифирка не показывается (а показывается тупо один чёрный пробел). В результате кнопки скачут туда-сюда, особенно это заметно при нажатии F1. Лечится это применением патча buttonbar-nums.diff. Исправлено в 4.7.5! А вышеуказанный патч исправляет ширину цифровых меток 1 и 10 -- как и в традиционных коммандерах теперь они имеют ширину 1 и 3 символа соотв. (а не 2 и 2, как всегда было в MC).

MC 4.7.5.1    [06.06.2011]

Это поломали ещё в каком-то предыдущем релизе -- цифирки в buttonbar'е. Ярко-белые! Просто бесят... Сделал их светло-серыми (поправив дефолтный скин).

Слакбилд    [06.06.2011]

Все патчи теперь собраны в одном тарболе с патчами и слакбилдом. (Проверено для MC 4.7.5.1.)

Интернет

Интернет ко мне может поступать тремя путями: через канал Корбины, через мобильник посредством USB и через него же посредством IrDA.

С середины лета 2009 г. первый путь уже не актуален, но зато добавился 4-й -- через GPRS-момед от Мегафона.

После настройки (см. ниже) к Инету можно будет подключиться набрав команду
sudo pppd call crb
или
sudo pppd call mfi
или
sudo pppd call mfu
или
sudo pppd call mm
А разрывается соединение нажатием ^C.

Общие конфиги
PPTP от Корбинки

Качаем с sourceforge.net файлик pptp-1.7.1.tar.gz, а со slackbuilds.org -- pptp.tar.gz. Устанавливаем.

GPRS от Мегафона, через телефон (USB)

Этот и следующий варианты различаются между собой только драйвером коммуникационного устройства. В случае USB нужно в /etc/rc.d/rc.modules раскомментировать строчку с модулем cdc-acm. Это прекрасно работает для телефончика Motorola C650. Взаимодействие с телефоном осуществляется через /dev/ttyACM0. Сейчас я вдруг обнаружил, что у этого файла владелец и группа -- мои, а права -- 660. Я не помню, для чего я менял владельца (по умолчанию там root:uucp), может для инета, а может для передачи файлов на телефон... Главное, что работает.

GPRS от Мегафона, через телефон (IrDA)

Идея здесь -- в точности, как у варианта с USB. Файл устройства -- /dev/ircomm0. Его владелец -- root:root, права -- 666. Впрочем, о настройке IrDA написано выше. Что касается конфигов, то вместо "mfu" следует читать "mfi".

GPRS от Мегафона, через GPRS-момед    [+18.07.2010]

lsusb подсказываэ, что у меня вот такая шняга:

ID 12d1:1003 Huawei Technologies Co., Ltd. E220 HSDPA Modem / E270 HSDPA/HSUPA Modem

Качаем со slackbuilds.org файлик usb_modeswitch.tar.gz, а с соотв. сайта -- исходники. Устанавливаем a/usb_modeswitch.txz. На /etc/rc.d/rc.udev ставим разрешение на выполнение. Теперь при втыкании модема будет появляться устройство /dev/ttyUSB0 (или аналогичное).

Всё. Дальше ничего интересного; всё, что надо, описано выше.

Ещё можно отучить модем оперделяться как CD-ROM при включении, это несколько уменьшит время его раздупления, и, кроме того, отпадёт необходимость в usb_modeswitch. (Впрочем, последнее пофиг, т.к. она уже включена в Слаку 13.1.) Для этого достаточно сказать:
echo "AT^U2DIAG=0" > /dev/ttyUSB0
После этого момед начинает определяться вот так:

ID 12d1:1001 Huawei Technologies Co., Ltd. E620 USB Modem

Вообще, по этой теме есть вот такая табличка:

Загрузчик и ядро
LILO    [+25.09.2009]

(Вот не понимаю я криков типа "GRUB -- наше всё!"... Мне почему-то и LILO хватает...) Собственно, LILO прекрасно работает и с настройками, созданными программой установки. Но вот на ноутбуках IBM ThinkPad T21, Toshiba 335CDS и Toshiba T2115CS он почему-то очень долго загружал ядро. Помог ключ "compact" в /etc/lilo.conf.

Ядро    [+18.07.2010]

На обычных компах ядро, включённое в дистрибутив, прекрасно работает. Разве что надо initrd собрать:
mkinitrd -c -k 2.6.27.7 -m reiserfs -f reiserfs -r /dev/hda?
А вот на неоднократно упоминавшемся здесь ноуте ThinkPad T21 это ядро виснет из-за конфликта модема и сетевухи, находящихся на одной MiniPCI-карточке. Лечится выкидыванием из ядра модуля 8250_pci (модем всё равно нафиг не нужен). Заодно можно и без initrd обойтись, вкомпилировав модуль reiserfs в ведро.

После обновления Слаки до 13.1 (ядро 2.6.33.4) проблемы с момедом исчезли :-)

Разнообразные конфиги из домашнего каталога
.Xdefaults

Цвета, курсор, размер окна в xterm и rxvt, размер и положение окна Emacs'а, включение возможности копировать/вставлять русский текст мышкой в xterm.

.Xmodmap    [+06.06.2011]

Уже не помню, зачем я его правил... :-( А, вспомнил. Чтобы на ThinkPad'е NumLock работал. Подробности -- на thinkwiki.org...

.bashrc    [+25.09.2009]

Настройка истории команд, приглашение у юзера и рута разного цвета, заголовок в xterm, alias'ы.

.profile    [25.09.2009]

Настройка PATH и тупое включение .bashrc.

Замена стандартных программ
lighttpd

Апач стал очень жирным, поэтому был заменён на Лайти. Перед его сборкой надо сказать
groupadd -g 208 lighttpd
useradd -u 208 -g lighttpd -d /var/www lighttpd
А после сборки и установки
chgrp lighttpd /var/lib/php
cp /etc/httpd/php.ini /etc/lighttpd/php.ini

lighttpd.conf.diff -- прикручен PHP; rc.6.lighttpd.diff, rc.K.lighttpd.diff и rc.M.lighttpd.diff -- запуск и останов Лайти оттуда, откуда положено, а не из rc.local.

pdnsd

dnsmasq мне показался довольно бестолковым, и поэтому без особого сожаления был заменён на pdnsd. Конфиг -- /etc/pdnsd.conf. Также есть 2 патча для запуска/останова pdnsd откуда надо, как и в случае с Лайти.

syslog-ng    [+18.07.2010]

Обычный syslog задолбал сообщениями от GPM. Точнее, невозможностью отключить их без серьёзных последствий. Поэтому был заменён на syslog-ng. Слакбилды для syslog-ng и eventlog -- на http://www.slacky.eu/ SlackBuilds.org. /etc/rc.d/rc.M.xfonts-syslog.diff -- запуск syslog-ng и отключение запуска fc-cache при загрузке. /etc/rc.d/rc.inet1.diff -- изменения, связанные с syslog-ng и восстановление того, что было закоментировано разработчиками.

К слакбилду с SBo прилагается инструкция с более правильным способом выпиливания syslog'а и впиливания syslog-ng, чем применён мной. Надо будет попробовать...

htop    [+22.04.2010]

ИМХО удобнее, чем обычный top. В IceWM (см. ~/.icewm/prefoverride) htop вызывается вместо top при клике мышкой по монитору CPU.

Geeqie    [+18.07.2010]

GQview по ряду причин пришлось отправить фтопку, к тому же беты (а тем более релиз) Geeqie стали вполне юзабельны. После компейляции и установки Geeqie надо: а) прописать его в /etc/mc/mc.ext; б) настроить клавиши "b" и "n" для перехода вперёд/назад (^o -> keyboard, {Next,Prev}ImageAlt2 поменять на "n" и "b" соответственно); в) пропатчить /usr/share/applications/gqview.desktop в связи с руганью на gqview.png. Как вариант, можно удалить GQview, тогда отпадёт необходимость в пункте в), а вместо ковыряния mc.ext можно будет сделать симлинк /usr/bin/gqview -> /usr/bin/geeqie.

А из Slackware 13.1, кстати, GQview уже выпилили ;-)

Некоторые дополнительные проги

В дополнение к ~790 (ужос...) официальным слакварьным пакетам у меня установлено больше сотни дополнительных, как правило, собранных с помощью слакбилдов со SlackBuilds.org. Для некоторых нужных мне прог там слакбилдов не было, поэтом пришлось писать их самому...

Три следующих слакбилда не попали на slackbuilds.org, т.к. их аналоги появились в /pending буквально на день раньше моих... Но то, что лежит на вышеуказанном сайте, мне не нравится, в первую очередь тем, что все проги устанавливаются в /usr/avr, а не в более подходящий (ИМХО) /opt/avr.

Конфиги

Архив с конфигами (30 Кбайт).

[02.06.2009] [15.06.2009] [25.09.2009] [26.11.2009] [22.02.2010] [22.04.2010] [18.07.2010] [17.10.2010] [06.06.2011]

Продолжение следует...