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

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

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

Последние изменения:
2018.12.21: sysadmin: bacula 9 и схема исключительно инкрементального копирования

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

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...

kdump позволяет сохранить содержимое памяти (/proc/vmcore) и dmesg при аварийном завершении работы ядра для последующего анализа.

Утилиты работы с модулями ядра 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.

UEFI (переменные, настройка менеджера загрузки)

Процессоры

Память

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, Перевод: Капустин С.В.)

PCI и PCI-Express

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

Разделы

Linux может работать с таблицами разделов в формате MBR и GPT.

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

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

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

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

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

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 на удалённый хост (не д.б. установлена DISPLAY), отредактировать по вкусу $HOME/.vnc/xstartup и создать удалённый рабочий стол командой "vncserver [:номер-сеанса] -geometry ШиринаxВысота -depth 24 -listen tcp" (запускается виртуальный X сервер, при первом запуске запрашивается пароль и запоминается в $HOME/.vnc/passwd). Пример xstartup:
#!/bin/sh
 
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
 
# xsetroot -solid grey
# autocutsel-s PRIMARY  -fork
 
vncconfig -iconic &
gnome-session
# startkde
# GNOME_SHELL_SESSION_MODE=classic gnome-session
# exec cinnamon-session &
# /usr/bin/mate-session
# xfce4-session &
# icewm-session &

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

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

Изменение размера экрана без прерывания сеанса:
xrandr --verbose # посмотреть идентификатор и режимы
xrandr --output идентификатор --mode режим

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

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

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

RDP

Сервер - пакеты xrdp и xorgxrdp. Клиент rdesktop (пропал в CentOS7) и freerdp.

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

Рабочий стол

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 на двух сторонах):

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

Список поддерживаемых типов файловых систем можно получить из файла /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".

Утилита ext2online позволяет увеличить размер ext2 (ext3) без размонтирования. Возможности ext2online были добавлены в resize2fs.

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

Утилита 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). Прочие параметры:

При заполнении файловой системы на 97% начались тормоза при создании файлов (в 3-4 раза), при запуске "rm -rf" скорость восстановилась, хотя заполненность продолжала превышать 98%.

Пакет e4fsprogs содержит утилиты (на 25 июля 2016 - 1.43.1; в RHEL 5.11 - 1.41.12; в RHEL 6.8 - 1.41.12; в RHEL 7.2 - 1.42.9)

Отличия версий:

Сборка e4fsprogs (1.42.8, 1.42.10, 1.43.1, 1.43.3, 1.43.4):

Аттрибуты (chattr, lsattr):

Опции mount для ext2, ext3 и ext4 (см. ext4(5) или /usr/share/doc/kernel-doc-*/Documentation/filesystems/ext4.txt, умолчания берутся из суперблока (tune2fs), стандартные опции описаны в документации по команде mount(8))

Дополнительные опции mount для ext3 и ext4:

Дополнительные опции mount для ext4:

Ускорение ext4 за счёт увеличения вероятности проблем, ключи монтирования:

О поддержке реально больших разделов - комментарий от 19 июня 2014

Поддержку 128Т запилили. причем около года назад - до этого e2fsck корежил файлы за пределами 32T. 
Режим over 128T пока не тестирован в e2fsprogs и ext4. честно. 
Причем я знаю до сих пор места в e2fsprogs которые могут выстрелить при работе с дисками в 128Т и данные будут частично поехерены

Управление через файлы в /proc/fs/ext4/устройство и /sys/fs/ext4/устройство ( delayed_allocation_blocks (ro), inode_goal, inode_readahead_blks, lifetime_write_kbytes (ro), max_writeback_mb_bump, mb_group_prealloc, mb_max_to_scan, mb_min_to_scan, mb_stream_req, session_write_kbytes (ro)).

Доступ к файловой системе ext2/ext3/ext4 (?) для MS Windows 7 возможен с помощью драйвера файловой системы ext2fsd.

Фрагментация под Linux: Настройка файловой системы Ext3.

Если необходимо размонтировать (umount) не дожидаясь завершения процессов, то можно использовать ключ "-f" в Solaris (процессы получат сообщения об ошибках ввода-вывода) или ключ "-l" в Linux (реальное размонтирование произойдёт по завершению процесса). Ключ "-f" также действует в Linux для NFS. Опции монтирования можно указать в /etc/fstab, в командной строке после ключа -o или в настройках автомонтировщика. Возможные препятствия к размонтированию:

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

Очистка памяти от кеша страниц файлов:
sync
echo 3 > /proc/sys/vm/drop_caches

Планировщики запросов ввода/вывода

Запросы на чтение и запусь помещаются в очередь. Имеется упреждающее чтение (blockdev --getra/--setra). Запросы на чтение имеют больший приоритет. Соседние запросы группируются вместе. Адлгоритмы упорядочивания (планирования) запросов (/sys/block/sdX/queue/scheduler, /sys/block/sdX/queue/iosched/):

Трассировка и проигрывание запросов ввода/вывода

blktrace и seekwatcher

Утилита fstrim позволяет сообщить блочному устройству о неиспользуемых блоках (для SSD и thin provision

swap

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

Переменная ядра /proc/sys/vm/swappiness позволяет управлять интенсивностью перемещения давно неиспользуемых страниц процесса в swap: 0 - пытаться не помещать вовсе, 100 - помещать при первой возможности.

compcache - создание блочного устройства в памяти (/dev/ramzswap0), в котором будут храниться сжатые страницы для swap (несжимаемые страницы переправляются на настоящий swap, для версии 0.6 требуется ядро 2.6.28):

zram - наследник compcache (блочные устройства /dev/zramНомер в памяти, в которых будут храниться сжатые страницы для swap). Модуль ядра 3.14 zram (параметр num_devices, по умолчанию - 1) обеспечивает блочное устройство /dev/zramНомер для swap или файловой системы (iostat показывает одни нули). Ручки управления устройствами - /sys/class/zram-control/ (для добавления устройства прочитать /sys/class/zram-control/hot_add). Ручки управления отдельным устройством в /sys/block/zramНомер (имеется вспомогательная утилита zramctl):

Тестирование на 3 numademo (CentOS 7.4, 2 сокета по 8 ядер (Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz), свободный сервер, lzo, 16 потоков) - при переходе через край (3x86GB для 256GB) скорость падает с 5 или 8 GB/s до 3 GB/s, сразу за краем - до 1.1 GB/s, при превышении 10% - меньше 0.4GB/s (терпения хватило на 40 минут). Увеличение числа устройств до 4 ничего не дало.

Тестирование моделирования netlist на сервере с 256ГБ (CentOS 7.4, 2 сокета по 8 ядер (Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz), свободный сервер, сжатие swap в 3.2)

zswap - похожий проект (сжатые страницы для swap кешируются в памяти, при достижении границы размера пула декомпресируются? и сбрасываются в swap, LRU, vm/zswap.txt). Встроенный в ядро 3.11 модуль. Управление через параметры модуля в /sys/module/zswap/parameters/

Статистика и ручки управления в /sys/kernel/slab/zswap_entry/ (особенно shrink).

Статистика в /sys/kernel/debug/zswap/ (pool_total_size, written_back_pages).

Тестирование на 3 numademo (CentOS 7.4, 2 сокета по 8 ядер (Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz), свободный сервер, lzo, 20%) - при переходе через край (3x86GB для 256GB) скорость падает с 5 или 8 GB/s до 0.9GB/s, сразу за краем - до 0.6GB/s, при превышении 10% - ?.

Тестирование моделирования netlist на сервере с 256ГБ (CentOS 7.4, 2 сокета по 8 ядер (Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz), свободный сервер)

Управление виртуальной памятью: Linux выделяет виртуальную память в зависимости от установки /proc/sys/vm/overcommit_memory (можно посмотреть в /proc/meminfo текущий предел (CommitLimit) и выделение (Committed_AS), mmap в режиме read-only или приватный shared бесплатно; shmfs также выделяется отсюда):

Если ожидания по поводу неиспользования виртуальной не оправдались и закончились физическая память и swap, то в действие вступает OOM killer (oom-killer), который убивает задачу с максимальным /proc/$$/oom_score. Алгоритм подсчёта oom_score менялся со временем. Первоначально (RHEL5) использовался неестественный интеллект (его поведением можно управлять с помощью /proc/$$/oom_adj, которая принимает значения от -17 (не убивать этот процесс никогда) до 15 (убивать в первую очередь)). Затем (RHEL6) алгоритм упростили до подсчёта занимаемой процессом доли ОП (от 0 до 1000) c вычитанием 30 для процессов пользователя root и ручной настройкой с помощью /proc/$$/oom_score_adj (от -1000 до 1000), для совместимости сохранена переменная /proc/$$/oom_adj. Если выбран процесс, у которого есть непосредственный подпроцесс с отдельным адресным пространством, то убивается он.

Переменная /proc/sys/vm/vfs_cache_pressure управляет кого удалять из кеша при недостатке памяти - страницы файлов (cache) или inode/dentry (buffers): 100 - поровну, 0 - не вытеснять inode/dentry совсем (утекают всё-равно, система можен зависнуть под нагрузкой). Кстати, 6.7 миллиона файлов занимают 10 ГБ памяти, а find ускоряется со 150 минут до 20 секунд.

Вместо убийства процесса oom-killer может устроить общую панику: "sysctl vm.panic_on_oom=1; sysctl kernel.panic=1".

Переменная /proc/sys/vm/admin_reserve_kbytes (RHEL6) определяет резерв (по умолчанию - 3% (8MB) от свободных страниц) для пользователя с возможностями cap_sys_admin. Рекомендуется увеличить до 128MB.


RPC


NFS


SAMBA

Поиск сервера: nmblookup имя-NetBIOS

Поиск главного по группе: nmblookup -M имя-группы

Поиск самого главного: nmblookup -M -- -

Опрос списка ресурсов: smbclient -L s1108

Пробное подключение: smbclient //имя-NetBIOS/ресурс -U имя-пользователя

Добавление пользователя: smbpasswd -a

Трассировка обращений к файлам (запись в файл - 'open|ok|w')


am-utils или amd (автоматическое монтирование файловых систем)

autofs (автоматическое монтирование файловых систем)

Сбор статистики

accton, sa, sar, ac, who, last.


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


Приложения


Проблемы

Завершение зомби процессов

Завершенный процесс, который не смог сообщить о своём завершении родителю, переходит в состоянии зомби (состояние процесса 'Z' по команде "ps -el"). Сигналы, включая "kill -9" на него не действуют (он уже мёртвый). Необходимо как-то воздействовать на родительский процесс, например, завершить его. Если родительский процесс находится в состоянии 'T', то можно попробовать снять его программой "ltrace -t номер-процесса". Если родительский процесс ожидает доступа к устройству, то обеспечить его.

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

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

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

Книги

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

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

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

Последние изменения:
2018.12.21: sysadmin: bacula 9 и схема исключительно инкрементального копирования

TopList

Copyright © 1996-2018 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)