7/27/2009

Живой Linux своими руками, Эпизод 3: Тюнинг системы

После того, как первый живой дистрибутив создан, записан на диск и от этого получено море положительных эмоций, нужно идти дальше. Некоторое время спустя выясняется, что где-то что-то не допилено, не хватает каких-то возможностей, не всегда стартуют иксы или в них забыли вписать кириллицу. Этот пост я писал по заметкам, которые оставлял в процессе доведения своего живого пингвина до ума.


Экономим место
Лучше начинать с базовой установки своего дистрибутива и, в зависимости от задач, сносить одни пакеты и ставить другие. Тут главное не увлекаться и знать, что место на диске ограничено, хотя сжатие у squashfs с патчем lzma весьма сильное.

Что можно удалить из базового дистрибутива
Пример с дистрибутивным ядром показателен - его снос высвобождает целых 60Мб. Но есть куча других мелких и не очень утилит, которые не нужны в таком объёме, особенно в бездонной директории /usr. Итак:
  • снос дистрибутивного ядра и замена "живым"
  • aptitude purge python2.4
  • удаление утилит тестирования типа reportbug, installation-report и прочих
  • вырубка всяких альтернативных утилит типа dc, nano, tcsh, portmap
  • прополка от python-selinux, policycoreutils и прочих параноидальных прибамбасов
  • долой info, bind9, whois, finger, telnet....
  • убирать документацию разработчиков из /usr/share/doc и словарей из /usr/share/dict - это не столько сокращает объём сколько уменьшает количество файлов (где-то на 10 тысяч)
  • локали (/usr/share/i18n/locales), мануалы (/usr/share/man) и шрифты оставить только нужные и на тех языках, о которых вы слышали. Локали можно убрать с помощью localepurge.
В общем, следует пройтись с топором по директориям, особенно сильно им размахивая в /usr, где добра больше всего. Всё это поможет сэкономить место для чего-нибудь действительно полезного. Например, для иксов :-)
У меня в итоге получилось, что базовый ISO-образ вместе с иксами, MC и IceWM занимает чуть больше 100Мб. В ходе тестирования в эмуляторе выяснилось, что загружается сие чудо в системах с более чем 64Мб ОЗУ. На ноутбуке загрузилось примерно за минуту, нашло все устройства и даже примонтировало автоматом все диски.


Что стоит установить в базовую систему
Всё сказанное ниже будет сильно зависеть от того, что вы хотите сделать из системы. Но я думаю, совсем не лишним и не обременительным будет установить:
  • облегчённые утилиты для интернет: wget и elinks
  • утилиты тестирования оборудования: dmidecode, lshw, hdparm, memtest86+, bonnie++
  • samba для общения с оффтопичной системой
Это сформирует базовую систему, которую лучше всего скопировать куда-нибудь и сжать в архив. При необходимости её легко дополнять и обвешивать программами под текущие нужды - а дальше можно печь живые диски, как горячие пирожки, при помощи live-скриптов.


Настройки, о которых легко забыть
Их не так много, но их отсутствие приводит к досадным разочарованиям. Поэтому ниже - небольшой список того, что следует сделать в системе перед запаковыванием её в ISO-образ и на флешку.

Автоматический логин
Чтобы каждый раз не писать пароль, лучше всего настроить автоматический вход в систему. Если диск спасательный, то можно сделать так: удалить пакет xdm и поставить mingetty - так обеспечивается вход в систему пользователя без пароля и запуск иксов, когда они нужны.
Итак:
aptitude remove xdm
aptitude install mingetty


После этого заходим в /etc/inittab меняем строку вида
1:2345:respawn:/sbin/getty 38400 tty1
на
1:2345:respawn:/sbin/mingetty --autologin имяпользователя tty1
Заменяя имяпользователя на логин реального юзера, имеем беспарольный вход в систему (взято отсюда). Потом, если потребуются иксы, пишем startx и наслаждаемся.


Настройка иксов

Если вы хотите, чтобы иксы (если они есть, конечно) запускались всегда и везде, нужно прописать драйвер vesa:
Section "Device"
Identifier "Cirrus Logic GD 5446"

Driver "vesa"
BusID "PCI:0:2:0"
EndSection

И не забыть про кириллицу

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc104"
Option "XkbLayout" "us,ru(winkeys)"
Option "XkbOptions" "grp:alt_shift_toggle"

EndSection
Если вы эстет, то можно ещё долго изгаляться со шрифтами и прочими рюшечками. Мне и обычных шрифтов хватает - лишь бы там были русские буквы и читалось без особого напряга.

Так же не стоит забывать про разрешение экрана - указывайте все при конфигурации иксов:
dpkg-reconfigure xserver-xorg
Повыключайте разного рода ускоряющие драйверы типа glx и dri, если вы создаёте спасательный диск. В общем, тюнинг системы - дело увлекательное...

9 комментариев:

  1. Если ставить /базовую/ систему тогда нет нужды руками вычищать reportbug, installation-report, dc, nano, tcsh, portmap и всего прочего. Их просто не будет.
    Насчет локалей, есть в репозитории стандартная утилита localepurge.

    ОтветитьУдалить
  2. 2 asv комментирует...
    Если ставить /базовую/ систему тогда нет нужды руками вычищать reportbug, installation-report, dc, nano, tcsh, portmap и всего прочего. Их просто не будет.
    Странно, а у меня они автоматом поставились. Но на всякий случай упомяну.

    Насчет локалей, есть в репозитории стандартная утилита localepurge.
    Это да, забыл совсем. Спасибо, добавил в пост.

    ОтветитьУдалить
  3. Вот в этом месте, если убрать галки со всех пунктов, мы получим debian base system, там будет абсолютный минимум необходимый для функционирования системы. http://photos1.blogger.com/blogger/5591/3303/320/debianEtch16.0.jpg

    ОтветитьУдалить
  4. 2 asv комментирует...
    Вот в этом месте, если убрать галки со всех пунктов, мы получим debian base system, там будет абсолютный минимум необходимый для функционирования системы
    Это я в курсе :-) Речь идёт о системе, в которую уже поставлены иксы, icewm и другие приложения для человеческой работы.

    ОтветитьУдалить
  5. > Автоматический логин

    Если использовать готовое решение из дебиана и для дебиана (коим
    является live-helper), то об этом помнить не надо, а скрипт настроит
    автологин самостоятельно.

    Также live-helper настраивает беспарольный вход для пользователя user. И
    всё автоматически.

    > Настройка иксов

    Иксы уже сто лет как настраиваются автоматически безо всякого указания
    видеодрайвера.

    > И не забыть про кириллицу

    Нижеприведённое полезно в дальней перспективе с учётом того, что в x.org
    конфигурацию через файл уже почти отломали.

    $ cd ~/live/chroot/home/user
    $ cat .xsession
    setxkbmap us,ru\(winkeys\) -option grp:ctrl_shift_toggle -option ctrl:nocaps
    xxkb &
    icewm-session
    $ cat .xxkbrc
    XXkb.mainwindow.enable: no
    XXkb.button.enable: no

    > убирать документацию разработчиков из /usr/share/doc

    И напороться на отсутствие необходимой в экстренный момент документации,
    если live cd использовался в качестве rescue cd. Например, testdisk
    хранит полезную документацию именно в /usr/share/doc.

    > и словарей из /usr/share/dict - это не столько сокращает объём сколько уменьшает количество файлов (где-то на 10 тысяч)

    Не легче ли удалить пакет со словарями!?

    Я лично считаю совет "пройтись по /usr с rm-ом" весьма опасным. Лучше
    удалять ненужные пакеты, а не экономить копейки, боясь удалить что-то
    нужное. Вот я при сборке личного livecd не экономил, а всё равно в 300
    мб уложился (с учётом сжатия от squashfs).

    // Alexander Galanin

    ОтветитьУдалить
  6. Да, и еще бы не мешало для нечеловеческойфайловойсистемы установить пкетик ntfs-3g.

    // мимо проходил

    ОтветитьУдалить
  7. > Настройка иксов
    > И не забыть про кириллицу
    man live-helper.
    Настройки иксов вполне можно указать в опциях загрузки мега live-cd безо всякой дебильной правки конфигов.

    ОтветитьУдалить
  8. ужас.

    каких только гамаков с лыжами не напридумывают, лишь бы live-helper не использовать.

    ОтветитьУдалить
  9. 2 samson комментирует...
    каких только гамаков с лыжами не напридумывают
    Это потому, кто "кошерные" велосипеды хреново документированы.

    лишь бы live-helper не использовать
    Вот поэтому и изобретаем свои, с шахматами и поэтессами (с) :-)

    Хотя да, live-helper надо было бы упомянуть. За пинок в правильном направлении спасибо. Ну и пост несколько несвежий, выложил, т.к. жалко было удалять (а мне ещё пригодится). Скоро будут веселее посты, stay tuned.

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