суббота, 10 апреля 2010 г.

Создание LiveCD Slackware based. Часть 4: HTPC based on X.org

Имея свой небольшой домашний сервер, возникает желание занять его чем-нибудь полезным, благо rtorrent'у для своей работы хватит и 486DX2 процессора(сам пробывал). Первая мысль которая возникает - создание музыкального центра с общей коллекцией музыки на жестком диске, что бы при желании послушать диск одним щелчком, а сама коллекция была бы доступна по NFS. Вторая мысль возникает после создании коллекции музыки: сделать свое радио, т.е. проигрывание рандомом по всей коллекции, или жанрам.
И само-собой с сервера хочется смотреть видео. Вот о видео мы и поговорим.

Итак, сегодня рассматриваем построение мультимедиа-станции на базе cетевой станции, использующей:
-- X.org в качестве графической среды,
-- MWM в качестве оконного менеджера,
-- MPlayer в качестве видеоплеера,
-- управление по радиоканалу через джойстик,
-- графический интерфейс GTK-2,
-- вес готовой болванки 94 Mb,
-- расход оперативы при старте 256 Mb

Обсудим концепцию системы. Мы используем в качестве базы cетевую станцию, т.к. предполагаем что музыка и видео лишь расширение системы, а основное назначение все же работа с сетью. Если это не так, то можно собрать на основе базовой системы, болванка будет на 10 Mb легче.

В силу исторических причин для качестве оконного менеджера я использую MWM. Его преимущество в том что его пакет весит полтора мегабайта, а недостатком - то что он постоянно отваливается. Не рекомендую им пользоваться. Нам нужно всего-лишь экранное меню и в качестве альтернативы думаю можно использовать Xdialog, но он работает на Gtk2 интерфейсе который весит порядочно. Но судя по комментарию на SlackBuilds.org его можно собрать на GTK-1 интерфейсе который полегче.

для управления используется джойстик. почему не ИК пульт ДУ ? это вынужденно. в моем городе джойстики валяются в каждом магазине, а про usb-пульты ДУ не слыхивали даже в радио-магазинах. для работы с джойстиком используется программа rejoystick которая позволяет переопределить на его кнопки клавиши клавиатуры. программа работает в демоническом режиме если запустить с опцией -d
rejoystick -d
если же запустить без параметров, ты вылазит конфигуратор, который... работает на GTK+2. это "удовольствие" утяжеляет нашу систему еще на 10 MB. решение "в обход" будет искаться.
кнопок на джойстике мало и у каждой программы свои "горячие" клавиши, поэтому для каждой программы следует создавать свой конфиг .rejoystickrc и при запуске через меню нужной программы, подменять конфиг с перезапуском rejoystick.
MPlayer весит 9 MB. При сборке пакета в slackbuild'е во-первых убирайте всякое упоминание о gui, а во-вторых добавте --disable-mencoder что бы не собирать лишнего

Сложности:
-- нужно будет суметь собрать свое ядро,
-- проприетарный драйвер Nvidia собирается только из-под ядра в котором будет работать. т.е. сначала нужно собрать всю систему, затем добавить пакеты для компиляции включая исходники ядра, далее затем собрать драйвер, и затем удалить пакеты для компиляции. одним словом - chroot здесь не поможет.
Тестовое железо:
M/B: EP-3PTA
CPU: Celeron 1.4GHz
RAM: 512Mb
VIDEO: GeForce4 MX-440 8x 64Mb
Ethernet: rt8139
Joystick: Logitech Cordless RumblePad 2

Итак, у меня есть готовая сборка LiveCD, которую я собрал методом подбора пакетов раза с третьего. Здесь я просто выложу список пакетов, с необходимыми конфигами и пояснениями. предполагаю что некоторые пакеты здесь будут лишними, со временем я будут их выявлять и удалять из списка.
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/pkgtools-13.0-noarch-3.tgz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/xz-4.999.8beta-i486-1.tgz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/tar-1.22-i486-2.tgz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/gzip-1.3.12-i486-1.tgz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/aaa_base-13.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/aaa_elflibs-13.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/aaa_terminfo-5.7-noarch-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/acl-2.2.47_1-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/acpid-1.0.8-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/attr-2.4.43_1-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/bash-3.1.017-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/bin-11.1-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/bzip2-1.0.5-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/coreutils-7.4-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/cpio-2.9-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/cxxlibs-6.0.10-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/devs-2.3.1-noarch-25.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/e2fsprogs-1.41.8-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/etc-13.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/findutils-4.4.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/gawk-3.1.6-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/gettext-0.17-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/getty-ps-2.1.0b-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/glibc-solibs-2.9-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/grep-2.5.4-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/hdparm-9.3-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/infozip-6.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/inotify-tools-3.13-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/kbd-1.15-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/less-418-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/lha-114i-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/module-init-tools-3.6-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/openssl-solibs-0.9.8k-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/pciutils-3.1.3-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/procps-3.2.7-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/sed-4.1.5-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/shadow-4.0.3-i486-18.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/sharutils-4.7-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/slocate-3.1-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/splitvt-1.6.5-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/sysfsutils-2.1.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/sysvinit-2.86-i486-6.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/sysvinit-scripts-1.2-noarch-30.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/udev-141-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/utempter-1.1.4-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/util-linux-ng-2.14.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/ap/nano-2.0.9-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/ap/screen-4.0.3-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/glibc-i18n-2.9-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/cyrus-sasl-2.1.23-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/inetd-1.79s-i486-8.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/iptables-1.4.3.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/iputils-s20070202-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/lynx-2.8.6rel.5-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/net-tools-1.60-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/network-scripts-13.0-noarch-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/openssh-5.2p1-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/tcp_wrappers-7.6-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/telnet-0.17-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/traceroute-1.4a12-i386-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/vsftpd-2.1.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/wget-1.11.4-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/n/whois-4.7.26-i486-1.txz
+ самосборные
libsigc++-2.2.3-i486-1_SBo.tgz
libtorrent-0.12.5-i486-2_SBo.tgz
rtorrent-0.8.5-i486-2_SBo.tgz
xmlrpc-c_svn_my.tgz
это "сетевая станция"
теперь прикручиваем ALSA
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/alsa-oss-1.0.17-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/alsa-lib-1.0.18-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/ap/alsa-utils-1.0.18-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/dialog-1.1_20080819-i486-2.txz
пакет dialog нужен только для для работы alsaconf, после настройки ALSA можно удалить.
настраиваем звук звук командами
alsaconf
alsamixer
alsactl store
Если нужно будет перенести настройки, то они хранятся в файлах:
/etc/asound.state
/etc/modprobe.d/sound
ставим консольный MP3-плеер и его зависимости
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/ap/mpg321-0.2.10-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/libid3tag-0.15.1b-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/libmad-0.15.1b-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/libao-0.8.8-i486-1.txz
в принципе, мы собираемся ставить mplayer который умеет играть mp3 в консоли, так что нужно ли вам это, решайте сами.
наш X.org использует HAL для работы с клавиатурой/мышью. В принципе, возможность "горячего" подключения оных, без перезапуска х-сервера, нам очень полезна. используем их:
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/dbus-glib-0.80-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/a/dbus-1.2.14-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/hal-0.5.11-i486-6.txz
добавляем конфиг
cat > /tmp/livecd/1/etc/hal/fdi/policy/10-keymap.fdi << EOF
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- -*- SGML -*- -->

<deviceinfo version="0.2">
  <device>
    <match key="info.capabilities" contains="input.keymap">
      <append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
    </match>

    <match key="info.capabilities" contains="input.keys">

      <!-- Restore Ctrl-Alt-Bksp Xserver Zapping -->
      <merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp</merge>

      <!-- Edit (as needed) these four lines in the copied fdi file -->
      <merge key="input.xkb.rules" type="string">base</merge>
      <merge key="input.xkb.model" type="string">evdev</merge>
      <merge key="input.xkb.layout" type="string">us,ru</merge>
      <merge key="input.xkb.variant" type="string">,winkeys</merge>
      <merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp,grp:ctrl_shift_toggle,grp:lwin_switch,grp_led:scroll</merge>

    </match>
  </device>
</deviceinfo>
здесь переключение между раскладками Ctrl+Shift, временное переключение регистра - левый shift, убийство х-сервера Ctrl+Alt+Backspace
теперь самое гравное - установка х-сервера:
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xextproto-7.0.5-noarch-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libpthread-stubs-0.1-noarch-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/liblbxutil-1.0.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libhangul-0.0.7-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libdmx-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXxf86vm-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXxf86misc-1.0.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXxf86dga-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXvMC-1.0.4-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXv-1.0.4-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXres-1.0.3-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXrender-0.9.4-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXrandr-1.3.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXprintUtil-1.0.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXprintAppUtil-1.0.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXpm-3.5.7-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXinerama-1.0.3-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXi-1.2.1-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXft-2.1.13-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXfixes-4.0.3-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXevie-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXdamage-1.1.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXcursor-1.1.9-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXcomposite-0.4.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXaw-1.0.6-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXTrap-1.0.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXScrnSaver-1.1.3-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libFS-1.0.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libICE-1.0.5-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libSM-1.1.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXtst-1.0.3-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXt-1.0.6-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libdrm-2.4.12-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xf86driproto-2.0.4-noarch-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xdriinfo-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/dri2proto-2.1-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXp-1.0.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXmu-1.0.4-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXext-1.0.5-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libX11-1.2.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xauth-1.0.3-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/rgb-1.0.3-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/pixman-0.15.18-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libfontenc-1.0.4-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXfont-1.4.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libpciaccess-0.10.6-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xorg-server-1.6.3-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xproto-7.0.15-noarch-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libxcb-1.3-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xcb-proto-1.5-noarch-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXdmcp-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXau-1.0.4-i486-2.txz

убийство x-сервера
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xkill-1.0.1-i486-2.txz

скрипты инициализации
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xinit-1.1.1-i486-1.txz

поддержка 3D-акселерации
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/mesa-7.5-i486-1.txz

поддержка устройств ввода
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xkeyboard-config-1.6-noarch-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libxkbui-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libxkbfile-1.0.5-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xinput-1.4.2-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xkbutils-1.0.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xkbevd-1.0.2-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xkbcomp-1.1.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xf86-input-evdev-2.2.5-i486-1.txz

поддержка фонтов
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/libXfontcache-1.0.4-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/fontconfig-2.6.0-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/freetype-2.3.9-i486-1.txz

сами фонты
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/font-misc-misc-1.0.0-noarch-4.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/font-misc-cyrillic-1.0.0-noarch-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/liberation-fonts-ttf-1.04-noarch-1.txz

нам нужен будет xterm
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/x/xterm-243-i486-2.txz

MWM
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/lesstif-0.95.0-i486-5.txz

видео будем смотреть через SDL
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/sdl-1.2.13-i486-4.txz

т.к. для работы с джойстиком будем использовать программу rejoystick, который при конфигурации(определения клавиш) использует gtk2 - интерфейс, ставим gtk2:
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/glib2-2.18.4-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/cairo-1.8.6-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/pango-1.22.4-i486-4.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/atk-1.26.0-i486-1.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/jasper-1.900.1-i486-2.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/gtk+2-2.14.7-i486-4.txz
Mplayer для вывода OSD нужны будут
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/libcaca-0.99.beta16-i486-3.txz
ftp://ftp.chg.ru/pub/Linux/Slackware/slackware-13/slackware/l/aalib-1.4rc5-i486-2.txz

теперь нужно собрать rejoystick и MPlayer. Конечно, готовый Mplayer есть в Slackware-13.0 но пользоваться им нельзя.

Дело за малым - добавить конфиги.
xorg.conf
cat > /tmp/livecd/1/etc/X11/xorg.conf << EOF
Section "ServerLayout"
    Identifier     "Simple Layout"
    Screen         "Screen 1" 0 0
    InputDevice    "Mouse1" "CorePointer"
    InputDevice    "Keyboard1" "CoreKeyboard"
EndSection

Section "Files"
    RgbPath         "/usr/share/X11/rgb"
    FontPath        "/usr/share/fonts/misc/"
EndSection

Section "Module"

    Load           "dbe"        # Double buffer extension
    SubSection     "extmod"
        Option         "omit xfree86-dga"   # don't initialise the DGA extension
    EndSubSection
    Load           "freetype"
    Load           "glx"
EndSection

Section "Monitor"
    Identifier     "My Monitor"
    HorizSync       30.0 - 70.0
    VertRefresh     50.0 - 160.0
EndSection

Section "Device"
    Driver "nvidia"
    Identifier "MX440"
    BusID  "PCI:1:0:0"
    VideoRam 65536
    Option "nologo" "true"
    Option "RenderAccel" "true"
    Option "AllowGLXWithComposite" "true"
    Option "AddARGBGLXVisuals" "true"
    Option "TripleBuffer" "true"
    Option "TwinView"
    Option "SecondMonitorHorizSync" "30-50"    
    Option "SecondMonitorVertRefresh" "60"
    Option "TwinViewOrientation" "Clone"
    Option "ConnectedMonitor" "CRT,TV"
    Option "TVOutFormat" "COMPOSITE"
    Option "TVStandart" "PAL-B"
EndSection

Section "Screen"
    Identifier     "Screen 1"
    Device         "VESA Framebuffer"
    Monitor        "My Monitor"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
        Modes      "800x600"
    EndSubSection
EndSection

xinitrc выполняется при команде startx
cat > /tmp/livecd/1/home/flanker/.xinitrc << EOF
#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
#font=andysuns 12
# merge in defaults and keymaps

if [ -f $sysresources ]; then
    /usr/X11R6/bin/xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    /usr/X11R6/bin/xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
    /usr/X11R6/bin/xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
    /usr/X11R6/bin/xmodmap $usermodmap
fi

# start some nice programs
exec mwm  & xterm -iconic ~/start
здесь автозапуском стартует mwm, за ним xterm, в окне которого запускаем rejoystick, а само окно xterm сворачиваем в иконку параметром -iconic
cat > /tmp/livecd/1/home/flanker/start << EOF #!/usr/bin/bash
/usr/local/bin/rejoystick -d
/usr/bin/cat

конфигурируем X.org
cat > /tmp/livecd/1/home/flanker/.Xdefaults << EOF
*AutoRaise: on
*DeIconifyWarp: on
*warp:on
*TitleFont:andysans24
*scrollBar: true
*font:courier24
Mwm*menu*foreground: black
Mwm*menu*background: CornflowerBlue
Mwm*menu*RootMenu*foreground: LightGray
Mwm*menu*RootMenu*background: black
Mwm*icon*foreground: grey25
Mwm*icon*background: LightGray
Mwm*foreground: black
Mwm*background: LightSkyBlue
Mwm*bottomShadowColor: Blue1
Mwm*topShadowColor: CornflowerBlue
Mwm*activeForeground: white
Mwm*activeBackground: Blue1
Mwm*activeBottomShadowColor: black
Mwm*activeTopShadowColor: LightSkyBlue
Mwm*border: black
Mwm*highlight:white
!my section
!Mwm*positionOnScreen:  False
!Mwm*menu*RootMenu*font: -*-*-medium-r-*--16-*-*-*-*-*-koi8-r
Mwm*menu*fontList: -*-*-bold-r-*--20-*-*-*-*-*-koi8-r
!Mwm*client*fontList: -*-*-medium-r-*--16-*-*-*-*-*-koi8-r
!Mwm*menu*RootMenu*font: -b&h-lucida-bold-r-normal-sans-22-*
Mwm*pager: false

aixterm.foreground: green
aixterm.background: black
aixterm.fullcursor: true
aixterm.ScrollKey: on
aixterm.autoRaise: true
aixterm.autoRaiseDelay: 2
aixterm.boldFont:Rom10.500
aixterm.geometry: 80x25
aixterm.iconFont: Rom8.500
aixterm.iconStartup: false
aixterm.jumpScroll: true
aixterm.reverseWrap: true
aixterm.saveLines: 500
aixterm.scrollInput: true
aixterm.scrollKey: false
aixterm.title: AIX

дело за малым, конфиг mwm
cat > /tmp/livecd/1/home/flanker/.mwmrc << EOF
Menu RootMenu
{
        "Video"                 f.exec "~/.shvideo"
        "QUIT"                  f.exec "halt"
}


Menu DefaultWindowMenu
{
        Restore         _R      Alt<Key>F5      f.restore
        Move                    _M      Alt<Key>F7      f.move
        Size                    _S      Alt<Key>F8      f.resize
        Minimize                _n      Alt<Key>F9      f.minimize
        Maximize                _x      Alt<Key>F10     f.maximize
        Raise                   _a      Alt<Key>F2      f.raise
        Lower                   _L      Alt<Key>F3      f.lower
        no-label                                f.separator
        Close                   _C      Alt<Key>F4      f.kill
}

Menu MouseMenu
{
        "New Window"            f.exec "xterm -geometry 110x40 +sb -bg black -fg green -xrm 'XTerm*VT100.translations: #override <Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0)'"
}


Keys DefaultKeyBindings
{
!!      Shift<Key>Escape                window|icon                     f.post_wmenu
        <Key>F8                         window                  f.menu RootMenu
        Alt<Key>space           window|icon                     f.post_wmenu
        Alt<Key>Tab                     root|icon|window                f.next_key
        Alt Shift<Key>Tab               root|icon|window                f.prev_key
        Alt<Key>Escape          root|icon|window                f.circle_down
        Alt Shift<Key>Escape    root|icon|window                f.circle_up
        Alt Shift Ctrl<Key>exclam root|icon|window      f.set_behavior
        Alt<Key>F6                      window                  f.next_key transient
        Alt Shift<Key>F6                window                  f.prev_key transient
        Shift<Key>F10           icon                            f.post_wmenu
        Alt Shift<Key>Delete    root|icon|window                f.restart
        <Key>F11                        root|icon|window                f.screen - "next"
        Alt<Key>F11                     root|icon|window                f.screen - "prev"
}


Buttons DefaultButtonBindings
{
        <Btn1Down>      icon|frame      f.raise
        <Btn3Down>      icon|frame      f.post_wmenu
        <Btn3Down>      root            f.menu  MouseMenu
}
конфиг крайне простой. на F8 "вешается" rootmenu/главное_меню, соответственно клавиша F8 "вешается" на одну из кнопок джойстика. если будет необходимость зайти в систему с монитором+мышью на правый клик выведено меню по которому можно будет открыть xterm

При сбросе х-сервера с драйвером nvidia, в консоли слетает русский шрифт. что бы поправить дело нужно заново выполнить
/etc/rc.d/rc.font
,а лучше вывести ссылку
ln -s /etc/rc.d/rc.font /tmp/livecd/1/home/flanker/f

теперь при вводе команды f шрифт поправится.
Пишем конфиги к MPlayer
кодировка субтитров:
mkdir /tmp/livecd/1/home/flanker/.mplayer
chown --reference=/tmp/livecd/1/home/flanker /tmp/livecd/1/home/flanker/.mplayer
echo "subcp=cp1251" > /tmp/livecd/1/home/flanker/.mplayer/config
chown --reference=/tmp/livecd/1/home/flanker /tmp/livecd/1/home/flanker/.mplayer/config

создаем ссылку на шрифт субтитров:
ln -s /usr/share/fonts/TTF/LiberationSans-Regular.ttf /tmp/livecd/1/usr/share/mplayer/subfont.ttf

через экранное меню для просмотра видео вызывается скрипт ~/.shvideo
cat > /tmp/livecd/1/home/flanker/.shvideo << EOF
#!/usr/bin/bash
killall -9 rejoystick
rm ~/.rejoystickrc
cp ~/.rjrcmplayer ~/.rejoystickrc
/usr/local/bin/rejoystick -d
mplayer  -fs -vo sdl /mnt/hd/*.avi
killall -9 rejoystick
rm ~/.rejoystickrc
cp ~/.rjrcmenu ~/.rejoystickrc
/usr/local/bin/rejoystick -d
при просмотре фильмов сжатых кодеками уровня xvid c флешки подключенной через USB 1.1 порт проблем не возникало, что и логично если принять что скорость USB1.1 ~1 MB/c ,а битпоток самого качественного рипа ~2000kbit/s т.е. 1/4 скорости порта USB1.1
но для душевного спокойствия пожалуй стоит включить кеш при воспроизведении:
mplayer --cache 8192 -fs -vo sdl /mnt/hd/*.avi
"душевное спокойствие" займет еще 8MB в оперативной памяти.

Пока это все, со временем, статья будет дописываться, ошибки находится и исправляться.

2 комментария:

  1. Напишите статью где вы собираете liveCD от а до Я
    С использование Xorg и нечего лишнего
    Сугубо базовая система + Xorg

    ОтветитьУдалить
  2. хорошо, в выходные напишу.

    ОтветитьУдалить