@ Карта сайта News Автора!

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

Linux установка FC 3, notebook, переход на CentOS 4 установка CentOS 3.4, сервер, переход на CentOS 4 установка WB 3.0, сервер установка RH8.0, дома установка RH7.2, сервер установка RH7.2, дома

Последние изменения:
2015.11.18: hard: обновлена статья про ИБП и их мониторинг

Последнее изменение файла: 2016.08.09
Скопировано с www.bog.pp.ru: 2016.08.28

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


Ядро

Основой любого дистрибутива является ядро Linux (некоторые даже предлагают называть Линуксом только его ядро, а ядро с обслуживающими программами предлагают называть GNU/Linux; если к GNU/Linux добавить прикладные программы, то получится дистрибутив).

Официальные ядра нумеруются в виде: версия.модификация.ревизия. Нечётные модификации (2.3, 2.5) предназначены исключительно для тестирования разработчиками, чётные (2.2, 2.4, 2.6) - для обычного применения. Хотя лично я не рекомендую использовать на сервере ядра с чётным номером модификации, но начальных ревизий (2.6.0 - 2.6.5) - будут проблемы.

Разработчики дистрибутивов поставляют в своих продуктах сильно модифицированные ядра. Например, Red Hat поставляет ядра модификации 2.4 с некотроми функциями из 2.6 (NPTL и некоторые другие). Так что, если какая-то программа требует ядро 2.6, а у вас ядро 2.4, то ещё не всё потеряно... С другой стороны многие "заплатки" улучшающие официальное ядро, неприменимы к ядрам из дистрибутива.

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

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

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

Что нового в 2.6:

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

Обновление ядра из rpm - старая школа

  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 (только если при загрузке потребуется драйвер, сделанный в виде модуля, современные rpm ядра делают это самостоятельно при установке)
  6. дополнить /etc/conf.modules (/etc/modules.conf)
  7. lilo -v или отредактировать /boot/grub/grub.conf (современные rpm ядра делают это самостоятельно при установке)
  8. перезагрузиться (shutdown -r now)

Обновление ядра из rpm с помощью yum - новая школа

  1. предполагается, что имеется свой или чей-нибудь ещё репозитарий yum для данного дистрибутива и клиент yum настроен на него
  2. yum update kernel*
  3. перезагрузиться (shutdown -r now)

Сборка ядра в CentOS7

  1. всё делаем в ~/rpmbuild под обычным пользователем
  2. mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
  3. echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros
  4. поставить пакеты: rpm-build, redhat-rpm-config, asciidoc, hmaccalc, perl-ExtUtils-Embed, pesign, xmlto, audit-libs-devel, binutils-devel, elfutils-devel, elfutils-libelf-devel, ncurses-devel, newt-devel, numactl-devel, pciutils-dedvel, python-devel and zlib-devel
  5. скопировать SRC пакет с vault
  6. установить его (не под root-ом)
  7. cd ~/rpmbuild/SPECS
  8. rpmbuild -bp --target=$(uname -m) kernel.spec
  9. исходники распакованы в ~/rpmbuild/BUILD/kernel.../linux...

Утилиты работы с модулями ядра module-init-tools (CentOS5 и 6)

Утилиты работы с модулями ядра module-init-tools обеспечивают автоматическую загрузку необходимых модулей ядра 2.6 и более нового. Сиволы "-" в именах и синонимов молчаливо заменяются на "_" и обратно при необходимости.

Утилита depmod создаёт описание зависимостей между модулями - какой сервис (symbols), требуемый одному модулю, обеспечивается другим модулем - читает модули в каталоге /lib/modules/версия-ядра, результат записывает в modules.dep в том же каталоге. Каталог /etc/depmod.d содержит конфигурационные файлы (depmod.conf), управляющие порядком просмотра модулей. Версию ядра и модуль можно указать явно в командной строке. Ключи:

Утилита modinfo выводит информацию об указанном модуле: имя файла (-n), лицензия (-l), описание (-d), автор (-a), от каких модулей зависит, версия, параметры (-p), синонимы. Можно указать версию ядра (-k) и разделение полей нулями (-0) вместо переводов строки.

Утилита lsmod выводит список загруженных модулей (/proc/modules), также выводит размер, счётчик использований и кем используется (к сожалению, только при использовании модулями).

Утилита insmod загружает указанный модуль. Можно явно указать имя файла и параметры. Ошибки необходимо смотреть с помощью dmesg (если не случилось "kernel panic").

Утилита rmmod выгружает указанный модуль. Ключи:

Утилита modprobe загружает и выгружает указанные модули с учётом зависимостей из modules.dep и настроек из /etc/modprobe.conf и /etc/modprobe.d/, а также из командной строки загрузки ядра в форме имя-модуля.опция. Ошибки необходимо смотреть с помощью dmesg (если не случилось "kernel panic"). Можно указать параметры модуля. Ключи:

Настройки modprobe берутся из файла /etc/modprobe.conf и файлов *.conf в каталоге /etc/modprobe.d/. Рекомендуется создавать отдельный файл для каждой ситуации дабы они не мешали друг другу. Каждая строка содержит команду, пустые строки и строки, начинающиеся с "#", являются комментариями. Символ "\" в конце строки является символом продолжения на следующей строке. Команды:

Утилиты работы с модулями ядра kmod (CentOS7)

Утилиты работы с модулями ядра kmod обеспечивают автоматическую загрузку необходимых модулей ядра 2.6 и более нового. Сделаны с использованием библиотеки libkmod (kmod-libs) Сиволы "-" в именах и синонимов молчаливо заменяются на "_" и обратно при необходимости.

Утилита depmod создаёт описание зависимостей между модулями - какой сервис (symbols), требуемый одному модулю, обеспечивается другим модулем - читает модули в каталоге /lib/modules/версия-ядра, результат записывает в modules.dep (modules.dep.bin) в том же каталоге. Также создаются список символов modules.symbols (modules.symbols.bin) и список имён устройств modules.devname (для udev для создания файлов в /dev) в том же каталоге. Каталог /etc/depmod.d (/usr/lib/depmod.d/*.conf, /run/depmod.d/*.conf) содержит конфигурационные файлы (depmod.conf), управляющие порядком просмотра модулей. Версию ядра и модуль можно указать явно в командной строке. Ключи:

Утилита modinfo выводит информацию об указанном модуле: имя файла (-n), лицензия (-l), описание (-d), автор (-a), от каких модулей зависит, версия, параметры (-p), синонимы. Можно указать версию ядра (-k) и разделение полей нулями (-0) вместо переводов строки.

Утилита lsmod выводит список загруженных модулей (/proc/modules), также выводит размер, счётчик использований и кем используется (к сожалению, только при использовании модулями).

Утилита insmod загружает указанный модуль. Можно явно указать имя файла и параметры. Ошибки необходимо смотреть с помощью dmesg (если не получилось "kernel panic").

Утилита rmmod выгружает указанный модуль. Ключи:

Утилита modprobe загружает и выгружает указанные модули с учётом зависимостей из modules.dep.bin и настроек из /etc/modprobe.conf и /etc/modprobe.d/*.conf (/lib/modprobe.d/*.conf, /run/modprobe.d/*.conf), а также из командной строки загрузки ядра в форме имя-модуля.опция и modprobe.blacklist=список-модулей. Ошибки необходимо смотреть с помощью dmesg (если не случилось "kernel panic"). Можно указать параметры модуля. Ключи:

Настройки modprobe берутся из файла /etc/modprobe.conf и файлов *.conf в каталогах /etc/modprobe.d/, /lib/modprobe.d/ и /run/modprobe.d/. Рекомендуется создавать отдельный файл для каждой ситуации дабы они не мешали друг другу. Каждая строка содержит команду, пустые строки и строки, начинающиеся с "#", являются комментариями. Символ "\" в конце строки является символом продолжения на следующей строке. Команды:

Подбор оборудования и управление им

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

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

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

Процессоры

Память

decode-dimms.pl из пакета lm_sensors позволяет интерпретировать содержимое SPD.

EDAC (Error Detection and Correction) - мониторинг ошибок памяти, состоит из модуля ядра edac_mc (k8_edac, e752x_edac, e7xxx_edac, edac_mc) и пакета edac-utils. Управление через /sys/devices/system/edac/mc/. Отчёты с помощью утилиты edac-util из пакета edac-utils ("edac-util -v --report=full"). Для привязки ошибок к физическим модулям памяти можно использовать скрипт edac-ctl, но материнская плата д.б. описана в /etc/edac/labels.db, а их там немного.

What are Machine Check Exceptions (or MCE)? (mcelog)

Расшифровка вывода /proc/meminfo

Что каждый программист должен знать о памяти (Ulrich Drepper, Перевод: Капустин С.В.)

ATA и SATA

ATA (IDE, EIDE, ATA33 и другие фирменные названия)

Краткие сведения

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

Получение информации от S.M.A.R.T. (Self Monitoring, Analysis and Reporting Technology) для ATA (SATA) и SCSI (SAS, FC, iSCSI) устройств возможно с использованием пакета smartmontools (ранее smartsuite):

Попытка горячей замены SATA диска не удалась, хотя оборудование позволяет (и шасси, и материнская плата). То есть новый диск работает, но все параметры (в частности, размер) остаются от старого. Перепробовал:

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, где

Форматирование НГМД

RAID

CD-R (CD-RW, DVD-R, DVD-RW)

Видеокарты на базе GPU NVIDIA: драйверы, TV-Out (nvtv), датчики (rivatv), TV-In, разгон (nvclock)

Мышки

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

Поддерживается работа USB мышек, имитирующих PS/2 (ImPS/2), например, Microsoft Wheel Mouse Optical 1.1A USB (2 кнопки и колесико прокрутки, Product=Microsoft 3-Button Mouse with IntelliEye(TM)) под видом Microsoft IntelliMouse (USB). При этом работа колесика прокрутки в X имитируется нажатием виртуальных 4 и 5 кнопок (Option "ZAxisMapping" "4 5"), при этом прокрутка работает во всех опробованных мною программах: Mozilla, gvim, gnome-terminal, xchat, Gimp, xterm.

USB клавиатура (BTC USB Multimedia Keyboard 9000AU) работает нормально (русские наклейки не совсем соответствуют, мультимедиа клавиши не работают). Посмотреть код нажатой клавиши можно с помощью программ xev и showkey.

Сканеры

Ethernet

Платы видеозахвата и ТВ/FM тюнеры на базе Bt848/Bt878

Пульт ДУ

Модемы

многопортовая плата на базе Oxford Semiconducter OX16PCI

RPM: поиск, установка и управление пакетами программ

RPM: поиск, установка и управление пакетами программ


Установка дистрибутивов Red Hat

Примеры установок для различных версий и ситуаций (установщик anaconda):

Загрузка Linux: последовательность шагов, загрузчики, /etc/inittab


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

gnumeric -> guile -> umb-scheme

kernelcfg, netcfg -> tkinter -> tix, python

tix -> tk -> tcl

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


Русификация

Особенности настройки различных версий Red Hat смотрите в примерах установок.

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

Консоль

Документация Предварительное замечание. ReHat заменила в 6.0 реализацию драйвера консоли kbd на console-tools (потом обратно ;), так что старые рекомендации по русификации консоли стали неприменимы. Рекомендации данные здесь неприменимы к старым системам. Если при установке RH 6.2 выбрать Russian/ru-yawerty, то все будет настроено само собой (в частности, устанавливается LANG=ru_RU.KOI8-R - очень прикольно смотрятся устаревшие переводы man-ов на русский).

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

Клавиатура генерирует сканкоды (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. Если нет, то можно взять на chg.ru (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, слова в скобках - именами секций в соответствующих файлах):

Улучшения для правильного метода в RH 6.2. Ввод. Обманный 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)
  3. make dep
  4. make bzImage (не надо слепо следовать устаревшей инструкции и делать make boot, он не влезет в загрузчик)
  5. make modules
  6. insmod loop до перемещения модулей, а то не найдет loop0
  7. удаляем совсем старую копию модулей (если она есть)

  8. rm -rf /lib/modules/2.2.5-22-old (нужен для mkinitrd)
  9. делаем текущий набор модулей старым

  10. mv /lib/modules/2.2.5-22 /lib/modules/2.2.5-22-old
  11. инсталируем новый набор модулей (в /lib/modules/2.2.5-22)

  12. make modules_install
  13. если все-таки сделал 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, а теперь его убрал или включил в ядро.
  14. копируем получившийся arch/i386/boot/bzImage в /boot/bzImage.new (переименовав старый, если надо)
  15. копируем получившийся System.map в /boot/System.map (переименовав старый?), klogd сначала пытается смотреть в /boot/System.map; если версия ядра не совпадает, то в /System.map, а если и там не совпадает, то в /usr/src/linux/System.map
  16. добавляем новую секцию в /etc/lilo.conf со ссылками на новое ядро и м.б. initrd (обязательно сохранив возможность загрузки старого ядра, System.map, modules?, где взять module-info для нового ядра?)
  17. /sbin/lilo -v
  18. перезагружаемся - DMA все-равно приходится включать вручную через hdparm, ибо не любит он WD :(
  19. /usr/src/linux занимает теперь 70МБ (RH 6.2 - 80 MB, RH 7.0 - 106 MB)
  20. скомпилированный emu10k1 не грузится, приходится брать модуль из дистрибутива

Создание initramfs для последующей загрузки

mkinitrd

dracut

linuxconf

источник

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

Общие ощущения, как от 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!

Ключи:

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


Настройка TCP/IP и сетевой экран

Настройка TCP/IP

Для проверки настройки сети можно воспользоваться утилитами ping, traceroute и nmap. Кстати, ping позволяет собирать часть маршрута, по которому прошёл пакет (-R) и этот маршрут не совпадает с маршрутом от traceroute.

Полезными инструментами для изучения происходящего в сети являются программы "аутопсии" пакетов tcpdump и ethereal (wireshark?).

Суперсервисы inetd и xinetd.

tcpwrapper (tcpd, libwrap.so, /etc/hosts.allow, /etc/hosts.deny, hosts_access(5), hosts_options(5)).

Сетевой экран и NAT (Network Address Translation, masquerading)

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

Сетевой экран реализован в различных версиях Linux следующими средствами:

PPP

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

Ядро должно быть сконфигурировано с поддержкой 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-доступа в интернет :( Так что я сделал так:

X11

The Linux Graphics Stack

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

Начинается все со 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 необходимо отредактировать DisallowTCP в /etc/X11/gdm/gdm.conf

Подключение к xdm (сервер XDMCP) из F10

Xnest :2 -query имя-хоста -from наш-адрес (экраны 0 и 1 заняты; надо открыть порт TCP/6002 на своём хосте; "-broadcast" соединяет с первым попавшимся xdm/gdm/kdm; "-indirect" выдаёт список, но соединяет только с собой; установка русского языка для сеанса недопустима; завершить сеанс невозможно)

VNC

Пакеты vnc и vnc-server (realvnc) обеспечивают возможность просмотра и создания удалённого рабочего стола.

Создание удалённого рабочего стола: зайти ssh на удалённый хост, отредактировать по вкусу $HOME/.vnc/xstartup и создать удалённый рабочий стол командой "vncserver [:номер-сеанса] -geometry ШиринаxВысота -depth 24" (запускается виртуальный X сервер, при первом запуске запрашивается пароль и запоминается в $HOME/.vnc/passwd).

Подключение к ранее созданному рабочему столу: "vncviewer адрес::номер-сеанса -FullColor".

Отключение от удалённого стола не разрушает его - виртуальный X сервер и все его клиенты продолжают работать. Можно иметь несколько одновременных подключений к одному и тому же удалённому столу.

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

Протокол VNC поддерживает только ISO-8859-1 (Latin1) при передаче clipboard. Всё остальное преобразуется в ASCII строки вида "\u0430", обратное преобразование:
python -c "print unicode(raw_input(), 'unicode-escape');"

Пакет vino обеспечивает встроенный в Gnome VNC сервер (настроить удалённый рабочий стол в настройках сети, порт 5900). Пакет vinagre обеспечивает VNC клиент для Gnome.

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

Рабочий стол

Gnome

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

Запуск панели, если она грохнулась: 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)

Печать

Ссылки:

Пакеты printtool, rhs-printfilters и lpr обеспечивают вполне сносные средства для настройки и печати. Установка сетевого принтера.

Печать буклетов по 4 страницы на лист (по 8 на двух сторонах):


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

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

Раздел надо создавать в той ОС, которая будет с ним работать. Например, MS Windows не любит разделов не на границе цилиндра. Переключение режима работы с большими дисками (LBA/Large/Auto) меняет размер цилиндра. Так что после смены режима надо заново разбивать диск. Таблицу разделов типа MBR (Master boot Record) нельзя создать для устройства более 2ТБ, а формат таблицы разделов типа GPT (GUID - Globally Unique IDentifier - Partition Table) утилитой fdisk не поддерживается. Загрузчик LILO не умет работать с GPT. GRUB2 (и GRUB 0.97 с заплатками) умеет грузиться с GPT. GPT хранит информацию о 128 разделах (каждый раздел идентифицируется GUID типа, уникальным GUID и может иметь имя, 128 байт) с адресами в формате LBA в 2 экземплярах с контрольными суммами. Первый сектор диска (LBA 0) содержит фиктивную MBR, описывающую 1 раздел типа EFI GPT. Второй сектор диска (LBA 1, заголовок диска) содержит GUID диска, адрес основной и запасной таблиц разделов, контрольную сумму CRC32, количество разделов. Последний сектор диска содержит GUID диска, адрес запасной таблицы разделов, адрес заголовка диска, контрольную сумму CRC32, количество разделов

Утилита parted позволяет создавать, удалять, копировать, перемещать и изменять разделы в форматах msdos, gpt, loop, sun, mac, bsd и pc98, а также файловые системы на них (ext2, ext3, fat16, fat32, linux-swap) в интерактивном и пакетном режимах. Единицы измерения могут задаваться суффиксом параметра или командой "unit" (отрицательное число - отсчитывается от конца диска, например "-1s" - это последний сектор):

Интерактивный режим:

parted устройство (например, /dev/sda)

Пакетный режим:

parted устройство команда [опции] [команда опции]

Команды:

Создание разделов более 2ТБ:

mklabel gpt
mkpart primary ext3 0 -1s # на весь диск

Увеличение раздела

unit cyl
print
resize номер-раздела начало конец

Еще программы редактирования таблицы разделов: cfdisk, sfdisk (GPT не поддерживается), gdisk (GPT fdisk).

Работа с программным RAID и LVM.

Утилита badblocks из пакета e2fsprogs позволяет проверить диск на "плохие блоки" (не поддерживает устройства более 16 ТБ - CentOS 5.5).

Утилита blockdev позволяет манипулировать блочными устройствами:

anaconda и grub не умеют работать с GPT.

Подготовка к эксплуатации диска с сектором 4 КБ

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

Список поддерживаемых типов файловых систем можно получить из файла /proc/filesystems (не забудьте подгрузить модуль из /usr/lib/modules/версия-ядра/kernel/fs/):

Создание стандартной файловой системы ext2/ext3/ext4:
mke2fs устройство (mkfs.ext4 устройство [количество-блоков])
с ключами

Возможности могут настраиваться в файле /etc/mke2fs.conf. Секции:

Настройка параметров файловой системы ext2fs производится с помощью утилиты tune2fs (не умеет добавлять свойство 64bit - необходимо для раздела размером более 16 ТиБ). Использование с ключом "-l" позволяет узнать текущие параметры, в частности:

Размер файловой системы ext3 ограничен 16TB (8TB для RHEL41). Для создания файловой системы более 8ТБ:

mke2fs -j -L метка-тома -m 0 -T largefile4 -b 4096 -F -E stride=32,resize=4026531840 -v /dev/имя-VG/имя-LV
tune2fs -i 0 -c 0 /dev/имя-VG/имя-LV

Проверка и исправление файловой системы ext2fs/ext3fs: e2fsck -v -C 0 имя-устройства. Для насильственной проверки "как бы" хорошей файловой системы надо использовать ключ -f. По завершению выводит информацию о фрагментации файловой системы. Для запрета проигрывания журнала перед проверкой необходимо отключить журнал командой "tune2fs -O ^has_journal имя-устройства". Оптимизация каталогов и поиск одинаковых имён: "e2fsck -fD".

Утилита resize2fs (появилась в CentOS 4.2) позволяет уменьшить (после этого необходимо уменьшить раздел) или увеличить (предварительно необходимо увеличить раздел) размер несмонтированной файловой системы. Утилита ext2online позволяет увеличить размер ext2 (ext3) без размонтирования. Возможности ext2online были добавлены в последние версии resize2fs. resize2fs не умеет работать без размонтирования с файловой системой со свойством 64bit (более 16 ТиБ) до ядра 3.2. resize2fs не умеет преобразовывать файловую систему без 64bit в большую.

Утилита e4defrag позволяет дефрагментировать указанный файл, каталог или устройство (очень медленно, 2.5 TB в сутки независимо от скорости массива). Ключ "-c" позволяет проверить необходимость дефрагментации.

Утилита e2undo позволяет откатывать действия, записанные в журнале.

описание ext3fs (а также утилиты вычисления степени фрагментации файлов и файловой системы). Взгляд на ext4 (PDF, журнал "Системный администратор").

Отличия ext4 от ext3 (создание - "mke2fs -t ext4" или mkfs.ext4; монтирование без преобразования - "mount -t ext4"; преобразование без fsck - "[tune2fs -j;] tune4fs -O extents,dir_index"; преобразование с fsck - "[tune2fs -j;] tune4fs -O extents,uninit_bg,dir_index; e4fsck -fDC0"; ускорение работы с атрибутами - "tune2fs -I 256"; extra_isize (размер inode), ext_attr, flex_bg и huge_file для существующей файловой системы установить нельзя; совместимость только снизу вверх!):

В ext4 изменён алгоритм выделения блоков: маленькие запросы (менее /sys/fs/ext4/раздел/mb_stream_req, 16 = 64KiB) группируют мелкие файлы вместе (per-CPU), большие - куском (per-inode). Прочие параметры: