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

         

Обозначения


Мы рекомендуем вам читать версию этого документа, набранную с использованием различных шрифтов, а не простой текстовый вариант. В версии, использующей различные шрифты, имена файлов и каталогов набраны шрифтом фиксированной ширины.

Компоненты имен файлов, которые могут изменяться, представляются описанием соответствующего компонента, заключенным угловые скобки "<" и ">", <вот так>. Адреса электронной почты тоже заключаются в "<" и ">", но они изображаются обычным шрифтом.

Необязательные компоненты имен файлов заключаются квадратные скобки "[" и "]", причем оба этих условных обозначения могут комбинироваться. Например, если имя файла может иметь расширение или не иметь такового, это представляется следующим образом: <filename>[.<extension>].

Произвольная подстрока в имени каталога или файла обозначается символом "*".

Next: Файловая система

Up: Оглавление

Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan



Обратная связь


Буду признателен за любые комментарии, критику и предложения по улучшению. Пожалуйста, присылайте их мне: Greg O'Keefe



Общее строение файлов конфигурации XKB


Возможны три типа файлов конфигурации

"Простая" конфигурация

Последовательность из "простых" блоков.

Последовательность из "составных" блоков.



Общие опции монтирования




noatime ? при каждом доступе (в том числе чтении) к файлу в inode обновляется время последнего доступа к файлу, что требуется крайне редко, при использовании этой опции это обновление производиться не будет, что заметно ускорит работу news-серверов, и, в особенности, прокси-сервера squid.

nodev ? не позволяет создавать и использовать на этой файловой системе файлы-устройства, эта возможность полезна для безопасности (если вы точно знаете, что на данной файловой системе файлы-устройства вам не нужны, то есть смысл ставить эту опцию монтирования).

nosuid ? на этой файловой системе не действует бит suid (исполнение программы от имени её владельца, а не запустившего её пользователя).

noexec ? запрет запуска с этой файловой системы (внимание! это никак не влияет на скрипты).

ro ? доступ только для чтения



Общие замечания


Большинство параметров, которые меняет kbdcontrol влияет сразу на все "виртуальные терминалы". Исключение составляет только параметры "пищалки".

Иван Паскаль pascal@tsu.ru



Общие замечания о языке файлов конфигурации XKB


Для описания конфигурации XKB используется язык с синтаксисом похожим на синтаксис языка C.

Поэтому, формат числовых и строковых констант, встречающихся в этих файлах, обычно соответствут формату констант языка C.

Так строковые константы представляют собой набор символов ограниченный "двойными кавычками" (например - "Num Lock"). Причем, внутри строк могут встречаться "спецсимволы", которые обозначаются так же как в языке C (\r, \n, \t, \v, \b, \f или через восьмеричный код - \0**).

Числовые константы могут записываться как в десятичном формате (например - 123), так и в шестнадцатеричном (0x123, 0xff) и восьмеричном (033).

Главное отличие от языка C в том, что во всех словах маленькие и большие буквы НЕ различаются (case insensitive). То есть, например - SETMODS, SetMods, setMods и setmods означают одно и то же.



Общий файл подкачки для Windows и Linux


Rafter, 04/2003, Xakep.ru

Как ОС Windows, так и ОС Linux используют так называемую подкачку, чтобы восполнить нехватку оперативной памяти. Когда компьютер выключен, область подкачки содержит ненужные данные и любой ОС не важно, что в действительности находится в области подкачки. Вопрос состоит в следующем: поскольку в один момент времени работает только одна из ОС, возможно ли, чтобы Windows и Linux использовали одну и ту же область на диске для подкачки. Некоторая сложность состоит в том, что Windows использует для подкачки файл, а Linux - для этих же целей раздел на диске. (Конечно, и в Linux возможно использовать для подкачки файл, но этого делать не рекомендуется). Если попытаться выделить отдельный раздел для подкачки и разместить там файл подкачки Windows, а затем запустить Linux, которая будет использовать тот же раздел для тех же целей, то будет перезаписан загрузочный сектор, FAT и другие таблицы, и при загрузке Windows эта ОС, потеряв файл подкачки на этом разделе, не долго думая создаст его на своем загрузочном диске.

Поэтому для решения этой задачи нам необходимо сохранять важные с точки зрения Windows данные с начала раздела подкачки в каком-нибудь файле, находящемся в разделе Linux. А при каждом запуске Linux надо будет проверить, кем в последний раз использовалась область подкачки - Linux или Windows. Если это был Linux, то просто разрешается подкачка, в противном случае надо будет сохранить служебные данные с начала раздела в файле, создать раздел подкачки на диске командой mkswap /dev/winswap и затем разрешать подкачку. И теперь мы готовы настроить систему на использование общей области подкачки. Правда, стоит отметить, что при современных объемах винчестера это не столь актуально, но придает некую завершенность совместному размещению Windows и Linux на одном винчестере вашего компьютера.

Процедура на самом деле не сложна и требует выполнения следующих шагов:

1. Загружаемся в Linux, отключаем файл подкачки, отредактировав файл /etc/fstab (закомментировав все строки, которые его описывают).


7. Загружаемся в Linux, и входим в него как root.

8. При необходимости, используйте команду fdisk, чтобы узнать название раздела и его размер в блоках (в моем случае hda5 и размер 256977 блоков).

9. Поскольку название этого раздела может попасть в конфигурационные файлы в разных местах, создаем символьную ссылку /dev/winswap, указывающую на этот раздел, следующей командой:

# ln -s /dev/hda7 /dev/winswap

(Обратите внимание на какой раздел делать сим.линк, здесь он hda7, у вас же может быть совсем другим -- прим. редактора)

10. Для создания копии специальных секторов в сжатом виде в файле /etc/winswap.gz в приглашении командной строки наберите:

# dd if=/dev/winswap bs=512 count=T | gzip -9 >

/etc/winswap.gz

где T - число так называемых специальных секторов (в нашем случае 535), вычисленных в п.4).

11. Подготовим два отдельных файла, под названиями swapinit.sh и swaphalt.sh. Примеры этих файлов, которые будет работать в Red Hat Linux, даны в приложении. Поместите эти файлы в каталог /etc/rc.d/init.d Проставьте им флаг "исполняемых" командами:

# chmod +x swapinit.sh

# chmod +x swaphalt.sh

12. Проверим имя файла инициализации системы, скорее всего это будет /etc/rc.d/rc.sysinit Он должен, содержать команду "swapon -a", вместо этой команды добавьте следующую строку:

/etc/rc.d/init.d/swapinit.sh

В зависимости от того, где находится команда swapon, заменяем ее в скрипте swapinit.sh на команду /etc/swapon, если она в каталоге /etc, или же на /bin/swapon - если она в каталоге /bin. То же самое сделаем с командой mkswap.

13. Проверим имя скрипта завершения работы системы, скорее всего это будет файл /etc/rc.d/init.d/halt. Обычно в этом файле будет команда "swapoff -a". Замените эту команду на "swapoff /dev/winswap".

14. Добавьте следующие строки в этот скрипт. Поместите эти строки после всех команд, которые могут потребовать подкачку. Проверьте, что если скрипт завершения работы автоматически находит все разделы подкачки и отключает их, то не требуется заменять команду swapoff $SWAPS на swapoff -a. В этом случае, просто добавьте команду /etc/rc.d/init.d/swaphalt.sh к файлу /etc/rc.d/init.d/halt [ -x /sbin/accton ] && /sbin/accton /etc/rc.d/init.d/swaphalt.sh



15. Включаем подкачку в Linux, убрав комментарий со строки с разделом подкачки в файле /etc/fstab (который вы добавили ранее). Это конечно необязательно, так как больше не используется /etc/fstab для задания разделов подкачки. Также нет никакой необходимости добавлять /dev/winswap в файл /etc/fstab. Вероятно, это вообще нельзя делать.

16. Перезагрузите Linux.

17. Однако если Linux аварийно завершит работу без выполнения /etc/rc.d/init.d/halt, то вам придется перезагрузиться, загрузить Linux и выйти из него. Или же загрузившись в Windows, отформатировать раздел подкачки в FAT16 и перенести на него файл подкачки.

Приложение 1. Скрипт swapinit.sh

Этот скрипт инициализирует область подкачки на разделе1.

Приложение 2. Скрипт swaphalt.sh

Этот скрипт сначала проверяет сигнатуру области подкачки Linux, а затем восстанавливает на разделе файловую систему Windows.


Источник - LinuxBegin.ru

http://linuxbegin.ru

Адрес этой статьи:

http://linuxshop.ru/linuxbegin/article287.html


Общий взгляд на процедуру resizefs


В общем виде пошаговая инструкция расширения файловой системы на логическом томе выглядит так.

увеличиваем размер логического тома на необходимую величину. расширяем файловую систему до заполнения всего тома.

Пошаговая инструкция по усечению файловой системы имеет обратную последовательность.

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

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

усекаем файловую систему «с запасом». усекаем логический том до нужного размера. расширяем файловую систему до заполнения всего тома.

Асимметрия по уровню сложности подводит к мысли, что, создавая логические тома лучше «недосолить», чем «пересолить». Расширить том и находящуюся на нём файловую систему труда не составит (не все файловые системы поддерживают усечение, а где эта функция есть, сохранность находящихся в файловой системе данных подвергается более высокому риску). Уровень VG позволяет иметь «золотой запас» дисковых ресурсов и следует приучить себя его иметь. Это может потребоваться не только для resize файловых систем, но и при появлении bad блоков, для создания snapshots и внеплановых разделов, для смены версий и типов файловых систем. Если ёмкость дисков позволяет, имейте запас превышающий размер самой большой файловой системы.



Обычные юзеры


Когда обычный юзер заходит в систему (с физического терминала или по сети), он должен сказать свое имя (Login Name) и пароль (Password). Соответствующая программа сверяет эти данные с теми, что записаны в учетной карточке и, если они сопадают, "пускает" юзера в систему. То есть запускается программа, которая указана как Shell в учетной карточке. Юзер с помощью этой программы может запускать другие. При этом ему можно создавать/удалять/писать/читать файлы, которые находятся в его Home dir (которая тоже указана в учетной карточке).



Обычные клавиши


Это клавиши, при нажатии которых выдается просто одиночный код (в отличии от "функциональных" клавиш). Кроме обычных символов (буквы, цифры, знаки препинания и т.п.) к ним относятся "управляющие" коды, которые генерируют клавиши [Esc], [Enter], [Tab] и [Backspace].

Кроме того, в зависимости от состояния модификаторов (обычно, модификатора ctrl), "символьные" клавиши тоже могут выдавать "управляющие" коды (CtrlA - 1, CtrlB - 2 и т.д.).

В таблице раскладки клавиатуры, коды таких обычных клавиш можно указывать просто числом или соответствующим символов в "одиночных кавычках" - 'a', 'b' и т.п. Для управляющих кодов существуют специальные названия (хотя их тоже можно указать просто числом). Полный список этих кодов можно посмотреть в "Приложение 2. Управляющие ("контроловые") символы".

Кроме того, в таблице раскладки клавиатуры можно встретить код nop.
Строго говоря, это не код, а просто указание syscons, что при нажатии на соответствующую клавишу никакого кода вообще выдавать не надо.
Обычно этим словом помечаются не клавиши, а только некоторые "состояния" клавиш (например, клавиша [&] при нажатом [Ctrl]). А также, скан-коды, которые не соответствуют никаким физическим кнопкам на клавиатуре.



Обзор


Успешное выполнение добавления дисков в существующую систему является признаком опытности системного администратора. Разбиение на слайсы, разделы и добавление дисков требуют тщательности в подборе команд и их параметров. Одно неверное нажатие, и все содержимое диска может исчезнуть за считанные секунды. Этот документ был написан в попытке упростить этот процесс и избежать ошибок. К счастью, усовершенствования в имеющихся инструментах (в частности, sysinstall) весьма упростили этот процесс в последних релизах FreeBSD.

Существуют два режима форматирования диска:

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

режим эксклюзивного использования, иногда называемый опасным режимом: Форматирование диска без таблицы слайсов. Это упрощает процесс добавления дисков, но другие операционные системы не смогут работать с диском. Термин опасный относится к опасности не распознавания системой диска, отформатированного этим способом.

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

Кроме выбора режима, имеются два способа разбиения диска на слайсы. Один заключается в использовании инструмента установки системы /stand/sysinstall. 2.1.7-RELEASE и более поздние версии sysinstall

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

требует некоторых ухищрений.



Обзор и введение


bash – это shell, т.е. командный интерпретатор для современных компьютеров. Он совместим с Bourne-shell (sh) и включает полезные функции Korn-shell (ksh) и C-shell (csh). Он соответствует стандартам IEEE POSIX P1003.2/ISO 9945.2 для командных интерпретаторов и утилит.

Некоторые возможности bash, приведенные без строго определенного порядка: редактирование и автозаполнение; история и повторный ввод команд; контроль заданий; функции shell и псевдонимы; массивы; математические операции; кавычки ANSI C; раскрытие "~"; раскрытие "{}"; работа с подстроками; раскрытие косвенных переменных; расширенные возможности ввода-вывода; контроль встроенных команд; помощь; стек для хранения каталогов; режим совместимости с POSIX; интернационализация; определение времени выполнения команды.

bash – командный интерпретатор по умолчанию во всех популярных дистрибутивах Linux. По этой причине, он широко используется, но редко в полной мере.

bash, возможно, самая используемая вами в работе программа Linux, но много ли в действительности вы получаете от ее использования? Если вы хотите повысить производительность, снизив количество нажатий клавиш в день, этот документ для вас.



Очистка части экрана


Esc[0Jот курсора до конца экрана
Esc[1Jот начала экрана до курсора
Esc[2Jвесь экран
Esc[0Kот курсора до конца строки
Esc[1Kот начала строки до курсора
Esc[2Kвсю строку
Esc[nXочистить n знаков от позиции курсора



Один из интереснейших вопросов


Основной управляющий файл для процесса init - это /etc/inittab. Приведем его с незначительными исключениями и модификациями:

# inittab Файл описывает, как перейти

# к конкретному уровню

# Author: Miquel van Smoorenburg,

# <miquels@drinkel.nl.mugnet.org>

# Modified for RHS Linux by Marc Ewing

# and Donnie Barnes

# Уровни выполнения для RHS:

# 0 - останов (не устанавливайте

# initdefault в это значение)

# 1 - Single user mode - однопользова-

# тельский режим

# 2 - Multiuser, многопользовательский без

# NFS (Аналог 3, если не используете сеть)

# 3 - Полностью многопользовательский

# режим

# 4 - не используется (точнее, не имеет

# смысла по умолчанию)

# 5 - X11 - графический режим со

# стартом оболочки

# 6 - reboot - перезагрузка (не устанавли-

# вайте initdefault в это значение)

id:3:initdefault:

# Инициализация системы

si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0

:

l6:6:wait:/etc/rc.d/rc 6

# Что выполняется на каждом уровне

ud::once:/sbin/update

# Trap CTRL-ALT-DELETE

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# ИБП подключен и работает корректно

pf::powerfail:/sbin/shutdown -f -h +2

"Power Failure; System Shutting Down>

# Выполнение gettys на стандартных

# уровнях

1:2345:respawn:/sbin/mingetty tty1

:

6:2345:respawn:/sbin/mingetty tty6

# Выполнение xdm на уровне 5,

# xdm - отдельная служба

x:5:respawn:/etc/X11/prefdm -nodaemon

Формат этого файла практически не отличается от других вариантов Unix. Каждый элемент занимает 4 поля: имя, уровни старта, вариант обработки (ждать окончания - wait, рестартовать после окончания - respawn, установить стандартный уровень для старта - initdefault и т.д.), непосредственно выполняемая на данном уровне команда. Из отличий от других вариантов Unix стоит отметить наличие опции ctrlaltdel.

Что произойдет, если в приведенном файле поменять initdefault значение с 3 на 5? Это будет переход от алфавитно-цифрового входа к графическому входу в систему и наоборот. Именно это значение меняет linuxconf при выборе соответствующей опции.


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

Менее известен другой файл, /etc/initscript. Разработчики отводили ему роль, аналогичную /etc/security/limits.conf, который позволяет задать лимиты для всех, группы или конкретного пользователя. /etc/initscript же выполняется перед стартом каждого из процессов в /etc/inittab. При этом собственно выполняемая команда передается как четвертый параметр. В этом файле можно задать там любые специфические действия, в частности, установку тех же самых лимитов, umask или еще что-нибудь, но уже не для пользователя, а для каждой команды из /etc/inittab файла. Обратите внимание на пример (см. man initscript), дабы не попасть в дурную ситуацию. Другой пример:

ulimit -c 0 ## core-dump прощай

eval exec "$4"


Если вы поменяли этот файл, то эффект проявится только при следующем запуске очередного процесса из-под init (т.е. если войти в систему на еще одной консоли, эффекта не будет, а вот после завершения работы с системой и повторного входа - будет).


Одно отличие - управляющий терминал


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

Причина этого различия в следующем: если управляющий процесс Linux'а открывает терминал для ввода, но еще не имеет управляющего терминала, то этот терминал и становится его управляющим. Но если управляющий терминал уже существует, то он сохраняется. Init же не имеет управляющего терминала, поэтому его не создает и наследующий процесс qlogin. Однако оболочки login'а имеют управляющие терминалы, следовательно их имеют и наследующие процессы, создаваемые вами вводом команд (таких как qlogin) в командной строке.

Различие можно увидеть, нажав Control-C: он ничего не делает. Ввод Control-C на стадартном входном устройстве кроме вставки символа Control-C во входной поток смысла не имеет. Но на управляющем терминале Control-C передает переднеплановым (foreground, в противоположность фоновым, background) процессам, связанным с этим терминалом, сигнал SIGINT, который имеет знакомый эффект прерывания программы.

То есть, если вы регистрируете себя на /dev/tty5, набрав "qlogin /dev/tty5 ..." на /dev/tty1, то Control-C на /dev/tty5 работать не будет. Поместите эту же команду "qlogin /dev/tty5 ..." в /etc/inittab, и Control-C на /dev/tty5 будет работать прекрасно.

Замечание: будучи педантом, я должен признать, что говоря о Control-C, я предполагаю, что свойства терминала TTY установлены таким образом, что Control-C является "символом прерывания". Вы можете использовать stty, чтобы установить какой-нибудь другой символ прерывания или вообще никакого.



Одно важное замечание: Какое отношение это имеет к X-Window?


Никакого!

Очевидно, что система X Window, которая работает в графическом режиме и сама отрисовывает "в графике" все символы, никак не пользуется шрифтами, загруженными в видеокарту и "таблицей перекодировки" (screen map) драйвера syscons.

Менее очевидно другое - что она, также, не использует и ту часть syscons, которая работает с клавиатурой. Для особенно любознательных, могу сказать, что X-сервер переключает syscons в режим выдачи "сырых" скан-кодов (RAW) и сам переводит их в коды символов по своим правилам.

Поэтому, никакие назначения клавиш, сделанные в таблице раскладки клавиатуры syscons, в X Window не действуют.

Для изменения "раскладки клавиатуры" в X Window пользуйтесь программой xmodmap или модулем xkb.

Иван Паскаль pascal@tsu.ru



Официальная часть


14.1 Авторские права

14.2 Домашняя страница

14.3 Обратная связь

14.4 Благодарности

14.5 История изменений

14.6 Надо сделать



Оглавление


Предисловие переводчика

1 Введение

1.1 Назначение

1.2 Обозначения

2 Файловая система

3 Корневая файловая система

3.1 / : Назначение

3.2 / : Требования

3.3 / : Рекомендации

3.4 /bin : Основные исполняемые файлы (доступные всем пользователям)

3.5 /boot : Неизменяемые файлы для загрузчика

3.6 /dev : Файлы устройств

3.7 /etc : Специфичная для данного хоста конфигурационная информация

3.8 /home : Домашние каталоги пользователей (optional)

3.9 /lib : Основные разделяемые библиотеки и модули ядра

3.10 /lib<qual> : Основные разделяемые библиотеки для альтернативных форматов (optional)

3.11 /mnt : Точка монтирования для временно монтируемых файловых систем

3.12 /opt : Дополнительные пакеты программного обеспечения

3.13 /root : Домашний каталог пользователя root (optional)

3.14 /sbin : Системные исполняемые файлы (System binaries)

3.15 /tmp : Временные файлы

4 Каталоговая структура /usr

4.1 /usr : Назначение

4.2 /usr : Требования

4.3 /usr : Рекомендации

4.4 /usr/X11R6 : X Window System, Version 11 Release 6 (optional)

4.5 /usr/bin : Большая часть команд пользователя

4.6 /usr/include : Каталог для стандартных подключаемых файлов

4.7 /usr/lib : Библиотеки для программирования и приложений

4.8 /usr/lib<qual> : Библиотеки для альтернативных форматов (optional)

4.9 /usr/local : Каталог для локального ПО

4.10 /usr/sbin : Не обязательные стандартные системные команды

4.11 /usr/share : Архитектурно-независимые данные

4.12 /usr/src : Исходные коды (optional)

5 Каталоговая структура /var

5.1 /var : Назначение

5.2 /var : Требования

5.3 /var : Рекомендации

5.4 /var/account : Протоколы работы процессов (optional)

5.5 /var/cache : Данные кэша приложений

5.6 /var/crash : Дампы памяти при крахе системы (optional)

5.7 /var/games : Временные данные игровых приложений (optional)

5.8 /var/lib : Переменные данные о состоянии системы

5.9 /var/lock : Файлы блокирования

5.10 /var/log : Каталоги и файлы протоколов

5.11 /var/mail : Почтовые ящики пользователей (optional)

5.12 /var/opt : Переменные данные для /opt

5.13 /var/run : Переменные данные времени выполнения

5.14 /var/spool : Очереди данных для приложений

5.15 /var/tmp : Временные файлы, сохраняемые между перезапусками системы

5.16 /var/yp : Файлы базы данных сетевой информационной системы NIS (optional)

6 Дополнения, специфичные для отдельных типов операционных систем

6.1 Linux

7 Приложения

7.1 Лист рассылки FHS

7.2 История стандарта FHS

7.3 Чем мы руководствовались

7.4 Сфера действия стандарта

7.5 Благодарности

7.6 Участники разработки

Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan



Опции ядра


Code maturity level options. На уровень завершенности кода обращать внимание не следует, поскольку большинство компонентов ядра относятся к категории "бета" уже много лет. Ответ "да" на единственный вопрос Prompt for development and/or incomplete code/driver.

Processor type and features определяет тип процессора. Для правильных ответов следует знать, какой у вас процессор. Я полагаю, что это вы знаете. Тогда сообщите об этом ядру. В Processor family выберите свой процессор, правда, учтите, что ядро для Athlon не будет работать на 386ом процессоре. Math emulation предназначено для процессоров 386 и 486sx без математического сопроцессора и бессмысленно для любого другого. MTRR support включает дополнительные регистры памяти для процессоров семейства Pentium, практически обязательно. SMP support обязательно для включения на многопроцессорных машинах, если же у вас только один процессор, то второй при включении SMP не появится.

Loadable module support включает поддержку загружаемых модулей. Отказываться имеет смысл только для ядер бездисковых компьютеров. В противном случае отвечайте Yes на все вопросы.

General setup. Следующее по значимости меню после Processor type. Network support, PCI support, Kernel support for ELF binaries, Kernel support for MISC binaries, System V IPC, BSD Process Accounting, PCI bridge optimization и Sysctl support обязательны всегда! Все это необходимо для простой работы программ. Поддержка сети необходима, поскольку многие программы, например графическая оболочка X Window или консоль, открывают виртуальные сетевые соединения даже в отсутствии локальной сети или модема. Шина PCI встречается на 99.9% всех компьютеров, даже если на них нет ее слотов. Поддержка исполняемых файлов в формате ELF позволяет запускать программы. А MISC означает возможность запуска большинства эмуляторов и виртуальной машины Java. Кстати этот пункт полностью содержит последующий Kernel support for JAVA binaries, который в скором времени исчезнет. Пункты Kernel support for a.out binaries и Backward-compatible /proc/pci предназначены для программной совместимости и, на сегодня устарели. Пункты Parallel port support и PC-style hardware необходимы для работы параллельного порта. Support foreign hardware предназначен не для компьютеров "желтой сборки", а просто подключает некоторые варианты устаревших параллельных портов, сегодня не нужен. Пункты для APM/ACPI будут полезны большинству современных машин. Если ваша материнская плата имеет биос с поддержкой APM, то следует ответить Yes на вопросы Advanced Power Management BIOS support, Enable APM at boot time, Power off on shutdown. Так же для управления APM служат опции Ignore USER SUSPEND (полезно ответить No), Enable console blanking using APM (обычно ответ No, ответ Yes только для некоторых моделей laptop). Так же устаревшими являются PCI quirks, которые позволяют устранять некоторые ошибки реализации шины PCI на некоторых чипсетах. Несколько последующих опций снова предназначены для APM, а опция RTC stores time in GMT позволяет выставлять каждому пользователю собственное время.

Plug and Play support нужен практически всегда. В то время как PnP on ISA bus и Auto-Probe for parallel port вполне можно сделать модулями.

Block devices это также нужная и полезная вещь, даже если на вашем компьютере их нет. Главное требование здесь: ВСЕ установки загрузочного и корневого дисков (или иных загрузочных устройств) не должны быть модульными. Если вы умудритесь нарушить это правило, то просто не сможете загрузиться. Название опций Normal PC floppy disk support (очень приятно, что его можно отключить), Enhanced IDE/MFM/RLL disk/cdrom/floppy support, Include IDE/ATA-2 DISK support, Include IDE/ATAPI CD-ROM support, Include IDE/ATAPI TAPE support, Include IDE/ATAPI FLOPPY support (последнее предназначено для ZIP и магнитооптики) понятно. Опция SCSI emulation необходима для CD-R и CD-RW устройств, а так же для некоторых устаревших моделей 4х CD-ROM. Несколько настроек DMA выведены сюда из-за ошибок реализаций на старых чипсетах, это Generic PCI IDE chipset support, Generic PCI bus-master DMA support, на новых моделях включайте спокойно. Опция Use old disk-only driver on primary interface также устарела. Boot off-board chipsets first support включайте только в том случае, когда твердо знаете, что делаете. А Loopback device support необходим всегда. Network block device support это редко встречающийся случай сетевых устройств. RAM disk support необходим для файловой системы /proc. А Initial RAM disk (initrd) support это виртуальное устройство, пожалуй, основной задачей которого являются заделывание дыр загрузочных дисков. Multiple device driver support служит для создания программного RAID-контроллера, т.е. на мой взгляд для ненужного развлечения программистов. Опции XT hard drive support и Parallel port IDE support дают последний шанс динозаврам от дискостроения.


Networking options представляют собой самую запутанную часть ядра. Фактически к ним так же относится и несколько последующих разделов. Обязательно, даже при отсутствии сети и модема, следует включать (и не модулем) Packet socket, Kernel/User netlink socket, Routing messages, Network firewalls, Socket filtering, Unix domain sockets, TCP/IP networking. А так же для работы в сети IP, вам потребуются IP Multicasting, IP Firewalling, IP Virtual hosting и IP Accounting. Опция IP Forwarding/Gatewaying необходима для роутера, но КРАЙНЕ ВРЕДНА для файервалла. Следующий большой набор опций, название которых начинается с IP, представляет собой огромный простор для творчества. Их вполне можно сделать модулями, а потом развлекаться уже с работающим компьютером. После "новой" опции The IPv6 protocol (она уже более 10 лет как "новая", и еще лет 10 такой будет), которую можно ставить по желанию, поскольку она ни на что не влияет, идут разнообразные не-TCP/IP протоколы. Их вполне можно включать модулями, если в вашей сети эти протоколы поддерживаются. Опасной тут является только опция Fast switching, включение ее может повлечь спонтанное отключение остальных сетевых опций.

QoS and/or fair queuering (система очередей для сетевых протоколов и сокетов) абсолютно необходима для компьютеров, работающих в кластере, бывает очень полезна для маршрутизатора, моста или роутера большой (>200 комп.) сети. В остальных 99.9% случаях только тормозит работу сети. Кстати владельцам Windows XP (Home и Pro) на заметку: этот протокол там ВКЛЮЧЕН, резервирует 20% трафика (Владельцы медленных модемов, привет!) и не отключается даже после удаления этого протокола.

SCSI support необходимы для SCSI устройств (это очевидно) и для пишущих IDE CD-R и CD-RW (очевидно не всегда). Счастливые владельцы SCSI устройств как правило сами знают, что следует включить. А обладатели "писАлок" как правило - нет. (Нечего хихикать, это я про себя тоже.) Им следует включить SCSI support, SCSI CD-ROM support и SCSI generic support.



SCSI low-level drivers для работы IDE CD- RW не нужны, остальное по необходимости.

Network device support не требуется, если вы не имеете ни сетевых устройств (адаптеров, модемов и т.д.), ни желания их подключать. Например, вы входите в секту, запрещающую использование Интернета, или просто страдаете тяжелой формой вирусофобии, в связи, с чем у вас нет ни сети, ни дисковода, а есть веселая колония антивирусов (штук 10-20). Остальным следует найти свою сетевую карту или драйвер PPP для модема, и установить их. Разъяснения требуют только некоторые опции. Dummy net driver support это пустое устройство необходимое для работы PPP. EQL support позволяет нескольким модемам работать как один (этакий модемный RAID). Ethertab network tab программный контроллер Ethernet'а, иногда бывает полезен. Keepalive and linefill требуется для устаревшего протокола SLIP. А Traffic Shaper позволяет ограничить трафик младшему брату, не используя неудобный QoS.

Amateur Radio AX.25 level 2 protocol используется для передачи данных по каналам любительского радио. Для работы требуется не сетевая карта, а любительский радиопередатчик. Только один мой знакомый, страстный радиолюбитель, его использует.

IrDA subsystem support требуется для работы устройств связи через инфракрасный порт. Можно включить модулями, а потом выяснить что требуется для вашего ИК-порта, а что нет.

Infrared-port device drivers представляет собой конкретный набор драйверов для этих устройств. Требуется только знать матчасть.

ISDN subsystem. С ней я ни разу "в живую" не встречался, подсказать ничего не могу.

Old CD-ROM drivers (not SCSI, not IDE). Название говорит само за себя.

Character devices это, на мой взгляд, самая интересная часть. Собранная здесь коллекция впечатляет: от программного терминала до синтезатора речи. Необходимейшей вещью здесь является Virtual terminal. Если вы не включите его, то у компьютера не будут работать устройства ввода и вывода, как то клавиатура, мышь, монитор, и т.д, и т.п. Для работы последовательных портов и модемов (в т.ч. внутренних) необходимы Standard/generic (dumb) serial support, Support for console on serial port. Остальные опции включаемые через Extended dumb serial driver support сегодня требуются обычно только для внутренних модемов (им следует включить Support special multiport boards), а в неумелых руках могут быть небезопасны. А для параллельного порта и принтера на нем требуются Parallel printer support и Support IEEE1284 status readback. Очень полезными являются Unix98 PTY support (поддержка виртуальных терминалов в SysV стиле), Mouse support (not serial mouse), /dev/nvram support и Enhanced Real Time Clock (вообще-то для многопроцессорных машин это просто необходимо). Включение Watchdog Timer Support позволит вам использовать устройства аварийного отключения и аппаратные средства безопасности (они конфигурируются далее). Остальные опции это специфические драйверы к довольно редким устройствам.



Mice переводится как "мыши".

Watchdog Cards позволяют вам нажимать на кнопку Reset, даже когда вас нет рядом с этой кнопкой.

Video for Linux, очень странная опция. Всегда ставьте SVGA support, остальное скачивается с сайта производителя и ставится модулем, даже если вашей карты нет в списке. Хотя есть самодельные драйвера для Radeon которые можно вкомпилировать непосредственно в ядро.

Joystick support первая, полностью игровая опцию в ядре. Будем надеяться, что не последняя.

Ftape, the floppy tape device support. Когда-то не было не только рабочего стола с иконками, но и винчестеров. Это опция из тех времен.

Filesystems имеет такие же требования, что и Block Devices, т.е. корневая и загрузочная файловые системы, а так же файловая система /proc, ОБЯЗАТЕЛЬНО должны быть включены в ядро. Остальное можно сделать при желании модулем. Quota support включает поддержку квот, что очень полезно для дискриминации женщин, расовых и сексуальных меньшинств, а так же младших братьев. Kernel automounter support включает систему автоматического монтирования съемных носителей (подробнее в следующей главе). Здесь обычно требуются следующие файловые системы семейства FAT MSDOS fs support, UMSDOS: Unix-like filesystem on top of standard и VFAT (Windows 95) fs support. Система NTFS так же поддерживается, чтение налажено нормально на ядрах серии 2.4, а вот с записью пока проблемы. Хотя иногда работает. Системы для CD-ROM это ISO 9660 filesystem и Microsoft Joliet CD-ROM extentions, их вполне можно сделать модулями если они НЕ предназначены для CD-R/CD-RW устройств. По поводу /proc filesystem и Second extended fs смотри выше. (Подсказка: название second extended имеет основная файловая система Linux.) Если вам требуется (обычно требуется) поддержка псевдотерминалов стандарта Unix98, то включите /dev/pts filesystem for Unix98 PTYs. Остальные файловые системы можно включать, если есть необходимость, но они встречаются очень редко, как правило на очень больших или на очень старых машинах.



Network filesystems требуются для работы с каталогами на удаленных компьютерах. NFS filesystem это стандартная сетевая файловая система, она распространена в сети UNIX и имеет гораздо больше возможностей, чем аналоги от Microsoft (например, монтирование по Интернету и система шифрования). Root filesystem on NFS требуется для бездисковых рабочих станций, остальным не требуется. SMB filesystem это сетевая файловая система для Microsoft Workgroups. А SMB Win95 bug work-around требуется для корректной работы Самбы с Windows 95. NCP filesystem - стандартная файловая система для Novell NetWare. А Coda filesystem это преемник NFS, который пока встречается редко.

Partition Types служат для взаимодействия с дисками неродных для Linux'а файловых систем, и в общем случае включения не требуют.

Native language support служит для работы с файлами и директориями, в названии которых имеются неанглийские буквы. Вам потребуются Codepage 437 (US, Canada), Codepage 866 (Cyrillic/Russian) для разделов FAT/NTFS и NLS ISO 8859-1 (Latin 1), NLS KOI8-R (Russian) для разделов Ext2fs.

Console drivers. VGA text console и Support for frame buffer devices не требуется только если вы даже в мыслях не собираетесь устанавливать на ваш компьютер монитор. Остальные опции служат для развлечения уставших от работы глаз. Попробуйте, может понравиться.

Sound. Звук, и этим все сказано. Если вашей карточки здесь нет, то либо стоит поискать в Интернете, либо скачать более новую версию ядра.

Kernel hacking. Тоже говорящее название. Позволяет вытворять практически немыслимы штуки с ядром. Например, правильно выключить "мертвую" систему. Но эти функции работают с любого эккаунта, а не только от root'а. Так что включать полезно и интересно, но число доморощенных хацкеров младшего школьного возраста вырастает больше любого приличия.

Прим: Обратите особое внимание, что в некоторых местах (General setup и др.) есть пункты, которые предлагают скомпилировать ядро для конкретного компьютера или процессора. Перед выбором этих пунктов следует обязательно убедиться, что у вас именно ЭТОТ компьютер. (Учтите, что эти компьютеры большая редкость в домашних условиях!) Если вы ошибетесь, и скомпилируете ядро для другой системы, оно с 99.99999% вероятностью работать на вашей не будет!



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

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

make dep make clean make zdisk или make zlilo или make bzImage

Первый вариант требуется для установки на загрузочную дискету, второй для установки через lilo, третий для ручной установки. Рекомендую третий вариант. В последнем случае, откомпилированное ядро вручную копируется в директорию /boot, а затем настраивается загрузчик. Для lilo требуется добавить строку в файл /etc/lilo.conf с положением и названием ядра (подробности ниже). И запустить загрузчик командой lilo. Настоятельно советую не стирать старое ядро, а оставить его в качестве еще одного варианта загрузки.

После этого устанавливаются модули командами:

make modules make modules_install

Перезагрузитесь и работайте. Если сможете.


Опции командной строки


Из опций командной строки рассмотрю только те которые использую лично я. Отмечу что для дого чтобы каждый раз не задавать наиболее любимые опции при наборе команды, вы можете в вашем .bash_profile, определить переменную окружения LESS. В моем файле используется следующее определение:

$ grep LESS .bash_profile export LESS='-i -W -a -F -j10 -R -s -S -C \\ -P?fFile\:%f:pipe.?m(%i of %m).?db Pg\:%db?L of %D..?Pb(%Pb\%).?e EOF. ?x Next\:%x.'

Столь длинное определение связано с тем что описывается формат вывода информационной строки, в котром указывается имя текущего файла, номер текущей страницы, плюс общее количество страниц в файле, и текущая позиция в процентах, кроме того сообщается когда достигнут конец файла и имя следующего файла, если он конечно есть. Вся эта информация задается опцией -P. Остальные опции выполняют следующие функции:

-i установить нечувствительный к регистру режим поиска; -W при пролистывании вперед, выделять первую непрочитанную строку, очень удобно, когда файл листается по пол страницы; -a режим поиска при котором следующее вхождение заданной строки будет искаться начиная со строки следующей за последней отображаемой на экране, данный режим удобен в сочетании с подсветкой совпадающих подстрок; -F если файл умещается на одном экране, то выйти сразу после его вывода; -j10 установить номер строки на экране в которой будет отображаться целевая строка, под целевой строкой понимается строка которая получается при поиске, переходе на заданный номер строки, или в отмеченную позицию;

-R низкоуровневый вывод специальных символов, а если по простому, то если в тексте встречаются крокозябры, то вместо того чтобы показывать их в их крокозябровском обличии, переводит их в цивилизованный вид, в частности в этом случае корректно отображается вывод скажем команды tree -C, которая выводит дерево каталогов с выделением цветом, по типам файлов; -s из нескольких идущих подряд пустых линий, на экран выводит только одну; -S выключает перенос строк, которые длиннее чем экран, для их просмотра можно использовать клавиши ESC-( или LEFTARROW и ESC-) или RIGHTARROW, котрые делают горизонтальную прокрутку отображаемого файла, что дает возможность просмотреть сильно длинные строки; -C очищать экран пред выводом, а сам вывод производить начиная с верхней позиции экрана. Очень удобно в сочетании с опцией -F, для просмотра небольших файлов, длинна которых меньше размера экрана.



Опции монтирования


Есть набор опций монтирования, поддерживаемых всеми файловыми системами, а также есть опции конкретной файловой системы. Эта информация взята из mount(8). Здесь я описываю лишь некоторые, на которые хотел бы обратить внимание.



Операторы глоббинга


Кроме стандартных символов (таких как *, ?, [...]), используемых для генерации имен файлов в других командных процессорах, в zsh определены дополнительные операторы глоббинга, такие как:

^X -- совпадает с любым кроме X. Например, ^*.elc будет соответствовать всем файлам, кроме тех которые указаны в маске (в нашем случае это файлы с расширением .elc).

X~Y -- совпадает со всем, что соответствует шаблону X, и не соответствует шаблону Y. Например, *.el*~*.elc соответствует всем файлам, чье расширение начинается с .el, но при этом не будут учитываться файлы с расширением *.elc.

X# -- соответствует нулю или нескольким вхождениям шаблона X.

X## -- соответствует одному или нескольким вхождениям шаблона X.



Описание "действий"


Описание "действий".

Действия, изменяющие состояние XKB.

Изменение набора модификаторов (modifiers).

Изменение номер группы.

Изменение управляющих флагов (XKB Controls).

Действие ISO_Lock.

Действия для эмуляции событий мыши

Движение курсора

Нажатие кнопок мыши

Нажатие и удержание кнопки мыши

Определение "кнопки по умолчанию".

Другие действия.

Посылка сообщения.

Эмуляция нажатия другой клавиши.

Выключить X-сервер.

Переключение экранов (screen).

Нажатие кнопок на другом устройстве обслуживаемом XKB.

Действия "особого назначения".

"Пустышка".

"Сырое" действие.

Объявление "умолчания".

Описание "действий" (actions) используются в файлах типа xkb_symbols, где они "привязываются" к скан-кодам клавиш, и в файлах типа xkb_compat, где они "привязываются" к управляющим символам. (Напомню, что в xkb_compat, описываются "интерпретации" - таблички, которые помогают менять привязку "действия" к скан-кодам, когда прикладные программы меняют привязку соответствующих "управляющих символов").

Описание действия похоже на объявление функции в языке C, то есть

имя_действия '(' список_аргументов ');'

Но отличие в том, что в списке аргументов указываются не просто значения, а пары имя-значение:

имя_аргумента '=' значение_аргумента

Например

MovePointer(x=10, y=10, repeat=False);

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

Внутри XKB действия представляют собой некую структуру которая содержит

код (номер) действия; поле битовых флагов, которые как-то модифицируют выполняемое действие; поля содержащие аргументы действия (их может быть несколько или вообще ни одного)

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


Например некоторые действия имеют аргументы, которые могут быть как абсолютными значениями, так и приращениями к текущим значениям. Это могут быть координаты курсора на экране, номер группы XKB и т.п. Во внутренней структуре действия для различения этих двух типов аргументов предусмотрен специальный флаг Absolute. Но в описаниях функций он явно не указывается. О том какие значения вы имели ввиду (абсолютные или относительные) XKB догадывается по наличию знака "+" или "-" перед значением аргумента.
То есть
SomeAction(x=10, y=10)
означает абсолютные значения для x и y, а
SomeAction(x=+10, y=+10)
означает положительные приращения для тех же переменных.
Другой пример неявных флагов это флаги, которые указывают - в какой момент выполнять действие - при нажатии клавиши или при ее отпускании. Такие флаги есть почти у каждого действия, хотя во многих случаях они не имеют особого смысла (например, какая вам разница когда установится модификатор CapsLock - в момент нажатии соответствующей клавиши или при ее отпускании).
Эти флаги в описаниях действий или вообще нельзя указать, или это указание делается через некий "псевдоаргумент" (в том смысле, что он не соответствует никакому полю во внутренней структуре XKB описывающей действие).
(У вас может возникнуть вопрос - зачем вообще существуют флаги, которые никак нельзя задать в описании? Дело в том, что в XKB протоколе существуют специальные запросы к серверу, которые позволяют загрузить или модифицировать любое действие из прикладной программы. Вот они то не накладывают никаких ограничений и позволяют задать любые флаги, имеющие смысл для данного действия.)
И еще несколько слов о том, как в описании действия указываются флаги. Хотя они предствляют собой отдельные биты в одном и том же поле внутренней структуры XKB, но в описании указываются как отдельные переменные типа boolean (то есть, их значением может быть только "да" или "нет"). При этом xkbcomp понимает в качестве значений логической переменной и другие слова - в качестве "да" вы можете писать yes, on, true, а качестве "нет" - no, off, false.


Но и это еще не все. Специально для логических переменных предусмотрена еще более простая запись. Вы можете написать просто имя переменной (флага) безо всякого значения и знака присваивания, это будет означать, что соответствующая переменная имеет значение "да". А вот если перед именем переменной поставить знак "!" или "~", это будет означать, что переменная имеет значение "нет".
Например следующие строчки полностью эквивалентны
SomeAction(..., SomeFlag=yes, ...); SomeAction(..., SomeFlag=on, ...); SomeAction(..., SomeFlag=true, ...); SomeAction(..., SomeFlag, ...);
и следующие строчки тоже эквивалентны
SomeAction(..., SomeFlag=no, ...); SomeAction(..., SomeFlag=off, ...); SomeAction(..., SomeFlag=false, ...); SomeAction(..., !SomeFlag, ...); SomeAction(..., ~SomeFlag, ...);
Но учтите, что каждый флаг имеет значение по умолчанию. Поэтому в большинстве случаев их вообще не указывают, если нужное значение совпадает с "умолчательным".

Описание "интерпретации"


Каждая "интерпретация" (interpretation) устанавливает соответствие между кодом какго-нибудь "управляющего" символа (symbol) и "действием" (action), которое должен будет выполнить модуль XKB при нажатии клавиши к которой "привязан" этот символ.

Полностью внутренняя структура, описывающая интерпретацию, состоит из

кода символа "действия" набора реальных модификаторов "критерия соответствия" модификаторам флагов ("автоповтор" и "залипание") виртуального модификатора для клавиши

Естественно, не все эти поля обязательно должны быть заполнены.

Итак, поле "код символа", естественно, определяет символ, к которому "привязывается" "действие", а поле "действие" - само это "действие".

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

Для чего нужны эти поля?
Напомню, что к любому скан-коду может быть "привязан" один или несколько реальных модификаторов. При поиске подходящего места для "действия", XKB может использовать не только код символа, но и расположение этих реальных модификаторов.

Если эти поля НЕ заданы, то XKB, при изменнии "привязки" символа к скан-коду, просто перенесет туда же соответствующее "действие".

А вот если эти поля заданы, то прежде чем выполнить перенос, XKB сравнивает набор реальных модификаторов, привязанных к скан-коду и набор реальных модификаторов, указанный в "интерпретации". "Критерий соответствия" определяет - как сравнивать эти два набора (см. ниже).
Если условие выполняется, "действие" переносится.

Кстати, если используются эти два поля (набор модификаторов и "критерий соответствия"), то кода символа может в интерпретации и не быть.

При этом, поиск подходящего места делается XKB только на сравнении наборов модификаторов. Например - найти тот скан-код, к которому "привязан" реальный модификатор Lock, и перенести туда "действие", независимо от того, какой код символа соответствует этому скан-коду.


Итак. Поле " реальные модификаторы" представляет собой просто один или несколько битов модификаторов.
А "критерий соответствия" представляет собой одно из условий
AnyOfOrNone (любой из... или ни одного) - практически означает, что поле "модификаторов" не имеет никагого смысла, условие выполняется, если совпадает любой из модификаторов или никакой; NoneOf (ни один из...) - у скан-кода не должно быть ни одного из указанных модификаторов; AnyOf (любой из...) - у скан-кода должен быть хотя бы один из указанных модификаторов; AllOf (все из...) - должны совпасть все указанные модификаторы; Exactly (точно) - то же, что и AllOf, но при этом у скан-кода не должно быть ни одного модификатора, не попавшего в список.
Кроме того, вместе с любым из перечисленных "критериев" может быть указан "критерий"
LevelOneOnly (только первый уровень) - условие выполняется, если символ привязывается к первому уровню первой группы в соответствующем скан-коде. Выполнение этого условия также требуется, для переноса "флагов" и "виртуального модификатора".
Естественно, "по умолчанию" поле модификаторов пустое, а "критерий" - "любой из.. или ни одного".
Поле флагов и виртуальный модификатор (он должен быть только один), могут быть тоже "перенесены" в описание скан-кода, если символ "переносится" в первый уровень первой группы таблицы, привязанной к скан-коду.
Флаги добавляются в поле "поведение клавиши", а модификатор в поле "виртуальные модификаторы" (эти поля есть у каждого описания скан-кода).
"По умолчанию" поле "флаги" содержит флаг "автоповтор", а поле "виртуальный модификатор" - пустое.
Итак. Описание "интерпретации" имеет вид
'interpret' символ '{' описание '};'
или
'interpret' символ '+' модификатор '{' описание '};'
или
'interpret' символ '+' критерий '(' модификаторы ') {' описание '};'


Например
interpret Nun_Lock {...}; interpret ISO_Level2 + Shift {...}; interpret ISO_Lock + AnyOf(Lock+shift) {...};
Если в заголовке указан только код символа, критерий - AnyOfOrNone, поле модификаторов - пустое.
Если указан, код символа и название модификатора (не указан "критерий"), то "критерий" - Exactly.
Если указан "критерий", то в скобках вместо списка модификаторов может стоять слово all. Понятно, что это означает - все модификаторы.
Кроме того, вместо "критерия" и списка модификаторов может использоваться слово Any. Это означает - AnyOf(all).
Наконец, как уже говорилось, если есть набор модификаторов и "критерий", то кода символа может и не быть ("привязка" осуществляется путем сравнения наборов модификаторов). В этом случае, вместо кода символа также ставится слово - Any.
Например,
interpret Any + Any {...};
означает, что эта "интерпретация" применяется ко всем клавишам, у которых есть реальные модификаторы.
Внутри описания "интерпретации" могут быть строчки типа оператора присваивания
useModMapMods = ...; или useModMap = ...;
repeat = ...;
locking = ...;
virtualModifier = ...; или virtualMod = ...;
action = ...;

Описание клавиши


Это основное обявление в файлах этого типа. Именно оно описывает таблицу символов (и, если надо, "действий") связанных со скан-кодом.

Имеет вид

'key' имя_скан-кода '{' описания '};'

Напомню, что "имя_скан-кода" описывается в файлах типа xkb_keycodes

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

key <LCTL> {...};

"Описания" внутри фигурных скобок разделяются запятой. Обратите внимание, что именно "запятой", а не "точкой с запятой", как это делается в файлах других типов.

Итак, внутри скобок могут быть строчки типа

type = ..., или type[...] = ...,

locks = ..., (синоним - locking) repeat = ..., (синонимы - repeats, repeating) groupswrap, или warpgroups,

groupsclanp, или clampgroups,

groupsredirect = ..., или redirectgroups = ...,

radiogroup = ...,

allownone = ...,

overlay1 = ..., или overlay2 = ...,

permanent...

vmods = ..., (синонимы - virtualmods, virtualmodifiers) symbols[...] = ...,

actions[...] = ...,

просто [...]



Описание поведения индикатора


В файлах типа xkb_compat также описывается "поведение индикаторов", хотя к "таблице совместимости" (compability) они отношения не имеют.

Напомню, что в XKB можно определить до 32 индикаторов. Первые 3-4 (в зависимости от типа клавиатуры) отображаются реальными "лампочками" на клавиатуре, а остальные считаются "виртуальными" и могут отображаться специальными программами.

В файле типа xkb_keycodes индикаторам даются символические имена (связыватся номера индикаторов и "имя индикатора").

А в файле xkb_compat описывается - как эти индикаторы ведут себя в зависимости от "состояния клавиатуры". Напомню, что...
Во-первых, индикаторы могут отображать состояние

модификаторов, номера группы, управляющих флагов.

Причем, поскольку первые два из перечисленных "компонентов состояния XKB" "размазаны" по трем переменным (base, locked, latched), поведение индикаторы можно связать с любой из указанных переменных или с их "эффективным" (суммарным) значением.

Надо отметить, что один и тот же индикатор может одновременно "отслеживать" изменения и "своего" модификатора, и какого-нибудь номера группы, и управляющего флага (хотя, зачем это нужно?).

Во-вторых, индикатор может не только "отслеживать" состяние XKB, но и включаться/выключаться прикладными программами. При этом, в описании индикатора можно разрешить/запретить такое включение/выключение или установить "обратную связь" (то есть, при включении/выключении индикатора будут происходить соответствующие изменения в состоянии XKB).

Итак. Описание поведения индикатора имеет вид

'indicator' имя_индикатора '{' описание '};'

Здесь "имя_индикатора" - это то символическое имя (строка символов в двойных кавычках), которое было дано ему в файле xkb_keycodes.

А "описание" обычно имеет вид оператора присваивания (исключение - логические переменные-флаги, которые могут принимать значения только True/False).

В этих "описаниях" могут встретиться строчки типа

modifiers = ...; или mods = ...;

groups = ...;

controls = ...; или ctrls = ...;

whichModState = ...; или whichModifierState = ...;

whichGroupState = ...;

allowExplicit = ...;

drivesKeyboard = ...; (имеет кучу "синонимов", см. ниже) index = ...;



Описание системы и методика тестирования


Для тестирования использовалась следующая конфигурация аппаратных средств: процессор Pentium III 600 MHz, 512 MB оперативной памяти, материнская плата Super Micro P6SBU. К встроенному Adaptec Ultra2 SCSI-контроллеру был подключен винчестер IBM DNES-309170W SA30 (объем 8GB). В качестве сетевого интерфейса использовалась плата фирмы 3COM 3c905B-TX. В процессе тестирования использовалась стандартная файловая система ? UFS. Когда это было необходимо в качестве сетевого клиента использовался компьютер с процессором Celeron 400 MHz имеющий 128 MB оперативной памяти. Сервер был оснащен операционной системой FreeBSD-4.3-RELEASE. На клиенте были установлены несколько различных версий FreeBSD (это было сделано в связи с тем, что меры направленные на повышение безопасности в 4.3-RELEASE непреднамеренно уменьшают скорость взаимодействия двух серверов между собой. В стандартной установке нет способа исправления этой ситуации, хотя "заплатка" для устранения такого поведения была выпущена). Я запускал на сервере три различных бенчмарка по очереди в обоих конфигурациях (стандартная и подвергшаяся настройке). Результаты тестов не следует воспринимать как безусловное мерило производительности ? они предназначены лишь для иллюстрации различий производительности стандартной и "подстроенной" конфигурации. Были использованы следующие тесты ? http_load, для оценки производительности http-сервера (Apache), postmark, для оценки общей производительности системы и postal, для оценки производительности почтового сервера (на базе postfix).



Определения


За века существования управления дисками в UNIX было придумано много новых названий для старых вещей. В следующем словарике даны определения терминов, используемых в этом документе и (надеемся) во FreeBSD вообще.

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

(опасный) режим эксклюзивного использования: Форматирование диска без использования таблицы слайсов. Это упрощает процесс добавления дисков, однако другие (не FreeBSD) операционные системы не смогут распознать диск. Противоположен режиму обеспечения совместимости.

диск: круглый диск, покрытый магнитным материалом или материалом с похожими свойствами, раскручиваемый двигателем и располагающийся под головками. Данные хранятся на диске при помощи изменения магнитного напряжения на диске, что может быть позже прочтено. Жесткие диски, компакт-диски, магнито-оптические и съемные носители Zip/Jaz являются примерами дисков.

слайс: Часть диска. На одном диске по стандартам PC может располагаться до четырех слайсов. Слайсы состоят из последовательно располагающихся секторов. Информация о слайсах записывается в "таблицу слайсов", используемую системным BIOS для нахождения загрузочных разделов. Таблица слайсов в терминологии DOS обычно называется таблицей разделов (Partition Table). Управляется утилитой fdisk.

раздел: Часть слайса. Обычно используется для обозначения частей слайса FreeBSD на диске. Каждая файловая система и область подкачки на диске располагаются в разделе. Управляется утилитой disklabel.

сектор: Самая малая часть диска. Один сектор, как правило, хранит 512 байт данных.



Оптимизация Linux 


StF.

Бредисловие.

В последнее время в разного рода конференциях по линуксу возникает флейм по поводу того, что линукс типа сакс, отстой и полные тормоза и что винда была, есть и будет форева. Ярые сторонники этой мысли при скромном вопросе - а вы линух-то свой оптимизировали вообще? - тут же замолкают и спрашивают, на фига это надо - дескать, и без этого грузится вроде, но тормозит... Не стоит наивно полагать, что в конфигурации по умолчанию все прооптимизировано, ибо она настроена так, чтобы работать как на твоем Пентиуме III с кучей прибамбасов, так и на старой трешке. Я не затрону в этой статье "железной" оптимизации (...из нашей статьи вы не узнаете о том, что вешать на один шлейф CD-ROM и хард нехорошо :o)) - я лишь поговорю об оптимизации на уровне софта. Так что вперед - оптимизировать, оптимизировать и еще раз оптимизировать... :-))

Установка.

Возможно, у тебя линукс уже установлен, однако этап установки является одним из важных шагов по оптимизации. В первую очередь, скорость работы зависит от дистрибутива, коих на рынке сейчас великое множество. Каждый из них имеет свои особенности, достоинства и недостатки. Наиболее быстроходным, по моему мнению, является дистрибутив Mandrake, наиболее тормозным - SuSe Linux (как это ни печально). Ядро Mandrake оптимизировано для процессоров Пентиум, так что по сравнению с RedHat он быстрее где-то на 10-15% (по моим субъективным оценкам).

Во время установки (в принципе это можно сделать и после, набрав в командной строке ntsysv) можно убрать ненужные сервисы из автоматического старта, тем самым уменьшая время загрузки линукса. Например, из всего что есть в списке, у меня остались сервисы: cron, atd, network, xfs, xfstt.

Также еще один важный момент - это использование свапа и его размер. Я думаю, все знают, что когда заканчивается оперативная память (и даже несколько раньше ;-)) при запуске очередной проги, неактивная в данный момент программа свапуется, то есть OS копирует память, занятую этой прогой на хард, очищает память и загружает в нее свежезапущенную программу. Ну так вот, важно правильно выбрать размер свапа: если у тебя 16...32 Mb памяти, то размер свапа должен быть в 3-4 раза больше размера памяти, при 32...64Mb размер свапа где-то в 1.25-2 раза больше объема памяти, при количестве памяти более 64 Mb свап уже включают по желанию. Короче: чем меньше памяти, тем больше должен быть свап. Могу сказать, что у меня, при 128 Mb ОЗУ, свап потребовался только ОДИН раз, и обычно ВСЕГДА где-то 20Mb пребывают свободными.


Также попробуй расположить свой своп-диск ближе к началу IDE диска. Hачало жесткого диска физически расположено на внешней части цилиндра. Головка чтения/записи в этом случае cможет покрыть большую область за один оборот диска. Это значит, что может быть записано/считано больше данных за один оборот. У меня разница составляет 3MB/сек в зависимости от местоположения логического диска на IDE устройстве.

Раз мы уж заговорили про память, скажу пару слов о "прожорливом" софте. Самые памятелюбивые под линухом (в порядке убывания): StarOffice - 128Mb, Mozilla M1* - 96 Mb, Kde & Gnome - 64 Mb, Netscape 4.x - 32Mb. Так что даже не пытайся поставить староффис на пень с 32 мегами - встать-то он встанет, но пока будет запускаться - успеешь кофе сварить :-(.

Ядро.

Ядро, устанавливаемое по умолчанию, содержит в себе много ненужных для тебя опций, цель которых - заставить его работать почти на любой конфигурации. У нас есть 2 задачи: выкинуть из него все лишнее совсем и выложить то, что нужно для твоего компа, в отдельные модули. Дело в том, что при работе Linux ядро - единственный кусок памяти, который не свапуется, поэтому логично сделать его меньше. Что же выкидывать из ядра? Тут сложно продвинуть конкретные рекомендации - все зависит от конфигурации твоего компа. Но несколько советов я могу дать:

- Установи семейство процессоров в PPro/6x86MX для Pentium II/III систем.

- Разреши MTRR для PentiumPro/II/III и AMD K6-2/3 систем.

- Запрети багофиксы для чипсетов, которых у тебя нет. Пример: CMD640 и RZ1000.

- Разреши Generic PCI bus- master DMA поддержку и использование DMA по умолчанию (Use DMA be defaults).

- Разреши поддержку чипсета, который у тебя есть. Пример: VIA82C586 для VIA VP2/3 и MVP3 материнских плат.

- Разреши ТОЛЬКО специфичные SCSI контроллеры, которые у тебя есть. Пример: Adaptec AIC7xxx.

- Запрети ВСЕ сетевые устройства, поддержка которых тебе не нужна.

- Установи максимальное число Unix98 PTYs в 128.

- Установи 'persistant dma buffer' в конфигах звука.



- Запрети все файловые системы, за исключением: ISO 9660 CDROM,VFAT, Second extended fs, /dev/pts и /proc поддержка.

- Запрети все сетевые файловые системы (NFS).

- Запрети все консольные драйвера. Исключение: VGA text console.

- Запрети Enhanced Real Time Clock поддержку.

- Запрети поддержку ISDN.

- Запрети поддержку IPv6.

- Запрети поддержку Amateur Radio.

- Запрети поддержку инфракрасных устройств (IrDA subsystem).

- Запрети поддержку джойстиков (Joysticks).

- Запрети все Ftape.

Попробуй другие вещи. Отредактируй /usr/src/linux/Makefile: найди строку 'MAKE =make' и измени ее на 'MAKE =make -j5' - так будет использоваться несколько копий make, с которыми на некоторых системах будут быстрей компилироваться программы. Потом измени: 'CFLAGS= -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer' на 'CFLAGS = -Wall -Wstrict-prototypes -O7 -fomit-frame-pointer -fno-exceptions', что включит использование оптимизирующих фишек, которые могут работать или не работать со всеми ядрами (оптимизация кода при компиляции). Ядро желательно брать посвежее и стабильное, например, 2.2.17 - последний стабильный релиз ядра из серии 2.2.* на данный момент.Компиляция его осуществляется командами: make menuconfig (или xconfig, если компилить из-под X [*] - данный параметр ядра будет скомпилирован встроенным в него [M], - означает, что он будет откомпилирован в качестве отдельного модуля, загружаемого по необходимости)

make dep

make bzlilo

make modules

make modules_install

Необходимо также заметить, куда скомпилилось новое ядро (у меня это всегда корень), и добавить в файл /etc/lilo.conf строки, дающие возможность загрузить старую версию ядра, если эта криво скомпилена или просто глючит (и такое бывает!):

image=/vmlinuz #путь к новому ядру

root=/dev/hda3 #путь к корню, пишем тот же, что и для установленного системой ядра

read-only

label=linux_new #название нового типа загрузки

Далее ставим эти 4 строчки ПЕРЕД кодом старого загрузчика (обычно начинающегося с image=/boot/vmlinuz), чтобы твое ядро грузилось первым по умолчанию, и ребутимся. Вуаля! Все должно работать!



Жесткий диск.

Здесь оптимизацию можно разделить на две части: оптимизация производительности харда и оптимизация свободного места на нем. Скажу сразу - лучше устанавливать программы по минимуму, а то потом будешь просто офигевать, заглядывая в папку /../bin и думая, что тебе со всем этим делать. Ибо проще доставить НУЖНУЮ тебе прогу, чем потом удалять кучи прог, которые ты не использовал, освобождая место на винте.

Благодаря особенностям файловой системы ext2fs, используемой в линуксе, диск менее подвержен фрагментации, но она все же имеется (у меня она составляет максимум 10%). Если у кого-то она очень большая, то можно скачать дефрагментатор с ftp://metalab.unc.edu/pub/linu/system/filesystems.

Далее. Несмотря на стабильность линуха, некоторые проги все-таки падают, давая прибавление на харде в несколько мег путем образования файла core - дамп памяти, с которой работала упавшая программа (они это делают для удобства отладки). Если тебе надо ограничить максимальный размер образа ядра в tcsh - используй команду 'limit'. Hабранная сама по себе, она покажет текущее значение для данного шелла. Также core-файлы могут представлять угрозу для безопасности системы, так как могут содержать куски памяти, содержащие пароли и другую важную информацию. Для отключения сохранения образа ядра при сбоях используй 'limit coredumpsize 0' или добавь в файл конфигурации bash (~/bash_profile) строку 'ulimit -c 0'.

Вообще, можно попробовать использовать ReiserFS - журналируемую файловую систему - 'самоизлечивающуюся' при потерях кластеров, связанных с некорректным выходом из системы (кнопка power off?) или перебоях с электропитанием.

И, наконец, оптимизация производительности харда.

Для этого есть хорошая команда 'hdparm'. Запустив ее hdparm -t <имя раздела или диска>, можно померить производительность данного раздела (или диска в целом). У этой команды есть много ключей - вот самые интересные:

-d [0|1] включение DMA

-c [1|2|3] 16/32bit общение с диском

-m количество секторов, считываемое за раз



-k сохранение параметров.

Не все из этих опций смогут работать на твоей машине, могут добавиться и другие к моменту чтения тобой этой статьи, но могу сказать одно: поиграв с ними и написав 'hdparm -d 1 -c 3 /dev/hda' и 'hdparm -k /dev/hda', я повысил скорость работы своего диска под линуксом с 3Mb/sec до 12Mb/sec. Типа, апгрейд подождет! Диск - IBMDTTA351010. После того как наиграешься с параметрами и добьешься результатов, создай простой скриптик, вписав в него все, что ты поменял, а потом, сделав его запускаемым, скопируй его в /etc/rc.d/local, чтобы он при каждом старте системы срабатывал автоматически.

X-Window.

Не секрет, что для иксов лучше иметь не менее 16 мег оперативки. Такого же мнения придерживаются и несколько Desktop & Windows менеджеров :0). Самые навороченные из них это AfterStep, WebMaker, IceWM, BlackBox. Что касается моего любимого KDE - то он несколько не торопится при старте на слабой машине. Есть шанс ему помочь, найдя стартовый скрипт - startkde (у меня он лежит в /usr/bin) - и закомментировав строчки "'sleep 2'", говорящие о паузе в две секунды между стартами разных KDE сервисов. Что касается Gnome+Enlightment, то здесь явно ничем хорошим не пахнет, так что лучше не мучить себя и компьютер. На 32 метрах памяти все вышеперечисленное в этом разделе работает весьма сносно.

Для ускорения видеокарты в Х можно использовать следующую фичу: требуется процессор pentium pro :0). Смотрим в /proc/pci (cat /proc/pci) :

VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1).

Medium devsel. IRQ 7. Master Capable. Latency=40. Min Gnt=4.Max Lat=255.

Non-prefetchable 32 bit memory at 0xf8000000 [0xf8000000].

Видим нашу видеокарту. Теперь мы попробуем увеличить скорость записи в устройство, используя 'write-combining'. Команда, разрешающая 'write-combining' в 4-х меговую область, начинающаяся с 0xf8000000 : 'echo "base=0xf8000000 size=0x400000 type=write-combining" >> /proc/mtrr'.Теперь в /proc/mtrr мы видим следующую новую строчку:



reg02: base=0xf8000000 (3968MB), size= 16MB: write-combining, count=1 .

Если понадобится, можно запретить использование 'write-combining': 'echo "disable=2" /proc/mtrr'. Более подробно об этом можно посмотреть в /usr/src/linux/Documentation/mtrr.txt. Также можно поиграть с нестандартными разрешениями карточки, выжав из нее все - но тут я не советчик, ибо этого САМ не пробовал. Понятно, что перед этим неплохо почитать доку на свою карточку.

В общем и целом.

В оставшейся части я дам несколько общих советов для ускорения Linux'a.

1) Отредактировать inittab, уменьшив число виртуальных консолей - особенно, если можно запускать X-terms. Я еще не видел человека, который бы работал одновременно с шестью консолями и X-Window. Найти следующую строчку: c1:1235:respawn:/sbin/agetty 38400 tty1 linux (Обычно их 6 с c1 по c6) и закомментировать ненужные (только случайно не закометируй все ;))

2) Убрать из /dev все ненужные записи - особенно эту тьму разных pty. Кому это надо, когда есть PseudoTerminal Miltiplexor.

3) Отключить inetd/xinetd - зачем он нужен, если нет насущной потребности, скрываясь от полиции в Интернет-кафе "Зимбабве", стереть с жесткого диска важный налоговый документ, подключившись по telnet.

4) Убрать лишние шрифты XFree86, поставить шрифты 75dpi, 100dpi, Speedo, PEX, Type1, misc, cyrillic. Реально IMHO нужны 75dpi, misc, Type1. Шрифты cyrillic - вообще довольно низкого качества, гораздо лучше Cyr-RFX (75dpi, misc со встроенной кириллицей).

5) Отключить все ненужные сетевые сервисы: sendmail, nfsd, httpd.

Полезные ссылки:

ftp://ftp.chg.ru/pub/benchmark - разнообразные программы для замера производительности под Linux.


Источник - LinuxBegin.ru

http://linuxbegin.ru

Адрес этой статьи:

http://linuxshop.ru/linuxbegin/article24.html


Оптимизация ошибок доступа к страницам и их обнуления


Полагая, что ошибка доступа к странице памяти в VM не является операцией с большими накладными расходами, если страница уже находится в основной памяти и может быть просто отображена в адресное пространство процесса, может оказаться, что это станет весьма накладно, если их будет оказываться регулярно много. Хорошим примером этой ситуации является запуск таких программ, как ls(1) или ps(1), снова и снова. Если бинарный файл программы отображен в память, но не отображен в таблицу страниц, то все страницы, к которым обращалась программа, окажутся недоступными при каждом запуске программы. Это не так уж необходимо, если эти страницы уже присутствуют в кэше VM, так что FreeBSD будет пытаться восстанавливать таблицы страниц процесса из тех страниц, что уже располагаются в VM-кэше. Однако во FreeBSD пока не выполняется предварительное копирование при записи определенных страниц при выполнении вызова exec. Например, если вы запускаете программу ls(1) одновременно с работающей vmstat 1, то заметите, что она всегда выдает некоторое количество ошибок доступа к страницам, даже когда вы запускаете ее снова и снова. Это ошибки заполнения нулями, а не ошибки кода программы (которые уже были обработаны). Предварительное копирование страниц при выполнении вызовов exec или fork находятся в области, требующей более тщательного изучения.

Большой процент ошибок доступа к страницам, относится к ошибкам при заполнении нулями. Вы можете обычно видеть это, просматривая вывод команды vmstat -s. Это происходит, когда процесс обращается к страницам в своей области BSS. Область BSS предполагается изначально заполненной нулями, но VM-система не заботится о выделении памяти до тех пор, пока процесс реально к ней не обратится. При возникновении ошибки VM-система должна не только выделить новую страницу, но и заполнить ее нулями. Для оптимизации операции по заполнению нулями в системе VM имеется возможность предварительно обнулять страницы и помечать их, и запрашивать уже обнуленные страницы при возникновении ошибок заполнения нулями. Предварительное заполнение нулями происходит, когда CPU простаивает, однако количество страниц, которые система заранее заполняет нулями, ограничено, для того, чтобы не переполнить кэши памяти. Это прекрасный пример добавления сложности в VM-систему ради оптимизации критического пути.



Оптимизация таблицы страниц


Оптимизация таблицы страниц составляет самую содержательную часть архитектуры VM во FreeBSD и она проявляется при появлении нагрузки при значительном использовании mmap(). Я думаю, что это на самом деле особенность работы большинства BSD-систем, хотя я не уверен, когда это проявилось впервые. Есть два основных подхода к оптимизации. Первый заключается в том, что аппаратные таблицы страниц не содержат постоянного состояния, а вместо этого могут быть сброшены в любой момент с малыми накладными расходами. Второй подход состоит в том, что каждая активная таблица страниц в системе имеет управляющую структуру pv_entry, которая связана в структуру vm_page. FreeBSD может просто просматривать эти отображения, которые существуют, когда как в Linux должны проверяться все таблицы страниц, которые могут

содержать нужное отображение, что в некоторых ситуация дает увеличение сложности O(n^2). Из-за того, что FreeBSD стремится выбрать наиболее подходящую к повторному использованию или сбросу в область подкачки страницу, когда ощущается нехватка памяти, система дает лучшую производительность при нагрузке. Однако во FreeBSD требуется тонкая настройка ядра для соответствия ситуациям с большим совместно используемым адресным пространством, которые могут случиться в системе, обслуживающей сервер телеконференций, потому что структуры pv_entry могут оказаться исчерпанными.

И в Linux, и во FreeBSD требуются доработки в этой области. FreeBSD пытается максимизировать преимущества от потенциально редко применяемой модели активного отображения (к примеру, не всем процессам нужно отображать все страницы динамической библиотеки), когда как Linux пытается упростить свои алгоритмы. FreeBSD имеет здесь общее преимущество в производительности за счет использования дополнительной памяти, но FreeBSD выглядит хуже в случае, когда большой файл совместно используется сотнями процессов. Linux, с другой стороны, выглядит хуже в случае, когда много процессов частично используют одну и ту же динамическую библиотеку, а также работает неоптимально при попытке определить, может ли страница повторно использоваться, или нет.



Tune Up HD in Linux


 Советы по оптимизации Linux (1/2)
Секция 1 из 2 - Предыдущая - Следующая

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 04 Aug 99 22:07:36 Subj : Tune Up HD in Linux ________________________________________________________________________________ Привет All...

1999.07.19 - Увеличение скорости IDE Harddisk

Двукратное увеличение скорости было замечено на массивных дисковых операциях ввода/вывода (таких как клонирование диска) при установках для IDE устройства - использовать DMA и 32-bit передачу данных. Ядро кажеться по умолчанию использует более консервативные установки.

Комманда:

# /sbin/hdparm -c 1 /dev/hda (или hdb, hdc и т.д.)

Для испоьзования 32-bit I/O на PCI шине. ( В hdparm(8) manpage говориться что вам может потребоваться использовать опцию "-c 3" для некоторых чипсетов материнских плат. )

Команда:

# /sbin/hdparm -d 1 /dev/hda (или hdb, hdc и т.д.)

Использование DMA. Это может зависить от поддержки вашего чипсета на материнской плате которая встроено в ядро.

Вы можете протестировать свои изменения запустив hdparm в режиме теста скорости. # /sbin/hdparm -t /dev/hda (или hdb, hdc т.д.)

Когда вы найдете оптимальные установки для себя , вы должны сделать:

# /sbin/hdparm -k 1 /dev/hda (или hdb, hdc т.д.)

для сохранения этих параметров до сброса IDE контроллера. Я заметил, что ядро иногда ресетит IDE контроллер и если вы не установите "-k 1", то установки будут сброшены на дефолтные и вы потеряете свое увеличение призводительности.

Опция "-m" может быть использована для изменения кол-ва сектров передоваемых за каждое прерывание. Вы можете получить дополнительный выигрыш "играя" с ней, но мне она не помогла. ------------------------------------------------------------------------ Автор: Kenn Humborg, Получено с TuneLinux.com

1999.07.19 - Фрагментация.Ъ

Когда файл записываеться на диск он зачастую будет записан в последовательные блоки. Файл который записан не в последовательные блоки- фрагментирован. На чтение фрагментированного файла требуеться больше времени т.к. головка диска совершает больше перемещений. Желательно избегать фрагментации. Для систем с хорошим буфером кэша и с упреждающим чтением это меньшая проблема.



Ext2 файловая система пытаеться минимально фрагментировать файлы, сохраная все блоки файла ближе друг к другу, даже когда они не могут быть сохранены в последовательных секторах. Ext2 эффективно распологает свободные блоки - которые наиболее близки к другим блокам файла. Для ext2 редко возникает необходимость заботиться о фрагментации. Большенство дистрибутивов содержит программы для дефрагментации, но если у вас ее нет вы можете взять ее здесь: ftp://metalab.unc.edu/pub/Linux/system/filesystems/

Существует множество MS-DOS дефрагментирующих программ которые перемещают блоки по всей файловой системе при дефрагментации. Для других типов файловых систем дефрагментация может быть выполнена резервным копированием файловой системы, пересозданием ее, и восстановлением файлов с резервных копий. Резервное копирование файловой системы перед дефрагментацией являеться хорошей идеей для всех типов файловых систем, т.к. могут произойти различные казусы в течении фрагментации.

Другие утилиты для ext2 файловой системы:

В дополнение к mke2fs(создание файловой системы) и e2fsck(проверка) которые обычно имеются в дистрибутиве, ext2 файловая система имеет некоторые дополнительные утилиты, которые могут быть полезны:

tune2fs корректирует параметры файловой системы. Некоторые наиболее интересные параметры:

.Счетчик монтирования. e2fsck принудительно проверяет файловую систему при достижении определенного числа подключений(монтирования) ее, даже если флаг проверки не установлен. .Для систем которые используються для разработок или тестирования может быть хорошей идеей уменьшить этот предел. . Максимальное время между проверками. e2fsck может так же задавать максимальное время между двумя проверками диска, даже если флаг проверки не установлен и файловая система не была монтирована очень часто. Это может быть выключено. . Число блоков зарезервированных для root. Ext2 резервирует некоторое кол-во блоков для root так что если файловая система заполниться, все еще будет возможность администрировать систему без необходимости удалять что-либо. По умолчанию резервируеться 5%,что на некоторых дисках не экономно. На флоппи дисках место не резервируеться.



Также смотрите:

debugfs это отладчик файловой системы. Он позволяет на прямую иметь доступ к данным и структурам файловой системы и может быть использован в при восстановлении диска, если он настолько поврежден, что fsck не может исправить автоматически. Он так же может быть использован для восстановления удаленных файлов. Но использование debugfs требует понимания что вы делаете, иначе вы можете уничтожить все свои данные.

dump и restore могут быть использованы для резервного копирования ext2 файловой системы. Они спечефичны для версии ext2 и входят в традиционный набор утилит для резервного копирования в UNIX.

1999.07.26 - Зачем иметь большие блоки

Если вы в Linux постоянно работаете с большими файлами, вы должны обратить внимание на увеличение скорости работы файловой системы при форматировании вашего диска с большим размером блока. По умолчанию файловая система Linux использует 1024 байта на блок. Кроме того, если вы манипулируете файлами размером с 1Gb(прим переводчика: наверное автор хотел сказать 1Mb) вы можете попробовать сделать подобное: mke2fs -b 4096 /dev/что-то При этом размер блока будет 4 кб, вместо 1кб. Это увеличит время перемещения, уменьшит фрагментацию и увеличит скорость работы fsck.

Проблема только одна-вернуться к 1024 байт на блок можно опять таки переформатированием. При форматировании данные бубут уничтожены.

Кроме того если вы серьезно думаете сделать это, вы так же должны знать, что система резервирует 5% диска для логов и для роста, в случае если диск полон. С 4кб блоками 5% будет занимать больше места. Вы можете уменьшить это до 1% командой: mke2fs -b 4096 -m 1 /dev/whatever

------------------------------------------------------------------------ Author: Larry Reckner [larryr@linux.com]

1999.07.22 - Что за файл программа изменила? Если вам надо узнать какие файлы изменила программа(внутри дирректории) когда она запустилась, перед запуском программы наберите комманду: touch * Это изменит время создание файла на текущее. Запустите программу. Затем посмотрите на время создания снова. Программа модифицирывала те файлы у которых дата поменялась.



------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com]

1999.07.23 - Сделайте ваши файлы и дирректории немного защищенней.

Используйте комманду: chattr + i из под root для того что бы сделать файлы и дирректории неприкосаемыми для rm и т.д. Даже для root-а. Оменить можно :chattr -i

1999.07.24 - Бед блоки.

Никогда не помешает проверить диск на бэд-блоки, это не трудно. Существует 3 полезных программы которые помогут вам найти и восстановить бэд-блоки в вашей файловой системе. Вы можете обнаружить бед-блоки с помощью программы badblocks. Синтакс: badblocks -o bad.block.output.file /device/name number.of.blocks start block,

Вот для примера: badblocks -o badblocks /dev/sda2 2024190 1 Проверит устройство /dev/sda2 которое имеет 2024190 блоков начиная с блока 1, и выведет результат в файл с названием badblocks Если вы не знаете сколько блоков на вашем диске, вы можете использовать вторую, более удобную программу-dumpe2fs. Она скажет вам все о файловой системе на определенном устройстве, включая общее кол-во блоков. Вот пример того что она выведет:

Filesystem volume name: Last mounted on: Filesystem UUID: 8d42d04c-15f1-11d3-9a9c-0040053f15fc Filesystem magic number: 0xEF53 Filesystem revision #: 0 (original) Filesystem features: (none) Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 507904 Block count: 2024190 Reserved block count: 101209 Free blocks: 1161922 Free inodes: 485305 First block: 1 Block size: 1024 Fragment size: 1024 Blocks per group: 8192 Fragments per group: 8192 Inodes per group: 2048 Inode blocks per group: 256

Третья программа-fsck.ext2 флаг -l указывает из какого файла брать список бэд-блоков для восстоновления.

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.08.03 - Увеличение скорости своп-диска.

Попробуйте расположить свой своп-диск ближе к началу вашего IDE диска. Начало жесткого диска физически расположено на внешней часи целиндра. Головка чтения/зписи, в этом случае, cможет покрыть большую область за один оборот диска. Это значит что может быть записано/считано больше данных за один оборот. У меня разница состовляет 3MB/сек в зависимости от местоположения логического диска на IDE устройстве. Тест: hdparm -t ------------------------------------------------------------------------ Автор: Rowin Andruscavage ========================================================================= Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru



Приветствуються любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых Не коммерческих целей. Приветсвуеться размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 05 Aug 99 06:08:16 Subj : Tune up! kernel ________________________________________________________________________________ Привет All...

1999.07.14 - Потерянная память.

Если вы когда нибудь видели надпись "unable to allocate dma buffer" или "/dev/dsp: out of memory" это случаеться когда ядро не может выделить память для DSP (памяти около 16 MB) вы можете это исправить перекомпилировав ядро м выбрав 'persistant dma buffer' в конфигах звука.

1999.07.14 - net-pf-что!? Надоело наблюдать:

modprobe: can't locate module net-pf-4 modprobe: can't locate module net-pf-5

Добавте следующие две строчки в /etc/conf.modules для отключения IPX & Appletalk

alias net-pf-4 off alias net-pf-5 off

1999.07.14 - Вы знали? Многие опции ядра могут быть изменены во его время работы.

Вот одна забавная: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

(Игнорирвать все ping запросы)

1999.07.22 - Нехватает inodes?

Ядро 2.2 позволяет вам управлять во время работы некоторыми ограничениями. Например можно увеличить максимальное число файлов и inodes Попробуйте: echo 32768 > /proc/sys/fs/file-max echo 65536 > /proc/sys/fs/inode-max

Другие ограничения изменить сложней. Например, для увеличения максимального числа задач вам потребуеться отредактировать include/linux/tasks.h и перекомпилировать ядро. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.27 - Сделайте ваше ядро меньше и более оптимизированным.

Для того что бы сделать ядро как можно маленьким и освободить его от всего что вам не требуеться, сделайте все, за исключением некоторых важных вещей, в модулях ядра. Вам потребуеться некоторые очевидные вещи как IDE/SCSI доступ и ext2 поддержку встроить в ядро. Создайте конфигурацию ядра под ваше оборудование: cd /usr/src/linux; make xconfig (make menuconfig)



.Установите семейство процессоров в PPro/6x86MX для Pentium II/III систем. .Разрешите MTRR для PentiumPro/II/III and newer(Прим перводчика: тут я не пойму что хотел сказать автор. new -новый . newer - такого слова нет. Может это опечатка и автор подразумевал never(никогда). Из одной буквы смысл меняеться на противоположный newer ? never. оставляю как есть)-AMD K6-2/3 систем. .Разрешите 'Symmetric multiprocessing' если вы используете только многопроцессорные системы. .Запретите 'Advanced Power Management' если у вас сервер. .Запретите багофиксы для чипсетов которых у вас нет. Пример: CMD640 и RZ1000 .Разрешите Generic PCI bus-master DMA поддержку и использование DMA по умолчанию (Use DMA be defaults) .Разрешите поддержку чипсета который у вас есть. Пример: VIA82C586 для VIA VP2/3 и MVP3 материнских плат. .Разрешите RAID-0 (striping) если у вас есть несколько одинаковых жестких дисков. .Запретите Kernel/User netlink socket .Разрешите только SCSI типы устройств, которые у вас есть. Пример: SCSI диск, но без tape/CD-ROM/generic .Запретите Verbose SCSI error reporting .Запретите SCSI logging facility .Разрешите ТОЛЬКО специфичные SCSI контроллеры, которые у вас есть. Пример: Adaptec AIC7xxx .Test and Tune the Maximum number of commands per LUN .Запретите ВСЕ сетевые устройства поддержка которых вам не нужна. .Установите максимальное число Unix98 PTYs в 128 .Запретите Watchdog Timer поддержку .Запретите все файловые системы Исключение: ISO 9660 CDROM, Second extended fs,/dev/pts, и /proc поддержка. .Запретите все сетевые файловые системы (NFS) Если вам нужна NFS серверная поддержка - отредактируйте исходник и #undef NFS_PARANOIA .Запретите все консольные драйвера Исключение: VGA text console .Запретите Enhanced Real Time Clock поддержку .Запретите все non-essential serial and mouse device support. .Запретите все Video for Linux .Запретите все non-SCSI/IDE/ATAPI CD-ROMs .Запретите все ISDN .Запретите воткни и развлекайся (Plug and Play) .Запретите все Amateur Radio .Запретите все Loadable modules .Запретите поддержку инфракрасных устройств (IrDA subsystem) .Запретите поддержку джойстиков (Joysticks) .Запретите все Ftape .Запретите все Partition Types .Запретите все Native Language Support .Запретите все драйвера для звуковых карт (Sound cards)



Попробуйте другие вещи: отредактируйте /usr/src/linux/Makefile найдите строку: MAKE =make и измените ее на MAKE =make -j5 будет использоваться несколько копий make с которыми на некоторых системах будет быстрей компилироваться программы.

Потом измените: CFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer на CFLAGS = -Wall -Wstrict-prototypes -O7 -fomit-frame-pointer -fno-exceptions

Что включит использование оптимизирующих фишек, которые могут работать или не работать со всемя ядрами. (оптимизация кода при компиляции) Вы можете попробовать подобные значения для HOSTFLAGS. ------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com]

Updates From Jonathan A. George, http://home.att.net/~jageorge/performance.html

1999.07.27 - Больше текста.

Если у вас есть поддержка в ядре для этого, вы можете установить текстовые режимы высокого разрешения поместив vga параметр в ядро. Для примера в lilo, наберите <labelname> vga=ask где labelname - метка вашего ядра.(linux vga=ask) Вам будут представлены возможные разрешения. огда вы выберете подходящий для вас режим, вы можете добавить vga=x в свой /etc/lilo.conf файл, где x номер режима. Пояснение: Если номер разрешения который вы выберете будет содержать буквы (шеснадцатеричный код) (a,b,c,d,e,f) вы должны перед номером режима подставить '0x'. (0xa000) ------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com]

1999.08.03 - Своп-как много в этом слове.

Ядро может использовать своп-разделы на различных дисках в RAID0 стиле монтируя их с одинаковыми приоритетами.

Ваш /etc/fstab должен содержать что-то типа этого:

/dev/hda1 swap swap defaults,pri=1 0 0

/dev/hdc1 swap swap defaults,pri=1 0 0

Лучше всего поместите своп-раздел на IDE диски находящиеся на разных шинах, т.к. master и slave на одной шине не могут передовать данные одновременно. Это не являеться проблемой для SCSI дисков. ------------------------------------------------------------------------ Автор: Rowin Andruscavage ============================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru



Приветствуються любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых Не коммерческих целей. Приветсвуеться размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 05 Aug 99 06:10:36 Subj : Tune Up! X11 ________________________________________________________________________________ Привет All...

1999.07.27 - Увеличение производительностит X11

(требуеться процессор pentium pro или лучше + mrrt включенное в ядре) cat /proc/pci ---------------------

VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1). Medium devsel. IRQ 7. Master Capable. Latency=40. Min Gnt=4.Max Lat=255. Non-prefetchable 32 bit memory at 0xf8000000 [0xf8000000].

--------------------- Видим нашу видеокарту, теперь мы можем увеличить скорость записи в устройство используя 'write-combining' Комманда разрешающая 'write-combining' в 4-х меговую область начинающуюся с 0xf8000000 : echo \"base=0xf8000000 size=0x400000 type=write-combining\" >> /proc/mtrr

Теперь в /proc/mtrr мы видим следующую новую строчку: reg02: base=0xf8000000 (3968MB), size= 16MB: write-combining, count=1

Если понадобиться запретить использование 'write-combining': echo \"disable=2\" >> /proc/mtrr

------------------------------------------------------------------------ /usr/src/linux/Documentation/mtrr.txt

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 05 Aug 99 06:12:22 Subj : Tune Up! Shell ________________________________________________________________________________ Привет All...

1999.07.22 - Быстрый выход. Для быстрого log out без набирания 'exit' нажмите 'CTRL+D' и вы выйдете из шела. Для того что бы это отключить,создайте переменную 'ignoreeof' (set ignoreeof).



------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com] 1999.07.22 - Быстрое замещение в командной строке

Вы можете делать замены в истории комманд. Если при наборе комманды вы ошиблись и желаете без перенабора или вызова из истории коммад для редактирования ее выполнить посмотрите пример: Допустим вы хотели посмотреть на файл 'foo.bar' и ошиблись 'ls -l foo.ber'. С коммандой '^er^ar^' вы можете заменить 'er' на 'ar' в своей последней набранной комманде и сразу же выполнить ее.

% ls -l foo.ber ls: foo.ber: No such file or directory

% ^er^ar ls -l foo.bar -rw------- 1 root root 207348 Jul 8 12:42 foo.bar

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.25 - Баги в шелл скрипте? (стоило ли переводить?)

Если вы пишите шелл-скрипт и желаете подебагить его, поместите строчку 'set -vx' в начало скрипта. Он вам все и покажет. Можно добиться того же через командную строку : 'sh -x filename' ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - Что за файл? Что бы узнать наберите 'whatis filename'. filename -имя файла на диске. Можете так же попробовать комманду 'file'. File даст вам информацию о файле включая платформу, версию, и структуру библиотек.

% file /usr/bin/enlightenment /usr/bin/enlightenment: ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked (uses shared libs), stripped комбинируем: % file `which startx` /usr/X11R6/bin/startx: Bourne shell script text

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - ...а это кому нибудь надо? Для того чтобы узнать библиотеки которые использует программа, используйте 'ldd' комманду. Пример: % ldd rxvt libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x4001b000) libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4002b000) libc.so.6 => /lib/libc.so.6 (0x400cf000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)



------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - Что происходит у меня за спиной? Если есть желание посмотреть на работу процесса в отладочных целях 'strace' для вас. Она(он) покажет вам что делает процесс во время выполнения или если он будет присоеденен к уже запущенному процессу. Вы так же можете приаттачить strace ко всем потомкам процесса. Для присоеденения к уже запущенному процессу, используйте 'strace -p PID'. Для присоеденения к потомку используйте '-f flag' ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - Strace для библиотек ltrace- кузин strace. Ltrace имеет такие же функции как strace, но сфокусированные более на библиотеках и будет показывать вам все вызовы к системе и библиотекам. Для отладки. ------------------------------------------------------------------------ Author: Larry Reckner [larryr@linux.com]

1999.07.14 - Терминал замусорился. Если ваши настройки терминала сбросились или вы не можете прочесть текст на экране попробуйте использовать 'refresh' комманду. Если ни чего не произошло попробуйте 'echo "\033c"' прежде чем выйдете в шел.

1999.07.22 - Опять шелл. Когда переменные определяются в шелл скрипте, большенство людей используют: if [ -z "$host" ] then host=`uname -n` fi

Кроме того вы можете сохратить время набора используя это: : ${host:=`uname -n`}

Это говорит шеллу : если $host ранее не определена, выполни 'uname -n' комманду для установки значения переменной. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - Не уверены что хотите выполнить комманду? Если вы не уверены что хотите выполнить комманду потому что не знаете точно ее последствий, попробуйте это: Например вы хотите удалить большое кол-во файлов , но хотите быть уверенным в том не удалите что-либо еще (без использования rm -i опции), попробуйте выполнить комманду как эхо в начале. Это покажет вам все комманды которые будут выполняться .



% echo rm *.class rm DesCipher.class animatedMemoryImageSource.class authenticationPanel.class clipboardFrame.class optionsFrame.class rfbProto.class vncCanvas.class vncviewer.class

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - Less - вещь. Классный текстовый вьювер. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.25 - Прокрутка терминала. Для прокрутки ранее выведенной информации на терминал жмите SHIFT+PAGEUP и SHIFT+PAGEDOWN.

------------------------------------------------------------------------ Author: Vaughn Dickson [vaughn@linux.com] 1999.07.27 - Копирование/вставка в терминале. Если у вас инсталлирован gmp вы можете выделить текст мышкой и вставить его в позицию курсора нажав среднюю кнопку мыши. В X-ах так же. ------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com] ============================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуються любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых Не коммерческих целей. Приветсвуеться размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 06 Aug 99 23:16:58 Subj : Tune Up. Windowmaker ________________________________________________________________________________ Привет All...

1999.07.22 - Терминалы-близнецы.

У меня часто открыто несколько терминалов в которых я администрирую удаленные машины. Проще всего для меня различать эти машины и теминалы по цветам. Для этого удобно иметь как можно большой выбор цветов для фона терминала Rxvt. Вот как можно быстро добавить различные цвета для фона Rxvt в новый стиль.



Меню WindowMaker:

#!/bin/sh for i in `cat /usr/X11/lib/X11/rgb.txt | awk -F\ '{print $4}' | egrep -v "^[a-z]"` do echo " (" echo " \"Rxvt $i\"," echo " EXEC," echo " ""\"rxvt -fg black -bg \\\"$i\\\" -cr yellow +vb +sk -sl 1000 +sr +st -title \\\"Your.Window.Title.Here\\\" &\n\"" echo " )," done

Этот пример поместит в меню Rxvt выбор цвета фона, и они не будут повторяться. То же самое можно сделать для любого типа терминала и вы можете добавить комманду для выполнения в скрипт подобную этой '-e ssh -v machine.com' для автологина на удаленный компьютер. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

============================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуются любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых НЕ коммерческих целей. Приветсвуется размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 06 Aug 99 21:05:08 Subj : Tune Up. Bash ________________________________________________________________________________ Привет All...

1999.07.22 - Что обозначает комманда type ? Вы можете использовать комманду 'type' для того что бы узнать какую программу выполнит шелл. % type netscape netscape is /usr/local/bin/netscape

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.23 - Коротко о Bash.

Для того что бы обновить содержимое экрана нажмите Ctrl-L. Ctrl-A поместит курсор в начало строки, Ctrl-E в конец. Ctrl-U очистит текст от текущей позиции курсора до начала строки. Ctrl-R - поиск в истории комманд. Ctrl-C удобна тогда, когда вы набрали комманду и не желаете ее выполнить, вместо нажимания [Enter] нажмите Ctrl-C. Появиться новое приглашение в следующей строчке. Ctrl-C так же прерывает текущее выполнение комманды. ------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com]



1999.07.27 - Сделайте свои задачи по проще.

Если у вас длинные, повторяющиеся задачи, проще использовать цикл для их выполнения.

Пример: 'for test in 1 2 3 4 5 6 7 ; { touch $test; }' Создаст 7 файлов с именами 1, 2, ..., 7 в текущей дирректории. Более практичное применение: 'for file in .procmailrc .fetchmailrc .muttrc ; { scp user@myhost.com:/home/user/$file .; }' Это скопирует 3 файла с myhost.com на локальный хост. ------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com]

1999.07.29 - Надоели почтовые уведомления? Мне надоело в bash получать сообщения о новой почте каждый раз, когда я нажимаю Enter после ввода комманды, при использовании X-ов и одного терминала как почтовое окно. Я добавил 'unset MAILCHECK' в мой .bashrc для того что бы избавиться от этого. ------------------------------------------------------------------------ Pekka Tiittanen [pekka@addict.dyndns.org] Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуются любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых НЕ коммерческих целях. Приветсвуется размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 06 Aug 99 21:05:50 Subj : Tune Up. SSH ________________________________________________________________________________ Привет All...

1999.07.22 - SSH - Автологин.

Если вы используете ssh, вы можете без ввода пароля автоматически логиниться на удаленный компьютер. Что бы это сделать, в своей .ssh дирректории отредактируйте 'config' файл. Поместите туда имя удаленного компьютера и имя пользователя на том компьютере а так же некоторые опции.

Пример:

Host the.inter.net User sa RSAAuthentication yes StrictHostKeyChecking no



Host remote.host.on.the.net RSAAuthentication yes User myusername

Host * StrictHostKeyChecking no

On the remote machine in your home directory, create a .ssh/authorized_keys file and store your local identity.pub key in that file (and other keys you want to allow). На удаленной машине создайте в своей хом дирректории .ssh/authorized_keys файл и сохраните свой локальный identity.pub ключ в этом файле (и другие ключи которые вы хотите сделать доступными).

Прежде чем вы запустите X, запустите 'ssh-agent shell', 'ssh-agent tcsh', 'ssh-agent bash', 'ssh-agent ksh' или по анологии для вашего шелла. Потом запустите 'ssh-add' и введите свой идентификатор. После этого у вас появиться возможность заходить с помощью ssh на удаленную машину без прохождения фазы логин/пароль. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

=========================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуются любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых НЕ коммерческих целях. Приветсвуется размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _

Секция 1 из 2 - Предыдущая - Следующая


Tune Up. tcsh ________________________________________________________________________________ Привет


 Содержание > Операционные системы > Семейство UNIX >
 Советы по оптимизации Linux (2/2)
Секция 2 из 2 - Предыдущая - Следующая

From : Igor Hrapovskii 2:5062/1.20 06 Aug 99 21:06:34 Subj : Tune Up. tcsh ________________________________________________________________________________ Привет All...

1999.07.22 - Вы и не думали выходить из шелла? Если в tcsh выполняетья авто-выход из шелла, когда вы этого не желаете (зачитались например), попробуйте добавить 'set AUTOLOGOUT=0' в свой .cshrc. Это отключит опцию авто-выхода. Вы можете заменить 0 на любое число минут, для увеличения времени ожидания шелла.

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com] 1999.07.22 - Перечитать .cshrc.

Если вы внесли некоторые изменения в свой .cshrc и желаете что бы эти изменения принесли результат прямо сайчас, без перезапуска шелла, используйте: 'source .cshrc'. Шелл перечитает ваш файл и воспримет ваши изменения. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.22 - Опять это длинное имя. Если вы не можете вспомнить имя файла или просто есть желание посмотреть на файлы находящиеся в каталогах описанных в переменной "path" в tcsh, наберите несколько символов и нажмите 'Ctrl+D' и ваш шелл выведет вам все имена файлов начинающиеся с этих символов. ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com] 1999.07.22 - Ограничить размер образа ядра(coredumps).

Если вам надо ограничить максимальный размер образа ядра в tcsh используйте коммаду 'limit'. Набранная сама по себе она покажет текущее значение для данного шелла. Для отключения сохранения образа ядра при сбоях используйте: 'limit coredumpsize 0' ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com] ============================================================================ Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru



Приветствуються любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых НЕ коммерческих целях. Приветсвуется размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 06 Aug 99 21:13:12 Subj : Tune Up. terminals ________________________________________________________________________________ Привет All...

1999.07.22 - Прокрутка текста в Xterm Для изменения количества строк, которые вы можете просматривать в xterm, отредактируйте ваш ~/.Xdefaults и поместите туда следующее: xterm*saveLines: 1000 ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.14 - Вы знали?

Вы можете изменить шрифт, отключить звуковой сигнал в терминале и еще многие вещи используя Xterm меню, просто удерживая CTRL нажмите левую клавишу на мышке. Существует три меню - каждое для определенной клавиши на мышке.

1999.07.14 - Переключение шрифта на лету.

В терминале вы можете изменить размер шрифта на лету - удерживая 'Shift' и нажимая '+' клавишу (в основном используют кейпад). Аналогично 'Shift'+ '-'.

1999.07.21 - О Xterm. У меня обычно на десктопе имееться несколько открытх окон с Xterm. Если вы используете tcsh как шелл, вы можете обновлять заголовок окна(titlebar) разной полезной информацией, так же как вы обновляете иконки при входе на другую машину.

Xterm управляющая последовательнось начинаеться с символа escape, скобок и цифры. Заканчивается последовательность символом control-G. Вот пример для отображения "Hello World!" в вашем заголовке окна: echo ^[]2;Hello World!^G

Более сложный пример:

echo -n "^[]2;`date +%r` `uname -n`:${cwd} ${tty}/`uname -m`^G";echo -n "^[]1;${HOST}^G"

Для моего аккаунта (jdmsys), вышеприведенный пример поместит "10:29:46 AM reactor:/home/jdmsys ttyp0/i686" в заголовок окна.



Для обновления иконки с текущим именем системы(hostname): echo -n "^[]1;This is an icon^G"

В вышеприведенном примере нет ни чего специфичного для tcsh. Используя "precmd" алиас в tcsh ваш шелл может обновлять заголовок окна каждый раз когда вы нажимаете "enter". Вот содержание .tcshrc которое обновляет заголовок окна(titlebar) и иконку для Xterm:

alias precmd 'echo -n "^[]2;`date +%r` `uname -n`:${cwd} ${tty}/`uname -m`^G";echo -n "^[]1;${HOST}^G"'

Другой полезный алиас(alias) "cwdcmd" который запускаеться каждый раз как только вы переходите в другую дирректорию. Если вы не поместили часы или другую часто обновляемую информацию в ваш заголовок окна, cwdcmd алиас может быть полезен для вас.

Запомните что ^[ это фактически control-v/control-левая-скобка комбинация, и ^G это control-g.

------------------------------------------------------------------------ Автор: Jeffrey Mahoney [jdmsys@rit.edu]

Дополнительную информацию о ESC-последовательностях вы можете найти в man console_codes

1999.07.28 - Mutt и Eterm. Если вы используете mutt и Eterm, вы можете загрузить Mutt Eterm меню, которое содержит меню для Eterm с некоторыми опциями mutt. Найти можно здесь:http://jblosser.firinn.org/pub/config/mutt/mutt.menu

Для использования выполните: Eterm -M /path/to/mutt.menu. ------------------------------------------------------------------------ Автор: Marius Aamodt Eriksen [marius@linux.com] ============================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуются любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых НЕ коммерческих целях. Приветсвуеться размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 07 Aug 99 04:54:02 Subj : Tune Up. Netscape ________________________________________________________________________________ Привет All...



1999.07.14 - Вы знали?

Мало известен факт того, что все текущие версии поддерживают что-то называемое altmail. Что это altmail? Это враппер(wrapper) который позволяет netscape запустить практически любую программу для чтения почты и новостей. Netscape-altmail вам потребуеться, он поставляеться с некоторыми примерами которые построены как *.so динамические библиотеки.

Его можно найти здесь: ftp://ftp.ncu.edu.tw/OS/Linux/CLE/collect/network/netscape-altmail-0.1.tar.gz

Пример использования pine для чтения почты: Я скомпилировал altmail_pine.so и поместил его в свою дирректорию /opt/netscape потом добавил следующее в свой ~/.netscape/preferences.js файл:

user_pref("mail.use_altmail", true); user_pref("mail.altmail_dll","/opt/netscape/altmail_pine.so");

Теперь когда я кликаю на иконку почты в status bar или перехожу в mailto:// ссылку - запускаеться rxvt с уже загруженным pine и настроенным на соответствующую задачу.

1999.07.14 - Вы знали?

Когда netscape зависает вы можете попробовать убить его с помощью "kill -12" для сохранения ваших данных вместо обычного -9 который это пропускает.

1999.07.22 -Послать через коммандную строку URL's для netscape.

Ниже приведен скрипт который посылает через коммандную строку URL уже запущенному netscape: #!/bin/sh

if killall -0 netscape 2> /dev/null; then netscape -remote "openURL($1)" else netscape $1 & fi

------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com]

1999.07.25 - Красавец netscape.

Вы можете изменить текущие установки для Netscape подредактировав .Xdefaults файл. Сделав всего лишь несколько простых изменений вы можете поменять цвет заголовка окна(titlebar), цвет текста, кнопки, окна ввода и т.д. Например, мне больше нравиться серый Netscape.

Вот как выглядит мой .Xdefaults :

# Netscape*backgroundPixmap: \ Netscape*background: #848692 Netscape*Text.backgroundPixmap: XmUNSPECIFIED_PIXMAPMP Netscape*Text.background: #848692 Netscape*XmText.background: #848692 Netscape*XmText.backgroundPixmap: XmUNSPECIFIED_PIXMAP Netscape*XmTextField.background: #848692 Netscape*XmTextField.backgroundPixmap: XmUNSPECIFIED_PIXMAP Netscape*XmScrolledWindow*background: #848692 Netscape*XmScrolledWindow*backgroundPixmap: XmUNSPECIFIED_PIXMAP Netscape*urlBar*Text.background: #505276 Netscape*urlBar*Text.foreground: #9ea6ff Netscape*urlBar*Text.backgroundPixmap: XmUNSPECIFIED_PIXMAP Netscape*urlBar*List.background: #505276 Netscape*urlBar*List.foreground: #93a6ff Netscape*urlBar*List.backgroundPixmap: XmUNSPECIFIED_PIXMAP # Netscape*toolBarFrame*backgroundPixmap: \ # Netscape*toolBarFrame.?.?.backgroundPixmap: \



Для того чтобы перечитать ваш .Xdefaults файл используйте комманду: 'xrdb -load .Xdefaults' ------------------------------------------------------------------------ Автор: Larry Reckner [larryr@linux.com] ========================================================================= Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуются любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых НЕ коммерческих целей. Приветсвуется размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 10 Aug 99 22:43:18 Subj : Может кому надо. SysQR ________________________________________________________________________________ Привет All...

МАГИЧЕСКИЕ SYSRQ КЛАВИШИ. Документация v1.2 ------------------------------------ [Sat May 16 01:09:21 EDT 1998]

* Что это такое 'магические' SysRQ клавиши? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Это комбинации клавиш, которые вы можете использовать для посылки определенных комманд ядру, в случае если вы не можете вернуть систему к 'работоспособному' состоянию (нет доступа к терминалу, клавиатура не реагирует и тд.) стандартными методами или в крайнем случае перезагрузить машину без потери данных.

* Что надо сделать что бы я мог использовать 'магические' SysRQ клавиши? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Вам надо ответить 'yes' на 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' при конфигурировании ядра. Эта опция доступна только начиная с версии 2.1.x ядра и более поздних.

* Как я могу использовать 'магические' SysRQ клавиши? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ На x86 - Используйте комбинацию клавиш 'ALT-SysRQ-< X >'. 'SysRQ' так же известна как 'Print Screen' клавиша.

На SPARC - Используйте 'ALT-STOP-< X >', кажеться так.

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



* Что это за 'X' клавиши? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 'r' - Выключает режим скан кода(raw mode) для клавиатуры и устанавливает режим ASCI II (XLATE).

'k' - Завершает все программы на текущей виртуальной консоли.

'b' - Немедленно перезагрузит систему без сброса буферов на диск и отключения(unmount) дисков.

'o' - Выключит вашу систему через APM (если сконфигурирован и поддерживаеться) (APM-Advanced Power Manager. Улучшенный менеджер управления электропитанием)

's' - Сброс буферов(sync) для всех подключенный файловых систем.

'u' - Перемонтирует все подключенные файловые системы в режим 'только для чтения'.

'p' - Покажет текущее значение регистров и флагов микропроцессора(на консоль).

't' - Выведет на консоль информацию об текущих запущенных процессах.

'm' - Выведет на консоль информацию об использовании памяти(ОЗУ).

'0'-'9' - Устанавливает уровень вывода на консоль log-сообщений.

'e' - Посылает сигнал предупреждения (SIGTERM) всем процессам, обходя init.

'i' - Посылает сигнал завершения (SIGKILL) всем процессам, обходя init.

'l' - Посылает SIGKILL всем процессам, ВКЛЮЧАЯ init. (Ваша система после этого не будет работоспособной.)

* Хорошо, для чего я могу это все использовать? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Итак, SysQR+'R' очень удобна если ваш X сервер или svgalib программа подвисла.

SysQR+'K' ('K'ill) полезна когда вы хотите выйти из программы которая не позвляет вам переключить консоль. (На пример, X или svgalib программа.)

SysQR+'B' (re'B'oot) пригодится в случае если вы не можете завершить работу с системой обычным путем. Но незабудте нажать SysQR+'S' , SysQR+'U'

SysQR+'S' ('S'ync) Полезна когда система не отвечает вам и перезагрузка не избежна. Вы сможете сберечь свои данные и избежать проверок диска. Помните , пока не появилась надпись "OK" или "Done" значит команда еще не закончила свою работу. (В некоторых случаях вы не сможете увидеть надпись, но система сделает свое дело. Совсем плохой случай-когда ядро зависло. Здесь вам ни что кроме перезагрузки уже не поможет).



SysQR+'U' ('U'mount) В основном полезна в ситуациях описанных для SysQR+'S'. Я обычно делаю так: 'S'ync, 'U'mount, потом re'B'oot . Это помогает избежать множества проверок диска. Опять же, отключение (перемонтирование в режим 'только для чтения') продолжаеться до тех пор пока не появиться надпись "OK" или "Done".

loglevel'0'-'9' Полезен когда выша консоль заполнена сообщаниями ядра, которые вы не желаете видеть. Установка в '0' потребует вывод на консоль только самых необходимых сообщений. (Сообщения все равно будут сохраняться , если ,конечно, syslogd/klogd еще живы.)

SysQR+'E' (t'E'rm) и SysQR+'I' (k'I'll) Полезны когда вы встречаетесь с неуправляемым процессом. Вы не можете его уничтожить и он порождает другие процессы.

* Я нажимаю SysRQ, но кажеться ни чего не происходит, что-то не так? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Существуют некоторые типы клавиатур, которые не поддерживают 'SysRQ'. Вы можете попробовать запустить 'showkey -s' и нажать SysRQ или alt-SysRQ для просмотра генерируемого кода клавиши. ( по умолчанию 0x54). Если код другой, вы сами можете определисть код клавиши SysRQ. Определитись с комбинацией клавиш и с помощью программы 'showkey' запомните ее код. В файле /usr/src/linux/]include/asm/keyboard.h найдите следующию строку :'#define SYSRQ_KEY 0x54' и замените код на код той комбинации клавиш, которую вы хотите использовать. Перекомпилируйте ядро.

* У меня осталось еще много вопросов, у кого я могу спросить? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Вы можете писать мне письма на myrdraal@deathsdoor.com. Я отвечу как только смогу. Если этот адресс не работает, попробуйте вот этот : myrdraal@jackalz.dyn.ml.org.

-Myrdraal ============================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуються любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых Не коммерческих целей. Приветсвуеться размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.



... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : Igor Hrapovskii 2:5062/1.20 13 Aug 99 09:27:08 Subj : Поддержка ядром интерпритаторов и эмуляторов на прямую. JAVA ________________________________________________________________________________ Привет All...

Поддержка для ядра различных исполняемых типов файлов (ваших любимых)v1.1 =====================================================================

Эта возможность ядра позволяет вам вызывать большенство программ (ограничение смотрите ниже) просто набрав имя программы в шелле, такие как Java,Pyton,Emack, различные эмуляторы и любые программы если у вас для них есть эмулятор или интерпритатор. Эта возможность позволит binfmt_misc запускать программу с тем интерпритатором, который вы укажите в конфигурации. (незабудте разрешить эту возможность при конфигурации ядра).

binfmt_misc распознает исполняемый файл по совпадению различных байтов в начале файла или по расширению файла ('.com' или '.exe').

Параметры настроек для определенного типа файла в общем выглядят так: :name:type:offset:magic:mask:interpreter:

Завершающее действие: echo :name:type:offset:magic:mask:interpreter: >> /proc/sys/fs/binfmt_misc/register

Описание для каждого поля: - 'name' это индентификационная строчка. Новый файл будет создан с этим именем в /proc/sys/fs/binfmt_misc дирректории. - 'type' это тип распознавания. Поставте 'M' для комбинации байтов и 'E' для расшиения файла. - 'offset' это смещение относительно начала файла для комбинации байтов. Если не указали значение - то это поле принимаеться равным 0. (пример: ':name:type::magic...') - 'magic' это комбинация байтов которую будет искать ядро в файле. Она может содержать шеснадцетиричные коды , такие как \x0a или \xA4 или любой другой код. В шелле вы должны использовать '\\' так как одна '\' будет 'съедена' шеллом. Если вы используете расширения файла для его распознования, не используйте '.' перед именем расширения. Т.е. не '.java' а 'java' (специальный код \x0a не доступен). Расширение файла зависит от уровня регистра символов. - 'mask' маска для байтов(по умолчанию 0xff,для всей последовательносьти). Вы можете маскировать различные биты от сравнения с помощью строки подобной 'magic' и такой же длины. С 'mask'и последовательностью байтов производиться логическая операция И (and). - 'interpreter' Это программа кторорая будет запускаться с именем выбранного файла переданного ей в качестве параметра.(укажите полный путь)



Некоторые ограничения : - Полная строка не должна превышать длину в 255 символов. - 'магическая' последовательность должна находиться в первых 128 байтах файла. Т.е. offset+длина(magic) должно быть меньше 128. - Строка для интрпретатора не должна превышать 127 символов.

Не забудте добавить команды настройки для binfmt_misc в свой загрузочный скрипт. Читайте документацию по вашей 'init' программе для правильной настройки.

Просто вставте туда: "echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > /proc/sys/fs/binfmt_misc/regiser"

Подумайте о порядке добавления записей. Записи добавленные последними будут сравниваться первыми.

Несколько примеров (подразумеваеться что вы находитесь в /proc/sys/fs/binfmt_misc дирректории):

- разрешить поддержку для em86 (подобно binfmt_em86, для Alpha AXP только): echo ':i386:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03:\ xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/bi n/em86:' > register echo ':i486:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06:\ xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/bi n/em86:' > register

- разрешить использовать поддержку для DOS приложений ( настроен dosemu hdimage) echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register

- разрешить поддержку для выполняемых файлов Windows используя wine: echo ':DOSWin:M::MZ::/usr/local/bin/wine:' > register

Для поддержки java читайте Documentation/java.txt.

Просмотр файла в binfmt_misc/ дирректории даст вам информацию о текущих настройках для данного поименованного файла.

Вы можете разрешить/запретить использование binfmt_misc или одного из типов выполняемых файлов определенных вами :

'echo 0 > /proc/sys/fs/binfmt_misc/status' или 'echo 0 > /proc/.../the_name'. (0 - запретить,1 - разрешить) 'cat /proc/.../the_name' даст вам информацию о текущем статусе/настройках определенной записи.

Вы можете удалить одну запись или несколько следующим способом: 'echo -1 > /proc/.../the_name' или 'echo -1 > /proc/sys/fs/binfmt_misc/status'.



Примечание: ====== Если вы хотите использовать специальные аргументы в выбранном интерпритаторе вы должны написать промежуточный скрипт, который будет вызывать интерпритатор. Для примера смотрите /usr/src/linux/Documentation/java.txt Указывайте полный путь для интерпритатора. Не желательно что бы поиск происходил с помощью переменной PATH. Могут возникнуть проблемы с защитой и непредвиденное поведение программ.

Вот web страницы о binfmt_misc: http://www.anatom.uni-tuebingen.de/~richi/linux/binfmt_misc.html

Richard GЭnther, richard.guenther@student.uni-tuebingen.de

============================================================================== Перевод: Игорь Храповский. Igor Hrapovskii E-mail: igor00@volgodonsk.cityline.ru

Приветствуються любые комментарии по поводу статьи, возможны неточности. Вы можете использовать статью в любых Не коммерческих целей. Приветсвуеться размещение на сайтах и FAQ посвещенных Линуксу с указанием Имени переводчика.

... с уважением, Игорь. --- 3.00.Beta3+ * Origin: "Старый , опытный камикадзе." (2:5062/1.20)

Секция 2 из 2 - Предыдущая - Следующая


Организация виртуальных FTP-узлов с помощью wu-ftp


По сравнению с демоном ProFTP, демон wu-ftp имеет не столь богатые возможности в конфигурировании и поддержке виртуальных узлов.

Поддержку виртуальных узлов можно включить командой virtual в файле конфигурации wu-ftp /etc/ftpaccess. virtual address Данная команда разрешает использование виртуального FTP-узла.

Вниманию вебмастеров: использование данной статьи возможно только в соответствии
с правилами использования материалов сайта «Софтерра» (http://www.softerra.ru/site/rules/)



Основная проблема


После того как я установил Linux, встал вопрос где что находится, как это что искать, а найдя это нечто чего с ним делать?

Линукс конечно не Китай, и команд у него меньше чем населения в Китае, но все равно достаточно чтобы ввести новоиспеченного Линуксоида в недоумение, как в такой массе информации, разбросанной, казалось бы, в самых неподходящих местах, вообще можно ориентироваться?

Так поиск с помощью команды find, дает нам следующие результаты:

$ find / -type f -perm +111 | wc -l 3107 $ find /usr/man -type f -name "*.gz" 2>/dev/null | wc -l 3326 $ find /usr/man -type f -name "*.gz" -exec zcat {} \; 2>/dev/null | wc -c 23052138

Отсюда видно что количество найденных выполняемых файлов в моей системе - 3107 штук! А количество страниц руководства man, которую я ласково называю Маня, равно 3326, общий обьем страниц руководства равен больше 23 Мб! В таком количестве информации без хороших навигационных инструментов, можно запросто сесть на мель, с которой снятся будет очень тяжело.

Как в речном, так и морском судоходстве, от которых я впрочем очень далек, есть куча навигационных инструментов, начиная от астролябий, компасов и карт, заканчивая супер современными GPS-ами, использующими в своей работе искуственные спутники земли. В каждой UNIX-подобной системе тоже есть свои навигационные инструменты, с помощью которых можно запросто пройти из точки А в точку Б, без значительных потерь в количестве нервных клеток, которые как известно не восстанавливаются. И если уж проводить аналогию с мореплаванием, то я так думаю что без спутников тут тоже не обошлось. А как-же. Просто это менее заметно, но когда вы пытаетесь найти помощь в интернете, так или иначе наверняка нужная вам информация проскочит через тот, или иной спутник, висящий где то между Луной и созвездием Альфа-центавра.



Основные биты доступа (чтение/запись/выполнение)


Рассмотрим подробнее - что представляют собой "права доступа".

Еще раз вернемся к примеру. При распечатке содержимого директории (например, командой ls) каждая строчка имеет вид

-rw-r--r-- 1 pascal users 4297 13 мар 21:45 files1

причем нас интересует в данном случае только первая колонка.

Она состоит из десяти знаков. Однако, самый первый знак не имеет отношения к permissions, а обозначает "тип этого объекта". Поскольку, в директории кроме файлов могут находится поддиректории и, кроме того, в Юниксе, кроме обычных файлов существуют другие объекты ("линки", "очереди", "сокеты" и т.п.), которые также находятся в директориях и имеют атрибуты как и у обычных файлов. Так вот, первый символ как раз и показывает - что за объект мы видим, обычный файл (значок "-"), поддиректорию (значок "d") или еще какой-нибудь специфический Юниксовый объект ("l", "s", "p"...).

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

первая группа - права "хозяина" вторая группа - права "группы особо допущенных" третья группа - права для "всех остальных"

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

Однако, для файлов и директорий смысл этих битов немного отличается, поэтому их стоит рассмотреть отдельно.

Для файлов.

Для директорий.



Основные операции


ls
dir
Список содержимого текущей директории. Команда dir является псевдонимом ls , так что эти две команды на самом деле являются одной. Список файлов обычно подсвечивается: темно-синий = директории, светло-серый = обычные файлы, зеленый = выполняемые файлы, розовый = графические файлы, красный = сжатые (например при помощи zip) файлы, светло синий = символьные ссылки, желтый = файлы устройств, коричневый = FIFO ("First-In First-Out" поименованные каналы).

ls -al |more
Список содержимого текущей директории - всех файлов (даже если они начинаются с точки) в длинном формате. Пропуск вывода через команду "more" предназначен для того, чтобы вывод приостанавливался при каждом заполнении экрана. Команда ls имеет много полезных параметров. Некоторые из них могут иметь собственные псевдонимы. Попробуйте ll (="long ls(длинный ls)", псевдоним к ls -l). Другой вариант, который я часто использую ls -ad (Вывести список всех поддиректорий текущей директории, не показывая их содержимого).

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

./имя_программы
Выполнит исполняемый файл из текущей директории. Знак ./ необходим, если директория не указана в переменной PATH. Выполняемый файл, путь к которому упомянут в PATH запускается проще: имя_программы

shutdown -h now
(как "root") Завершает работу системы. Используется в основном для удаленного выключения. Используйте <Ctrl><Alt><Del> для перезагрузки с консоли. (Это получится у любого пользователя).

halt
reboot
init 6
(как "root", три команды) Перезагрузить компьютер. Используется для удаленной перезагрузки, проще, чем предыдущая команда. Кроме того она полезна при зависании компьютера. Например, если я теряю контроль с клавиатуры, я использую telnet с другой машины сети и перезагружаю компьютер удаленно. Лучше всего использовать <Ctrl><Alt><Del> для нормального завершения работы компьютера при работе в консоли.

vlock
(Отсутствует в старых версиях RedHat.) Запирает текущий терминал(в текстовом режиме). Кроме того я использую vlock -a для того, чтобы запереть все терминалы (Возможно, не совсем хорошая идея). Наверное, лучше просто выйти из системы. У вас не получится использовать vlock в графической оболочке -- там можно использовать заставки под паролем и запирающие утилиты (маленькая картинка с висячим замком в KDE, горячие клавиши - <Ctrl><Alt><l>).



Основные термины - коды и символы


Основное назначение модуля XKB— преобразовывать скан-коды нажимаемых клавиш в коды символов.

Обычно в документации XKB скан-коды называются keycodes, а коды символов - просто "символы" (symbols).

Естественно, "символы" - это не обязательно коды "печатных" символов (букв, цифр, знаков препинания и т. п.). Это могут быть также "управляющие" коды (Esc, Enter, Backspace и т. п.) или коды, которые никак не отображаются, но влияют на внутренне состояние самого XKB (переключение РУС/ЛАТ, Control, Shift, Alt и т.п.) и, следовательно, на то, какой символ будет выбран при нажатии обычных "буквенных" клавиш.



Основные возможности syscons


Итак, syscons с одной стороны работает непосредственно с "железом" (видео-контроллером и контроллером клавиатуры), а для ОС выглядит как некий аппарат, который и является терминалом.

Виртуальные терминалы.

Буфер экрана (history buffer).

Команды терминала syscons.

Управление драйвером syscons.

Работа с "мышью".



Основы X-windows


xinit &
Запускает сервер X-windows (без менеджера окон). Символ "&" отправляет команду в фоновый режим.

startx &
Запускает сервер X-windows и менеджер окон. Почти как "win" в DOS с Win3.1.

startx -- :1 &
Запускает другую сессию X-windows на дисплее 1 (по умолчанию используется дисплей 0). вы можете использовать несколько графических терминалов одновременно. Переключайтесь между ними <Ctrl><Alt><F7>, <Ctrl><Alt><F8>, etc.

xterm
(в X-терминале) Выполнить простой терминал X-windows. Напечатайте exit, чтобы закрыть его. Вот другие, более продвинутые "виртуальные" терминалы для Xwindows. Мне нравятся следующие: konsole и kvt (поставляется kde)и gnome-terminal (поставляется с gnome). Если вам требуется нечто более красивое, попробуйте Eterm. Более быстрый -rxvt.

startkde
gnome-session
xfce
afterstep
AnotherLevel
fvwm2
fvwm
(в X терминале, 7 различных команд, используйте одну из них для запуска вашего любимого оконного менеджера) Запуск оконного менеджера в голом X-сервере.



Остальное


Несколько последних штрихов включая установку параметра "noatime" (см. /etc/fstab ? прим. переводчика) на большинстве файловых систем и пристальное внимание к физическому расположению дисковых разделов (очевидно разделы к которым обращаются наиболее часто следует размещать ближе к нулевым дорожкам ? прим. переводчика).

Результаты теста Http_load
Для проведения этого теста я установил Apache 1.3.19 из коллекции портов, изменив параметр HARD_SERVER_LIMIT на 2048. Обычная (не тюнинговая) конфигурация не позволяет создавать 2048 процесса, я задал 128 процессов для начального запуска и максимально может быть запущено 1024 процесса. В оптимизированной конфигурации я установил 2048 постоянно работающих Apache-процесса. В ходе теста я запускал http_load несколько раз с количеством одновременных запросов от 10 до 1000. Я сконфигурировал сервер так что бы от отвечал по десяти IP-адресам, переключаясь между ними. Результаты представлены на рисунке:

Оптимизированная конфигурация превосходит обычную более чем на порядок. Неоптимизированная конфигурация максимально обслуживает 17 запросов/сек, как результат нехватки сетевых буферов. В свою очередь оптимизированная конфигурация увеличивает производительность при увеличении количества запросов от 333 запросов/сек до 509 запросов/сек (1800%-2900% увеличение производительности по сравнению с обычной конфигурацией). Оптимизированная конфигурация также показывает заметно меньшее количество ошибок при обработке запросов (см. рисунок).

 

Результаты теста Postmark
Postmark запускался с различными наборами параметров. Сначала он был запущен с конфигурацией описанной на сайте postmark'а. Эти результаты сведены в таблицу (включая результаты FreeBSD MFS -- файловой системы в памяти):

1000/50000

Ultra 1
UFS1

Ultra 1
TMPFS1

Ultra 1
NFS F6302

FreeBSD
Untuned

FreeBSD
MFS

FreeBSD
Tuned

Транзакций в секунду

36

2000

253

61

2941

276

Чтение (Кб/сек)

115.67

4880

799.91

190.95

9460

878.59


Запись (Кб/сек)

118.27

7330

817.89

195.24

9670

898.33
20000/50000



Ultra 1
UFS1



Ultra 1
TMPFS1



Ultra 1
NFS F6302



FreeBSD
Untuned



FreeBSD
MFS



FreeBSD
Tuned



Транзакций в секунду

15

438

176

40

256

91

Чтение (Кб/сек)

29.93

663.64

383.41

74.22

560.37

219.75

Запись (Кб/сек)

54.22

1530

694.58

134.46

1020

398 ( сравнение производится со станцией Sun Ultra 1).

Система была проведена через серию тестов с различными размерами файлов и их количествами:

 


1000 файлов

 


20000 файлов

Разница в быстродействии вполне очевидна в обоих случаях и составляет от 40% до 860% в данном тесте.

Результаты теста Postal
Для проведения этого теста в систему был установлен из системы портов Postfix (postfix-20010228-pl01). Тест запускался на полчаса с интервалом количества параллельных сессий. На тестовом сервере было создано порядка 15000 пользовательских бюджетов, Postal пользуясь их списком рассылал им почту. Тесты выполнялись без промежуточной очистки очереди сообщений с небольшими временными промежутками, т.е. не посланные сообщения оставались в очереди до следующего теста создавая дополнительную нагрузку на сервер). Несмотря на надуманность такого теста, его результаты хорошо показывают различия в производительности конфигураций. Результаты теста смотрите на рисунке:

 


Различия в быстродействии варьируются от 40% до 650%.


OSy


ITC Online > За дружбу между ОСами!

За дружбу между ОСами!
Игорь Дериев

Перефразируя известный тезис О. Бендера, "ОС -- не роскошь, а платформа для выполнения приложений". Тем не менее пользователи все чаще задумываются о том, что система, предустановленная на их ПК, вовсе не обязательно является лучшей. Это, конечно, не означает, что нужно сразу хвататься за "серьезную" альтернативу вроде Linux или FreeBSD, но даже выбор между Windows 9x и Windows 2000/XP порой не столь очевиден. Одна из них дешевле и понятнее, другая -- надежнее, но сложнее в освоении и (не дай Бог!) в восстановлении.

Оптимальный вариант -- попробовать как можно больше вариантов (даже Microsoft распространяет пробные версии сроком действия 120 дней -- вполне достаточно, чтобы во всем разобраться) и составить собственное мнение, на порядок более ценное, чем любая информация из масс-медиа. А для этого нужно научить различные ОС не просто мирно уживаться на одном компьютере (что само по себе не так уж сложно), но и по возможности сотрудничать между собой.

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

В качестве же "подопытных кроликов" нам послужат Windows Me, Windows XP Pro и ALT Linux (российский дистрибутив, созданный "по мотивам" Mandrake Linux), с некоторых пор прописанные на моих компьютерах. К ним можно добавить и любую другую ОС (с необходимыми поправками), хотя специально это обсуждаться не будет -- из экономии времени и печатной площади.

Прежде чем приступить, собственно, к изложению основного материала -- традиционные предупреждения и напутствия: выполняйте резервное копирование (хотя бы своих рабочих файлов), освойте стандартные "восстановительные" процедуры для каждой ОС, внимательно читайте всевозможные Readme и FAQ.

В тесноте, да не в обиде


Косвенный признак того, что копируется загрузочная запись Linux-раздела, -- слово LILO
На первый взгляд эта проблема может показаться надуманной. Действительно, "серьезные" (т. е. практически все, кроме Windows 9x) ОС имеют специальный загрузчик, который умеет "подхватывать" по крайней мере некоторые, установленные до них, системы. Правда, Windows 2000/XP изначально согласны дружить только с другими ОС Microsoft, попросту не замечая конкурентов. Зато загрузчики Linux -- LILO или набирающий популярность GRUB -- могут запускать (после соответствующей настройки) практически любые ОС. Таким образом, если последовательно инсталлировать Windows Me, Windows XP, Linux, то, скорее всего, мультизагрузка будет настроена автоматически.

Однако имеется один подводный камень: по идее, LILO (GRUB) удобнее установить в MBR, дабы загрузочное меню появлялось автоматически при старте ПК, но профессионалы все же рекомендуют (в много-ОС-евых конфигурациях) размещать его в загрузочной записи раздела Linux, а в этом случае придется дополнительно применять загрузочную дискету.

Не идеальное решение, зато бесплатное и функциональное
Дело в том, что MBR используется некоторыми хитроумными программами, вроде Ontrack Disk Manager, GoBack и пр., и конкуренция за него может завершиться весьма плачевно. Естественно, наличие заранее подготовленных "спасательных" дискет обычно позволяет исправить ситуацию, но зачем создавать проблемы самому себе? То же самое, в общем-то, относится и к любым мультизагрузчикам сторонних разработчиков, таким, как System Commander или Acronis OS Selector.

Методика, применяемая Windows 2000/XP, в этом плане более удачна (хотя у нее имеются другие недостатки). Эта ОС оставляет без изменения MBR, код которого, как и обычно, передает управление загрузочной записи активного раздела. Оттуда, в свою очередь, запускается собственно мультизагрузчик. Да и вообще, поскольку именно операционные системы Microsoft применяются чаще всего, логичней использовать весь их потенциал, тем более, что и в вопросах загрузки альтернативных ОС он выходит далеко за рамки штатных возможностей.

К сожалению, в файле BOOT.INI (в нем описываются варианты загрузки) нельзя просто указать номера диска и раздела еще для одной ОС. Зато, как оказывается, можно дать ссылку на файл, содержащий копию загрузочной записи этого самого раздела. Суть "трюка" заключается в том, что загрузочная запись содержит некий код, который может быть исполнен фактически из любого места. Кстати, Windows 2000/XP также неявно использует эту методику: при установке после Windows 9x (с сохранением, естественно, прежней системы) ею создается файл BOOTSECT.DOS длиной в 512 байт (размер одного физического сектора).

Итак, основная проблема -- сделать копию загрузочной записи нужного раздела. Это можно осуществить несколькими способами. Чаще всего рекомендуют воспользоваться небольшой бесплатной утилитой BOOTPART, автоматически копирующей в файл первый физический сектор указанного тома (чтобы определить его номер, достаточно запустить программу без параметров) и добавляющей соответствующую запись в BOOT.INI. Довольно просто и удобно, однако программа давно не обновлялась и вероятно поэтому в некоторых случаях (или конфигурациях) работает неправильно.

Скопировать информацию из загрузочного сектора можно и из среды Linux. Для этого достаточно воспользоваться таким "заклинанием":



dd if=/dev/hda6 of=/mnt/win_с/bootsect.lnx bs=512 count=1

где вместо hda6 и win_с нужно подставить соответственно обозначения Linux-раздела и смонтированного Windows-тома из вашей конкретной конфигурации.

Для тех же целей сгодится любая программа, обеспечивающая низкоуровневый доступ к содержимому жесткого диска. Для среды Windows таковыми, к примеру, являются Paragon Partition Manager или Acronis Disk Editor. В DOS можно воспользоваться старым добрым DiskEdit из пакета Norton Utilities (хотя неизвестно, насколько корректно разные версии этой утилиты работают с новыми BIOS и большими жесткими дисками).

Дальше -- совсем просто: если полученный файл назван BOOTSECT.LNX, то в BOOT.INI достаточно добавить строку вида

C:\BOOTSECT.LNX= "Linux"

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

Хлеба горбушку, и ту пополам

И вот вам результат: все дисковое пространство Linux доступно под Windows XP
На первый взгляд, делить дисковые ресурсы между несколькими операционными системами (тем более, если некоторые из них установлены только ради ознакомления) не так уж обязательно. Тем не менее нередко это вполне оправданно. Так, 20-гигабайтового жесткого диска, который еще год назад я не представлял чем заполнить, сегодня еле хватает для достойного содержания трех моих рабочих ОС. Одна виртуальная память в сумме "съедает" около гигабайта!

Вот еще один пример из жизни: в Linux не удается настроить dial-up-соединение, советы из печатной документации не помогают, а электронная не балует полнотой и за очередным HOWTO отсылает (явно с издевкой) в Internet. Для новичка ситуация фактически патовая -- в лучшем случае он подключится к Internet из Windows, найдет кипу информации о всевозможных конфигурационных файлах и вынужден будет бесконечно переходить из системы в систему для их проверки.

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

К сожалению, полного решения проблемы общего пространства (для Windows -- это файл, для Linux -- специальный раздел) подкачки я не знаю. Частный случай Windows 9x и Windows 2000/XP прекрасно известен ("Компьютерное Обозрение", # 18--19, 2001), и возвращаться к нему еще раз смысла нет. На самом деле эти ОС могут дружить еще крепче (после настройки, например, с помощью TweakUI), используя общие стандартные папки: My Documents, Favorites и пр.

Еще для одной пары -- Windows 2000/XP и Linux -- имеется довольно оригинальное решение. Маленькая утилита SwapFS, представляющая собой службу-фильтр для Windows 2000/XP (в чем сложность ее переноса в Windows 9х -- неизвестно), позволяет использовать из среды этой ОС swap-раздел Linux. Судя по всему (не хватило энтузиазма вникать в исходный код, хоть он и доступен), при инициализации SwapFS выполняется его форматирование в FAT, а при деинициализации -- обратно в Linux Swap. Таким образом получается некое подобие виртуального диска, содержимое которого пропадает при перезагрузке. Поэтому он лучше всего подходит для размещения временных файлов, но сгодится и для файла подкачки, если только вы не перегружаете ПК по сто раз на дню.

Устанавливать службу нужно вручную, и хотя рекомендации вполне просты и занимают лишь несколько строк, все же имеется подводный камень. Дело в том, что Linux и Windows 2000/XP по-разному нумеруют разделы. Например, на одном из моих ПК /dev/hda7 соответствует \Device\Harddisk0\Partition5. К счастью, видимо, SwapFS выполняет простейшие проверки, поэтому эксперименты завершились без потерь.



Под Windows XP ext2-разделы можно монтировать динамически
Из трех рассматриваемых в статье ОС самая "ущербная", безусловно, Windows Me (как и все семейство 9x), замкнутая в мирке FAT. Linux, напротив, -- самая "всеядная". FAT давно для нее не загадка, поддержка NTFS встроена в ядро, начиная с версии 2.4. В современном состоянии этот драйвер уже обеспечивает операции и чтения, и записи. Windows XP, естественно, даже не пытается работать с "чуждыми" файловыми системами. Тем не менее все ОС можно уравнять в правах (с некоторыми оговорками), если воспользоваться ПО сторонних разработчиков.

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

Бесплатная утилита explore2fs имеет explorer-подобный интерфейс и работает во всеми современными версиями Windows. Программа достаточно проста и во многих вопросах не идеальна -- скажем, почему-то файл нельзя открыть двойным щелчком, нужно обязательно заглянуть в контекстное меню. С кириллическими кодировками также не все в порядке, впрочем, это -- беда всех аналогичных разработок. Но с основными обязанностями -- просмотр и копирование файлов (возможность записи также имеется, но разработчики рекомендуют ею не пользоваться) -- explore2fs справляется вполне успешно.

Paragon Ext2FS Anywhere, напротив, -- полноценный драйвер со вспомогательной настроечной оболочкой. В Windows 9х она фактически не нужна, драйвер активизируется автоматически, и для его деактивации приходится полностью деинсталлировать программу. Зато под Windows 2000/XP монтировать ext2-тома можно динамически, хотя с обратной операцией также возникают проблемы: обычно Ext2FS Anywhere считает, что новоявленный диск кем-то используется (не исключено, что это просто перестраховка разработчиков) и предлагает перезагрузить ПК. В остальном драйвер функционирует совершенно прозрачно, и неискушенный пользователь даже не догадается, что работает с непривычной файловой системой. Дополнительные возможности программы -- умение создавать/удалять, скрывать/показывать и форматировать разделы всех типов из среды Windows.

Имеется бесплатная версия, но в ней слишком жесткие ограничения. Полная же версия обойдется примерно в $13 (по-видимому, любимая сумма для многих российских разработчиков), поэтому прямой смысл приобрести ее в составе одного из пакетов утилит. Вся информация содержится на сайте разработчиков.

Последнее, что нам осталось, -- научить Windows 9x понимать NTFS. Здесь также есть несколько возможных решений, но наибольшего доверия заслуживает, пожалуй, одно. Речь идет о NTFS for Windows 98 знаменитых программистов из Sysinternals. В частности, эта программа интересна тем, что в ней частично используется код от самой Microsoft -- пользователь должен извлечь из дистрибутива Windows NT/2000/XP несколько системных файлов, которые необходимы для функционирования программы. Может и не слишком элегантно, зато (как любит ввернуть небезызвестный Хрюн) -- внушает.

В остальном программу комментировать нет надобности -- абсолютно прозрачный для системы драйвер, в бесплатной версии обеспечивающий только чтение с NTFS-томов (полная же требует оплаты из расчета $49 на администратора, каждый из которых может применять ее на любом количестве машин).

Таким образом, подружить весьма разнородные ОС не так уж сложно. Ну, быть может, не подружить, а только добиться их мирного сосуществования. Главное другое -- пользователи могут самостоятельно создать идеальную конфигурацию для эффективного их изучения. В чем и желаю им успехов.


От переводчика


Большинство пользователей компьютеров даже не подозревают какая мощь заложена в их аппаратные средства ? так как они используют программное обеспечение в конфигурации "по умолчанию". К сожалению, ожидать максимальных показателей производительности от "умолчальных" конфигураций не приходится &150; ведь они обязаны работать на подавляющем большинстве компьютеров, а следовательно подразумевают некий средний компьютер, ради которого производительность приносится в жертву совместимости. Однако существуют люди, которых не удовлетворяет такая ситуация ? в мире Windows именно такие люди "роются" в дебрях системного реестра и пишут разного рода твикеры. К счастью, в мире бесплатных UNIX-подобных операционных систем все обстоит гораздо проще ? надо лишь немного почитать документацию (см. man tuning в FreeBSD) и все "секреты" операционной системы будут у вас как на ладони ? фраза "читайте доки, они ? рулез" набирает все большую популярность среди опытных пользователей. Предлагаемая вниманию читателей статья является очень хорошей иллюстрацией того, к чему может привести даже незначительная оптимизация работы FreeBSD-системы чисто программными средствами. Несмотря на, казалось бы, элементарные действия по настройке, автору удалось добиться впечатляющих результатов не только в плане повышения производительности, но и стабильности работы операционной системы в целом. Надеюсь, читатели заинтересуются темой оптимизации использования доступных вычислительных ресурсов.



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


/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



Отдых на рабочем месте


Когда нет текущей работы, очень тянет развлечься: или в чате посидеть, или игрушку погонять. В самом деле, как не запустить какой-нибудь шутер или симулятор, когда в руках P4 с GeForce3? Но вспоминаются грозные предупреждения начальства о запрете на игры на рабочем месте и в рабочее же время. Как же быть, особенно когда монитор "смотрит" на входную дверь?

Помимо игры, загрузите какой-нибудь DOS-редактор в Hex-режиме, можно еще сделать произвольный график (в том же Word'е). Если зашел начальник и заметил игру, не нервничайте: еще 3-5 секунд играйте, потом делайте . На соответствующие вопросы отвечайте, что проводите оптимизацию быстродействия машины. На следующий вопрос: "Причем тут игра?" - отвечайте, что тестирование происходит на ресурсоемких приложениях, коим игра и является. Можете в довершение показать график - и углубляйтесь в изучение шестнадцатеричных чисел, пока он не выйдет.



Отслеживание квот


Экран 1. Активизация квотирования.

Системы Windows 2000 Server и NT Server часто используются в качестве файл-серверов. Слабое место NT - отсутствие у системного администратора встроенных инструментов для отслеживания и ограничения дискового пространства на сервере, занимаемого отдельными пользователями. Чтобы устранить этот пробел в функциональности NT, независимые поставщики выпускают несколько продуктов для управления квотами. Но в Windows 2000 уже есть базовые функции квотирования, которые во многих случаях позволяют обойтись без дополнительных инструментов. Функции управления квотами Windows 2000 построены на базе механизма квотирования NTFS (на томах FAT квоты выделить нельзя) в соответствии с моделью обслуживания отдельных томов и пользователей. Иными словами, администратор может использовать интерфейс, показанный на Экране 1, чтобы указать предупреждения и ограничить дисковое пространство, предоставляемое в распоряжение пользователя на томе NTFS.

Рисунок 4. Как работает файл метаданных $Quota.

NTFS хранит информацию о квотировании в файле метаданных \$Extend\$Quota, состоящих из индексов $O и $Q. На Рисунке 4 показана структура этих индексов. Точно так же, как NTFS назначает каждому дескриптору безопасности уникальный внутренний ID безопасности, каждому пользователю назначается уникальный ID пользователя. Когда администратор определяет информацию о квоте для пользователя, NTFS назначает ID пользователя, соответствующий идентификатору SID пользователя. В индексе $O создается запись, которая отображает SID на ID пользователя, индекс сортируется по ID пользователя; в индексе $Q создается запись для управления квотой. Запись управления квотой содержит величину квоты, выделенной пользователю, а также размер занимаемого дискового пространства.

Когда приложение создает файл или каталог, NTFS получает SID пользователя программы и отыскивает соответствующий ID пользователя в индексе $O. NTFS записывает ID пользователя в атрибут $STANDARD_INFORMATION нового файла или каталога и засчитывает все дисковое пространство, выделенное файлу или каталогу, в счет квоты пользователя. Затем NTFS отыскивает элемент квоты в индексе $Q и определяет, не превысил ли пользователь своего порога предупреждения или дискового лимита. Если выделение нового пространства привело к превышению порога, то NTFS принимает соответствующие меры: например, заносит запись в журнал системных событий или запрещает пользователю создать файл или каталог. По мере изменения размера файла или каталога NTFS обновляет запись управления квотой, связанную с ID пользователя в атрибуте $STANDARD_INFORMATION. Система NTFS использует метод универсальной индексации для эффективной привязки ID пользователя к SID учетной записи и быстрого поиска информации о квоте пользователя по его идентификатору.



к одной из двух групп


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

overlay1 = <XY01>,

По умолчанию никаих "групп перекрытий" нет.


"Папа, я, когда вырасту, тоже стану рутом!"


Когда-то установка Linux была значительной проблемой, до того неприятной (особенно для новичков), что в одном форуме кто-то написал "надо чтобы перед установкой Linux проверял, есть ли на диске Windows, и если есть, то брал конфигурацию железа с нее". Последние версии ставятся проще, чем Windows 98. Устанавливать его можно с дискового раздела, по сети, по ftp, но я всегда пользовался только установкой с загрузочного CD-ROM, оставив первые варианты экстремалам. Выбор самого дистрибутива дело очень личное и может повлиять на всю вашу последующую жизнь. Каждый дистрибутив имеет свои особенности и недостатки. Для меня существенным недостатком является английский язык, поскольку я предпочитаю не приспосабливаться к компьютеру, а приспосабливать его под себя. Еще большим недостатком я считаю заботу обо мне со стороны неназываемой фирмы, в виде сокрытия настроек и информации. С другой стороны большим удобством является, когда приложение при удалении само вычищает диск от продуктов своей жизнедеятельности. Таким образом, я и связался с ASPLinux. Это совместимая с Red Hat Linux русская версия с некоторыми оригинальными добавлениями, вроде дополнительного загрузчика ASPloader. Также совместимость означает наличие в ASPLinux программы управления пакетами RPM (Redhat Packet Manager).

Предполагается, что вы приобрели лицензионную версию (например, купили в ларьке у метро или скачали из Интернета)! Затем принесли домой, и поставили диск в лоток. Перезагрузились и увидели много строчек на английском, в которых предлагается выбрать вариант установки. Самый простой - это установка в графическом режиме. Выберите язык, клавиатуру и мышь (они, в отличие от языка, сразу определяются правильно). Опция "Эмулировать 3х кнопочную мышь" не приведет к появлению третьей кнопки, но позволит интерпретировать одновременное нажатие на обе как нажатие на третью.

Затем вам предложат выбор варианта установки, советую выбрать "Выборочно". Другие варианты хуже установки Windows XP, та хоть диск без предупреждения не форматирует. После это можете разбить диск программами DiskDruid или fdisk (не путать с fdisk для DOS или Windows, это все разные программы). Если у вас достаточно большой диск, то советую в начале диска сделать небольшой раздел, примерно 20MB, который обозначить /boot. Это полезно, поскольку не каждый загрузчик умеет работать с большими дисками, да и соображения безопасности тоже не будут лишними. Основной раздел следует маркировать как /. Затем идет выбор файловой системы. Основная файловая система Linux называется Ext2fs, дополнительно можно использовать FAT и многие другие. Если вы не хотите отказываться то Windows, то можно использовать раздел FAT даже для постановки системы. Это лишит вас некоторых дополнительных возможностей, например системы привилегий для Ext2fs. В Linux для размещения данных подкачки используется специальный раздел с файловой системой Swapfs. Этот раздел рекомендуется сделать примерно в полтора раза больше оперативной памяти. После установки эти разделы будут автоматически смонтированы. Здесь же делаются первоначальные установки RAID.

Если еще не решились полностью разметить весь диск под ext2fs, а из сентиментальных соображений оставить какую-либо другую операционную систему, то следующим этапом идет конфигурирование системного загрузчика lilo (LInux LOader). Lilo можно ставить либо в MBR (Master Boot Record), либо в первый раздел диска. Советую использовать второй вариант, если вы сделали к тому моменту раздел /boot, как я писал выше. Тут же предлагается создать системную дискету. Не отказывайтесь! Начальная конфигурация сети проходит в том случае, если у вас есть сетевые устройства. Настройка их достаточно стандартна, вам предлагается выбрать IP-адрес, маску, адрес сети и широковещательный адрес в первой панели. И имя компьютера, адреса шлюза и серверов DNS во второй, для каждого из интерфейсов. Также для каждого интерфейса имеется две кнопки "Использовать DHCP" и "Активизировать при загрузке". DHCP нужно оставить только если ваша сеть его использует. Активизация интерфейса при загрузке означает, что его не нужно будет каждый раз включать вручную (некоторым это нравится).

Введите пароль для рута, введите пользователей. Настоятельно советую не использовать возможности рута постоянно, поскольку они не безграничны. Если вы снесете себе всю систему, то погибнет и рут. Заведите хоть одного простого юзера. И ни в коем случае не отключайте "shadow passwords" и "MD5 cryptography"!

Выбор установки - это выбор пакетов. Они распределены по группам, каждая из которых имеет достаточно красноречивое название. Кстати, правильный выбор необходимых пакетов ДЕЙСТВИТЕЛЬНО позволяет сэкономить место на диске. Если ваши требования ограничиваются только сервером сети, то следует подумать "А нужна ли мне графическая оболочка?". В этом случае, как правило, не нужна. С другой стороны средства кластеризации явно лишние для 99.9% всех компьютеров, особенно если на них нет сети. Но, по крайней мере, на один компьютер в локальной сети нужно установить Kernel Development и Development. Это потребуется при окончательном конфигурировании.

После выбора пакетов вам предложат сконфигурировать графическую оболочку. Выбор конфигурации в стандартном дистрибутиве небольшой, позднее придется ее перестроить, но об этом потом. А сейчас выберете графическую карту из списка доступных, не обольщайтесь его размером, в действительности там немного изначально сконфигурированных серверов. Если у вас не Savage или Rage, а что-нибудь посовременней, то выбор практически не отличается от стандартного SVGA. Выберите объем графической памяти. Кнопку "Проверить" нажимать не рекомендуется. Поскольку сама графическая среда полностью не загружена и не отконфигурирована, то эффект может быть абсолютно неожиданный, даже если все установки верны.

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



Парадокс выбранной профессии


Работа сисадмина богата парадоксами, которые вы первое время не замечаете. Они проявятся после того, как вашими усилиями будет наведен порядок в офисной технике. Они будут основываться на разногласиях по поводу вопроса - хорошо работает сисадмин или плохо? Что делает сисадмин, когда вся техника стабильно работает, ничего не зависает, принтер не "жует" бумагу? Правильно - ничего! Но ведь все стабильно работает - значит, сисадмин работает хорошо?! И, напротив, если сисадмин чем-то занят, это значит, что-то не работает - выходит, сисадмин работает плохо?! Именно из-за этого парадокса чаще всего и увольняют сисадмина - в глазах начальства он выглядит бездельником, хотя на самом деле он просто молодец.

Вряд ли можно найти "честный" выход из данной ситуации - по крайней мере, я такого не знаю. А нечестный путь: Устройте маленький контролируемый саботаж. Какой именно - это уже зависит от навыков и фантазии. Через локальную сеть, к примеру, можно испортить на чьей-нибудь рабочей станции реестр (разумеется, сделав предварительно резервную копию). Потом посидеть часок с умным видом, незаметно переписать копию на место и выйти победителем. Но я вам этого не говорил!



Каждый параметр имеет имя, значение


Каждый параметр имеет имя, значение и набор атрибутов. Имя может состоять из букв, цифр и специальных знаков. Значениями могут быть числа (целые), строки, массивы и хеши (ассоциативные массивы).
Для объявления типов параметров, или присвоения целого или строкового значения параметру, используется встроенная команда typeset. Значения строкового или целого типа могут присваиваться простым приравниванием -- ИМЯ=ЗНАЧЕНИЕ. Для присваивания других типов параметров используется команда typeset.
Позиционные параметры используются для доступа к аргументам командной строки для функции или скрипта командного процессора. Специальные параметры *, @ и argv являются массивами, которые содержат все позиционные параметры. Позиционные параметры могут быть изменены после запуска скрипта или функции с помощью встроенной команды set.