Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.




Linux с точки зрения системного администратора.

Автор : Sergey E. Bogomolov

Выбор дистрибутива

Самая трудная проблема для начинающего - это выбор дистрибутива. Столько их развелось в последнее время, что глаза разбегаются. Даже производитель материнских плат Abit выпустил дистрибутив Linux под свои платы (Gentus; похоже уже умер). Хорошо что, когда я ставил себе Linux в первый раз, этой проблемы не было :) Либо ставишь Slackware, либо собираешь дистрибутив сам. Пару лет я им пользовался, пока не заметил, что слишком много пакетов приходится устанавливать дополнительно (в комплект Slackware входили очень старые версии или не входили вообще). Так как все дополнительные пакеты были в формате RPM, то вполне естественно, что я перешел на RedHat. Судя по опросам на linux-ve и linux.org.ru, я не одинок (учтите, что BlackCat и Mandrake тоже базируются(овались) на RedHat, так что в сумме они занимают порядка 60%). Наличие Alan Cox в штате RedHat тоже плюс ;) Можно еще обратить внимание на Debian GNU, но у меня нет на это времени (самая полная коллекция, но были (есть?) серьезные проблемы с русским языком). Бывают и "самодельные" дистрибутивы.

Из руссифицированных вариантов можно отметить (сам я не пробовал):

  • Mandrake RE (ALTLinux, в девичестве IP LABS Linux Team)
  • ASPLinux
  • Black Cat Linux (ныне слился с ASPLinux)

Списки дистрибутивов:

  • на LinuxJournal
  • на LinuxHQ
  • ISO-образы различных дистрибутивов (покупка в ближайшем ларьке обходится на порядок дешевле, чем загрузка по тарифам Ростелекома)

Ядро

Времена, когда приходилось самостоятельно устанавливать новое "свежеиспеченное" ядро, надеюсь уже прошли. Сейчас лучше положиться на составителя дистрибутива. Однако, необходимость быть в курсе грядущих изменений осталась.

Сайты, следящие за изменениями в ядре:

  • http://www.kernel.org/ (архив исходников ядра и заплаток)
  • LinuxHQ (обзоры, Linux Edge)
  • Kernel-traffic (еженедельник для разработчиков ядра - часто меняет место)
  • Kernel Notes (когда-то здесь был список изменений для каждой версии с точки зрения пользователей, а не разработчиков, как в ChangeLog, но сейчас сайт заброшен)

Что нового в 2.4:

  • Linux Gets An Upgrade (переход к 2.4, январь 2001)
  • Joe Pranevich: Wonderful World of Linux 2.4 11/23/00 ("Turkey Day" Update)
  • Linux 2.4 Status/TODO Page (с выходом версии перестал обновляться)

Подбор оборудования

Когда-нибудь наступят светлые дни, когда изготовители оборудования будут сначала писать драйверы под Linux, а потом уж под 20 версий MS Windows. Но сейчас перед покупкой "железа" необходимо предварительно проверить, есть ли под него драйверы для Linux. Крайне желательно, чтобы эти драйверы входили в состав дистрибутива (поставить драйвер самому можно - если он не требуется при установке дистрибутива - но Вы узнаете много нового и интересного). Для RedHat проверить наличие драйвера можно на сайте компании.

К сожалению, проиводители оборудования очень любят выпускать разные устройства под одним маркетинговым именем или одно и то же устройство под разными. Так что доверять чужому опыту надо осторожно. Рекомендуется поискать в телеконференциях как положительные, так и отрицательные отзывы.

Ссылки на списки оборудования, совместимого с Linux.

  • Linux hardware database
  • http://www.linuxhardware.net/
  • Hardware-HOWTO (1999 :(


Hardware

SMP

Шины

IDE (EIDE, ATA-2)

Конфигурация IDE-дисков: hdparm. Для нормальных устройств рекомендуется:
hdparm -c 1 -d 1 -m 16 # включить 32-битный режим, использование DMA, обмен по 16 секторов

SCSI

Конфигурирование SCSI-устройств: scsiinfo (scsiinfo, scsiformat, scsi-config).

Именование дисков: /dev/sdyN

Если драйвер конкретного SCSI-контроллера встроен в ядро (не модуль), то параметры можно передавать через /etc/lilo.conf. Например, чтобы отключить работу с очередями для устройств с идентификаторами 1 и 2, подключенных к контроллеру ncr53c8xx, надо вставить строку:
append = "ncr53c8xx=tags:8/t1t2q1"

То же самое достигается после загрузки командой (если, конечно, удастся загрузиться ;):
echo "settags 2 1" > /proc/scsi/ncr53c8xx/0

Если драйвер для SCSI-контроллера скомпилирован как модуль, то аналогичный эффект достигается включением в /etc/conf.modules строки:
alias scsi_hostadapter ncr53c8xx
options ncr53c8xx ncr53c8xx=tags:8/t1t2q1
и не забыть сделать mkinitrd, если он необходим при загрузке.

Диски

Именование дисков: /dev/xxyN, где
  • xx - либо hd (IDE), либо sd (SCSI)
  • y - номер диска
    • IDE
      • a - первый IDE диск
      • b - второй IDE диск
      • и т.д.
    • SCSI
      • a -первый SCSI диск
      • b - второй SCSI диск
      • и т.д.
  • N - номер раздела (от 1 до 4 - номера primary  или extended разделов, от 5 - номера логических разделов)

CD-R (CD-RW)

FAQ и копия

список, поддерживаемых устройств

Я пробовал на HP CD-Writer Plus 8100 , IDE/ATAPI (24/4/2, в действительности скорость чтения не выше 12x) и Mitsumi CR-4804TE, IDE/ATAPI (24/4/4).

Особенности конфигурации ядра (IDE CD-RW), шаг влево, шаг вправо - и работать не будет:

  • SYSCTL=y
  • автоматическая загрузка модулей (kerneld)
  • IDE=y
  • IDECD=m, модуль - ide-cd
  • SCSI hostadaptor emulation (ибо ATAPI - это эмуляция SCSI на IDE/ATA), IDESCSI=m, модуль - ide-scsi
  • Loopback device (файловая система внутри файла), BLK_DEV_LOOP=m, модуль - loop
  • SCSI=m, модуль - scsi
  • SCSI CDROM, BLK_DEV_SR=m, модуль - sr
  • BLK_DEV_SR_VENDOR=y
  • SCSI generic, CHR_DEV_SG = m, модуль - sg
  • ни в коем случае SCSI_MULTI_LUN в версиях ядра до 2.2.10 (Up to kernel-version 2.2.10, don't enable CONFIG_SCSI_MULTI_LUN ('probe for multiple luns') and ide-scsi support at the same time)
  • SCSI драйвер
  • FAT_FS=m, MSDOS_FS=m, VFAT_FS=m, UMSDOS_FS=m
  • ISO 9660 CDROM filesystem (включает RockRidge), обязательно встроенный в ядро.
  • Microsoft Joliet cdrom
Создание образа файловой системы (не более 650MB!, 680 000 000)
  • mkisofs (ISO 9660, RockRidge, El torito, Juliet, HFS, мультисессии), пакет mkisofs-1.8-2 в RedHat 6.2 или mkisofs-1.9-2 в RedHat 7.0.
  • простейший случай: mkisofs -r [ -P имя-публикатора ] [ -V имя-тома ] -v [-o образ-CD] исходная-директория ... (ISO9660 и RockRidge со сброшенными правами доступа к файлам)
    если -o опущен, то выводится на stdout
    -R (вместо -r, если надо сохранять права доступа в RockRidge)
    -M исходный-образ-CD (позволяет добавлять файлы к ранее созданному образу)
    -J (делает вдобавок оглавление Juliet, который не переносит несколько файлов с одним и тем же именем, получающиеся после слияния нескольких исходных директорий)
    -m шаблон-имени-файла (не записывать эти файлы)
  • тестирование полученного:
    mount -t iso9660 -o ro,loop=/dev/loop0 образ-CD /cdrom
Прожигание
  • cdwrite - старая, заброшенная программа
  • cdrecord-1.9. Пакет cdrecord-1.9-2 в ReDHat 7.0.
    • загрузить ide-scsi (после этого надо обращаться не к /dev/hd?, а к /dev/scd?)
      modprobe ide-scsi (нужны права root)
      он должен найти CD-ROM и все про него рассказать (на syslog), создать sr-устройство (у меня sr0 на scsi0 (chanel 0, id 0, lun 0), даже оказался scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray)
    • появились устройства (/proc/devices): char 21 (sg) и block 11 (sr)
    • cdrecord -scanbus находит устройство (scsibus0, 0)
    • появились модули: ide-scsi, sg, scsi_mod
    • после доступа к CD появились модули: cdrom, sr_mod
    • запись обычного диска с данными в одну сессию
      cdrecord -v speed=скорость dev=номер-шины,номер-устройства,lun-data образ-CD
      для CD-RW надо добавить опцию: blank=fast (полторы минуты)
      используйте имя файла "-" для обозначения stdin
    • ключ -dummy имитирует процесс записи, что позволяет проверить ее возможность на указанной скорости
    • ключ -multi не закрывает диск, что позволяет в дальнейшем дописывать на него
    • ключ -prcap рассказывает очень много интересной информации об устройстве
    • ключ -force позволяет иногда вернуть к жизни CD-RW
    • fs=размер задает размер буфера (более 16m не выносит Linux, а больше 4m не выносит HP 8100 )
  • cdrdao (специально для CD-Audio)
GUI
  • X-CD-Roast - интерфейс к mkisofs и cdrecord
  • BurnIT - интерфейс (на Java) к mkisofs, cdrecord и cdda2wav
  • XDaodio - интерфейс (Tcl/Tk) к cdrdao для копирования audio CD 1:1

Мышки

Обязательно иметь мышь с тремя кнопками, иначе замучаешься тексты редактировать. Настройка: mouseconfig. Для обычной старой последовательной мышки с 3 кнопками подходит "Mouse System" или "Generic Serial Mouse (Microsoft Serial)" без эмуляции 3ей кнопки. У меня одна и та же мышка Genius EasyMouse (FCC ID: FSUGMZE3, а как их еще различать?) на одном компе работает только в режиме MouseSystem, а на другом только как "Generic 3 button serial mouse".


Где взять программы?

RPM

Командный интерфейс: rpm

Графический интерфейс: glint (где же он в RedHat 6.0?), ему не нужен был gnome и он умел выдавать список Неустановленных пакетов.

Графический интерфейс: gnorpm. Позволяет манипулировать установленными пакетами (поиск, проверка, удаление, upgrade) и качать новые, пользуясь базой данных на сервере RedHat или http://rpmfind.net/ (40 тысяч пакетов / 55 GB).


Установка RedHat

Итак, берем ISO-образы дистрибутива с ближайшего российского зеркала. Достаточно двух дисков: документацию, исходники и powertools качать не обязательно. Предварительно неплохо скачать с ftp.redhat.com MD5 суммы для файлов и сравнить их с MD5 суммами скопированных файлов (так, на всякий случай ;). Прожигаем полученные iso-образы на CD. Кстати, покупка комплекта в ближайшем ларьке обойдется гораздо дешевле (но MD5 все равно надо сравнить!).

Затем надо скопировать накопившиеся изменения к дистрибутиву. К моменту выпуска следующей версии изменений набегает на целый CD! При исправлении ошибок основной дистрибутив не изменяется, а просто добавляются файлы в директорию update, т.е. при установке приходится сначала устанавливать плохо работающий дистрибутив, а затем вручную вносить изменения (а это иногда сотни мегабайт!). Иногда RedHat делает называемый "respin", т.е. обновленный дистрибутив, но там изменяется только программа установки, а обновленные пакеты все равно надо качать самому.

Расположение ftp-архивов меняется со временем (фактически каждый раз приходится искать куда же они его переместили и как расположили файлы на этот раз)

Примеры установок для различных версий и ситуаций:
  • Linux RedHat 7.1 на сервер с CD-ROM без графики
  • Linux RedHat 7.1 на домашнюю рабочую станцию с выходом в интернет по модему с CD-ROM
  • Linux RedHat 7.0 на сервер с CD-ROM
  • Linux RedHat 6.2 на сервер с ftp-сервера
  • Linux RedHat 6.2 на домашнюю рабочую станцию с выходом в интернет по модему
  • Linux RedHat 6.0 на сервер с ftp-сервера
  • Linux RedHat 6.0 на SMP сервер с ftp-сервера
  • Linux RedHat 6.0 на домашнюю рабочую станцию с выходом в интернет по модему

LILO работает через BIOS, а большинство BIOS позволяют доступ только к первым двум IDE-дискам (считая ATAPI CD-ROM) в пределах первых 1023 цилиндров. Так что директория (или раздел) /boot должна удовлетворять данным ограничениям.

Зависимости пакетов от библиотек и средств программирования.

gnumeric -> guile -> umb-scheme

kernelcfg, netcfg -> tkinter -> tix, python

tix -> tk -> tcl

Tclx и itcl никем не используются.


Руссификация

Документация
  • Linux Cyrillic HOWTO
  • KOI8-R References (Russian Net Character Set) (Чернов)

Консоль

Документация
  • пакет console-tools и документация из него (/usr/doc/console-tools* и man)
Предварительное замечание. ReHat заменила в 6.0 реализацию драйвера консоли kbd на console-tools, так что старые рекомендации по руссификации консоли более неприменимы. Рекомендации данные здесь неприменимы к старым системам. Если при установке RH 6.2 выбрать Russian/ru-yawerty, то все будет настроено само собой (в частности, устанавливается LANG=ru_RU.KOI8-R - очень прикольно смотрятся устаревшие переводы man-ов на русский).
    в /etc/sysconfig/i18n
  • LANG="ru_RU.KOI8-R"
  • SYSFONT="cyr-sun16"
  • SYSFONTACM="koi8-r"

Драйвер клавиатуры

Клавиатура генерирует сканкоды (scancode), которые преобразуются в коды клавиш (keycode) с помощью таблицы преобразования, затаваемой setkeycodes. Коды клавиш преобразуются в символы с помощью таблицы keymap, которая устанавливается программой loadkeys. В RHL есть надстройка в виде kbdconfig, которая позволяет выбрать keymap из списка, имеющихся в наличии (/usr/lib/kbd/keymaps/i386/qwerty). Я использую ru-yawerty.kmap.gz (koi8-r, раскладка ЯВЕРТЫ, твердый знак на подчеркивании, переключение по правому ALT). Имя ru-yawerty заносится в /etc/sysconfig/keyboard, который используется при загрузке из /etc/rc.d/init.d/keytable. Можно вызывать вручную: loadkeys ru-yawerty. Для рабиты обычных 8-битных (не UNICODE) программ этого достаточно.

Драйвер экрана

Разработчики нынешней версии ядра перешли на использование UNICODE (UCS2) в драйвере консоли, поддержка национальных алфавитов отстала (во всяком случае всякие FAQs, HOWTO и советы, оставшиеся от прошлых времен не помогают; шрифты и таблицы перекодировок просто глючат). Механизм RHL 6.0 действует так: при загрузке вызывается /etc/rc.d/init.d/keytable (там же встроена поддержка клавиатуры), которая вызывает /sbin/setsysfont. setsysfont в свою очередь выполняет (если есть) /etc/sysconfig/i18n, ожидая что та определит переменные SYSFONT (имя файла со шрифтом, берется из /usr/lib/kbd/consolefonts) и UNIMAP (имя файла с таблицей соответствия, берется из /usr/lib/kbd/consoletrans). После чего выполняет
consolechars -f $SYSFONT --sfm $UNIMAP
в качестве SYSFONT я беру koi8-8x16, в качестве UNIMAP - koi8-r. Так что и клавиатура и экран работают в koi8-r и не надо ничего перекодировать (в новой версии использование koi8-r не ломает таблички MidnightCommander, в RH 6.0 вместо русской буквы 'В' выводится тире с точками, в RH 6.2 - поправлено). Есть и другие шрифты (koi8-8x8, koi8-8x14, alt-8x8, alt-8x14, alt-8x16, Cyr_a8x8, Cyr_a8x14, Cyr_8x16), но таблица UNIMAP есть только для koi8-r. Иногда setsysfont (consolechars) не срабатывает с первого раза, приходится повторять. В 2.2.12 вообще перестал работать (клавиатура переключается, но вместо русских букв на экран выдается псевдографика, а вместо псевдографики - русские буквы).  В 2.2.14 работает без проблем.

X11

Растровые шрифты. В принципе какой-то комплект входит в поставку, но в RH 6.0 я взял более свежий с kiarchive. Встать в /usr/X11R6/lib/X11/fonts и распаковать. Появятся поддиректории cyrillic/{75dpi|100dpi|misc}. Шрифты из поставки можно удалить. В RH 6.2 я взял шрифты из дистрибутива.

Type1 шрифты. Взять с kiarchive(pfb-шрифты). А лучше взять шрифты вместе с pfm-метрикой в gpi (тогда fonts.dir и fonts.scale придется сделать самому). Можно еще взять afm-метрику в gpi. Создать в /usr/X11R6/lib/X11/fonts/cyrillic поддиректорию Type1 и положить шрифты туда. Из fonts.dir-scale.add сделать fonts.dir и fonts.scale (не забыть добавить 16 первой строчкой). Шрифты в формате pfa изготовляются из pfb-шрифтов программой pfbtops.

xfs. В RHL 6.0 все шрифты берутся от  xfs (X font server). Запускается в /etc/rc.d/init.d/xfs (по SIGHUP перезагружает конфигурационный файл). Конфигурационный файл - /etc/X11/fs/config. Команда catalogue определяет список директорий, из которых font server будет брать шрифты. Вписать нужный cyrillic/...dpi в начало списка, затем cyrillic/misc, cyrillic/другойdpi, cyrillic/Type1. Перезапустить xfs (/etc/rc.d/init.d/xfs stop; /etc/rc.d/init.d/xfs start). Только не надо делать это при работающем X сервере, он этого не любит.

locale. В XFree86 3.3. (X11R6) уже должен быть locale ru_RU.KOI8-R. Если нет, то можно взять на kiarchive (X11R5, X11R6). Чтобы его включить надо установить переменную LANG равной ru_RU.KOI8-R (например, в ~/.bashrc). Я попробовал... Gnome явно пытается говорить по русски, В заголовках окон у него это получается, а вот в остальных местах он пытается использовать ISO5589-5, которого у меня нет, пришлось отключить. В RH 6.2 (XFree86 3.3.6) русский язык уже почти везде нормально смотрится (на этот раз кроме заголовков окошек :).

Ввод. Правильный метод. Использование Cyrillic_* keysyms в XKB. Возникают проблемы со старыми программами. В XFree86 3.3.3 ошибка, приводящая к использованию ISO8859-5 таблиц вместо KOI8-R. Есть заплатка, позволяющая это дело поправить (если, конечно, есть желание самому собирать XFree86). Для того, чтобы включить русский ввод надо добавить
XkbKeymap "xfree86(ru)"
в секцию Keyboard файла XF86Config и установить переменную окружения LANG=ru_RU.KOI8-R. К сожалению, RHL 6.0 как раз включает ошибочную версию XFree86 3.3.3. К тому имеются проблемы с шрифтами у Gnome/enlightment

Ввод. Правильный метод в RH 6.2. Правый Alt работает как ModeShift (русские буквы вводятся, пока на нее жмешь). В XF86Config в секции Keyboard записываем (слова в кавычках являются именами файлов в соответствующих поддиректориях /usr/X11R6/lib/X11/xkb, слова в скобках - именами секций в соответствующих файлах):

  • LeftAlt Meta
  • RightAlt ModeShift
  • ScrollLock ModeLock (не работает)
  • RightCtl Control
  • XkbKeymap "xfree86(ru)"
  • XkbRules "xfree86"
  • XkbModel "pc101"
  • XkbLayout "ru" (раскладка "йцукенг" - как в MS Windows, кроме символов над цифрами)
  • закоментарить XkbKeycodes, XkbTypes, XkbCompat, XkbSymbols, XkbGeometry
Улучшения для правильного метода в RH 6.2.
  • Можно keymap/xfree86 (секция ru) поменять en_US(pc105)+ru на ru(winkeys), чтобы в русском режиме вводились символы как на наклейках над цифрами.
  • на моей клавиатуре оказались "лишние" кнопки с окошками, которые я приспособил для постоянного включения/выключения русского режима. В файле /usr/X11R6/lib/X11/xkb/symbols/ru добавил определение для левой кнопки с окошком:
    key { symbols[Group1]= [ ISO_Next_Group ] };
    key { symbols[Group1]= [ ISO_Next_Group ] };
  • переделать файл /usr/X11R6/lib/X11/xkb/symbols/ru под "яверты"
Ввод. Обманный Xmodmap. Подстановка "улучшенного" Xmodmap в /usr/X11R6/lib/X11/xinit/.Xmodmap, который подменяет стандартную раскладку ISO8859-1 на KOI8-R. Может быть придется где-то вручную вызывать xmodmap /usr/X11R6/lib/X11/xinit/.Xmodmap (это должен делать xinitrxc или ~/.xinitrc, но всякое бывает). Прикладные программы после этого считают, что они имеют дело с обычными латинскими символами, а при вводе после нажатия CapsLock происходит преобразование в соответствии с клавиатурной раскладкой ЯВЕРТЫ. Нарушает все концепции интернационализации в X11. У меня не заработало в XFree86 3.3.3 (в прежних версиях работало отлично).

Ввод. Использование специальной программы перекодировки. Я опробовал Xruskb А. Лукьянова. Есть rpm в contrib. Единственный метод, который заработал у меня в RH 6.0. Опять-таки должны возникать проблемы с "правильными" прикладными программами. Запуск:
xrus yawerty-koi8.xmm
Переключение по кнопке или двум shift-ам.

Менеджеры окон и рабочего стола.

gnome/enlightment - нельзя выбирать Themes/BrushedMetal, иначе не будет русских букв в заголовках окон (используется шрифт lucida?).

Приложения под X11

gnome-terminal: setting->preferences->font->browse. В фильтрах ставим, что шрифт должен иметь charset=koi8-r, после чего выбираем какой-нибудь из шрифтов типа курьер (они моноширинные).

ghostscript. Копируем все .pfm, .afm и .pfb файлы из созданной ранее cyrillic/Type1 в /usr/share/fonts/default/ghostscript. Берем в gpi gs-Fontmap.add и добавляем его в конец /usr/share/ghostscript/5.10/Fontmap (оригинал сохранить). Затем закоментировать в Fontmap алиасы для Helvetica, Courier и Times, раскоментировать алиасы на соответствующие русские шрифты (там два курьера, выбрать CourierCyrPS, см. про Netscape). Еще советуется запускать с ключем -dNOPLATFONTS, но у меня gv и так с ним зпускается. Преобразование ps в pcl для печати дл HP LaserJet:
gs -q -sDEVICE=ljet4 -r600x600 -sPAPERSIZE=a4 -dNOPAUSE -dSAFER -dNOPLATFONTS -sOutputFile=-

Netscape 4.6: Edit->Preferences->Fonts. Для кодировки koi8-r выбираем Times(cronyx) и Curier (cronix). Почему-то netscape не любит шрифтов Type1 (ни pfb, ни pfa, ни с метрикой, ни без нее). Проблема при печати - он использует только встроенные метрики шрифтов и русские буквы плывут. Есть заплатка, которая правит бинарник netscape, записывая туда метрики CourierCyrPS и TimesCyrMT (любой версии, у меня сработало на 4.6/4.72). Естественно, теперь нельзя удалять русские Type1 шрифты ;). Также при печати нет подчеркиваний, цветов и оформления страницы (дата, имя файла и т.д.).


Конфигурирование

Пересборка ядра

Все делать из /usr/src/linux (если ядро из поставки). Если был сделан upgrade пакета kernel_headers, то м.б. придется сделать ссылки для /usr/include/asm и /usr/include/linux.
  1. make mrproper (удалить весь мусор от предыдущей конфигурации). Если хочется сохранить предыдущую конфигурацию, то сказать: make dep; make clean.
  2. конфигурация ядра (не советую делать SCSI-драйвера модулями; увы приходится это делать, если надо писать на ATAPI CD-RW)
    • make config (в виде ответов на вопросы: Y, N или M), надежно (ничего не забудешь поменять ;), 500 вопросов, на половину из которых не знаешь что сказать.
    • make menuconfig (в виде меню), удобно (нужен ncurses_devel).
    • make xconfig (под X-Windows), очень удобно :)
    • make oldconfig (все ответы из .config)
  3. make dep
  4. make bzImage (не надо слепо следовать устаревшей инструкции и делать make boot, он не влезет в загрузчик)
  5. make modules
  6. insmod loop до перемещения модулей, а то не найдет loop0
  7. удаляем совсем старую копию модулей (если она есть)
    rm -rf /lib/modules/2.2.5-22-old (нужен для mkinitrd)
  8. делаем текущий набор модулей старым
    mv /lib/modules/2.2.5-22 /lib/modules/2.2.5-22-old
  9. инсталируем новый набор модулей (в /lib/modules/2.2.5-22)
    make modules_install
  10. если все-таки сделал SCSI в виде модуля (или еще какой-нибудь модуль нужен при загрузке; ide-scsi не нужен), то пересобери initrd (отредактировать /etc/conf.modules  (/etc/modules.conf в RedHat 7.0) - вставить alias scsi_hostadapter имя-драйвераи соответствующие options имя-драйвера имя-драйвера="параметры"; проверить alias eth0 - и выполнить
    mkinitrd /boot/имя-нового-initrd 2.2.5-22
    после чего отредактировать /etc/lilo.conf). Также необходимо сделать, если раньше был модуль SCSI, а теперь его убрал или включил в ядро.
  11. копируем получившийся arch/i386/boot/bzImage в /boot/bzImage.new (переименовав старый, если надо)
  12. копируем получившийся System.map в /boot/System.map (переименовав старый?), klogd сначала пытается смотреть в /boot/System.map; если версия ядра не совпадает, то в /System.map, а если и там не совпадает, то в /usr/src/linux/System.map
  13. добавляем новую секцию в /etc/lilo.conf со ссылками на новое ядро и м.б. initrd (обязательно сохранив возможность загрузки старого ядра, System.map, modules?, где взять module-info для нового ядра?)
  14. /sbin/lilo -v
  15. перезагружаемся - DMA все-равно приходится включать вручную через hdparm, ибо не любит он WD :(
  16. /usr/src/linux занимает теперь 70МБ (RH 6.2 - 80 MB, RH 7.0 - 106 MB)
  17. скомпилированный emu10k1 не грузится, приходится брать модуль из дистрибутива

Обновление ядра

  1. подготовить все необходимые пакеты (скачать и положить в локальную директорию)
  2. на всякий случай сделать загрузочный диск
  3. rpm -Uvh kernel-utils-xyz kernel-headers-xyz kernel-source-xyz
  4. rpm -ivh kernel-xyz [kernel-ibcs-xyz] [kernel-pcmcia-cs-xyz]
  5. сделать новый initrd (только если при загрузке потребуется драйвер, сделанный в виде модуля)
  6. дополнить /etc/conf.modules (/etc/modules.conf)
  7. lilo -v
  8. перезагрузиться (shutdown -r now)
  9. настроить ядро

linuxconf

источник

Поддерживает различные интерфейсы с пользователем:

  • командная строка
  • а/ц окна
  • X11 (древовидное меню)
  • www (позволяет удаленное администрирование, выключен по умолчанию)
Общие ощущения, как от Unixware 1.0: здорово, красиво, но ненадежно. Если помнишь, как это вручную делается, то лучше сделать вручную. Так и есть! Linuxconf ведет свою базу конфигурации и некоторые обычные конфигурационные файлы генерирует исходя из нее при загрузке (например, sendmail.cf!), так что вносить измения в них вручную безсмысленно. Есть мнение, что его надо отключить (начальник д.б. один).

Управляет списком пользователей, групп, файловых систем (в т.ч. сетевых), конфигурация локальной сети и PPP, сетевые клиенты и серверы, LILO.

control panel

Запускается командой control-panel в xterm. Является площадкой для запуска отдельных графических средств конфигурации (printtool, kerneld, netcfg, run level editor, time and date, modem configuration).

chkconfig

Манипуляция файлами в /etc/rc.d (какие сервисы запускать и останавливать при переходе с уровня на уровень). Криво сделан. Проще вручную сделать, но кругом натыкано проверок с помощью chkconfig. Он действует в терминах: включен/выключен. На самом деле для сервиса м.б. как процедура включения, так и выключения в любых комбинациях. В результате он выдает ответ "запущен сервер или нет" в зависимости от того, какой файл создан в директории последним - K или S!

Ключи:

  • --list (получить список сервисов)
  • --add имя (добавить сервис в список отслеживаемых)
  • --del имя
  • --level уровень имя [ on | off | reset ] (поднять/опустить/сбросить сервис на указанном уровне)

отдельные утилиты

  • /usr/sbin/mouseconfig
  • /usr/sbin/timeconfig, timetool, date, setclock, hwclock, adjtimex
  • сервисы: /usr/sbin/ntsysv или /sbin/chkconfig
  • mkbootdisk --device /dev/fd0 версия (хочет vmlinuz, а не bzImage)
  • Xconfigurator или vi /etc/X11/XF86Config (про существование Interlace-режимов народ уже забыл :(
  • useradd/userdel, passwd
  • kbdconfig

RHL runlevels:

  • 0: halt
  • 1: single user
  • 2: multiuser
  • 3: multiuser + NFS (режим по умолчанию)
  • 4:
  • 5: X11 (xdm, gdm или kdm)
  • 6: reboot

Network

Документация по конфигурации сети (NET-4)
  • NET-3-HOWTO (может есть NET-4?), август 1998
  • Network Adiministrators Guide - NAG (1996)
Управление параметрами стека через /proc/sys/net/ipv4 (посмотреть - cat имя, изменить echo параметр... > имя). Смысл имен описан в ip-sysctl.txt. В частности необходимо (для установки во время загрузки надо поменять /etc/rc.d/init.d/network)
  • изменить ip_local_port_range с "1024 4999" на "32768 61000" (echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range). Из этого интервала берутся номера локальных портов для соединения с удаленными серверами. Так как мой firewall глушит все соединения идущие снаружи на внутреннюю сеть и направленные на порты до 32768, считая их привилегированными, то надо вывести их выше.
  • включить ip forwarding (необходим для transparent proxy, сбрасывает остальные параметры стека в соответствии с RFC 1122 для хостов и RFC 1812 для маршрутизаторов): echo 1 > /proc/sys/net/ipv4/ip_forward  (во время загрузки устанавливается в зависимости от значения переменной FORWARD_IPV4 в /etc/sysconfig/network).
  • включить незбежную дефрагментацию:
    echo 1 > /proc/sys/net/ipv4/ip_always_defrag # в ядре 2.2.12 указывается во время конфигурации
В RH 6.2 для управления параметрами стека (и любыми другими переменными из /proc/sys) используется
sysctl -p /etc/sysctl.conf
в котором записаны операторы присваивания соответствующим переменным (имена переменных совпадают с именами файлов из /proc/sys  с заменой слешей на точки):
  • net.ipv4.ip_local_port_range = "32768 61000"
  • net.ipv4.ip_forward = 1
  • net.ipv4.ip_always_defrag = 1
  • net.ipv4.conf.all.rp_filter = 1
  • net.ipv4.conf.all.log_martians = 1 (сбрасывать пакеты с невозможными адресами в журнал)
  • net.ipv4.conf.all.accept_source_route = 0 (запретить source route)

Однако похоже, что sysctl не работает с двумя параметрами (ip_local_port_range), так что этот параметр приходится устанавливать руками

Несколько IP-адресов на одном интерфейсе (aliasing):

  • ядро должно быть собрано с поддержкой alias (CONFIG_IP_ALIAS=y)
  • после конфигурации основного адреса на интерфейсе  в /etc/rc.d/init.d/network (пусть eth0):
    ifconfig eth0:0 дополнительный-адрес netmask маска-дополнительной-сетки up
  • в документации предлагается определить маршрут для этой сетки
    route add -net дополнительная-сетка netmask маска-дополнительной-сетки eth0:0
    но он устанавливается сам собой

PPP

Документация
  • pppd.8, pppstats.8, char.8
  • PPP-FAQ (1996)
  • PPP-HOWTO (март 1997)
  • /usr/doc/ppp-2.3.7

Ядро должно быть сконфигурировано с поддержкой PPP (netdriver/ppp, модули ppp, slhc, bsd_comp

В RedHat 6.2 rp3 настраивает PPP почти нормально (правда, я не пробовал настраивать диалог). Конфигурационный файл - "/etc/wvdial.conf". rp3 аварийно завершается, если слишком быстро нажать stop/start. Обрыва линии не замечает, так что приходится прописывать в /etc/ppp/options lcp-echo-interval и lcp-echo-failure. Адреса DNS-серверов берет от сервера доступа.

В RedHat 6.0 linuxconf и control-panel имеют недоработки в конфигурировании PPP-доступа в интернет :( Так что я сделал так:
  • добавляем в /etc/resolv.conf имя нашего DNS-сервера
    nameserver 195.161.72.28
  • убедиться, что /dev/modem указывает на нужное устройство (у меня COM2 - /dev/ttyS1)
  • завел в control-panel/network интерфейс ppp0, а затем отредактировал конфигурационные файлы ручками
    • /etc/ppp/options (не забывать про ~/.ppprc)
      • lock #чтобы никто больше не лез к тому же самому порту во время работы pppd
      • modem crtscts #нормальная синхронизация и сигналы
      • mtu 576 mru 576 # стандартный размер блока (1500) мешает одновременно работать с telnet и ftp
      • asyncmap 00000000 # использовать все символы
      • defaultroute # поднимать маршрутизацию после установления соединения
      • debug kdebug 1 # потом можно выключить
      • lcp-echo-interval 20 lcp-echo-failure 3 # при разрыве связи pppd почему не получает извещения об этом, приходится непрерывно проверять целостность соединения через LCP echo. Может приладить програмку, которая будет смотреть /proc/tty/driver/serial и рубить pppd при пропадании сигнала?
    • /etc/sysconfig/network-scripts/chat-ppp0 (у меня модем Zyxel Elite 2864, соединяюсь с DEOL), содержит expect-send пары для chat
      • 'TIMEOUT' '2'
      • 'ABORT' 'BUSY'
      • 'ABORT' 'ERROR'
      • 'ABORT' 'NO CARRIER'
      • 'ABORT' 'NO DIAL TONE'
      • '' 'ATI2&F'
      • 'OK' 'AT*E1&S1S13=2S42=64S52=96'
      • 'OK' 'ATDP9329765'
      • 'TIMEOUT' '45'
      • 'CONNECT' ''
      • 'TIMEOUT' '15'
      • 'Username:' 'имя'
      • 'Password:' '\qпароль'
    • /etc/sysconfig/network-scripts/ifcfg-ppp0 по вкусу (например, уменьшить RETRYTIMEOUT)
    • после подъема/опускания канала pppd вызывает /etc/ppp/ip-up и /etc/ppp/ip-down, которые при необходимости тоже можно настроить (параметры: интерфейс, tty, скорость, localip, remoteip, ipparam)
  • создать в /etc/ppp скрипты для запуска ppp (названия условны):
    • deol-up: /etc/sysconfig/network-scripts/ifup-ppp /etc/sysconfig/network-scripts/ifcfg-ppp0
    • deol-down: /etc/sysconfig/network-scripts/ifdown-ppp /etc/sysconfig/network-scripts/ifcfg-ppp0
  • вызывать deol-up/deol-down ручками, вставить в crontab или в графическое меню - дело вкуса (только с правами надо разобраться)
  • а где же pppdump?

firewall и NAT (masquerading)

Документация:
  • IPCHAINS-HOWTO
  • NET-3-HOWTO (может есть NET-4?), август 1998
  • IP-Masquerading-HOWTO
  • PPP-HOWTO
  • Ethernet-HOWTO
  • Firewall-HOWTO
  • сайт автора: Linux IP Firewalling Chains
  • ipchains.8, ipfw.4, ipchains-save.8, ipchains-restore.8
Реализация firewall в linux 2.1.102 и выше сделана с помощью ipchains. В предыдущих версиях - с помощью ipfwadm. В следующих версиях обещают полностью переделать (в 2.3 - network filter). Состоит из кода, встраиваемого в ядро (при генерации включить FIREWALL, IP_FIREWALL; появляются /proc/net/ip_fwchains и /proc/net/ip_fwnames), и внешней программы ipchains (ipchains-save, ipchains-restore). Настойчиво рекомендуется дефрагментировать все пакеты (/proc/sys/net/ipv4/ip_always_defrag или IP_ALWAYS_DEFRAG, в зависимости от версии ядра).

Теория. Каждый проверяемый IP-пакет проходит по цепочке ("сквозь строй") правил, определяющих, что с ним делать. Правило состоит из шаблона и действия. Каждая цепочка имеет действие по умолчанию. Задействованы цепочки с именами:

  • input - обрабатываются пакеты, приходящие снаружи или с loopback;
  • forward - обрабатываются пакеты, чьи исходные и конечные адреса лежат снаружи;
  • output - обрабатываются пакеты, уходящие наружу или loopback;
  • определенные пользователем - используются в качестве подпрограмм, есть отлов циклов.
Действия (действие в недопустимом месте эквивалентно DENY):
  • ACCEPT - пропустить пакет;
  • REJECT - отвергнуть, послав ICMP Host Unreachable (если пакет не ICMP);
  • DENY - выбросить молча;
  • MASQ - только для цепочки forward - подменить адрес отправителя на свой, номер порта на свежесгенеренный и запомнить в таблицах ядро, чтобы обратный пакет преобразовывался автоматически;
  • REDIRECT - только для цепочки input, TCP или UDP - несмотря на то, что пакет чужой, послать его локальному процессу на указанный порт;
  • имя пользовательской цепочки - переход на подпрограмму;
  • RETURN - конец цепочки (как бы возврат из пользовательской цепочки-подпрограммы);
  • пусто - только увеличить счетчики байтов и пакетов и перейти к следующему правилу в цепочке, счетчики - 64-битные.
Конфигурация производится с помощью ipchains, ipchains-save (сохранение текущей конфигурации на stdout), ipchains-restore (чтение сохраненной ранее конфигурации  с stdin). После загрузки определены цепочки input (ACCEPT), output (ACCEPT), forward (ACCEPT). Основные опции ipchains:
  • -N имя-цепочки (создать цепочку)
  • -X имя-цепочки (удалить пустую цепочку, на которую нет ссылок)
  • -L [ -v ] [имя-цепочки] (показать список правил и счетчики)
  • -A имя-цепочки правило (добавить правило к цепочке)
  • -D имя-цепочки номер (удалить правило с указанным номером, нумерация с 1)
  • -D имя-цепочки правило (удалить правило по текстуальному совпадению)
  • -F имя-цепочки (удалить все правила из цепочки)
  • -I имя-цепочки номер правило (вставить правило в цепочку перед правилом с указанным номером, нумерация с 1)
  • -R имя-цепочки номер правило (заменить)
  • -M -L (показать текущие маскарадные соединения)
  • -M -S tcp tcpfin udp (установить соответствующие timeout в секундах)
  • -h icmp (выдать список ICMP имен)
  • -Z имя-цепочки (обнулить счетчики)
  • -C имя-цепочки пакет (тестировать прохождение пакета)
  • -P имя-цепочки действие (изменить действие по умолчанию)
Шаблон правила может включать (если в качестве адреса хоста указывается имя, соответствующее нескольким адресам, то при добавляется соответствующее количество правил; восклицательный знак инвертирует шаблон):
  • --proto | -p [!] протокол (tcp/udp/icmp/all)
  • --bidirectional | -b (добавляется два правила: прямое и обратное)
  • --source | -s | --src [!] address[/mask] [!] [port[:port]] (маска может быть записана как в виде 4-х десятичных чисел через точку, так и в виде одного числа)
  • --source-port [!] [port[:port]]
  • --destination | -d | --dst [!] address[/mask] [!] [port[:port]]
  • --destination-port [!] [port[:port]]
  • --icmp-type [!] имя
  • --interface  | -i [!] имя[+] (ppp0, lo, eth0; + - соответствует любой подстроке)
  • --jump | -j действие [port](номер порта для REDIRECT)
  • --mark | -m [+-]число (пометить пакет для QoS)
  • --log | -l (запись о пакете в журнал)
  • --numeric | -n (выводить адреса и порты в числовом виде)
  • --output | -o [maxsize] (вывести пакет на устройство netlink)
  • -v (повысить болтливость)
  • [!] --fragment | -f (только для последующих кусков фрагментированных пкетов)
  • [!] --syn | -y (имеет смысл только для TCP: только пакеты с установленным флагом SYN, отрицание означает установленный флаг ACK)
  • --TOS | -t andmask xormask (управление битами TOS - type of service)
Тщательно составленные и отлаженные цепочки сохранять по ipchains-save (ipchains.transparent_proxy_and_firewall) и восстанавливать при загрузке по ipchans-restore (/etc/rc.d).

В RH 6.2 появился сервис ipchains (управляемый обычным chkconfig) в /etc/rc.d/init.d с функциями:

  • start (настройки берутся из /etc/sysconfig/ipchains - делаются либо с помощью функции save, либо ipchains-save)
  • stop
  • restart
  • status
  • save (сохранить текущие настройки в /etc/sysconfig/ipchains)
  • panic (полная блокировка в случае атаки)
Пример (/etc/sysconfig/ipchains в RH6.2 позволяет комментарии):
  • :input ACCEPT
  • :forward ACCEPT
  • :output ACCEPT
  • # доступ к HTTP-серверу (если есть)
  • -A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -i lo -p 6 -j ACCEPT -l
  • -A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -p 6 -j DENY -l
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 80:80 -p 6 -j ACCEPT
  • # поддержка transparent proxy
  • -A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j REDIRECT 3128
  • -A input -s сосед/255.255.255.255 -d наш-адрес/255.255.255.255 3130:3130 -p 17 -j ACCEPT
  • -A input -s клиенты-proxy -d наш-адрес/255.255.255.255 3128:3128 -p 6 -j ACCEPT
  • # NTP from LAN and dialup
  • -A input -s сервера-NTP 123:123 -d наш-адрес/255.255.255.255 123:123 -p 17 -j ACCEPT
  • # syslog from LAN
  • -A input -s откуда-беррем-syslog -d наш-адрес/255.255.255.255 514:514 -p 17 -j ACCEPT
  • # FTP from anywhere
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 21:21 -p 6 -j ACCEPT
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 20:20 -p 6 -j ACCEPT
  • # пропуск FTP passive mode (д.б. согласован с passive ports в ftpaccess)
  • -A input --syn -s 0.0.0.0/0.0.0.0 -d 195.161.72.12/255.255.255.255 начало:конец -p 6 -j ACCEPT
  • # DNS
  • # -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 6 -j ACCEPT
  • # -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 17 -j ACCEPT
  • # на адресах выше 32k только клиенты (кроме ftpd в пассивном режиме, ниже вообще ничего), заодно борьба с gnome
  • -A input --syn -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6 -j DENY
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 17 -j ACCEPT
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6 -j ACCEPT
  • # ICMP
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -p 1 -j ACCEPT
  • # все остальное - запретить (DENY or REJECT ?)
  • -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -j DENY -l
  • -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -l

Маршрутизация

Пока чистая статика. Локальная сетка и прямая маршрутизация модемов на NAS (routes_to_modems.sh - куча "route add -host адрес gw NAS metric 1", /etc/rc.d).

В RH 6.2 для тех же целей используется /etc/sysconfig/static-routes, пока оставил как есть.


X11

запуск ("Ной родил Иакова, Иаков родил...")

Начинается все со startx: добавляет xauth для доступа данного пользователя через unix и localhost к X-серверу и вызывает xinit. Т.к. никто их оттуда (.Xauthority и .ICEauthority) не удаляет, то через некоторое время запуск X начинает тормозить (пытается обратиться к серверу доступа через указанные в этих файлах порты, а там уже никого нет). Пришлось в собственный скрипт перед запуском startx добавить обнуление этих файлов).

xinit убеждается в наличии /etc/X11/xinit/Xclients и вызывает его.

Xclients пытается определить какой desktop установлен и запускает gnome-session/strtkde/Another Level/AfterStep/...

gnome-session (--help)...

X сервер

Ключ "--nolisten tcp" отменяет прослушивание порта 6000 для общения с клиентскими программами по TCP/IP. После этого клиентские программы на этом же хосте, но из-под другого пользователя не запускаются.

Менеджеры окон

Рабочий стол

Gnome

Количество глюков просто поражает, особенно если запускать на одном экране приложения для нескольких пользователей.

Запуск панели, если она грохнулась: panel.

Каждая программа из комплекта gnome имеет привычку прислушиваться к tcp порту из клиентского интервала. Это даже не дыра, а открытые ворота в системе безопасности. На многократно заданный вопрос один из авторов заявил: "gnome(ORBit) специально предназначен для работы в сетевом окружении и порты он будет прослушивать всегда, а наша система безопасности - непробиваема". Предполагается, что по этому порту программа получает команды от session-manager (попытка отключить его с помощью ключа запуска --sm-disable или заменой запуска gnome-session на gnome-wm ни к чему не привела - порты открываются в любом случае). Таким образом любой осталоп может сконнектиться на этот порт и "пообщаться" с программой, что иногда вызывает ее аварийное завершение (если постараться, то и очередной buffer overflow exploit найти можно). Под горячую руку я закрыл доступ к любым серверным программам на интервале клиентских портов (фильтруя SYN пакеты), но говорят, что можно закрыть это безобразие через tcpwrapper (host_access(5)).

xterm

Проблема при работе в linux из xterm под Solaris: не выходит из режимов реверса и подчеркивания (less)
  • infocmp xterm (в Solaris)
  • записать в файл в linux (например, xterm-sol.ti)
  • отредактировать имя терминала (например, xterm-sol)
  • tic -v xterm-sol.ti (в linux, с правами root)
  • при каждом заходе из Solaris в linux делать: export TERM=xterm-sol (или встроить в .bash_profile разбор откуда мы пришли по DISPLAY или - в RH 6.2 - по REMOTEHOST)

Печать

Ссылки:
  • Printing-HOWTO
  • Printing-Usage-HOWTO
Пакеты printtool, rhs-printfilters и lpr обеспечивают вполне сносные средства для настройки и печати, но не поддерживают наш старый HP JetDirect (который вместо lpd использует просто порт TCP/9100). Приходится устанавливать LPRng. Читая документацию по LPRng, обнаружил ссылку на netcat, которого мне вполне хватает для печати страниц из Netscape и прочих PS-файлов. Устанавливаем netcat (например, из contrib). В /usr/local/bin уже лежит фильтр для преобразования PS в PCL (ps2pcl.sh). Добавляем туда же tojd.sh:
/usr/sbin/nc имя-принтера 9100
и pstojd.sh:
ps2pcl.sh | tojd.sh
Вот и все. Теперь вместо команды lp/lpr для печати PS-файлов можно использовать pstojd.sh. Когда мне потребуется настоящий спулинг, я буду изучать LPRng ;).


Диски, разделы

Создание и редактирование таблицы разделов производится командой
fdisk /dev/hda (подставить требуемое имя диска)

Раздел надо создавать в той ОС, которая будет с ним работать. Например, MS Windows не любит разделов не на границе цилиндра. Переключение режима работы с большими дисками (LBA/Large/Auto) меняет размер цилиндра. Так что после смены режима надо заново разбивать диск.

cfdisk, sfdisk, parted

Файловые системы

Создание стандартной файловой системы ext2:
mke2fs имя-диска
с ключами

  • -b размер-блока (по умолчанию 1024, в RedHat 7.0 - 4096)
  • -c (искать плохие блоки)
  • -f размер-фрагмента (по умолчанию равен размеру блока)
  • -m резервируемый-процент (по умолчанию - 5)
  • -v

Поиск файлов: locate. Создание базы данных для поиска: /etc/cron.daily/updatedb.cron (в RH 6.2 /etc/cron.daily/slocate.cron). Добавить ключ "-l 0", что слегка уменьшает безопасность, зато не надо переходить в root, чтобы найти ВСЕ файлы. Добавить в список непросматриваемых директорий всякие squid-кеш и inn-иерархии.

swap

Linux позволяет использовать от 1 до 8 разделов диска (тип раздела - 0x82) или файлов в качестве swap-области. Максимальный размер раздела/файла для Intel-архитектуры - 2GB (на каждый MB swap-области тратится 1KB ОЗУ). Создание swap-области: mkswap имя-файла-или-раздела (файл или раздел требуемого размера надо создать заранее). Включение файла/раздела в работу: swapon [-p приоритет ] имя-файла-или-раздела. Приоритет может быть установлен от 0 до 32767. В первую очередь используется место в swap-области с более высоким приоритетом. Если существует несколько областей с равным приоритетом, то обеспечивается балансировка нагрузки, так что полезно разнести их по разным дискам/каналам. Какая-то засада с установкой приоритета по умолчанию, так что лучше назначать их вручную. Прекратить использование области: swapoffимя-файла-или-раздела. Посмотреть, какие swap-области используются и как: swapon -s (или cat /proc/swaps). Чтобы обеспечить автоматическое включение файла/раздела в работу при начальной загрузке, надо занести в /etc/fstab строку:
имя-файла-или-раздела none swap defaults 0 0
/etc/rc.d/rc.sysinit выдается команда swapon -a, надеюсь после монтирование всех локальных файловых систем).


Сервера и клиенты Internet

  • http и ftp кэш - squid
  • Apache
  • PHP
  • MySQL
  • FTP сервер
  • ntp (xntpd)
  • INN (news сервер для протокола NNTP)
  • nntpcache (news-сервер для маленьких)
  • ftp mirror
  • syslog
  • SSH
  • NSCD (кеш DNS)


Проблемы

Загрузка со SCSI при наличии IDE-дисков.

/sbin/lilo делает оба диска незагружаемыми. Бездумный способ: запускать lilo с выключенным IDE (и в BIOS тоже). Разумный способ ищется.

Если диск уже запорчен:

  • выключить IDE-диски
  • загрузиться с дискеты UPDATE
  • дойти до места где он монтирует SCSI диски
  • перейти в консоль для ручного вмешательства
  • mount /dev/sda6 /mnt
  • cd /mnt
  • bin/bash
  • chroot .
  • mount /dev/sda1 /boot
  • теперь можно запускать lilo

Где взять дополнительную информацию

Порталы, посвященные Linux:

  • виртуальная энциклопедия Linux по-русски
  • linux.ru.net (ежедневные новости)
  • http://www.linux.ru/ (ежедневные новости почему-то без архива)
  • Linux на opennet.ru
  • Linux park на webclub.ru
  • linuxcenter.ru (реклама книжек по Linux)
  • linux.org.ru (еще новости - не перепутать бы их :) - и результаты опросов)
  • ru.linuxstart.com
  • linuxRSP.ru
  • Linux на lib.ru
  • linuxnews.ru
  • Linux gazette по-русски
  • linux knowledge base
  • linux webwatcher
  • LinuxHQ
  • Linux.org
  • Linuxcenter (оригинал - французский)
  • linux journal
  • Linux International
  • Linuxcare (в основном, предложение платных услуг)
  • Linux у IBM

Документация

  • Linux Documentation Project
  • зеркало Linux Documentation Project
  • виртуальная энциклопедия
  • Russian LDP
  • ссылки на opennet.ru (400 kB)
  • там же, но классифицированные
  • ссылки на ru.linuxstart (куча мала на 600 кБ)
  • команда man (чтобы работала man -k, должна быть создана поисковая база whatis: /etc/cron.weekly/makewhatis.cron)
  • директория /usr/doc (LDP, HOWTO, FAQ)
  • CD с документацией из полного комплекта RedHat
  • Получить список документации, связанный с конкретной командой можно используя
    rpm -qdfполное-имя-команды
  • команда locate для поиска файла
  • команда info

News (USENET) и списки рассылки


Обсудить данную тему на нашем форуме "Все о Linux"