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

         

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


В первозданном виде файловая система ext2 требует размонтирования перед операциями resize. Однако имеется patch (ext2online), снимающий это ограничение. Узнайте у поставщика вашего дистрибутива, поддерживает ли это ваше ядро. Увеличить размер non-patch ext2 под новый размер логического тома можно следующей последовательностью команд:
# umount /dev/LIN/tomusr
# lvextend -L+1G /dev/LIN/tomusr
# resize2fs /dev/LIN/tomusr
# mount /dev/LIN/tomusr /usr
Для усечения ext2 командой resize2fs следует отказаться от умолчания (по умолчанию файловая система заполняет весь имеющийся объём) и передать в виде параметра новый размер в файловых блоках:
# umount /usr
# resize2fs /dev/LIN/tomusr 54000
# lvreduce -L-1G /dev/LIN/tomusr
# resize2fs /dev/LIN/tomusr
# mount /usr
Обратите внимание, промежуточный размер файловой системы должен быть заведомо меньшим, чем новый размер логического тома, но достаточным для сохранения имеющихся данных.

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



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


Файловая система reiserfs может расширяться как в смонтированном, так и в размонтированном состоянии. Выбирайте как вам удобнее. Для увеличения размера:
# lvextend -L+3G /dev/LIN/tomhome
# resize_reiserfs -f /dev/LIN/tomhome
или
# umount /dev/LIN/tomhome
# lvextend -L+3G /dev/LIN/tomhome
# resize_reiserfs -f /dev/LIN/tomhome
# mount -treiserfs /dev/LIN/tomhome /home

Операция по уменьшению размера логического тома и файловой системы технически более сложная и может выполняться только на размонтированной fs.
# umount /home
# resize_reiserfs -s-4G /dev/LIN/tomhome
# lvreduce -L-3G /dev/LIN/tomhome
# resize_reiserfs -f /dev/LIN/tomhome
# mount -treiserfs /dev/LIN/tomhome /home

Замечание по промежуточному размеру файловой системы остаются в силе (обратите внимание, reiserfs понимает размер не в блоках). Файловые inodes создаются динамически по необходимости. Вы можете создать файловую систему размером 1 Gb и в дальнейшем растянуть её хоть на 100 Gb, при этом, не нарушив баланса между управляющими структурами и блоками данных.



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


Файловая система xfs в настоящее время не может усекаться (для серверов это не критично, для АРМ может представлять проблему). Увеличение размера происходит в смонтированном состоянии. Обратите внимание, в качестве аргумента следует передавать строго точку монтирования, но не имя устройства.
# lvextend -L+3G /dev/LIN/tomvar
# xfs_growfs /var

У команды xfs_growfs имеется множество опций. Ознакомьтесь с ними внимательно и разберитесь в особенностях этой сложной и высокопроизводительной файловой системы перед началом работы.



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


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

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

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


ext2 ? традиционная для Linux файловая система, после появления ext3 смысл её использовать есть только на разделах, которые должны поддерживаться сторонним программным обеспечением (например драйверами ext2 от других ОС).



ext3 ? сделана на базе ext2, отличается только наличием журналирования. Полностью обратно совместима с ext2 (то есть любое ПО умеющее читать ext2 прочитает ext3), конвертирование ext2 в ext3 заключается только в создании файла журнала (что делается командой ?tune2fs -j <устройство с FS>?). Единственная из описываемых поддерживает журналирование данных, а не только метаданных (при использовании параметра data=journal), которое, как ни странно, в некоторых случаях даёт увеличение производительности. Одна из самых надёжных файловых систем для Linux (второй является xfs, но её пока нет в стабильной ветке ядра), активно продвигаемая компанией Red Hat, и оттестированая на огромном количестве пользователей.

reiserfs ? новая журналируемая файловая система, которая отличается от других с точки зрения администратора в первую очередь хорошей скоростью работы с каталогами, в которых большое количество маленьких файлов. В отличии от ext2/3 в ней используются для поиска файла в каталоге B-tree и хэши (в ext2/3 используются списки, в 2.5.* ветке уже внесены модификации добавляющие B-tree поиск). Кроме того она умеет компактно хранить хвосты от файлов для экономии места, обычно расходуемого впустую.

xfs ? разработка SGI недавно перенесённая в Linux. Для ядер 2.4.* существует в виде патчей (уже присутствующих в большинстве современных дистрибутивов), оптимизированая для быстрой работы с файлами большого размера (multimedia данных), обладающая великолепной надёжностью, имеющая поддержку ACL (полезно для файл-серверов с Windows-клиентами) и EA (до конца зачем они нужны понимают лишь бывшие пользователи OS/2, остальные смотрят на них с удивлением).



Файлы, файлы, файлы


Виктор Хименко
Журнал "Мир ПК", #02/2000

Человеку, ранее работавшему с DOS или Windows, при общении с Linux прежде всего бросаются в глаза использование символа `/' вместо '\', отсутствие имен дисков (A:, B:, C: и т. д.) и то, что в именах файлов различаются большие и маленькие буквы. Однако другие особенности, не столь заметные с первого взгляда, более существенны. Давайте посмотрим, как устроена в Linux работа с файлами.

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

Хотя Linux поддерживает более десятка самых разных файловых систем, все "иностранные" (foreign) системы так или иначе маскируются под стандартно используемую в этой ОС ext2fs. Давайте с нее и начнем.



Файлы и "права доступа" к ним


Поскольку Unix - система многопользовательская, в ней предусмотрен механизм ограничивающий доступ юзеров к файлам и директориям.

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

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

Во-первых, если юзер и вносит какие-то изменения в файлы или директории, он это делает с помощью каких-то программ (редакторов, "коммандеров", системных утилит для копирования, удаления файлов и т.п.), которые в момент выполнения являются процессами. Во-вторых (что более важно), не все программы запускаются юзерами "вручную". Некоторые из них (демоны) запускаются при старте системы. Другие могут запускаться в определенные моменты времени (с помощью программы cron), или вызываться по мере необходимости для обслуживания запросов приходящих по сети (обычно их запускает программа-"диспетчер" inetd). Кроме того, существует ряд программ, которые для выполнения каких-то вспомогательных действий сами запускают другие программы (в этом случае говорят, что процесс-"родитель" запустил процесс-"потомок"). Понятно, что хотелось бы и этим программам (процессам) ограничить доступ к файлам. И наконец, в-третьих, в некоторых случаях очень полезно, чтобы программа, запущенная юзером, имела больше прав, чем обычно имеет этот юзер. Например, обычный юзер не может даже читать файл, в котором "спрятаны" пароли всех юзеров. В то же время, любой юзер должен иметь возможность поменять свой личный пароль, не обращаясь для этого к администратору. Но для этого ему надо иметь возможность записать что-то в файл паролей. Значит программа, которая это делает (passwd) в момент выполнения должна иметь права намного большие, чем юзер, который ее запускает.


Не вдаваясь в подробности, можно сказать, что

каждый процесс имеет идентификатор юзера (userID). Обычно он совпадает с userID'ом того юзера, который запустил этот процесс. процессы, которые запустились автоматически, тоже имеют userID, как будто их запустил реальный юзер. Чей именно userID получают эти программы обычно определяется теми программами, которые их стартуют (программа-загрузчик, cron, inetd и т.д.). В простейших случаях программы-"потомки" просто "наследуют" userID от программы-"родителя", но некоторые "родители" могут запускать программы с другим userID'ом (не совпадающим с собственным). некоторые программы в процессе выполнения могут поменять свой userID и, соответственно, получить права, которые сам юзер не имел. Естественно, для того, чтобы программа могла это сделать, администратор должен "разрешить" ей такое поведение (подробнее об этом будет сказано ниже). Кстати, изменение userID'а делается не только, когда нужно "расширить" права программы, но и наоборот - "сузить" до прав какого-нибудь конкретного юзера. если процесс может изменять свой userID, то различают "реальный userID" и "эффективный userID" (есть еще "сохраненный userID"). Реальный userID - это идентификатор юзера, который запустил процесс (или userID процесса-"родителя"). А эффективный - это новый userID, который задача получила во время выполнения. права на файл (или директорию) определяются по "эффективному userID" процесса. В простейшем случае, когда userID не меняется, "реальный" и "эффективный" userID'ы совпадают и можно говорить просто об userID'е процесса. Или даже просто о правах юзера (а не процесса) на файл.

Итак.

Какие атрибуты файла определяют "право доступа".

Владелец файла и группа "допущенных".

Собственно "права доступа" (permissions).

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

Дополнительные биты доступа

"Странные" сочетания битов доступа.

Флаги.

С какими правами файл "рождается"

И с какими правами он "перерождается" (после копирования или перемещения).

Как поменять...



Владельца и группу.

Права доступа (permissions)

Флаги.

Что делать если этого не хватает?

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


Файлы, используемые при запуске


При запуске zsh читается некоторое количество файлов, содержащих команды инициализации. В первую очередь читается файл /etc/zshenv, затем читается файл $ZDOTDIR/.zshenv. Затем, если запускаемый процесс используется для входа в систему, то читаются файлы /etc/zprofile и $ZDOTDIR/.zprofile. Затем, если оболочка является интерактивной, читаются файлы /etc/zshrc и $ZDOTDIR/.zshrc. И наконец, если процесс используется для входа в систему, то читаются файлы /etc/zlogin и $ZDOTDIR/.zlogin.

Когда происходит выход из оболочки, использовавшейся для входа в систему, то читаются файлы $ZDOTDIR/.zlogout и затем /etc/zlogout. Если переменная ZDOTDIR не установлена, то вместо нее используется значение переменной HOME. Файл /etc/zshenv читается при запуске любого процесса zsh, поэтому он должен быть настолько малым, насколько это возможно. Все перечисленные файлы могут быть откомпилированы с помощью команд zcompile. Откомпилированные файлы имеют расширение .zwc, и загружаются в том случае, если они новее исходного файла.



Файлы Xmodmap для нескольких языков


Французский

Хорватский

Чешский

Copyright © 2001, Juraj Sipos.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 64 of Linux Gazette, March 2001

Вернуться на главную страницу



Fastdesk


Построение быстрого Linux-десктопа.  (Linux на старых компьютерах)

- John Murray, 9.02.2002. Перевод - DVR. -

Введение:

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

Так что - я установил на мою машину "в двойной загрузке" Win95 и Linux, и начал экспериментировать с различными дистрибутивами. Сначала я разочаровался в быстродействии Linux, и только потом до меня дошло, что можно сильно улучшить быстродействие с помощью использования менее требовательного программного обеспечения. То, что большинство документации ориентируется на Gnome/KDE, игнорируя все остальное, сделали процесс изучения еще труднее. Это - статья о легком программном обеспечении, которое хорошо работает на машинах ниже среднего. Так как многие просто не могут позволить себе иметь компьютер хотя бы среднего класса, высокиe аппаратные требования Windows 2000/XP могут быть благословением для пользователей Linux с ограниченным бюджетом. Им станет так же доступно оживить свои старые машины, как пользователем Windows модернизировать (в аппаратном смысле) свои.

Gnome и KDE - красивые и предлагающие много возможностей графические оболочки, стоящие практически на одном уровне с другими desktop-ориентированными OS, но это - не лучший выбор для медленной машины. Последующие версии будут более ресурсоемкими и медленными. И если ваши аппаратные средства ограничены - это не означает, что вам придется переходить на работу только в консоли, потому что можно элементарно сделать красиво смотрящийся Linux-десктоп, работающий прилично даже на старом Pentium с 32 - 64 мегабайтами памяти.

Чтобы создать быструю настольную систему, нужно точно подобрать менеджер окон и приложения, которые подходят вашим аппаратным средствам. Кстати - то, что вы не используете KDE или Gnome, еще не означает, что вы вообще не должны устанавливать их. Приложения, разработанные для KDE или Gnome будут работать очень хорошо и под легкими менеджерами окон, так что - если у вас есть достаточно дискового пространства, я рекомендую установить сразу же и KDE и Gnome. В статье перечислены программы для выполнения большинства повседневных работ, которые прекрасно идут на моем 233/64 (а большинству из этих программ было бы достаточно и 32Mb). Имейте в виду, что эти программы являются только моими собственными личными предпочтениями. Конечно же, в мире Linux всегда существует какой-нибудь другой путь.

Критерии Выбора:

1) Быстродействие - программа должна быть как можно более быстрой и стабильной на более старых аппаратных средствах.

2) Графический интерфейс - большинство начинающих пользователей не любят командную строку.

3) Функциональность - программа должна делать все, что ожидает от подобной программы обычный пользователь.

4) Простота в установке - должна быть простой, без перекомпиляции ядра и непонятных зависимостей.

5) Простота в конфигурации - вы не обязаны быть профессионалом, чтобы правильно сконфигурировать программу.

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

Где найти пакеты:

Вы найдете большинство из них практически во всех Linux-дистрибутивах или по ссылкам в интернете, которые чаще всего указывают или на домашнюю страничку разработчика, или на FTP сервер. Если ваш дистрибутив не совместим с RedHat, то вам придется поискать подольше.

Оконный менеджер:

Есть много хороших и легких менеджеров окон, мой любимый - IceWM. Даже тем, кто имеет небольшую память, IceWm позволяет иметь обои и темы. Кроме того, он имеет знакомый формат Win95 с кнопкой "Пуск", меню, панелями инструментов и так далее.

Конфигурировать IceWm чрезвычайно легко, и, хотя и существуют графические инструментальные средства, это та же легко сделать с помощью простого редактирования файлов конфигурации. Глобальные файлы конфигурации обычно находятся в /usr/X11R6/lib/X11/icewm/ и они называются preferences, menu и toolbar. Сделайте скрытую папку названную .icewm в вашей домашней директории и скопируйте эти три файла в нее. Затем просто отредактируте их под ваши собственные потребности и вкусы...

IceWm включается во многие последние дистрибутивы Linux, и имеет очень хорошую документацию в /usr/doc/icewm.

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

Файловые менеджеры:

Из файловых менеджеров, которые я попробовал, я предпочитаю XWC (X Window Commander) из-за своей скорости и опять же из-за знакомого интерфейса. XWC - аналог Explorer'а в Windows 95, который поддерживает drag'n'drop, файловые ассоциации, и т.д. Хотя ему и недостает многих характеристик Nautilus или Konqueror, но все равно он имеет все, что мне нужно, и не слишком много занимает. Как и IceWm, он очень легко конфигурируется встроенными в меню опциями или редактированием файла ~/.foxrc/XWC. Хотя я и предпочитаю то, что не смотрится так Windows-подобно, но все равно - XWC работает хорошо и быстро. Можно обратить внимание так же и на то, что XWC открывается на том же месте, где он был закрыт последний раз. (Если вы последний раз использовали XWC, чтобы просмотреть сменный носитель (например, /mnt/cdrom), и вы используете supermount, то перед запуском XWC может быть задержка, если это устройство в данный момент не установлено). Для работы XWC требуются библиотеки Fox.

Похоже на то, что сейчас XWS прекратил свое развитие и доступен только в формате RPM. Но его дело продолжает foXcommander, который является частью проекта foX desktop, доступный не только в RPM, но и в исходниках.

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

Текстовые редакторы:

Хотя XWC и имеет свой собственный редактор, мне больше нравится Nedit. Nedit довольно небольшой, быстрый и имеет множество полезных возможностей, включая синтаксическое выделение, "найти и заменить", поддержку макросов, доступ из командной строки и т.д. Так же Nedit имеет хорошую встроенную помощь. Существует много других текстовых редакторов со своими поклонниками (особенно vi), но если вам нужен хороший WYSIWYG редактор, то Nedit отлично с этим справляется.

Интернет:

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

Я надеюсь, что скоро пользователи Linux будут иметь броузеры, намного опережающие по быстродействию броузеры для других операционных систем. Но сейчас Netscape 4.7x, вероятно, наилучший всесторонний графический броузер для использования на компьютерах с 32Mb памяти. Хотя он и может иногда подтормаживать, но он хорошо работает с Java/JavaScript, и поддерживает многие известные plug-in'ы. Сначала вам придется зайти в Edit > Preferences и поставить там свои любимые шрифты - тогда странички будут выглядеть лучше. Если у вас есть 64Mb или более, вы можете попробовать Mozilla или один из его потомков (например, Galeon достаточно популярен). Они кое-где превышают Netscape 4.7x по возможностям, но нельзя сказать, что они быстрее. Можно попробовать последние версии Netscape, такие, как 6.1 или 6.2, которые в основном неплохие и стабильные. Многие предпочитают броузер Opera, но его интерфейс несколько непривычен.

Так же есть броузер, называемый Dillo, и его стоит попробовать. Dillo очень быстр и неплохо выглядит. Он все еще находится в разработке, и не работает с фреймами, java или javascript, так что вы, вероятно, не сможете сделать ваш банковский online перевод с его помощью. Он идеален для просмотра локальных html файлов (например, таких, как файлы помощи или /usr/doc/*.html файлы). Я использую Netscape для работы в интернете и Dillo для локальных файлов.

Email. Netscape и Mozilla имеют встроенные email клиенты, хотя они довольно медлительны. Многие пользователи рекомендуют Sylpheed, и это именно - то, чем я сейчас пользуюсь. Sylpheed очень быстр, и имеет хороший и понятный интерфейс. Он так же хорош для чтения новостей. Так же вы можете попробовать Pan - программу под Gnome, которая может работать с бинарными вложенными файлами.

Еще одна нужная утилита - это tnef. Она предназначена для распаковки вложенных файлов MIME в формате "ms-tnef", с которыми работают почтовые сервера Outlook и Exchange. Хотя это и консольная программа, но она легка в использовании и быстро работает.

Существуют графические ftp-клиенты, и я немного поработал с gFTP (который работал отлично), но сам я предпочитаю консольный ncftp.

Графика:

Для просмотра графических файлов я использую XLI (xloadimage). Он быстр, и я могу просматривать большие картинки, прокручивая их мышкой, хотя ЕЕ (Electric Eyes) также очень хорош. Как EE, так и XV позволяют просматривать миниатюры графических файлов, и проделывать простые манипуляции. Хотя Gimp и нельзя назвать "легкой" программой, но возможности, которыми он обладает, делают этот редактор незаменимым для всех. На 32Mb памяти он работает нормально.

Музыка и Видео:

XMMS - это очень популярный WinAmp клон, который может играть mp3, wav, cdr файлы, и т.д. Так же он поддерживает скины, включая WinAmp'овские. Для mpeg видео я использую проигрыватель mtvp (часть пакета mtv), который работает очень хорошо на слабых машинах. XAnim проигрывает .mov и .avi файлы, но не очень хорош для mpeg. И если вы читаете это, вы, вероятно, не имеете достаточно аппаратной мощи, чтобы проиграть DVD. Многие люди рекомендовали мне MPlayer и его работа действительно впечатляет. Он может проигрывать множество форматов и очень быстр. Единственный недостаток - это то что он должен быть скомпилирован из исходников, и это может обескураживать некоторых новичков, хотя в моем случае процесс компиляции прошел без проблем.

Есть также много графических оболочек (front end'ов) к программам для записи на CD. Я немного попробовал работать с самим популярным xcdroast, но главным образом я все еще использую инструментальные средства командной строки, такие, как cdrecord, mpg123, bladeenc и т.д.

Офисные приложения:

Текстовые процессоры - Выбор текстовых процессоров достаточно велик. Если вам нужны только основные функции текстового процессора, используйте AbiWord. Вы сможете импортировать туда простые .doc файлы, не содержащие таблиц и т.д. Несмотря на ограничения, AbiWord - быстрая и полезная программа. KWord - текстовый процессор KDE, и он смотрится и работает очень хорошо, тем не менее он ограничивает совместимость с MS .doc файлами. Обычно я использую ApplixWords (см. раздел Офисные Блоки). А Corel's WordPerfect, кажется, исчез с лица земли...

Электронные таблицы - Довольно трудно рекомендовать конкретную электронную таблицу, потому что каждому пользователю нужно что-то свое. Хотя я и я использую ApplixWare, Gnumeric - еще одна неплохая программа, которая удовлетворяет моим довольно скромным потребностям, и хорошо читает файлы, созданные в Excel. KSpread, подобно KWord, также достаточно хорош, но не совместим полностью с форматами Microsoft.

Офисные Блоки - Они обычно включают текстовый процессор, электронную таблицу, разработчик презентаций, графику и т.п. Несмотря на тот факт, что это коммерческое ПО, ApplixWare получает мой голос как мой любимый офисный блок. Исконно написаный для Linux, Applix хорош, и имеет более чем достаточно характеристик, чтобы удовлетворить мои потребности. Как текстовый процессор, так и электронная таблица, кажется, совместимы с большинством MSOffice форматов, и документация так же хороша. Мне кажется, что за все это стоит заплатить. KOffice - хорошо смотрящийся блок KDE2, единственный недостаток которого - несовместимость с MSOffice файлами, тем не менее для некоторых людей это не будет проблемой, и надо надеяться, что этот недостаток скоро будет исправлен разработчиками KOffice. StarOffice - вероятно, наиболее популярный Linux блок, но откровенно я не

могу согласиться с этим. Я испытываю особенную неприязнь к монолитной разработке, и даже на мощной машине он занимает слишком много ресурсов. Тем не менее, он имеет массу характеристик для персонального использования, и MSOffice-совместимость очень хороша, так что, если к вашей работе выдвигаются жесткие требования совместимости, то вы просто вынуждены его использовать. Новые версии StarOffice и его ближний родственник OpenOffice уже делают попытки избавиться от раздражающей интегрированной среды, но все это продвигается медленно.

Быстродействие:

В таблице, приведенной ниже, указано приблизительное время запуска для некоторых приведенных выше программ. Это время было измерено на 233 MHz AMD с 64Mb RAM (ядро - Linux 2.2) путем использования высоко не научного метода - нажатие на кнопку и измерение задержки. Конечно же, вычисления очень приближенные, но все равно - это интересное исследование на тему "Насколько быстро может работать старый компьютер с установленным Linux".

<
Программа

Первый запуск

Последующие запуски

XWindowsCommander

1 sec

0.5 sec

Nedit

2 secs

1.5 sec

Netscape 4.77

9 secs

4 secs

Dillo

1 sec

0.5 sec

Sylpheed

1.5 sec

1 sec

xli (XLoadImage)

<1 sec

0.5 sec

XMMS

3 sec

2.5 sec

mtvp

1 sec

0.5 sec

ApplixWords

6 secs

4 secs

AbiWord

2.5 secs

2 secs

Прочее:

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

Screensaver'ы - скорее излишество чем необходимость. Xscreensaver работает очень хорошо с легкими менеджерами окон и его легко установить. Он выполняет произвольно выбранный screensaver после периода, выбранного вами, и продолжает изменять его в заданных интервалах. Запустите xscreensaver-demo, чтобы установить настройки, или посмотрите файлы помощи для дополнительной информации. Легчайший путь, чтобы xscreensaver запускался автоматически на входе - добавить команду "xscreensaver &" в вашем сценарии запуска менеджера окна. (Например, /usr/X11R6/bin/icewm).

Шрифты TrueType - их установка больше не является проблемой. Некоторые дистрибутивы (такие, как Mandrake 7.2 или более поздние), включают средство для поддержки TrueType шрифтов, даже тех, которые установлены на Windows-разделе. Средство Mandrake названо Drakfont, и оно очень простое в использовании.

Ненужные сервисы или демоны могут замедлить вашу машину и увеличить время загрузки. Обычно после установки многие ненужные вещи оказываются включенными по умолчанию. Они не только используют ресурсы, но и уменьшают защищенность вашей системы. Вы можете использовать графическое средство, такое, как tksysv, или вручную отключить ненужные сервисы (обычно из /etc/rc.d/rc5.d ), но перед этим обязательно сделайте резервную копию системных файлов.

Ссылки:

The Linux Newbie Administrators Guide - Хорошая информация.

Linux For Old PCs - Кое-что для работы на старых компьютерах.

Linux For Kids - Игры и обучающие программы.

RPMFind
- Огромный архив RPM пакетов с возможностями поиска.

Building the Lo-Fat Linux Desktop

- Эта статья в оригинале.


Ffat


Очки для FATa №6(229)/10.02.2003

Сергей ЯРЕМЧУК grinder@ua.fm

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

— Что, не видать?

— Не видать.

Субтитры к картине «Три богатыря»

Под Linux с этим, как правило, проблем не возникает (FAT16, FAT32, NTFS поддерживаются на уровне ядра). Для доступа достаточно смонтировать дисковый раздел Windows командой:

mount /dev/hda№ /mount_point

где № — номер раздела, а /mount_point — раздел, где вы хотите видеть Windows-раздел.

Впрочем, при инсталляции, на этапе разбиения диска, Linux сам находит все FAT-разделы и спрашивает у пользователя, куда их монтировать. А если функция автоматического монтирования на этапе инсталляции не была включена, то это можно подправить путем редактирования файла /etc/fstab, который как раз и отвечает за это. Впишите туда примерно такую строчку:

/dev/hda2 /mnt/win_c vfat user,exec,umask=0,codepage=866,iocharset=koi8-r 0 0

(все должно быть написано в одну строку); естественно, впишите вместо hda2 номер своего раздела на жестком диске, а вместо /mnt/win_c — свою точку монтирования. Теперь можно полноценно работать с этими разделами, т.е. читать, записывать, удалять файлы. Плюс к этому для работы с ДОС-разделами существует консольный пакет mtools (назван так потому, что все команды начинаются на m, например mcopy, mdel, mdir и т.д.)

Как видите, с этой стороны совместимость на все сто. А как получить доступ к Linux-разделу из под Windows? Тут дела обстоят немного похуже. Microsoft игнорирует все, что ей не создано. И соответственно, Мастдай даже не подозревает, что на жестком диске есть еще одна операционная система, он в упор не видит файловые разделы отличного от FAT (NTFS и FAT в WinNT, 2000 и XP) типа. Но ведь, например, тот же Partition Magic прекрасно работает с разделами этих типов (и даже создает их). Значит, это все же практически возможно сделать.


Ну, а раз гора не идет к Магомету, то нашелся человек — John Newbigin, — решивший положить конец этой несправедливости и создавший соответствующую программу. Называется она explore2fs, найти ее можно по адресу http://uranus.it.swin.edu.au/~jn/explore2fs/explore2fs-1.00pre5.zip (356 Кб, freeware). Там же есть и краткое описание работы программы.

Программа не требует инсталляции. После распаковки архива вы обнаружите исполняемый файл, .dll-библиотеку (если не включена опция отображения скрытых файлов, то ее вы не увидите), файл readme, лицензия GPL и список изменений. Программа работает под Windows 9x/Me/NT/2000/XP. Поддерживается как ext2-, так и более новые ext3-разделы Linux. Запуск программы приводит к появлению окна подобного Windows Explorer (Рис. 1). В левом окне расположены Linux-разделы, которые разворачиваются в дерево каталогов, а в правой части — список файлов текущего каталога.

Дальше выделите щелчком нужный файл или каталог, щелкните по нему правой кнопкой мыши и просмотрите его свойства (Properties) (Рис. 2) — отображаются права доступа, uid и gid владельца. Есть возможность экспортировать файл в Windows-раздел (есть опция Экспортировать как текстовый файл); естественно, можно скопировать и каталог; также можно сразу просмотреть выбранный файл и символические ссылки. Поддерживается drag and drop, то есть можно просто скопировать все простым перетаскиванием мышкой.

   


Так, с экспортом файлов разобрались, но нам обещали еще и импорт. Автор программы предупреждает, что запись в Linux-раздел может привести к разрушению данных, но как туда вообще можно что-то записать, если, как видите, данная опция даже не активирована (Рис. 3), а в пунктах меню включить ее нет возможности. Значит, либо автор еще не закончил работу над данной опцией, либо спрятал от нас подальше ее активацию. Первый вариант отпадает сразу же так, как перед нами релиз под номером 1, а не бета какая-нибудь. Давайте рассмотрим второй вариант. Куда можно от юзера спрятать настройки подальше, чтобы он не смог до них сразу добраться? В реестр, конечно. Так, значит, вызываем редактор реестра — Пуск > Выполнить, набираем в строке regedit и в пункте меню Правка выбираем Найти. В строке для поиска вводим explore2fs — и… опа, находим все настройки в ключе реестра HKEY_CURRENT_USER\Software\Newbigin\explore2fs. Далее создаем здесь строковый параметр DangerWriteSupport и присваиваем ему значение, равное 1. Перезагружаемся. Запускаем снова программу. О правильности пути сигнализирует последний бастион на пути юзера, если хотите — последнее китайское предупреждение (Рис. 4): просьба прочитать файл Readme.txt перед включением опции записи в каждый раздел. Если вы дадите согласие (YES) (впрочем, программа на всякий случай будет переспрашивать вас об этом при каждом перезапуске), то при нажатии правой кнопкой мыши на файле можно будет увидеть, что пункты меню активированы (Рис. 5), и вас уже ничто не сможет остановить от деструктивных действий (впрочем, сама операционная система Linux еще как-то защищается от поползновений юзера). Как видите по рисунку, стали доступны следующие пункты меню: переименовать (rename), удалить (Delete), импортировать в раздел с Linux или, проще говоря, записать (Import file), а также подраздел создать (Create) с возможностью создания символической ссылки (Symbolic Link), символьного устройства (Character Device) и блочного устройства (Block Device). Сам я с записью, если честно, не очень-то экспериментировал (в принципе, мне в этом большой необходимости нет, а активировал опцию из природного любопытства), но с несколькими не жизненно-важными для системы, как правило, находящимися в разделе /home файлами все-таки не выдержал и побаловался. Результат положительный — файлы оказались после перезагрузки целы и файловая система не разрушилась, но я еще раз напоминаю, что это все на your own risk.



   
   


Теперь, пока вы набираете в строке браузера длинный адрес ссылки и скачиваете файл, я подведу некоторый итог. За время, проведенное с программой (более двух недель), проблем при ее использовании не обнаружилось, работала она устойчиво, чего не скажешь о ее более ранних версиях. Но если у вас возникли проблемы при работе под Windows 95, то выберите View > Options, перейдите на вкладку General и поставьте галочку в Use Extended Int 13 (Рис. 6). Единственное — обнаружился один маленький глюк, даже скорее глючик. Это неправильная нумерация разделов. Под Windows 98 разделы с Linux нумеровались правильно: hda5 — корневой, hda10 — раздел с /home, а вот под Windows 2000 (она у меня стоит на четвертом логическом диске после Win98, Linux и Linux swap) они почему-то стали hda2 и hda7 (Рис. 7).

   


В остальном программа здорово облегчает жизнь и, соответственно, экономит время (не надо постоянно перезагружаться), так что рекомендую для повседневного использования. Если кому интересно, то программа написана на Delphi. Вот, в принципе, и все. Пользуйтесь на здоровье. Удачи.


Firewall


А без "стены огня" нынче нельзя. И необходимость в ней не ограничивается защитой от хакеров, как думают многие. Хакеры, если будет необходимость, проникнут и через десяток firewall'ов.

Firewall интересует нас, в первую очередь, как фильтр: пропуск нужной информации и отсеивание ненужной. А последней сейчас море: баннеры, ссылки, скрипты, фреймы, счетчики и т. д.

Насчет программного продукта - я рекомендую известный AtGuard, (http://www.atguard.com). Большинство сисадминов уже оценило его возможности по достоинству. В принципе, эти возможности велики - можно даже некоторым пользователям разрешать, а некоторым запрещать, к примеру, печатать на принтер. Но эти опции мы пока трогать не будем.

Установив AtGuard на роутер, вверху экрана мы увидим полоску системных настроек. Далее настроим фильтры и firewall в AtGuard Settings. Интерфейс весьма интуитивен, настройка не вызовет затруднений. Кроме того, в рунете есть множество русскоязычной документации по настройке AtGuard.

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

Рис. 7. Фильтрация баннеров по адресам

Потратив день-два на войну с баннерами, вы с помощью фильтра сможете экономить 40-100 Мбайт в месяц. Это будет тем более кстати, если у вас помегабайтная оплата. Посмотрите на рис. 8: как вы думаете, в каком окне включен фильтр, а в каком нет?

Рис. 8. Результаты "обрезки" баннеров: (а) и (б)



Firewall и NAT (masquerading)


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

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

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

input - обрабатываются пакеты, приходящие снаружи или с loopback; forward - обрабатываются пакеты, чьи исходные и конечные адреса лежат снаружи; output - обрабатываются пакеты, уходящие наружу или loopback; определенные пользователем - используются в качестве подпрограмм, есть отлов циклов. Действия (действие в недопустимом месте эквивалентно DENY):

ACCEPT - пропустить пакет; REJECT - отвергнуть, послав ICMP Host Unreachable (если пакет не ICMP); DENY - выбросить молча; MASQ - только для цепочки forward - подменить адрес отправителя на свой, номер порта на свежесгенеренный и запомнить в таблицах ядро, чтобы обратный пакет преобразовывался автоматически; REDIRECT - только для цепочки input, TCP или UDP - несмотря на то, что пакет чужой, послать его локальному процессу на указанный порт; имя пользовательской цепочки - переход на подпрограмму; RETURN - конец цепочки (как бы возврат из пользовательской цепочки-подпрограммы); пусто - только увеличить счетчики байтов и пакетов и перейти к следующему правилу в цепочке, счетчики - 64-битные. Конфигурация производится с помощью ipchains, ipchains-save (сохранение текущей конфигурации на stdout), ipchains-restore (чтение сохраненной ранее конфигурации с stdin). После загрузки определены цепочки input (ACCEPT), output (ACCEPT), forward (ACCEPT). Основные опции ipchains:


-N имя-цепочки (создать цепочку) -X имя-цепочки ( удалить пустую цепочку, на которую нет ссылок) -L [ -v ] [имя-цепочки] (показать список правил и счетчики) -A имя-цепочки правило (добавить правило к цепочке) -D имя-цепочки номер (удалить правило с указанным номером, нумерация с 1) -D имя-цепочки правило (удалить правило по текстуальному совпадению) -F имя-цепочки (удалить все правила из цепочки) -I имя-цепочки номер правило (вставить правило в цепочку перед правилом с указанным номером, нумерация с 1) -R имя-цепочки номер правило (заменить) -M -L (показать текущие маскарадные соединения) -M -S tcp tcpfin udp (установить соответствующие timeout в секундах) -h icmp (выдать список ICMP имен) -Z имя-цепочки (обнулить счетчики) -C имя-цепочки пакет (тестировать прохождение пакета)

-P имя-цепочки действие (изменить действие по умолчанию) Шаблон правила может включать (если в качестве адреса хоста указывается имя, соответствующее нескольким адресам, то при добавляется соответствующее количество правил; восклицательный знак инвертирует шаблон):

--proto | -p [!] протокол (tcp/udp/icmp/all) --bidirectional | -b (добавляется два правила: прямое и обратное) --source | -s | --src [!] address[/mask] [!] [port[:port]] (маска может быть записана как в виде 4-х десятичных чисел через точку, так и в виде одного числа) --source-port [!] [port[:port]] --destination | -d | --dst [!] address[/mask] [!] [port[:port]] --destination-port [!] [port[:port]] --icmp-type [!] имя --interface  | -i [!] имя[+] (ppp0, lo, eth0; + - соответствует любой подстроке) --jump | -j действие [port](номер порта для REDIRECT) --mark | -m [+-]число (пометить пакет для QoS) --log | -l (запись о пакете в журнал) --numeric | -n (выводить адреса и порты в числовом виде) --output | -o [maxsize] (вывести пакет на устройство netlink) -v (повысить болтливость) [!] --fragment | -f (только для последующих кусков фрагментированных пкетов) [!] --syn | -y (имеет смысл только для TCP: только пакеты с установленным флагом SYN, отрицание означает установленный флаг ACK) --TOS | -t andmask xormask (управление битами TOS - type of service) Тщательно составленные и отлаженные цепочки сохранять по ipchains-save (ipchains.transparent_proxy_and_firewall) и восстанавливать при загрузке по ipchans-restore (/etc/rc.d).

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



start (настройки берутся из /etc/sysconfig/ipchains - делаются либо с помощью функции save, либо ipchains-save) stop restart status save (сохранить текущие настройки в /etc/sysconfig/ipchains)

panic (полная блокировка в случае атаки) Пример (/etc/sysconfig/ipchains в RH6.2 позволяет комментарии):

:input ACCEPT :forward ACCEPT :output ACCEPT # доступ к HTTP-серверу (если есть) -A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -i lo -p 6 -j ACCEPT -l -A input -s 0.0.0.0/0.0.0.0 -d 127.0.0.1/255.255.255.255 80:80 -p 6 -j DENY -l -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 80:80 -p 6 -j ACCEPT # поддержка transparent proxy -A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 80:80 -p 6 -j REDIRECT 3128

-A input -s сосед/255.255.255.255 -d наш-адрес/255.255.255.255 3130:3130 -p 17 -j ACCEPT -A input -s клиенты-proxy -d наш-адрес/255.255.255.255 3128:3128 -p 6 -j ACCEPT # NTP from LAN and dialup -A input -s сервера-NTP 123:123 -d наш-адрес/255.255.255.255 123:123 -p 17 -j ACCEPT # syslog from LAN -A input -s откуда-беррем-syslog -d наш-адрес/255.255.255.255 514:514 -p 17 -j ACCEPT # FTP from anywhere -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 21:21 -p 6 -j ACCEPT -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 20:20 -p 6 -j ACCEPT # пропуск FTP passive mode (д.б. согласован с passive ports в ftpaccess) -A input --syn -s 0.0.0.0/0.0.0.0 -d 195.161.72.12/255.255.255.255 начало:конец -p 6 -j ACCEPT # DNS # -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 6 -j ACCEPT # -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 53:53 -p 17 -j ACCEPT # на адресах выше 32k только клиенты (кроме ftpd в пассивном режиме, ниже вообще ничего), заодно борьба с gnome -A input --syn -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6 -j DENY -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 17 -j ACCEPT -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 32768:65535 -p 6 -j ACCEPT # ICMP -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -p 1 -j ACCEPT # все остальное - запретить (DENY or REJECT ?) -A input -s 0.0.0.0/0.0.0.0 -d наш-адрес/255.255.255.255 -j DENY -l -A forward -s 0.0.0.0/0.0.0.0 -d 0.0.0.0/0.0.0.0 -l


Физический том


Физический том -- обычно, это раздел жесткого диска (или весь жесткий диск - Прим.пер.) или устройство, которое работает аналогично разделу, например устройство RAID (в том числе и программный - Прим.пер.).



Флаги


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

Кстати, по умолчанию команда ls флаги не показывает (и большинство "коммандеров"/"файлменеджеров" - тоже). Для того, чтобы она их показала, надо указать ключ -lo.

С помощью флагов можно запретить изменять содержимое файла, его название или и то и другое.

Флаги являются более "сильнодействующим средством" чем permissions. Они действуют одинаково для всех юзеров, не разделяя их на категории. Более того, их действие не может игнорировать и владелец файла и даже root. Единственное отличие владельца и root'а от прочих пользователей в том, что они могут убрать флаги с файла (и то не всегда) и только потом уже делать то, что им хочется.

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

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

По своему назначению флаги делятся на

append - разрешается только "дописывать" файл (естественно, файл должен также иметь permssion "w"). Без этого флага, если юзеру из соответствующей категории разрешается писать в файл, он может как добавить что-либо к содержимому файла, так и "убавить", то есть стереть часть содержимого. При установленном флаге append, любой юзер (даже root) сможет только добавить что-нибудь в конец файла, но не сможет ничего изменить в уже имеющемся содержимом.
Если этот флаг поставить на директорию, то в ней можно создавать файлы (или копировать туда файлы из других директорий), но нельзя удалять или менять их названия. Естественно, на сами файлы действие флага не распространяется. nounlink - файл (или директорию) нельзя удалить или переименовать, даже если права, установленные на директории (в которой находится файл) это позволяют. В то же время, этот флаг не запрещает менять содержимое файла (если, конечно, permissions это позволяют). immutable или change - "ничего нельзя" :-). То есть, файл (директорию) нельзя ни удалить, ни переименовать, ни изменить содержимое. Опять же, если это флаг стоит на директории, то на файлы (в ней содержащиеся) его действие не распространяется. То есть, вы не сможете ни добавить, ни убрать файл в директории, но менять содержимое самих файлов это флаг не запретит.


Как уже говорилось, эти три флага существуют в двух вариантах - "юзерские" и "суперюзерские". То есть, на самом деле их шесть

три "юзерских" - uappend, uunlink и uimmutable

и три "суперюзерских" - sappend, sunlink и simmutable.

Вообще-то, существует еще два "непарных" флага. Это флаги

archived (архивный файл) - это файл "суперюзерский", то есть его может поставить только root, а аналогичного "юзерского" не существует; nodump (файл не надо "дампировать") - а это "юзерский" флаг, его может поставить не только root, но и владелец файла.

Эти флаги проверяются только некоторыми конкретными программами. Флаг nodump сообщает программе dump, что этот файл не надо сохранять в архиве. (Подробнее о программе dump вы можете прочитать в соответствующем man'уале - man dump).

Кем и для чего проверяется флаг archived, я, к сожалению, не знаю.

И, наконец, несколько слов о "режиме безопасности".
Дело в том, что в FreeBSD система может находится на разных "уровнях безопасности". Существует четыре уровня

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

Подробнее о том, в чем заключаются ограничения и как меняются "уровни безопасности", можно прочитать в man init (отмечу только, что "по умолчанию" система стартует с уровнем -1, то есть "безопасность" выключена).

Для нас в данный момент важно только, что на уровне 1 и 2, даже суперюзеру (root'у) запрещено снимать флаги sappend и simmutable.

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

А вот "взломщик", проникший в систему, даже если каким-то образом и получит root'овские права, не сможет изменить "жизненно важные файлы" (если, конечно, они защищены флагом simmutable) или "почистить логи" (если они защищены флагом sappend), чтобы "замести следы" своего пребывания в системе.

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


Флаги глоббинга


Флаги глоббинга используются для воздействия на шаблон, который стоит правее указанного флага. Все флаги имеют форму (#X), где X определяет нужный модификатор. Ниже приведено описание нескольких флагов, которые могут наиболее часто использоваться в работе:

i -- делает шаблон не зависимым от регистра символов, которые в нем применяются;

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

I -- локально отменяет воздействие флагов l и i;

другие флаги, описаны в руководстве по zsh.



"Флаги" могут быть


repeat (или repeatkeys)

разрешить автоповтор клавиш
(по умолчанию он и так разрешен, поэтому имеет смысл только его убрать
controls -= repeat);

mousekeys

включить эмуляцию мыши;

mousekeysaccel

включить режим "ускорения" для эмуляции движения курсора мыши

overlay1
overlay2

включить соответствующие "перекрытия".

ignoregrouplock

игнорировать "текущую группу" в режиме GrabKey

audiblebell

включить (выключить) звуковой сигнал.
(Напомню, что XKB может вместо звукового сигнала посылать bell-event'ы для проигрывания звуков или мелодий "звуковой приставкой". Если такая "приставка" у вас есть, то обычную "пищалку" можно и выключить.

accessxkeys
slowkeys
bouncekeys
stickykeys
accessxtimeout
accessxfeedback

включение различных режимов AccessX

(для людей с "ограниченными физическими возможностями")



Fookb


Очень простая и "легкая" переключалка. Основное достоинство - "легкость". Для сборки достаточно стандартных библиотек и, кроме того, из всех собратьев она - самая компактная.

Недостаток - опять же - простота. :-) Все остальные программы имеют какие-либо "фичи", недоступные fookb.



Формат этого файла


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

параметр_XKB = выражение ;

Если оператор один в строке, то знак ';' в конце не обязателен. В любом месте строки могут находится комментарии, которые должны начинаться с '#' или '//'.

"Выражение" представляет собой

числовое значение (например - величина задержки или номер группы); логическое значение - on или off; строка в кавычках - "" (например - имя файла/блока содержащего описание компонентов конфигурации XKB) название модификатора, "управляющего флага" и т.п.

Если в выражении требуется указать несколько модификаторов (флагов) одновременно, они перечисляются через '+'.

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

убрать из набора флаги, указанные в инструкции
набор_флагов -= флаг1 + флаг2 + ... добавить в набор указанные флаги
набор_флагов += флаг1 + флаг2 + ... и наконец, полностью заменить набор флагов на тот, что вы укажете
набор_флагов = флаг1 + флаг2 + ...

Итак. В этом файле можно задать следующие параметры



Форматирование дискет



Я использую программу kfloppy, которая входит в состав KDE и в особых
комментариях не нуждается.

В качестве альтернативы вы  можете использовать программы fdformat и superformat. FdFormat форматирует дискеты только в Linux-формате (ext2fs)

Вызов
fdrotmat [-n] device
Опция -n запрещает проверку дискеты при форматировании.
Device - это или /dev/fd0 (A:) или /dev/fd1 (B:)

Более гибкой является программа superformat. Она может форматировать диски как в Linux-формате, так и создавать файловую систему DOS. Точнее она вызывает mformat из mtools для создания файловой системы msdos.
Вызов:
superformat параметры

Параметры
 

-2 Форматировании дисков большой емкости для работы с программой 2mf
-B Проверка диска с помощью программы mbadblocks
-d device Форматирование диска в указанном устройстве. По умолчанию используется /dev/fd0
--dd Форматирование дисков двойной плотности (Double Density)
-D device Указание устройства в формате DOS для передачи программе mformat (a: или b:)
-f Запрет проверки диска
-H n Установка количества головок (по умолчанию 2)
--hd Форматирование дисков высокой плотности (High Density)
-1 Не использовать 2m
--no2m Не использовать 2m
-s n Установка количества секторов. Аргумент n обозначает не количество физических секторов, а количество логически 512-байтных секторов.
-t n Установка количества дорожек. Значение по умолчанию - 40 или 80 в зависимости от устройства и плотности диска.
-v n  Установка уровня отладки. Допустимые значения 1,2,3,6 и 9.
-V Проверка диска после завершения форматирования всего диска. По умолчанию после форматирования каждой дорожки производится ее проверка.

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

Нестандартные форматы дискет.

Размер дискеты Емкость устройства Станд. емкость дискеты Число дорожек Число секторов Емкость дискеты, байт
5.25 360K 360K 41 10 409.088 
5.25 1.2M 360K 81 10 816.640
5.25 1.2M 1.2M 81 18 1.476.096 (1.45M)
3.5 720K 720K 81 10 816.640
3.5 1.4M 720K 81 10 816.640
3.5 1.4M 1.4M 81 21 1.723.904 (1.7M)
<


Пример:
superformat -d /dev/fd0 -t 81 -s 21
Если дискета работает крайне нестабильно, попробуйте уменьшить число секторов до 20.

 
 

FreeBSD Свободные записки о свободной системе Настраиваем файловые системы



Автор: Алексей Федорчук, alv@newmail.ru
Опубликовано: 11.10.2001
Оригинал: http://www.softerra.ru/freeos/13168/

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

Чем обусловлена необходимость этого занятия? Впервые столкнувшись с FreeBSD после общения, например, с Linux, обращаешь внимание на относительно низкое быстродействие операций с файлами. Особенно если приходится копировать/удалять/перемещать большое количество файлов, небольших по объему. Говорят, это врожденная особенность файловой системы UFS. Каковая, однако, поддается терапии, на что обратил мое внимание Павел Кайгородов (пользуясь случаю, выражаю ему свою признательность).

Так вот, с целью оптимизации действий над файлами во FreeBSD предусмотрена опция под названием soft updates. Это модификация кода UFS, ускоряющая ее работу и одновременно делающая файловую систему более устойчивой к сбоям (при пропадании питания, например). Она требует, чтобы ядро системы было собрано с ее поддержкой. Впрочем, опция эта по умолчанию включена в ядро GENERIC, создаваемое при инсталляции системы в виде строки options SOFTUPDATES

в файле конфигурации ядра /usr/src/sys/i386/conf/GENERIC (отдельный разговор о котором - впереди). Однако, поскольку считается, что soft updates требует повышенного расхода памяти, по умолчанию в установленной впервые системе опция эта не активизирована. Что и надлежит исправить некими действиями.

Какими? Перво-наперво, активизировать soft updates можно только для размонтированных файловых систем. Полезно посмотреть, какие из них смонтированы в данный момент и какие устройства в каталоге /dev им соответствуют. Это делается, например, командой mount. Запущенная без параметров, она даст картину вроде /home/alv=>>mount /dev/ad0s1a on / (ufs, local) /dev/ad0s1g on /home (ufs, local) /dev/ad0s1f on /usr (ufs, local) /dev/ad0s1e on /var (ufs, local) procfs on /proc (procfs, local)


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

А так - мы спокойно даем команду umount -Af

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

Затем начинаем активизировать опцию soft updates. Для этого дается команда tunefs -n enable /dev/ad0s1e

где /dev/ad0s1e - имя устройства, для которого требуется включить soft updates, например, /var. Далее команда эта повторяется для систем /usr и /home. После чего выполняем обратное монтирование всех файловых систем, определенных в файле /etc/fstab mount -a

Наконец, снова запускаем команду mount без параметров и имеем удовольствие наблюдать, что на всех системах, кроме корневой, опция soft updates благополучно включена: /home/alv=>>mount /dev/ad0s1a on / (ufs, local) /dev/ad0s1g on /home (ufs, local, soft-updates) /dev/ad0s1f on /usr (ufs, local, soft-updates) /dev/ad0s1e on /var (ufs, local, soft-updates) procfs on /proc (procfs, local)

Обращаю внимание на то, что для вступления изменений в силу не требуется перезагрузки системы. И, что характерно, после выполнения таковой изменения сохраняются. Так что в одном сеансе работы можно сколько угодно включать и выключать soft updates для любой файловой системы, кроме корневой.

Разумеется, soft updates можно активизировать и для корневой (/) файловой системы, или для единственного раздела (partition) в пределах слайса, буде таковым мы ограничились при инсталляции системы. Однако для этого нужно загрузиться с инсталляционного CD и в меню программы sysinstall выбрать опцию fixit (перед чем не худо озаботиться созданием соответствующей дискеты). Поскольку при этом все имеющиеся на винчестере разделы оказываются размонтированными, команду tunefs -n enable /dev/ad0s1*



можно применить к любому из них. В том числе и к единственному разделу. Так что, казалось бы, дробление диска не обязательно. Но все не так просто.

Конечно, сама по себе процедура перезагрузки не сложна. Однако при этом следует озаботиться созданием специальной дискеты fixit (или соответствующего CD): стандартный вариант ее программы tunefs не содержит, и разместить ее там простым способом не удается. А главное, в этом случае исчезает возможность включать/выключать soft updates по желанию в течении одного сеанса работы. Что может понадобиться, например, для освобождения ресурсов системы или, напротив, для увеличения быстродействия файловых операций, в зависимости от сиюминутной задачи.

Что реально дает активизация soft updates? Это легко проиллюстрировать на примере копирования каталога, включающего вложенные подкаталоги с большим количеством различных по размеру (от пары Кбайт до 50-100 Мбайт), и последующего уничтожения копии. Результаты такого эксперимента для каталога с содержимым, суммарный объем которого превышает 4 Гбайт, приведены в таблице 1.

Таблица 1. Быстродействие операций над очень большим количеством различных по размеру файлов
Операция soft upadtes disable, мин soft upadtes enable, мин
Копирование 15 9
Уничтожение 3 1
Можно видеть, что в результате нехитрого действа производительность FreeBSD при выполнении типичных файловых операций возрастает в полтора-три раза.

Еще более впечатляющая картина вырисовывается при действиях с большим количеством мелких (от первых килобайт до 100-120 Кбайт суммарным объемом около 15 Мбайт. В этом случае (табл. 2) превосходство в быстродействии при включении soft updates - более чем четырехкратное при копировании и более чем на порядок - при удалении.

Таблица 2. Сравнительное быстродействие файловых операций под FreeBSD и Linux
Система FreeBSD с SU FreeBSD без SU Linux
Копирование, с 8,5 30 5,7
Удаление, с менее 1 11 менее 1
Легко видеть, что при включении soft updates быстродействие файловых операций во FreeBSD становится сопоставимым с таковым в Linux. Для полноты картины следует отметить, что результаты табл. 2 были получены на машинах, идентичных по всем компонентам, за исключением материнской платы. При измерениях для Linux в качестве таковой выступала Abit SE6 (чипсет i815e с поддержкой ATA/100). В системе на FreeBSD использовалась MSI 6326 (чипсет 815, поддерживающий только ATA/66). А учитывая традиционную ориентированность плат Abit на оптимизацию по быстродействию, различие в скорости копирования менее чем в 3 секунды нельзя считать значимым.

И так, настройка должным образом файловых систем дает существенный выигрыш в быстродействии при операциях с данными. По эффективности я сравнил бы эту процедуру с использованием аппаратного кэширования дисков - помните, были некогда такие кэш-контроллеры, дававшие на некоторых задачах просто фантастическую скорость при обращениях к данным? Разница лишь в том, что тут такой выигрыш достигается а)абсолютно бесплатно и б)не требует никаких сверхъестественных действий (даже, скорее всего, регенерации ядра). Так что пренебрегать soft updates ни в коем случае не следует...


FreeBSD x


Как и FreeBSD 3.1 и 3.2. Но XKB во FreeBSD 4.x обрабатывает установку LANG=language лучше. Это зависит и от XFree86. Так как команда FreeBSD очень консервативно по отношению к новым программам, FreeBSD поставляется с более старой версией XFree86. Во FreeBSD 4.1 работает прием с "экспериментальным" файлом .Xmodmap и для работы dead keys нужно копировать файл ../ISO8859-2/Compose в каталог ../ISO8859-1. Если Вы сами загрузили более свежую версию XFree86, можно использовать путь "стандартного" Xmodmap. Для FreeBSD 4.2, смотрите /etc/profile описанный выше и модифицируйте его в соответствии со своими потребностями.



Функции


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

Для ускорения загрузки zsh может использовать автоматически загружаемые функции, когда они только объявляются, но не считываются. При первом использовании такой функции происходит ее считывание и компиляция. Для объявления автоматически загружаемой функции используется встроенная команда autoload (или ее налоги `functions -u' и `typeset -fu'). Поиск определений функций осуществляется по каталогам перечисленным в переменной fpath.

Кроме обычных функций, zsh позволяет определять функции со специальным значением. Так, например, функция chpwd вызывается при изменении рабочего каталога, а функции precmd и preexec выполняются перед каждым выводом приглашения и перед выполнением считанной команды, соответственно. Кроме того, может быть определена функция periodic, которая может выполняться через каждые $PERIOD (если этот параметр определен) секунд перед выводом приглашения.



"Функциональные" клавиши


Эту таблицу я получил с помощью программки, которая "вычитывает" определения клавиш непосредственно из самого syscons.

Примерно такую же таблицу можно найти в "исходниках" системы (в конце файла /usr/src/sys/i386/isa/kbdtables.h)

Последовательности кодов, которые по умолчанию присвоены "функциональным" клавишам (fkey01 - fkey96)

fkey 1033[Mfkey 2033[Nfkey 3033[Ofkey 4033[P
fkey 5033[Qfkey 6033[Rfkey 7033[Sfkey 8033[T
fkey 9033[Ufkey10033[Vfkey11033[Wfkey12033[X
fkey13033[Yfkey14033[Zfkey15033[afkey16033[b
fkey17033[cfkey18033[dfkey19033[efkey20033[f
fkey21033[gfkey22033[hfkey23033[ifkey24033[j
fkey25033[kfkey26033[lfkey27033[mfkey28033[n
fkey29033[ofkey30033[pfkey31033[qfkey32033[r
fkey33033[sfkey34033[tfkey35033[ufkey36033[v
fkey37033[wfkey38033[xfkey39033[yfkey40033[z
fkey41033[@fkey42033[[fkey43033[\fkey44033[]
fkey45033[^fkey46033[_fkey47033[`fkey48033[{
fkey49033[Hfkey50033[Afkey51033[Ifkey52-
fkey53033[Dfkey54033[Efkey55033[Cfkey56+
fkey57033[Ffkey58033[Bfkey59033[Gfkey60033[L
fkey610177fkey62033[Jfkey63033[~fkey64033[}
fkey65fkey66fkey67fkey68
fkey69fkey70fkey71fkey72
fkey73fkey74fkey75fkey76
fkey77fkey78fkey79fkey80
fkey81fkey82fkey83fkey84
fkey85fkey86fkey87fkey88
fkey89fkey90fkey91fkey92
fkey93fkey94fkey95fkey96

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


Эти же значения (кроме fkey61 - [Delete]) могут выдавать клавиши дополнительной цифровой клавиатуры (keypad), когда она находится не в "режиме цифр" (неактивный Num Lock).
  А несколько fkey (пропущенных выше) можно получить только с кнопок этой дополнительной клавиатуры (опять же в "нецифровом режиме")

fkey52 - [-] fkey54 - [5] fkey56 - [+]

И, наконец, "микрософтовская" клавиатура имеет еще три дополнительные кнопки, на которые по умолчанию тоже назначены fkey'и

fkey62 - ["окошко" слева] fkey63 - ["окошко" справа] fkey64 - ["меню"]

Остальные fkey'и fkey65 - fkey96 зарезервированы для дальнейших расширений клавиатуры. То есть, они не назначены ни на какие клавиши, и не генерируют никаких последовательностей.

Можно отметить, что существует еще одна клавиша, которая выдает последовательность кодов, и которую можно также отнести к "функциональным".
  Обозначается она btab (back tab) и назначена по умолчанию на [Tab]+[Shift]. Однако, в отличии от fkey он всегда выдает цепочку "Esc[Z", которую изменить нельзя (разве что, подправив "исходники").

Ну и, наконец, сами последовательности, которые по умолчанию соответствуют fkey'ям, можно посмотреть в "Приложение 3. Функциональные клавиши".


FvwmKb


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

Главный недостаток - она "заточена" для работы с конкретным window manager'ом - Fvwm-2 (хотя со временем, возможно, будут версии и для других wm).



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


Я работаю техническим консультантом по Linux/Java/XML/C++ в Нью Дели, Индия. Принимаю активное участие в open-source проектах, в том числе и некоторых на узле SourceForge. В свободное время люблю длительные поездки, играть в теннис, смотреть кино и вечеринки. А еще я являюсь владельцем собственной софтверной консультационной компании BroadStrike Technologies.

Copyright (c) 2002, Gaurav Taneja.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 80 of Linux Gazette, July 2002

Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев, Игорь Яровинский, Юрий Прушинский

Со всеми предложениями, идеями и комментариями обращайтесь к Александру Куприну (ru_classic at mail.ru). Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.

Сайт рассылки: http://gazette.linux.ru.net
Эту статью можно взять здесь: http://gazette.linux.ru.net/lg80/taneja.html
Архивы выпусков находятся здесь: http://gazette.linux.ru.net/archive/



Где будем экспериментировать?


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

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

При этом xkbcomp позволяет легко "нанизывать" несколько файлов при описании одного компонента настройки XKB. Например, файл (блок) описания компонента xkb_types может выглядеть как

xkb_types { include "basic+pc+мои_типы+еще_один_полезный_тип"; };

Что означает -

взять описание из файла basic; добавить к нему описание из файла pc; добавить описание из файла мои_типы; и, наконец, добавить еще описание из файла еще_один_полезный_тип.

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

Итак. Давайте все изменения/исправления/дополнения помещать в отдельных файлах и просто "приплюсовывать" эти файла к уже имеющимся.

Хотя, в некоторых случаях (особенно это касается добавлений в xkb_symbols), боле эффективным может оказаться не "приплюсовывание", а объявление добавляемого файла отдельной инструкцией - replace.

Напомню, что "плюсик" в инструкции include означает, что инструкции из файла будут добавляться в режиме override (см "Способ добавления".). А при переопределении клавиш часто требуется способ replace.
Поэтому, при добавлении в xkb_symbols, вместо одного длинного include

лучше использовать конструкцию типа

xkb_symbols { include "en_US(pc104)" replace "my.symbols" replace "one_another_symbol" };


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

xkbcomp ... :0.0

(можно еще проще - ":0")

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

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


Где хранится имя и номер группы?


В файле /etc/group. Это просто текстовый файл, в котором каждая строчка описывает одну группу. Отдельные поля разделяются двоеточием. Назначение полей:

имя группы (group name) пароль группы (group passwd) номер группы (group ID) список (через запятую) юзеров, входящих в группу (group members).

Поле "пароль группы" пока никакими программами не используется (по крайней мере в FreeBSD) и там обычно ставится знак "*".

Таким образом, файл /etc/group определяет - какие группы существуют в данной системе и устанавливает соответствие между именем и номером группы.

А, что касается "членства" юзеров в группе, этот вопрос немного сложнее.



Где хранится информация о группах?


Здесь есть маленькая тонкость. На самом деле надо рассмотреть два вопроса:

Где хранится имя и номер группы?

Как определяется список "членов" группы?



Где хранятся crontab-файлы?


Я до сих пор преднамеренно не называл конкретного имени crontab-файла, который редактируется по команде crontab -e. Дело в том, что одного такого файла нет. В Linux имеется целый каталог /var/spool/cron, в котором хранятся crontab-файлы для всех пользователей, включая root-а. Каждый такой файл имеет имя, совпадающее с регистрационным именем пользователя, по которому процесс cron определяет, какой UID надо использовать при выполнении команд из этого файла. Владельцем всех этих файлов является пользователь root.

Кроме личных crontab-файлов отдельных пользователей существует также общесистемные crontab-файлы. Один из них, /etc/crontab, находится в каталоге /etc, а остальные - в каталоге /etc/cron.d. Эти файлы не доступны через команду crontab, редактировать их может только суперпользователь. Структура записей в таких файлах тоже несколько отличается от описанной выше: в строках заданий используется дополнительное поле, расположенное перед полем команды. В этом дополнительном поле суперпользователь задает имя пользователя, чей идентификатор (UID) будет использоваться при запуске данного задания. При инсталляции дистрибутива Red Hat создается системный файл /etc/crontab следующего вида:

SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/

# run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

Команда run-parts в нем служит для запуска всех скриптов из каталога, указанного в виде параметра этой команды. По большей части эти скрипты выполняют функции по обслуживанию системы: удаляют ненужные временные файлы, присматривают за быстро растущими файлами протоколов в каталоге /var/log и, при необходимости, очищают их, и тому подобное. Обратите внимание на то, что все эти работы (кроме ежечасных) выполняются в 4 часа ночи. Разработчики дистрибутива, по-видимому, имели в виду в первую очередь круглосуточно работающие сервера и установили время выполнения заданий на тот период, когда активность системы минимальна. Ведь большинство этих скриптов интенсивно работают с диском, что может существенно затормозить работу пользователей. Однако такое решение скорее всего непригодно для персонального компьютера, который пока что принято выключать на ночь. Однако, оказывается, что разработчики дистрибутива предусмотрели возможность выключения компьютера на ночь и поручили выполнение некоторых необходимых работ еще и демону anacron.



Где хранятся учетные карточки?


В FreeBSD существует четыре файла, которые имеют отношение к БД учетных карточек. Все они находятся в директории /etc.

В общем-то, все они содержат одну и ту же информацию, и при всех добавлениях (изменениях) в учетных карточках юзеров изменяются одновременно.


/etc/spwd.db - основная БД, именно отсюда соответствующие программы берут нужные им данные. Данные хранятся в двоичном виде, то есть простым редактором там ничего не сделаешь.


/etc/master.passwd - та же БД, но в текстовом виде. Этот файл можно читать и изменять обычным текстовым редактором. Но, если вы будете его менять, потом нужно будет запустить соответствующую утилиту, которая сделает изменения и в остальных трех файлах.


/etc/pwd.db - то же, что и spwd.db, но без паролей (в поле password просто стоит знак *)


/etc/passwd - то же, что и master.passwd, но без паролей.

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

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

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

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



Генерация имен файлов


Zsh предоставляет множество дополнений и настроек по генерации имен файлов.



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


Это просто некоторые "анкетные данные" того реального человека, который скрывается под Name. Это поле можно и не заполнять. Обычно там пишут просто реальное имя/фамилию юзера (например John Doe).

Однако, полностью это поле может состоять из

Full Name - Имя Фамилия, Location - адрес (имеется в виду рабочее место), Office Phone - рабочий телефон, Home Phone - домашний телефон



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


Давайте теперь посмотрим процесс загрузки Linux и выясним, каким образом возникает это приглашение к регистрации.

При начальной загрузке ядро Linux создает процесс init. Это первый и последний процесс, существующий в любой системе Linux. Все другие процессы в системе Linux создаются либо init'ом, либо потомком init'а.

Обычно процесс init выполняет программу с названием Sysvinit или что-то похожее. Стоит заметить, что вы, в общем-то, можете вместо init запустить любую другую программу, какую захотите, указав имя ее бинарника в параметрах загрузки Linux. По умолчанию это программа /sbin/init, которой обычно является Sysvinit. Sysvinit получает инструкции из файла /etc/inittab.

Чтобы узнать о работе init, наберите man init и man inittab.

Если вы посмотрите в /etc/inittab, то увидите инструкции, запускающие несколько процессов, выполняющих программу getty - по одному процессу на каждую виртуальную консоль. Ниже дан пример строки из /etc/inittab, которая сообщает init запустить процесс выполнения getty на виртуальной консоли /dev/tty5:

c5:235:respawn:/sbin/agetty 38400 tty5

В данном случае, реальной программой getty является /sbin/agetty. В своей системе вы можете использовать /sbin/mingetty или любую другую из множества подобных программ. (Программу любую, но лучше, если бы она имела в своем имени строку "getty". Эти программы мы называем getty потому, что самая первая называлась просто "getty", от выражения "get teletype" - "получить телетайп".)

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

Итак, теперь вы знаете, каким образом на виртуальной консоли /dev/tty5 появляется приглашение "login:". Ядро создает процесс init, выполняющий Sysvinit. Sysvinit по инструкциями в /etc/inittab запускает другой процесс, выполняющий программу getty с параметрами, задающими /dev/tty5. Программа getty печатает "login:" на /dev/tty5 и ожидает, пока кто-нибудь что-нибудь напечатает.



Гнезда


Вообще гнезда (и взаимодействие программ при помощи гнезд) играют очень важную роль во всех Unix-системах, включая и Linux: они являются ключевым понятием TCP/IP и соответственно на них целиком строится Internet. Однако c точки зрения файловой системы гнезда практически неотличимы от именованных каналов: это просто метки, позволяющие связать несколько программ. После того как связь установлена, общение программ происходит без участия файла гнезда: данные передаются ядром ОС непосредственно от одной программы к другой*.



Голосовать будем списком


Остановимся на работе rc-файлов. Скажем, для перехода на третий уровень при старте надо выполнить последовательно /etc/rc.d/rc.sysinit, , /sbin/update, а затем запустить /sbin/mingetty на всех эмуляторах консоли. Каковы их функции? Файл rc.sysinit выполняет ряд начальных действий, независимых от уровня. Вот точный порядок этих действий (естественно, часть из них выполняется опционно):

вывод баннера;

чтение конфигурационных данных из /etc/sysconfig/network;

установка системных параметров из /etc/sysctl.conf;

установка часов по параметрам из /etc/sysconfig/clock;

установка параметров клавиатуры консоли с помощью loadkeys в соответствии с /etc/sysconfig/console/default.kmap или /etc/sysconfig/keyboard;

загрузка системного шрифта с именем из /etc/sysconfig/i18n и файлом с расширением .pcf.gz или .pcf из каталогов /etc/sysconfig/console или /usr/lib/kbd/consolefonts;

активация области подкачки;

установка имени хоста;

установка имени домена NIS;

запуск fsck (см. ниже) для корневой системы (если в процессе fsck обнаружены серьезные проблемы, то выполняется немедленная перезагрузка);

старт PNP-устройств в соответствии с /etc/isapnp.conf;

перемонтирование корневой файловой системы в режиме записи (поскольку вопрос о том, что делать с системой, доступной только на чтение, типичен, то выполняющую это действие команду стоит привести явно: );

перестроение таблицы монтирования /etc/mtab;

проверка квот для корневой файловой системы;

проверка необходимости загрузки модулей, нахождение взаимозависимостей, загрузка их и конфигурирование;

дополнительная подгрузка из /etc/rc.d/rc.modules;

подключение RAID-устройств;

запуск fsck для других систем;

монтирование локальных файловых систем;

запуск ряда конфигурирующих процедур (выполняется при наличии файла /.unconfigured);

включение механизма квот;

удаление флаговых файлов загрузки;

освобождение каталогов /var/lock и /var/run от мусора;

очистка файлов /var/run/utmp и /var/run/utmpx;

удаление lock-файлов из /tmp;

включение подкачки;


инициализация последовательных устройств через /etc/rc.d/rc.serial;

подгрузка модулей для SCSI-накопителя на магнитных лентах;

установка однопроцессорного (UP) или многопроцессорного (SMP) режима и регенерация в соответствии с этим файла /boot/kernel.h;

установка корректной ссылки /boot/System.map;

проверка использования интерактивного режима (создание файла /var/run/confirm).

Запуск fsck может быть принудительно отключен с целью уменьшения времени рестарта при наличии файла /fastboot, а также включен при наличии /forcefsck; можно дополнительные опции (/fsckoptions). Появление этих файлов может быть результатом выполнения shutdown с соответствующими ключами: -f (пропуск fsck при старте); -F (принудительный fsck при старте).

Обратили ли вы внимание на то, что присутствует два раза? В действительности, дважды делается попытка выполнить одну и ту же команду: swapon -a. Зачем? Из комментариев можно вычитать, что первая команда присоединяет к области подкачки разделы, а вторая - файлы. Так как команда одна и та же, мы, конечно, не поверим комментариям и попробуем проверить их опытным путем.

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

root@localhost /root]# dd if=/dev/

zero bs=1k count=2048 of=/r6/myswap

2048+0 блоков прочитано

2048+0 блоков записано

[root@localhost /root]# mkswap

/r6/myswap 2048

Setting up swapspace version 0,

size = 2093056 bytes

[root@localhost /root]#

Добавляем строчку в /etc/fstab:

/r6/myswap swap swap

defaults 0 0

Проверяем результат после перезагрузки, запрашиваем текущее использование устройств подкачки:

[root@localhost /root]# swapon -s

Filename Type Size

Used Priority

/dev/hda5 partition

104380 0 -1

/r6/myswap file 2044

0 -2

[root@localhost /root]#

Если посмотреть информацию о перезагрузке, обнаружится, что, конечно, swapon попытается подключить /r6/myswap два раза. Первый раз (/r6 еще не смонтирована) будет сообщение об ошибке (и даже FAILED), хотя подключение раздела происходит. Второй раз все проходит нормально (благо еще и диагностика в /dev/null). Обратите внимание на то, что файл для подкачки должен существовать (как-то мне попалась команда mkswap, которая его заполняла, но не создавала) и при этом не содержать (с чего бы это?).

Sysctl позволяет зафиксировать ряд параметров и обеспечить (через /etc/sysctl.conf) их установку после перезагрузки. Вот как выглядел /etc/sysctl.conf сразу после инсталяции:

# Disables packet forwarding

net.ipv4.ip_forward = 0

# Enables source route verification

net.ipv4.conf.all.rp_filter = 1

# Disables automatic defragmentation

net.ipv4.ip_always_defrag = 0

# Disables the magic-sysrq key

kernel.sysrq = 0


"Гостевой вход"


Поскольку, вместо Shell (программы, которая автоматически запускается для вошедшего юзера) можно использовать любую программу, можно сделать небольшую информационную систему для публичного просмотра. Для этого регистрируется пользователь, например, guest (гость). В качестве Shell

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

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



Готовые примеры


Вы можете взять исходники примеров здесь

bsect.s sect2.s write.c Makefile

Удалите у файлов расширение txt и введите

make

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

as86 bsect.s -o bsect.o

ld86 -d bsect.o -o bsect

и повторите тоже самое для sect2.s. Сборку write.c выполните командой :

cc write.c -o write

и вставив дискету в дисковод выполните программу write.



Готовые решения


Способы автоматизации входа в систему уже предлагались и один из них излагается в одном из старых выпусков Linux Gazette (http://www.linuxgazette.com/issue27/kodis.html).

Этот способ предполагает наложение заплатки на программу /sbin/mingetty, которая запускается скриптом init при загрузке системы. Саму заплатку и инструкции по ее использованию можно найти на http://users.jagunet.com/~kodis/autologin/autologin.html. Но, хотя автоматический вход в систему в виртуальной консоли и облегчается, этот способ сам по себе не инициализирует графическую среду. Читайте ниже про то, как можно устроить и это тоже.

В качестве альтернативы можно воспользоваться пакетом autologin ( http://www.linux-easy.com/development/autologin/). Этот пакет позоволяет запускать при начальной загрузке графический десктоп. Впрочем, лишь немногие дистрибутивы GNU/Linux включают его, как стандартный.

Последние версии kdm (выполненой в стиле KDE замене xdm -- менеджера входа в систему для X11). Раскомментируйте следующие строчки в /etc/kde2/kdmrc:

AutoLoginEnable=true AutoLoginUser=fred

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

Но, возможно, именно kdm кому-то не нужен или кто-то вообще не хочет его устанавливать. Возможно, не хватает места на диске или же kdm тяжеловат для старенького PC. К счастью, существует способ автоматически войти в систему на одной из виртуальных консолей сразу после загрузки компьютера, не завязанный на наложение патчей или скачивание дополнительных программ. Этот процесс несколько более "запутан", но он применим и для минимальной конфигурации GNU/Linux -- нет необходимости устанавливать GNOME, KDE или тянущий за собой весь QT kdm. Автоматическая загрузка командной строки (или другого интерактивного консольного приложения) может быть полезной даже в отсутсвие на машине X-ов:).



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


Номер группы, к которой принадлежит юзер. Подробнее о группах смотри Администрирование групп юзеров.



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


Определяют "метод выравнивания" номера группы (подробности см. в "Внутренности":Метод выравнивания). Естественно, имеет смысл в описании клавиши указывать только один из них.

Объявления groupswrap и groupsclamp являются просто логическими переменными. Поэтому они задаются либо в виде присваивания, где в правой части могут быть только слова True или False, либо в виде
groupswrap, - подразумевается "= True"
или
!groupswrap, - подразумевается "= False"

А вот метод groupsredirect подразумевает дополнительный аргумент - "куда redirect". Поэтому всегда имеет вид присваивания, где в правой части должен стоять номер группы. Например,

groupsredirect = 1,

По умолчанию для всех клавиш метод выравнивания - Wrap.



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



Автор: Владимир Попов, popov_inm@yahoo.com
Опубликовано: 30.01.2002
Оригинал: http://www.softerra.ru/freeos/15595/

«Существование» любой вычислительной системы представляет собой процесс последовательного выполнения главным вычислительным узлом (в миру – CPU) инструкций (операторов). И, как процесс «последовательный», он должен как-то начинаться. Со времен первых ЭВМ для определения этого начала используют специальное слово «boot», общепринятый русский перевод которого – «начальная загрузка», «загрузить». Спросите, зачем так «издалека»? А затем, что большинство пользователей никогда не задумывалось над тем, что представляют собой эти самые boot loader-ы (первичные загрузчики). Общепринятым заблуждением является то, что загрузчик – часть ОС, что, в принципе, не верно, хотя создаются они, как и любое другое ПО, в рамках той или иной операционной системы и ориентированы, обычно, на выполнение загрузки в первую очередь этой самой «материнской» ОС. Но «обычно» не означает «всегда». Прежде всего, это не относится к вычислительным системам, не использующим операционную систему вообще: многие однокристальные ЭВМ и все устройства на их основе, конечные автоматы и т.п. Эти системы не являются предметом нашего рассмотрения и упомянуты только для того, что бы проиллюстрировать, что загрузка (boot) – общее свойство вычислительных систем, а старт операционной системы IBM PC – частный случай загрузки. Возможно, в таком взгляде на IBM PC есть своя логика. Во всяком случае, Erich Boleyn, первый разработчик GRUB, по роду своей основной деятельности имел дело прежде всего с вычислительными устройствами, обеспечивающими высокоскоростную передачу в сетях, и только потом – с IBM PC.

Прежде чем продолжить рассказ о GRand Unified Bootloader-е (именно из этих трех слов составлена аббревиатура GRUB), несколько слов о том, для кого это может быть интересно. Если Вы используете ОДНУ операционную систему ОДНОГО производителя (хотите, угадаю – какого?), то Вам это не нужно. Во всех остальных случаях – может пригодиться. Хотите иметь несколько win'9x на одном диске? Вообще, несколько разных операционных систем? Загрузку с любого из физических дисков (без выхода в BIOS Setup)? Универсальную загрузочную дискету? Попробовать альтернативу LILO? Если хотя бы один из ответов был положительным – читайте дальше.

Итак, дальнейшее уже будет иметь отношение исключительно к IBM PC. Архитектура этого, без сомнения, самого многочисленного клона компьютеров предполагает загрузку в ОЗУ с нулевого адреса так называемой MBR (Master Boot Record) – первого (или нулевого, в зависимости от того, с чего начинать считать) блока загрузочного устройства, и передачу на него управления. Загрузочными устройствами могут быть FDD, HDD или CD ROM, определяется это обычно в BIOS Setup. Во всех случаях размер MBR – 512 байт. Для MBR жесткого диска стандартизированы также возможное количество разделов (четыре, причем только один – расширенный (extended), который может содержать логические диски), структура и местоположение Partition Table – таблицы разделов, описывающей их геометрию, тип файловой системы и признаки активности (загружаемости). Стандарт этот можно бы и игнорировать, но тогда никакое «чужеродное» ПО не сможет определить содержит ли диск хоть что-нибудь разумное. Поэтому и не игнорируют – даже MicroSoft, упорно «не замечающая» возможности существования нескольких первичных разделов. А вот содержимое MBR от «0» до Partition Table – не регламентировано. То есть, как раз исполняемые инструкции могут быть различными. И имеется под них всего-то 384 байта. Трудно разместить в таком объеме что–либо существенное – вместо этого размещают код очередного (в смысле очередности этапов загрузки) loader-a. В простейшем случае этот загрузчик загружает (уж простите за тавтологию) в память содержимое начального блока одного из primary (первичных), активного (bootable) раздела. Этот начальный блок, в отличие от начального блока диска называется уже не Master..., а просто – Boot Record). Так это делалось от MS DOS вплоть до win'9x. В более сложных случаях инструкции, считанные из MBR, служат для того, что бы загрузить первичный загрузчик ОС, будь то NTLoader, LILO и т.п. Такой специальный загрузчик нужен для многих целей: во-первых, сама загрузка ОС может быть достаточно сложной, чтобы не «умещаться» в одном блоке; во-вторых, сколько-нибудь серьезная система предполагает возможность загрузки нескольких ядер (в простейшем случае хотя бы один дополнительный, аварийный (failsave) вариант); в-третьих, «хорошим тоном» считается сохранение возможности загрузки предыдущей версии ОС; ну и в-четвертых, хорошо бы предоставить пользователю возможность использовать еще одну ОС, хотя и не все производители ПО так считают. Уже вышеприведенное описание показывает, что есть два принципиально различных способа загрузки. Первый – «тупой» или, выражаясь мягче, «аппаратный» – так называемая загрузка «цепочкой»: последовательная загрузка начальных блоков сначала диска в целом, а затем – активного раздела. Недостатком этого способа являются архитектурные ограничения (не более четырех первичных разделов), и трудность размещения в одном блоке (512 байт) более-менее сложного ПО, обеспечивающего, например, начальный диалог с пользователем. Альтернатива – «интеллектуальный» способ, предполагающий наличие специальной программы, имеющей доступ к файлам, расположенным на диске. Этот доступ позволяет вынести содержание и алгоритм работы меню загрузки в файлы, редактируемые пользователем, снимает все возможные ограничения на количество загружаемых систем или ядер одной и той же системы. Именно по этому пути и пошли разработчики всех современных менеджеров загрузки (из уважения, по-видимому, программы этого класса именуют уже не загрузчиками, а менеджерами).
Последний комментарий по поводу соотношения загрузчиков и ОС. Загрузчик не является частью ОС, поскольку не использует ее ресурсы (не может пока: ОС-то еще не загружена). Загрузчик зависим от ОС настолько, насколько его файлы «привязаны» к файловой системе данной ОС. Чем больше количество файловых систем, на которых могут находиться файлы загрузчика, тем больше его «вне-системность».

Обойдя ограничение четырех первичных разделов и невозможности загрузки разделов логических, разработчики менеджеров загрузки столкнулись с очередной трудностью – особенностями файловых систем, которые теперь уже были «небезразличны», и особенностями загрузки ядер различных ОС. Что касается файловых систем, то с этим «разобрались» быстро. Так, в исполнении авторов GRUB, программный «слой», обеспечивающий доступность файлов на томах 6-ти различных систем «уместился» в 6-ти файлах общим объемом чуть более 45-ти кбайт. А вот что касается загрузки ядер, то тут ожидать «консенсуса» не приходится. Но, на самом деле, такая цель и не ставилась.
В 1995 году, ядро Hurd (оригинальная ОС, включающая в себя множество инноваций, обсуждение которой выходит далеко за рамки данной статьи) достигло «готовности», когда нужно было уже задуматься о способе его загрузки. Вышеупомянутый Erich Boleyn в соавторстве с Brian Ford не стал «умножать» количество мало совместимых способов загрузки IBM PC, предложив вместо этого Multiboot Specification – спецификацию, обеспечивающую универсальный способ загрузки ядер ОС. Вряд ли молодые люди рассчитывали на то, что, например, MicroSoft Co. приведет загрузку Windows XP к упомянутой спецификации, но для ядер Hurd, FreeBSD, NetBSD, OpenBSD и Linux мы получили действительно унифицированный подход. Приверженцам MicroSoft расстраиваться не пришлось: загрузка систем и загрузчиков, не совместимых с Multiboot Specification возможна по алгоритму «цепочки». Собственно говоря, все ОС MicroSoft, кроме NT, только так и загружались. Что же касается NT, то по «цепочке» загружается NTLoader, выполняя после своей загрузки все возложенные на него функции. Дальше – больше. В 1999 году Gordon Matzigkeit и OKUJI Yoshinori представили GRUB как официальный пакет GNU. Круг участников проекта расширился, а функциональность пакета еще более возросла. Кроме изначально присущих уникальных возможностей, ориентированных, в основном, на разработчиков ядер ОС (и, как следствие, мало понятных большинству рядовых пользователей), на настоящий момент GRUB:


принимает практически все форматы исполнимых файлов; обеспечивает загрузку ядер, совместимых и ограниченно совместимых со спецификацией Multiboot; поддерживает «цепочный» механизм для ОС и загрузчиков, не совместимых со спецификацией Multiboot; поддерживает загружаемые модули; поддерживает редактируемый текстовый конфигурационный файл; имеет меню-ориентированный и гибкий командный интерфейсы, удовлетворяющие, практически, любым запросам пользователя; поддерживает файловые системы: BSD FFS, DOS FAT16 и FAT32, Minix fs, Linux ext2fs, ReiserFS, и VSTa fs; обеспечивает автоматическую декомпрессию gzip-файлов; независим от геометрии дисков: переход к диску с другой трансляцией номеров блоков не потребует изменения конфигурации; определяет LBA-режим: если BIOS поддерживает LBA, GRUB пользуется этой поддержкой; поддерживает сетевую загрузку по TFTP-протоколу; поддерживает терминальный доступ по последовательному интерфейсу, т.е. может использоваться в без-консольных станциях.

Согласитесь: приведенный список – веская заявка на титул «GRand». Присмотримся поближе. Поскольку проект выполняется в рамках GNU, то информация о нем находится на http://www.gnu.org/software/grub/. Продукт и в настоящее время в стадии «alpha» (не пугайтесь, это определяется больше уровнем притязаний разработчиков, нежели работоспособностью уже сделанного), поэтому загрузить его можно только с ftp://alpha.gnu.org/gnu/grub/. Там находится три файла. На декабрь 2001-го это:
grub-0.90.tar.gz – архив исходников, достаточных для построения GRUB в любой ОС клона unix;
grub-0.90-i386-pc.ext2fs – образ загружаемой дискеты со всеми необходимыми файлами;
grub-0.90-i386-pc.tar.gz – архив бинарных файлов, достаточных для загрузки (но не для инсталляции) в любой из поддерживаемых файловых систем.
Версия со временем, разумеется, изменится, но подход, будем надеяться, останется прежним.

Для unix систем, безусловно, нужно использовать первый архив. Выполнив стандартные для unix configure-make-make check-make install, получаем три исполняемых файла в .../sbin, три man-страницы в .../man/man8, исчерпывающее info в .../info и восемь бинарных файлов в .../share/grub/i386-pc, образующих в разных комбинациях собственно bootloader. Добавлять что-либо к info нет необходимости, но все это – только для unix. А где же «мультисистемность»? Оказывается – есть. Для инсталляции GRUB в любой из файловых систем на жестком или флоппи-диске нужно создать в корне этой файловой системы каталог /boot/grub (различия между прямым и обратным слэшем нивелируются) и перенести в него несколько файлов из архива grub-0.90-i386-pc.tar.gz: stage1 и stage2 – обязательно, а файлы с постфиксом stage1_5 – только те, которые обеспечат GRUB доступ к нужным файловым системам (которые – очевидно из их названий). Собственно инсталляцию, то есть запись кода загрузчика в MBR, выполнить тоже можно, но не нужно: разумнее последовать рекомендации авторов и выполнить инсталляцию непосредственно из grub, запущенного, например, с дискеты, созданной из grub-0.90-i386-pc.ext2fs. Под unix такая дискета делается командой:
dd if=./grub-0.90-i386-pc.ext2fs of=/dev/fd0
под DOS – с помощью известной утилиты rawrite.
под win – rawwrite

Загрузившись с дискеты, знакомимся с тем самым «гибким командным интерфейсом». Пользователи unix удивлены не будут: очень похоже на bash, остальным же, возможно, будет интересно познакомиться с памятью команд и авто-заполнением. Диалог начинается выводом перечня допустимых команд. Информацию по любой из команд можно получить, набрав help <имя команды>. В простейшем случае, для инсталляции GRUB потребуется всего две команды: root (hdn,m) и setup (hd0). Первая из команд указывает, где искать каталог /boot/grub с находящимися в нем файлами *stage*. Имя устройства всегда заключается в круглые скобки. n – номер диска, m – номер раздела Способ обозначения разделов аналогичен принятому в unix (только нумерация начинается не с единицы, а с нуля), но для пользователей других систем может показаться «неочевидным». На помощь придет авто заполнение команды: табуляция после root ( – выведет список допустимых устройств. Еще одна табуляция – и на экране список всех разделов выбранного диска. Может оказаться полезной команда find /boot/grub/stage1 – она-то уж точно укажет номер раздела, где создан искомый каталог. С помощью этой же команды можно искать любой файл на всех разделах диска и дискете. Не забывайте только, что path в данном случае – обязательный компонент имени. Поэтому, если файл должен быть в корневом каталоге раздела, не забудьте прямой слэш перед именем. Команда setup выполнит все необходимые для инсталляции действия. В качестве параметра – диск, с которого и будет происходить загрузка. Однако с setup можно и не торопиться. Почему бы не проверить себя еще раз? Для этого команды загрузки ОС вводятся непосредственно в командном режиме (впоследствии эти команды составят конфигурационный файл).
Для Linux это, например:
kernel (hd0,6)/boot/vmlinuz-up root=/dev/hda7
Команда загружает ядро, расположенное на третьем логическом диске расширенного раздела.

для win'98:
makeactive
chainloader +1
Первая команда делает активным (загружаемым) раздел, выбранный командой root, вторая – загружает в память начальный загрузчик этого раздела.
Команда boot передает управление загруженным ядру или загрузчику.
Если все в порядке – возвращаемся к setup и заканчиваем инсталляцию.

Вообще, перечень доступных команд достаточно обширен и всегда может быть выведен на экран нажатием <TAB>. Кроме команд, использование которых предполагает наличие специальных знаний (blocklist, debug, displayapm, displaymem, impsprobe, ioprobe, read, serial, setkey, terminal, testload, uppermem), имеются следующие группы команд:




управления:

boot – передать управление ядру, загруженному командой kernel или «чужому» загрузчику, загруженному командой chainloader, halt – выключить машину, help [команда] – выдать подсказку, quit – выйти из GRUB, reboot – перезагрузиться, pause – ждать нажатия клавиши;

работы с файлами:

cat – вывести на экран, cmp – сравнить содержимое двух файлов;

управления доступом:

password – обычно помещается в конфигурационном файле и при достижении ее требует ввода пароля, lock – блокировать выполнение команд для неидентифицированного пользователя;

модификации разделов:

partnew – создать первичный раздел, partype – изменить тип раздела;

настройки внешнего вида:

color – задать цвета меню, vbeprobe – определить и вывести доступные режимы видеоадаптера, testvbe MODE – тестировать режим MODE видеоадаптера.

Приведенный список команд не полон, но более подробное обсуждение было бы слишком объемным, тогда как еще не рассмотрены команды, с помощью которых, собственно, и выполняются варианты загрузки. Эти же команды являются основным содержанием конфигурационного файла. Файл этот называется menu.lst и располагается все в том же /boot/grub. В начале файла обычно размещаются команды задания цветов:
color light-gray/blue black/light-gray
первая пара цветов определяет основной и фоновый цвета для «не выбранных» позиций меню, вторая – для «выбранных».

Время (в секундах) от момента вывода меню до выполнения позиции, определенной, как «умолчание», задается командой:
timeout 10

Позиция «по умолчанию» задается, как:
default 0

Если загрузка «по умолчанию» по какой-либо причине не возможна, то будет предпринята попытка выполнить позицию, указанную в команде:
fallback 1

Цифры, определяющие позицию меню, могут быть, разумеется, любыми. Обратите внимание только на нумерацию – с нуля.

Описание каждой из позиций меню начинается с команды:
title text
где text – остаток строки от первого «непробельного» символа после title.

Группа команд одной позиции меню в обязательном порядке имеет уже упомянутую команду root. ОС, хотя бы частично соответствующие Multiboot Specification, загружаются командой kernel, причем в строке можно указывать дополнительные параметры. Так, команда
kernel (hd0,6)/boot/vmlinuz-up root=/dev/hda7 hdd=ide-scsi vga=788
загрузит Linux, корневым каталогом назначит /dev/hda7, включит эмуляцию ide-scsi, нужную для пишущего привода CD и переведет видеоадаптер в режим 800х600 графической консоли, для работы с так называемым frame buffer device (спасибо Алексею Федорчуку – я и не знал, что это так называется).

Для ОС, не соответствующих Multiboot Specification, сначала взводится бит «активности» раздела, выбранного командой root:
makeactive
а, затем, методом «цепочки» загружается собственный загрузчик данной ОС:
chainloader +1

Поскольку ОС семейства win'9x не могут быть загружены из соседних разделов (вне зависимости от флага активности грузится все равно первый из разделов), для их загрузки нужно использовать команды hide и unhide. Так, если первый и второй первичные разделы содержат win'9x, то для загрузки второй системы нужно включить в menu.lst следующие команды:
hide (hd0,0)
unhide (hd0,1)
root (hd0,1)
makeactive
chainloader +1

Аргументы hide, unhide и root для загрузки первой системы, думаю – очевидны.

Еще одна трудность с ОС от MicroSoft – неспособность грузиться со второго и последующих дисков. Для ее преодоления применяют технику «свопирования» (swapping technique), или, проще – «подмены».
Так же, собственно, поступает и BIOS Setup, но зачем же обращаться к нему, если всего две строки в menu.lst выполнят ту же операцию:
map (hd0) (hd1)
map (hd1) (hd0)




Во всех случаях не лишним будет сначала загрузиться с дискеты, запустить grub и проверить, соответствует ли результат выбранных команд ожидаемому. В командном режиме существует специальная команда, загружающая созданный menu-файл:
configfile FILE

Еще один совет – для начала инсталлировать GRUB на дискете. Скорость загрузки с дискеты радует, что, собственно, и не удивительно: общий объем загружаемых файлов – менее 100 кбайт.

Ну, и последняя рекомендация, содержащаяся в инструкциях абсолютно ко всем менеджерам загрузки: до инсталляции нового менеджера загрузки сохраните MBR! В unix это можно сделать командой:
dd if=/dev/hd0 of=your_file bs=512 count=1
в DOS – с помощью NortonDiskDoctor, например.

Сравнительный анализ различных менеджеров загрузки выходит за рамки данной статьи, но даже без такого анализа можно, наверное, согласиться, что «GRand» – вполне заслуженный титул для рассматриваемого пакета. GRUB – даже больше, чем «unified bootloader». Дискета с ним позволит проанализировать разделы потерявшего способность к загрузке винчестера, загрузить любой из первичных разделов или любое из ядер Hurd, FreeBSD, NetBSD, OpenBSD или Linux. Возможно и более «изощренное» вмешательство в структуру разделов диска, но это, пожалуй, уже другая тема.

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



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


Самодостаточный GRUB.

Лучший менеджер загрузки ОС.

Как-то сложилось по жизни, что для работы на PC мне всегда требовалось более одной операционной системы. Архитектура компьютера такую мультизагрузку вполне допускает, я программист, так что особых проблем у меня никогда не было. В тех же случаях, когда подобная мультизагрузка требовалась кому-то еще, я рекомендовал xboot Ильи Евсеева. С приходом Peniium II инсталлятор xboot пришлось слегка подправить по поводу run-time error 202 (ну, не предполагали разработчики TurboPascal, что так быстро все случится).

Познакомившись года четыре назад с Linux, я узнал, что, кроме загрузки первичных разделов (реальных или виртуальных), загружать можно и ядра операционных систем. Причем этих уже может быть сколько угодно: существующее ограничение на количество первичных разделов значения в данном случае не имеет. Дальше - больше. Оказывается, существует спецификация множественной загрузки (multi-boot specification), и если бы производители ОС ее придерживались, то мультизагрузка могла бы стать функцией BIOS, например. Но это из области фантазий. Пока, во всяком случае.

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


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

Итак, оставим в стороне multiboot specification и даже vmlinuz (традиционное название ядра Linux), просто добьемся существования на одном винчестере двух-трех непритязательных ОС: DOS и Windows 9х. Для решения этой задачи потребуются некоторые знания и инструментарий. И то и другое - в минимальном количестве. В стиле Microsoft, так сказать. Дабы пользователь не утомился.

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

Загрузка PC всегда начинается с переноса в память содержимого нулевого блока загрузочного устройства (HDD, FDD, CDROM -как уж в BIOS Setup задано) и передачи на него управления. Размер блока - всего 512 байт, и для всех устройств, кроме HDD, ничего кроме инструкций загрузки следующей порции кода, в нем не содержится




HDD же, по замыслу создателей PC, может иметь несколько загружаемых разделов, поэтому часть главной загрузочной записи (master boot record - MBR), как уважительно назвали нулевой блок винчестера, отведена под таблицу разделов (Partition Table).

Таблица эта содержит описание не более, чем четырех первичных (primary) разделов, причем только один из них может быть расширенным (extended), в котором, в свою очередь, могут содержаться свои разделы. Эти последние, в отличие от первичных, называются логическими Число логических разделов не ограничено.

Описание каждого первичного раздела, кроме данных о его физическом размещении, содержит пару весьма существенных байт: байт активности (загружаемости) раздела и байт типа файловой системы. Первый принимает всего два значения: 0х80 или 0х00 (для загружаемого и не загружаемого разделов соответственно). Типов же файловых систем существует значительно больше. Современному приверженцу Microsoft достаточно знания следующих:

0х04 - FAT16, объемом менее 504 Мб:

0х05 - расширенный раздел, заканчивающийся ниже 8 Гб;

0х06 - FAT16, объемом менее 2 Гб. заканчивающийся ниже 8 Гб;

0х07 - Windows NT NTFS;

0х0B - FAT32, заканчивающийся ниже 8 Гб;

0х0С - FAT32, заканчивающийся выше 8 Гб (как 0х0B, но только для LBA):

0х0Е - FAT16. объемом менее 2 Гб, заканчивающийся выше 8 Гб (как 0х06, но для LBA)

0х0F - расширенный раздел, объемом, более 8 Гб или заканчивающийся выше 8 Гб (как 0х05, но для LBA);

0хFF - таблица дефектных блоков Xenix.

Типы 0х0В ... 0х0F в настоящее время преобладающие, как преобладающий способ адресации блоков диска - LBA. Тип "таблица дефектных блоков Xenix" используется дня маскировки разделов, а зачем такая маскировка нужна, станет ясно чуть позднее. Прибавление 0x10 к идентификатору типа раздела делает его скрытым (hidden). Правда, на эту скрытость Microsoft перестала обращать внимание, начиная с системы Windows 2000.

Исполняемый код MBR, в отличие от таблицы разделов, не стандартизирован, и разные ОС относятся к нему по-разному: некоторые при инсталляции переспрашивают, можно ли перезаписать MBR а некоторые - нет. Младшие Windows - нет. Спасибо хоть таблицу разделов не затирают. Отсюда вывод: MBR нужно уметь сохранять, восстанавливать, а лучше - формировать заново.




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

- ОС загружается начальным загрузчиком, записанным в нулевой блок первичного раздела, в который инсталлировалась ОС (в отличие от MBR, он уже не "master", а просто "boot record");

- начальный загрузчик записывается ОС при инсталляции;

- начальный загрузчик, в свою очередь, загружается главным загрузчиком (тем, что записан в MBR);

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

- ну, а главный загрузчик, если помните, считывается в память самим BIOS.

В случае с NT в результате описанных выше действии запускается не ОС, a NTLoader - собственный мультизагрузчик NТ.

Действия над MBR, выполняемый ОС при инсталляции (в том случае, если MBR все-таки переписывается, разумеется), таковы:

- переписать исполняемый код MBR;

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

В принципе, из вышеизложенного уже можно догадаться что нужно сделать для достижения поставленной задачи:

- инсталлировать первую систему, не занимая ею все дисковое пространство, разумеется,

- "маскировать" вышеупомянутую систему;

- инсталлировать вторую систему (при желании, таким же образом - третью):

- "демаскировать" все установленные системы;

- инсталлировать мультизагрузчик GRUB.

С помощью чего?

Теперь осталось выяснить, как конкретно это сделать. Переходим к инструментарию. Существует довольно много программ с помощью которых можно редактировать MBR и. в частности, таблицу разделов. Болыиинству пользователей MS Windows наверняка известен Norton Disk Doctor, доживший уже до девятой, если память не изменяет, версии. Список известных мультизатрузчиков тоже не так уж мал. А вот продукт, достаточный сам по себе для решения поставленной задачи, известен мне только один. Это GRUB - GRand Unified Boolloader.




Изначально автор - Ench Boleyn, а в настоящее время проект развивается как часть GNU - известного бастиона Open Source. Именно на сайте этой уважаемой организации находится страничка GRUB: www gnu.org/software/grub, а на ее FTP-сервере всегда можно скачать последнюю версию пакета.

GRUB, безусловно, достоин oтдельного разговора, но для наших минималистских целей достаточно будет рассказать о пяти-шести из почти шести десятков его команд, да простят меня авторы. Приверженцам Microsoft я даже скачивать дистрибутив GRUB не рекомендую: проще воспользоваться его загрузочной дискетой, подготовленной мной специально для них в формате FAT (подобная дискета входит и в состав дистрибутива, только файлов на ней, не имеющих отношения к ОС от Microsoft, много больше и прочить ее под DOS/Windows затруднительно). Архивированный образ дискеты лежит здесь: www.ldc.net/~popov/GrubOnFAT.zip, - а получить из образа дискету можно с помощью замечательной программы rawrite. которую, пользуясь случаем, я настоятельно всем рекомендую. Размер архива очень скромный - чуть более пятидесяти килобайт. Приступим!

Вот мы и "во всеоружии".

Описание инсталляции ОС пропустим: разные они, да и не об этом речь. Замечу только, что первичный раздел для устанавливаемой ОС лучше готовить ее же средствами, практически никаких шансов ошибиться Поскольку, по мнению fdisk от Microsoft (а именно он разбивает диск на разделы), первичный (primary) раздел может быть только один то придется с этим для начала согласиться. Размер раздела выберите минимально достаточным. Расширенный раздел можно пока не создавать

Убедившись в работоспособности первой инсталлированной системы, загрузимся с дискеты GRUB. Если дискета оригинальная, то вы сразу попадете в командный режим (на зто укажет подсказка "grub>"), а если воспользовались моим предложением, то на экране появится меню загрузки. С меню разберемся позднее, а для перехода в командный режим нужно нажать "с", о чем, кстати, напоминает и присутствующая на экране подсказка. Набираем:




grub> root <Tab>

где <Tab> подразумевает нажатие клавиши табуляции.

В ответ на это вы получаете варианты продолжения команды. Если у вас только один винчестер, то вариантов будет всего два: fd0 и hd0. Отмечаем: так называются и нумеруются (с нуля!) в GRUB дисковые устройства. Продолжим набор в соответствии с нашим планом:

grub> root (hd0 <Tab>

Теперь вы получаете перечень разделов диска, выбор из которых возможен. Поскольку раздел у нас пока один, то и в перечне только одна позиция Нажимаем

Esc, поскольку продолжать команду не нужно, все проделанное было нужно лишь для того, чтобы, заставляя GRUB выполнять автозаполнение команды, выудить у неё информацию о разделах. Что и достигнуто. Запоминаем (лучше - записываем), что первая ОС инсталлирована в разделе (hd0.0) и тип ее - 0х0b), например (у вас, разумеется может быть другой).

Переходим к следующему пункту.

"Маскируем" первую систему командой:

grub> partype (hd0,0) 0xff

Зто уже нормальная команда и завершать ее нужно вводом <Enter>.

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

Инсталлируем следующую систему Инсталлятор, конечно, обнаружит на диске некоторый "Nоn-DOS partition", но препятствием к инсталляции это не будет. Хорошо также и то, что инсталлируемая ОС никак не модифицирует чужой раздел, спасибо Microsoft хоть за это. Все рекомендации аналогичны приведенным для первой инсталляции.

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

Теперь разделы можно "демаскировать". Быть может, это и лишнее, но напомню, что делается это командой:




grub> partype (hd0,n) 0xNN

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

Нетрудно догадаться, что после "демаскирования" грузиться будет всегда система, инсталлированная последней. Большего от кода в MBR добиться не удастся, пора переходить к подготовке мультизагрузки.

У GRUB есть одно достоинство - меню допустимых загрузок и их алгоритмы хранятся в обычном текстовом файле. Это безусловно, достоинство поскольку позволяет изменять загрузку, модифицируя всего лишь один очень небольшой текстовый файл, но, как и многие достоинства, это тоже имеет свою оборотную сторону. Состоит эта сторона в том, что этот самый файл должен находиться в разделе, файловую систему которого умеет читать GRUB. Список читаемых файловых систем довольно обширен, да вот только NTFS в него не входит. Отсюда вывод: все нужное для GRUB нужно размещать в разделе FAT. Надеюсь, хоть один такой у вас имеется. Создаем в его корневом каталоге подкаталог boot/grub (не обращайте внимания на "косые": GRUB не обращает внимания на то, прямые они или обратные, - и мы не будем) и переписываем в него файлы из аналогичного подкаталога дискеты. Заметьте, на котором из разделов находится этот подкаталог

Опять загружаемся с дискеты GRUB (хорошо что времени на это требуется заметно меньше, чем для загрузки, скажем, DOS) и выполняем следующие команды:

grub> root (hd0,n)

grub> setup (hd0)

- где n - номер раздела, в котором находится подкаталог boot/grub.

Последние штрихи.

Если у вас современный винчестер, то почти наверняка GRUB сохранил весь необходимый ему для работы код в блоках нулевой дорожки, соседствующих с MBR (нулевая дорожка не используется операционными системами). Если сообщение об этом появилось на экране во время выполнения команды setup то все файлы подкаталога boot/grub можно теперь удалить. В том числе, menu.lst, если при загрузке вы предпочитаете командный режим. Если же вы предпочитаете меню, то упомянутый файл нужно оставить. И перейдем к анализу его содержимого на примере menu.1st с предложенной вам дискеты. Вообще-то, файл этот достаточно прокомментирован. И даже для удобства приверженцев Microsoft - в кодировке СР-1251. Но некоторые пояснения, быть может, и не помешают. Вот команды установочной сессии:




timeout 10

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

color ligt-gray/blue black/ligt-gray -задаются цвета меню: цвет символов / фона для не выбранной и выбранной позиций меню;

default 0

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

title menu item - всегда начинает описание варианта загрузки. Текст после title станет текстом соответствующей позиции меню.

Все ОС Microsoft загружаются следующими командами:

root (hdm,n)

makeactive

chainloader +1

где m - номер диска, n - номер раздела. Оба нумеруются с нуля.

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

Приложение.

Отредактировав menu.1st вы получаете законченную систему с мультизагрузкой. Поздравляю. Приведенные ниже советы можно прочитать "чисто из любопытства" или в том случае, если вы столкнетесь с проблемой, для разрешения которой знаний у вас окажется недостаточно. Можно рассматривать их и как мини-FAQ. Итак.

Не потеряйте дискету GRUB. Ваш menu.1st никуда не денется, если только вы сами его ненароком не уничтожите, а вот исполняемый код MBR (который в настоящий момент представляет собой ни что иное, как stage1GRUB) рано или поздно будет уничтожен очередной реинсталляцией продукта Microsoft. К счастью, установка мультизагрузчика отнимает не более минуты, вот только дискета GRUB при этом - обязательное условие.

Когда разделов на вашем диске станет много, их таблица, выводимая GRUB, как автозаполнение команды root, не должна ввести вас в заблуждение множеством разделов типа 0х0В или 0хОС. Все разделы с номерами старше трех - логические, и хотя типы их такие же, как у разделов первичных, загружаться они не могут. По крайней мере пока вы не начнете использовать не Microsoft Windows.




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

Имея несколько разделов, вам, возможно, захочется один из них использовать в качестве "подопытного" - того, на котором можно опробовать "сомнительное" ПО. Результатом таких проб и ошибок часто становится крах системы. Сохраните заблаговременно образ "свежеинсталлированнной" системы (Ghost от Symantec или DriveImage от PowerQwest - вполне подходящие для этого средства) - пригодится.

Существует "туповатый" аналог команды root - rootnoverify. Разница между ними в том, что rootnoverify не проверяет так называемую "сигнатуру" - последние два байта загрузчика раздела (boot loader), которые всегда должны быть равны 0х55 0хАА. Мне, признаться, не встречались исправные загрузчики с неверной сигнатурой, но, может быть, вам повезет больше.

Разделы можно "скрывать" (hide), устанавливая четвертый бит в байте типа системы (тот самый, который Microsoft игнорирует, начиная от Windows 2000). Вставив, например, в некоторую секцию загрузки команды

hide (hd0,1)

hide (hd1,1)

unhide (hd0,0)

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

Ни одна ОС от Microsoft кроме NT не может быть загружена со второго диска. Нужно выходить в BIOS Setup, менять устройство загрузки и т д. GRUB предоставляет альтернативу. Команды:

map (hd0) (hd1)

map (hd1) (hd0)

root (hd0,0)

makeaktive

chainloader +1

- загрузят ОС из первого раздела второго диска.

Обратите внимание, что команды map "меняют местами" диски даже в представлении GRUB: второй диск становится после их выполнения hd0, a нe hd1. Так же, собственно, поступает и BIOS.

Символьные имена дисковых устройств, доставшиеся современным ОС от Microsoft "по наследству" от MS DOS, приносят подчас немало неудобств. И дело, конечно, не в том, буквами или цифрами обозначать логические устройства, а в том детерминирована ли связь между наименованием логического устройства и его физической сущностью. У Microsoft - нет. Сами то они "буковки" эти не шибко "жалуют" - загляните хотя бы в NT-шный boot.ini: нумерация дисков и разделов вполне очевидна. Но для пользователя... Наблюдали ли вы изменение порядка именования устройств при подключении второго диска или изменении структуры разделов? Вот об этом-то и идет речь. Как будто второй логический раздел расширенного раздела первого диска изменился после подключения второю диска Явно нет, но называется теперь иначе. Для борьбы с этим явлением рекомендуем задавать в BIOS второй, подключаемый диск как "отсутствующий" (not installed) Система все равно обнаружит его, но уже на более позднем этапе, и "буковки" присвоит его разделам следующие за "буковками" , занятыми разделами первого диска




С NT - получше. Имена разделам можно присваивать самому, а в последних версиях уже появилась возможность монтирования а-ля unix. Когда новое устройство становится как бы частью уже существующего дерева каталогов - и никаких "буковок". Но.. Все это не относится к разделу системному - тому, на котором сама NТ инсталлирована. А потребность такая не исключена. Реинсталляция NT после переноса на другой диск или инсталляция "поверх" (с целью спасти нужные файлы не ко времени рухнувшей системы) с высокой долей вероятности дадут вам новое имя системного раздела. А это неудобно, принимал во внимание количество ссылок в реестре на имя старое. Тут уж придется действовать "отмычкой": с помощью regedit.

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

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

Все описанные операции над таблицей разделов не касались изменения размеров разделов существующих. И это естественно; GRUB не предлагает такой возможности, да и знаний тут требуется побольше. Если же вам когда-нибудь все-таки придется вручную модифицировать эти размеры (восстанавливая MBR после CIH-атаки, например), то помните, что в таблице они задаются двумя способами - старым, с указанием значений номеров цилиндра, головки и сектора для начала и конца раздела (CHS), и новым - с указанием логического номера стартового блока раздела и его длины в блоках Нетрудно догадаться, что второй является одновременно и единственно правильным для LBA (Logical Block Addressing) режима Для разделов, физические параметры которых уже невозможно опиcaть формулой "цилиндр - головка - сектор" (места, отведенного в свое время создателями PC для хранения этих данных, просто недостаточно для описания параметров современных винчестеров), поля CHS все же заполняются, указывая, обычно, на близкий к максимально адресуемому в рамках CHS.




Эпилог.

Разумеется, описанный способ создания системы с мульти-загрузкой - не единственный. Лет пять назад устав от необходимости несколько раз запускать Disk Editor, пока подготавливаемый к продаже компьютер не обретет запрошенную мультисистемность я написал четыре крошечные утилитки для сохранения и восстановления MBR, а также для просмотра и модификации пресловутых четырех пар байт таблицы разделов Используя возможности создания меню средствами confg.sys и autoexec.bat, loadlin (для загрузки Linux из-под DOS) и эти самые утилитки, также вполне можно было создать мультизагрузочную систему. Вывод: важнее все-таки знать, что нужно делать, а средства осуществления найдутся

Вот, собственно и все о моем любимом мультизагрузчике в варианте изложения для приверженцев MS Windows. Побольше любопытства, хладнокровия при операциях на MBR и - успехов!

Владимир Попов.



Группа


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

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

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

В других разновидностях Юникса группа файлу, обычно, присваивается та, которая является "первичной" группой юзера, создающего файл (то есть, та, которая записана в его учетной карточке). А для того, чтобы группа как и в FreeBSD "наследовалась" от директории, на самой директории должен стоять бит sgid.



Группа томов


Один и более логических томов образуют группу томов. Группа томов LVM идеологически аналогична жесткому диску в не-LVM системе. Группа томов формирует из множества логических томов административную единицу.



Hard-владения


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

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

Вы спросите - зачем все это? Дело в том, что предыдущий системный администратор мог в процессе работы или перед уходом из организации что-нибудь "прихватить на память" или произвести "безобидную" модернизацию. Наиболее реальные кандидаты на замену - внутренние комплектующие. Не удивляйтесь, увидев Vanta вместо GeForce, ESS на месте Creative Live!, 10 GB HDD вместо 40 GB и т. п.

Обязательно сравните производителей комплектующих - если при загрузке высвечивается 32 Mб VideoRAM, это совсем не значит, что в слоте стоит утвержденный по документам 32-метровый ASUS. Также очень любит "усыхать" оперативная память: 128 Mб - в 64, а то и в 32 Mб.

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

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

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

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

А посему - берегите нервы!



Hier


Документация Linux www.linuxdoc.ru
HIER(7) Linux Programmer's Manual HIER(7)

НАЗВАНИЕ

hier - описание иерархии файловой системы

ОПИСАНИЕ

Типичная система Linux имеет, кроме прочих, следующие каталоги:

/ Корневой каталог. С него начинается все дерево каталогов.

/bin Каталог, содержащий исполняемые программы, необходимые для работы в однопользовательском режиме и для запуска или ремонта системы.

/boot Содержит статические файлы для загрузчика системы. Файлы этого каталога необходимы при загрузке системы. Инсталлятор карты и конфигурационные файлы должны находится не здесь, а в /sbin и /etc.

/dev Специальные файлы и файлы устройств, ссылающиеся на физические устройства. См. mknod(1).

/dos Если на компьютере запускаются и Linux, и MS-DOS, то обычно файловая система DOS подключается к этому каталогу.

/etc Содержит конфигурационные файлы машины. Hекоторые большие программные пакеты, такие, как X11, могут иметь свои собственные подкаталоги в /etc. Конфигурационные общедоступные файлы могут помещаться либо в этот каталог, либо в /usr/etc. Тем не менее, программы всегда должны искать эти файлы в /etc. Вы можете иметь ссылки на эти файлы в /usr/etc.

/etc/opt

Файлы настроек для дополнительных приложений в /opt.

/etc/sgml

Этот каталог содержит файлы настроек для SGML и XML (дополн.).

/etc/skel

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

/etc/X11

Конфигурационные файлы оконной системы X11.

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

/lib Этот каталог должен содержать разделяемые библиотеки, необходимые для загрузки системы и запуска команд, содержащихся в корневой файловой системе.

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

/opt Этот каталог седержит дополнительные пакеты с файлами собранными статически.

/proc Точка подключения файловой системы proc, предоставляющей пользователю доступ к информации о запущенных процессах и ядре. Это псевдофайловая система, более подробно описанная в proc(5).

/root Этот каталог является домашним для пользователя root.

/sbin Как и /bin, содержит команды, необходимые для запуска системы, но, как правило, не запускаемые обычными пользователями.

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

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

/usr/X11R6

Система X-Window, версия #11, выпуск #6 (дополн.).

/usr/X11R6/bin

Исполняемые файлы, принадлежащие системе X-Windows. Часто на него имеется символьная ссылка в более традиционном каталоге /usr/bin/X11.

/usr/X11R6/lib

Файлы данных, связанные с системой X-Windows.

/usr/X11R6/lib/X11

Содержит различные файлы, необходимые для запуска X Window System. В каталоге /usr/lib/X11 часто имеется символьная ссылка на вышеуказанный каталог.

/usr/X11R6/include/X11

Содержит файлы заголовков для компиляции программ, использующих систему X11. Часто имеется символьная ссылка на этот каталог в каталоге /usr/inlcude/X11.

/usr/bin

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

/usr/bin/X11

Традиционное место поиска исполняемых файлов X11; в Linux это обычно символьная ссылка на /usr/X11R6/bin.

/usr/dict

Заменен на /usr/share/dict.

/usr/doc

Заменен на /usr/share/doc.

/usr/etc

В этом каталоге возможно хранить общедоступные конфигурационные файлы, которые могут использоваться несколькими машинами одновременно. Hесмотря на это, команды, ссылающиеся на них, должны находиться в каталоге /etc. Ссылки из каталога /etc должны указывать на соответствующие файлы в /usr/etc.

/usr/games

Программы для обучения и игры (дополн.).

/usr/include

Файлы заголовков для компилятора C.

/usr/include/X11

Файлы заголовков для компилятора C и системы X-Win- dows. Как правило, это символьная ссылка на /usr/X11R6/include/X11.

/usr/include/asm

Файлы заголовков, определяющие некоторые ассемблерные функции. Это символьная ссылка на /usr/src/linux/include/asm.

/usr/include/linux

Содержит информацию, которая может меняться от выпуска к выпуску. Это символьная ссылка на /usr/src/linux/include/linux для получения информации, предназначенной только для данной системы.

(Обратите внимание, что необходимо иметь файлы заголовоков, корректно работающие с текущей glibc и в пространстве пользователя. Hесмотря на это, исходные версии ядра не рассчитаны на работу в пользовательской программе и не знакомы с libc, которую Вы запустили. Весьма вероятно, что появятся ошибки, если /usr/include/asm и /usr/include/linux будут указывать на произвольное дерево ядра. Системы Debian не делают этого, а используют файлы заголовков тех версий ядра, которые себя хорошо зарекомендовали. Они поставляются в пакете libc*-dev package.

/usr/include/g++

Файлы заголовков, используемые с компилятором GNU C++.

/usr/lib

Объектные библиотеки, в том числе и динамические, а также некоторые программы, обычно не запускаемые непосредственно. Более сложные программы могут иметь в этом каталоге свои подкаталоги.

/usr/lib/X11

Стандартная область для файлов данных, связанных с программами X Window System, а также для конфигурационных файлов самой системы X Window Sys- tem. В Linux это обычно символьная ссылка на /usr/X11R6/lib/X11.

/usr/lib/gcc-lib

содержит исполняемые файлы и файлы заголовков для компилятора GNU C, имя которого gcc(1).

/usr/lib/groff

Файлы для системы форматирования документов GNU groff.

/usr/lib/uucp

Файлы для uucp(1).

/usr/local

В этот каталог обычно помещаются локальные программы.

/usr/local/bin

Локальные исполняемые файлы.

/usr/local/doc

Локальная документация.

/usr/local/etc

Файлы настройки локальных программ.

/usr/local/games

Программы установленных игр.

/usr/local/lib

Файлы, связанные с локальными программами.

/usr/local/include

Файлы заголовков для компилятора C.

/usr/local/info

Страницы info, связанные с локальными программами.

/usr/local/man

Страницы man, связанные с локальными программами.

/usr/local/sbin

Локальные программы для системного администрирования.

/usr/local/share

Локальные данные приложений, которые могут быть разделены различными архитектурами одной ОС.

/usr/local/src

Исходный код локального программного обеспечения.

/usr/man

Заменен на /usr/share/man.

/usr/sbin

Каталог, содержащий исполняемые программы для системного администрирования, не относящиеся к процессу загрузки, запуску /usr или ремонту системы.

/usr/share

Каталог, где подкаталоги содержат данные, которые могут быть использованы в различных архитектурах одной и той же ОС. В нем содержатся данные из /usr/doc, /usr/lib или из /usr/man.

/usr/share/dict

Содержит словарь для проверки орфографии.

/usr/share/doc

Документация на установленные программы.

/usr/share/games

Статические данные для игр из /usr/games.

/usr/share/info

Информационные странички (вид документации).

/usr/share/locale

Информация о локали.

/usr/share/man

Странички руководства.

/usr/share/man/<locale>/man[1-9]

Эти каталоги содержат разделы со страницами руководств в исходниках.

/usr/share/misc

Различные данные которые могут быть разделяемыми.

/usr/share/nls

Каталог с сообщениями на родном языке.

/usr/share/sgml

Файлы для SGML и XML.

/usr/share/terminfo

База данных для terminfo.

/usr/share/tmac

Макросы Тroff не распространяемые вместе с groff.

/usr/share/zoneinfo

Файлы информации о временном поясе.

/usr/src

Исходные файлы тех частей системы, которые входят в состав различных пакетов. Hе используйте этот каталог для работы над своими проектами, так как файлы в подкаталогах /usr предназначены только для чтения (кроме случаев установки программного обеспечения).

/usr/src/linux

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

/usr/tmp

Устарел. Должен быть ссылкой на /var/tmp. Эта ссылка оставлена только для совместимости систем, но ее не следует использовать.

/var Каталог, содержащий файлы, размер которых может меняться. Это файлы очередей и журнала.

/var/adm

Этот каталог заменен /var/log и должен быть символьной ссылкой на /var/log.

/var/backups

Этот каталог зарезервирован.

/var/cache

Кэшированные данные для программ.

/var/catman/cat[1-9] или /var/cache/man/cat[1-9]

Эти каталоги содержат предварительно отформатированные странички руководства в соответствии с их разделами. (Категорически запрещается использовать их в работе).

/var/cron

Зарезервированные каталог.

/var/lib

Каталог с состоянием переменных для программ.

/var/local

Данные по переменным для /usr/local.

/var/lock

В этом каталоге содержатся файлы блокировки. Соглашения об именах файлов, блокирующих устройства, следующее: LCK..<устройство>, где <device> - это имя устройства файловой системы. Используется формат файлов блокировки HDU UUCP, то есть файлы блокировки содержат PID в виде 10-байтного числа ASCII в десятичной системе исчисления; после этого числа стоит символ новой строки.

/var/log

Различные файлы журналов (log).

/var/opt

Данные по переменным для /opt.

/var/mail

Почтовые ящики пользователей. Заменяет /var/spool/mail.

/var/msgs

Каталог зарезервирован.

/var/preserve

Каталог зарезервирован.

/var/run

Временные файлы, создаваемые во время работы. В них содержатся идентификаторы процессов (PIDs) и журнал пользователей (utmp). Файлы из этого каталога обычно удаляются в процессе загрузки системы.

/var/spool

Файлы, поставленные в очередь различными программами.

/var/spool/at

Очередь задания at(1).

/var/spool/cron

Очередь заданий cron(1).

/var/spool/lpd

Файлы, отправленные в очередь для печати.

/var/spool/mail

Заменен на /var/mail.

/var/spool/mqueue

Очередь исходящей почты.

/var/spool/news

Спул-каталог для новостей.

/var/spool/rwho

Файле в спуле для rwhod(8).

/var/spool/smail

Файлы, отправленные в очередь программой доставки почты smail(1).

/var/spool/news

Каталог для подсистемы новостей.

/var/spool/uucp

Файлы программы uucp(1).

/var/tmp

Как и /tmp, этот каталог содержит временные файлы, помещенные в него на неопределенное время.

/var/yp

Файлы с базами данных для NIS.

СООТВЕТСТВИЕ СТАНДАРТАМ

Соответствует стандарту Filesystem Hierarchy Standard, версия 2.2 <http://www.pathname.com/fhs/>.

НАЙДЕННЫЕ ОШИБКИ

Этот список далеко не полон; разные системы могут быть настроены различным образом.

СМ. ТАКЖЕ

find(1), ln(1), mount(1), proc(5), Стандарт файловой системы Linux (The Filesystem Hierarchy Standard)

Linux 2001-09-07 HIER(7)

Документация Linux www.linuxdoc.ru



/Home


Домашние каталоги пользователей. На серверной машине, скорее всего, имеет смысл ставить на этот раздел флаг noexec, но если он не ставится, то nosuid обязателен.

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

ext3/xfs nosuid,nodev



Home dir


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



Howtostart


"Серия: Заметки" ~~~~~~~~~~~~~~~~

Вы начинающий пользователь Unix и это ваш первый-второй-третий... и тд сеанс.

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

все что вы видите на экране дисплея или графического терминала (X-terminal'а) в самом начале сеанса, это различные формы приглашения для входа в систему:

Например: приглашение в OS Linux

(linux4u) (ttyp6)

Debian GNU 1.3

linux4u login:

или приглашение в OS FreeBSD

FreeBSD (unix1.jinr.dubna.su) (ttyp4)

login:

или приглашение в OS Solaris (Sun Microsystems Unix)

UNIX(r) System V Release 4.0 (ultra)

login:

или приглашение в OS HP-UX (Hewllet Packard Unix)

HP-UX dtserv.jinr.dubna.su B.10.20 A 9000/780 (ttyp2)

login:

или

ConvexOS, Release 10.1 (cv.jinr.dubna.su)

login:

или

Exemplar S Class () [SPP-UX Release 5.2]

login:

или приглашение в OS AIX (IBM Unix)

AIX Version 4 (C) Copyrights by IBM and by others 1982, 1994. login:

или приглашение в OS OSF1 (бывший Digital Unix, ныне Compaq Tru64 Unix)

Digital UNIX (dbserv.jinr.dubna.su) (ttyp4)

login:

Все это разновидности "системного приглашения" для входа, те ввода имени пользователя - loginname или username и затем пароля на приглашение:

Password:

Несколько отличается приглажение в CDE(Common Desktop Environment), якобы удобная графическая среда пользователя, но и в ней не сложно понять что система хочет сначала, получить от вас имя и затем пароль.

Итак, входим в OS Unix, например как пользователь "lavr":

FreeBSD (unix1.jinr.dubna.su) (ttyp4)


login: lavr Password: Last login: Sun Oct 3 19:20:55 1999 from :0.0 Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved.

FreeBSD 2.2.8-RELEASE (LAVRWORK) #0: Thu Feb 11 21:11:10 MSK 1999

Welcome to FreeBSD!

Handbook is in /usr/share/doc/handbook and the FAQ in /usr/share/doc/FAQ. lynx /usr/share/doc/handbook & lynx /usr/share/doc/FAQ.

No new messages. вс 3 окт 1999 19:47:45 MSD unix1:/home/lavr>

^^^^- при достоверном пароле мы попадаем в командную строку операционной системы Unix или в случае графической среды, которая называется X-Windows, у нас запускаются несколько различных приложений или desktop - "рабочий стол", это зависит от настроек. Как и во всех системах защиты, вводимый нами пароль не отображается на дисплее в целях сохранения безопасности.

Промежуточная информация которую мы видим при входе в Unix, обычно указывает тип и версию OS Unix, в нашем примере: FreeBSD 2.2.8-RELEASE (LAVRWORK) #0: Thu Feb 11 21:11:10 MSK 1999

права или торговую марку: Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved.

время и место(имя машины) откуда был произведен предыдущий заход под вашим именем: Last login: Sun Oct 3 19:20:55 1999 from :0.0 ^^^^^^^^^- в данном случае с локальной машины с использованием графической системы X-Windows.

возможны иные сообщения, подготовленные системным администратором: Welcome to FreeBSD!

Handbook is in /usr/share/doc/handbook and the FAQ in /usr/share/doc/FAQ. lynx /usr/share/doc/handbook & lynx /usr/share/doc/FAQ.

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

Продолжим, итак, мы в командной строке:

unix1:/home/lavr>

Теперь нам доступно все что не запрещено. :)

с чего можно начать? - с команды, которая должна стать основной для пользователя Unix, "man" - показать руководство по искомой команде, например:



unix1:/home/lavr> man man

MAN(1) FreeBSD General Commands Manual MAN(1)

NAME man - format and display the on-line manual pages

SYNOPSIS man [-adfhktw] [-m system] [-p string] [-M path] [-P pager] [-S list] [section] name ...

это фрагмент руководства по самой команде "man" OS Unix FreeBSD. начало положено, вероятно встает вопрос что за командная строка, комадная строка чего?

При регистрации - заведении нового пользователя, ему назначается домашняя директория - место для хранения файлов, почты, программ и другой личной информации пользователя и назначается командный интерпретатор - SHELL, это программа связывающая пользователя с системой. SHELL - обрабатывает-разбирает запросы от пользователя к системе или отрабатывает свои собственны команды по запросу пользователя. В Unix имеется достаточно богатый набор интерпретаторов комадной строки на настоящий момент. В последнее время большой популярностью пользуются bash, tcsh, но это не означает что они самые лучшие или единственные, огромными возможностями обладают такие shell как, ksh - KornShell или Z-Shell и др.

Основополагающим и самым древним интерпретатором является sh - Bourne-shell, которой идет в поставке любой OS Unix, так же как и еще один старинный интерпретатор csh - C-Shell, с якобы схожим синтаксисом языка "Cи". У нас не стоит задача сравнения или обсуждения тех или иных возможностей интерпретаторов, но коротко, стоит отметить что большинство системных scripts - скриптов (процедур с элементами программирования) пишется на sh, csh - плохо подходит для этих целей, равно как и его расширенный собрат - tcsh, хорошим средством с большими возможностями, является bash, который включает в себя возможности sh - Bourne-Shell. И bash, и tcsh предоставляют достаточный набор удобств для облегчения жизни пользователя в командной строке, работа в которой с незапамятных времен, была основополагающей в Unix. Дабы никого не обидеть, необходимо упомянуть EMACS - это целая среда для облегчения жизни пользователю, разработчику. В прошлом, пользователь заходя в Unix подразумевал emacs, заканчивая сеанс - emacs, забывая про Unix. :-)



Если вы не заказали себе SHELL при регистрации в системе, то самое время посмотреть что мы имеем в качестве интерпретатора:

unix1:/home/lavr> echo $SHELL /usr/local/bin/tcsh unix1:/home/lavr>

сие означает что наш интерпретатор - tcsh, попутно разберем введенную команду, echo - команда системы или встроенная команда интерпретатора, выдает сообщения на стандартный вывод(терминал) заданные ей в качестве параметров или показывает значение переменных среды - environment. В нашем случае $SHELL означает переменную, о чем указывает наличие символа "$" перед заданным параметром. Echo - оно же "эхо" и есть, пример:

unix1:/home/lavr> echo "Просто Эхо" Просто Эхо unix1:/home/lavr>

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

Чтобы увлечь пользователя, хотя бы самую малость, или как-то "подогреть" его интерес к Unix, рассмотрим еще несколько полезных команд и настроек:

командная строка, например: unix1:/home/lavr>

^^^^^^^^^^^^^^^^^- интерпретаторы позволяют пользователю использовать свои собственные настройки PROMPT - "приглашения" командной строки, отличные от системных. Мы будем рассматривать только интерпретаторы tcsh и bash, перед тем как привести некоторые примеры, сразу хочу пояснить пожалуйста не путайте переменные среды - ENVIRONMENT, с переменными интерпретатора - SHELL. Продолжим, прежде чем менять будь то переменные среды ENVIRONMENT, будь то переменные SHELL, желательно посмотреть их значения и выяснить для чего они установлены. Переменные среды - ENVIRONMENT, можно посмотреть с помощью стандартной команды "env", например:

unix1:/home/lavr> env PORTSDIR=/m/FBSD/FreeBSD-current/ports USER=lavr MACHTYPE=i386 MAIL=/var/mail/lavr SSH_AGENT_PID=4632 VENDOR=intel SHLVL=1 HOME=/home/lavr LESS=-ceM XNLSPATH=/usr/X11R6/lib/X11/nls XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB PERLLIB=/usr/share/perl PAGER=less VISUAL=/usr/bin/vi GROUP=dug TMPDIR=/tmp LOGNAME=lavr TERM=xterm BLOCKSIZE=K DISTDIR=/m/FBSD/distfiles LESSCHARSET=koi8-r PATH=/home/lavr/bin:/usr/local/bin:/usr/local/sbin:/usr/local/audio:/bin:/usr/bi n:/usr/X11R6/bin:/sbin:/usr/sbin PACKAGES=/m/FBSD/packages-current DISPLAY=:0.0 LANG=ru_SU.KOI8-R LESSBINFMT=*u[%x] WRKDIR=/usr/pkg/tmp SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-4631 SHELL=/usr/local/bin/tcsh HOST=unix1.jinr.dubna.su OSTYPE=FreeBSD PWD=/home/lavr LC_ALL=ru_SU.KOI8-R TERMCAP=/etc/termcap TZ=:/etc/localtime MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man HOSTTYPE=FreeBSD EDITOR=/usr/bin/vi WINDOWID=20971534



команду "env" можно использовать независимо от вашего SHELL-интерпретатора. Для более полной информации - 'man env'.

Закрепим пройденный материал на примере интерпретатора tcsh:

1. Результат первого примера, переменные среды - ENVIRONMENT, которые мы получили используя команду системы "env", смотрите выше.

2. В tcsh имеется встроенная команда "printenv" которая предоставляет сервис, аналогичный системной команде "env", например:

unix1:/home/lavr> printenv PORTSDIR=/m/FBSD/FreeBSD-current/ports USER=lavr MACHTYPE=i386 MAIL=/var/mail/lavr SSH_AGENT_PID=4632 VENDOR=intel SHLVL=1 HOME=/home/lavr LESS=-ceM XNLSPATH=/usr/X11R6/lib/X11/nls XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB PERLLIB=/usr/share/perl PAGER=less VISUAL=/usr/bin/vi GROUP=dug TMPDIR=/tmp LOGNAME=lavr TERM=xterm BLOCKSIZE=K DISTDIR=/m/FBSD/distfiles LESSCHARSET=koi8-r PATH=/home/lavr/bin:/usr/local/bin:/usr/local/sbin:/usr/local/audio:/bin:/usr/bi n:/usr/X11R6/bin:/sbin:/usr/sbin PACKAGES=/m/FBSD/packages-current DISPLAY=:0.0 LANG=ru_SU.KOI8-R LESSBINFMT=*u[%x] WRKDIR=/usr/pkg/tmp SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-4631 SHELL=/usr/local/bin/tcsh HOST=unix1.jinr.dubna.su OSTYPE=FreeBSD PWD=/home/lavr LC_ALL=ru_SU.KOI8-R TERMCAP=/etc/termcap TZ=:/etc/localtime MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man HOSTTYPE=FreeBSD EDITOR=/usr/bin/vi WINDOWID=20971534

результат должен быть одинаков: printenv==env

Теперь посмотрим какие у нас установленны переменные самого интерпретатора tcsh, для этого воспользуемся его встроенной командой "set", или другой встроенной командой "@", например:

unix1:/home/lavr> set addsuffix argv () cdpath (/sys /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin /usr/src/lib /usr/src/libexec /usr/src/share /usr/src/contrib /usr/src/etc /usr/src/games /usr/src/gnu /usr/src/include /usr/src/) cpu unix1 cwd /home/lavr dirstack /home/lavr echo_style bsd edit gid 100 group dug history 500 home /home/lavr loginsh noclobber nonomatch owd /tmp path (/home/lavr/bin /usr/local/bin /usr/local/sbin /usr/local/audio /bin /usr/bin /usr/X11R6/bin /sbin /usr/sbin) prompt unix1:/home/lavr> prompt2 %R? prompt3 CORRECT>%R (y|n|e|a)? savehist 500 shell /usr/local/bin/tcsh shlvl 1 status 0 tcsh 6.08.00 term xterm tt xterm tty ttyp1 uid 310 user lavr version tcsh 6.08.00 (Astron) 1998-10-02 (i386-intel-FreeBSD) options 8b,nls,dl,al,sm,rh,color unix1:/home/lavr>



Теперь рассмотрим то же, но применительно к интерпретатору bash, настройки среды - ENVIRONMENT, результат работы команды "env" :

[linux4u]~ > env REMOTEUSER=lavr INFOPATH=/home/lavr/info:/usr/local/info:/usr/info:/usr/X11R6/info HISTSIZE=500 HOSTNAME=linux4u LOGNAME=lavr HISTFILESIZE=500 VISUAL=vi TERMINFO=/usr/lib/terminfo MAIL=/var/spool/mail/lavr MACHTYPE=i586-debian-linux PAGER=less WWW_HOME=http://www.jinr.dubna.su CDPATH=.:/home/lavr CERN_ROOT=/cern/pro TERMCAP=/etc/termcap TERM=xterm HOSTTYPE=i586 PATH=/home/lavr/bin:/home/lavr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /cern/pro/bin:/cern/adamo/3.3/bin:/usr/local/sbin:/usr/sbin:/sbin CERN_LIB=/cern/pro/lib HOME=/home/lavr XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB LESSKEY=/etc/lesskey.bin SHELL=/bin/bash ADAMO_LIB=/cern/adamo/3.3/lib PS1=[\h]\w >\040 USER=lavr TMPDIR=/tmp _23500_GNU_nonoption_argv_flags_=000000000 MANPATH=/home/lavr/man:/usr/local/man:/usr/man:/usr/X11R6/man:/cern/pro/man:/cer n/adamo/3.3/man SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-23498 LESS=-ceMX BLOCKSIZE=K LESSCHARSET=koi8-r LESSBINFMT=*u[%x] DISPLAY=linux4u:12.0 LANG=ru_SU.KOI8-R HOST=linux4u SSH_CLIENT=159.93.17.121 753 22 HISTFILE=/home/lavr/.bash_history.linux4u OSTYPE=linux MM_CHARSET=ru_SU.KOI8-R ADAMO_ROOT=/cern/adamo/3.3 WINDOWID=54525968 NNTPSERVER=news.jinr.dubna.su PWD=/home/lavr XNLSPATH=/usr/X11R6/lib/X11/nls HISTCONTROL=ignoreboth SHLVL=2 no_exit_on_failed_exec=1 EDITOR=vi _=/usr/bin/env _8576_GNU_nonoption_argv_flags_=0

переменные самого интерпретатора bash, можно посмотреть с помощью встроенной команды самого bash - "set", например:

[linux4u]~ > set MAILCHECK=60 REMOTEUSER=lavr INFOPATH=/home/lavr/info:/usr/local/info:/usr/info:/usr/X11R6/info HISTSIZE=500 UID=310 HOSTNAME=linux4u LOGNAME=lavr BASH_VERSINFO=([0]="2" [1]="00" [2]="0" [3]="1" [4]="release" [5]="i586-debian-l inux") OPTIND=1 HISTFILESIZE=500 PPID=23500 VISUAL=vi TERMINFO=/usr/lib/terminfo MAIL=/var/spool/mail/lavr MACHTYPE=i586-debian-linux DIRSTACK=() PAGER=less WWW_HOME=http://www.jinr.dubna.su CDPATH=.:/home/lavr CERN_ROOT=/cern/pro IFS=' ' TERMCAP=/etc/termcap TERM=xterm EUID=310 HOSTTYPE=i586 PATH=/home/lavr/bin:/home/lavr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /cern/pro/bin:/cern/adamo/3.3/bin:/usr/local/sbin:/usr/sbin:/sbin CERN_LIB=/cern/pro/lib OLDPWD=/home/ftp HOME=/home/lavr XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB LESSKEY=/etc/lesskey.bin SHELL=/bin/bash ADAMO_LIB=/cern/adamo/3.3/lib LINES=40 PS1='[\h]\w >\040' PS2='> ' PS4='+ ' USER=lavr TMPDIR=/tmp _23500_GNU_nonoption_argv_flags_=000000000 MANPATH=/home/lavr/man:/usr/local/man:/usr/man:/usr/X11R6/man:/cern/pro/man:/cer n/adamo/3.3/man SSH_AUTH_SOCK=/tmp/ssh-lavr/agent-socket-23498 LESS=-ceMX BLOCKSIZE=K LESSCHARSET=koi8-r LESSBINFMT='*u[%x]' COLUMNS=80 SHELLOPTS=braceexpand:hashall:histexpand:monitor:history:interactive-comments:em acs DISPLAY=linux4u:12.0 PIPESTATUS=([0]="0") RANDOM=28471 LANG=ru_SU.KOI8-R HOST=linux4u SSH_CLIENT='159.93.17.121 753 22' HISTFILE=/home/lavr/.bash_history.linux4u OSTYPE=linux MM_CHARSET=ru_SU.KOI8-R ADAMO_ROOT=/cern/adamo/3.3 WINDOWID=54525968 NNTPSERVER=news.jinr.dubna.su OPTERR=1 PWD=/home/lavr XNLSPATH=/usr/X11R6/lib/X11/nls _=clear HISTCONTROL=ignoreboth SHLVL=2 BASH_VERSION='2.00.0(1)-release' no_exit_on_failed_exec=1 BASH=/bin/bash EDITOR=vi mc=() { MC=/tmp/mc$$-"$RANDOM"; /usr/bin/mc -U -P "$@" >"$MC"; cd `cat "$MC"`; /bin/rm "$MC"; unset MC } emacs=() { if [ -z "$DISPLAY" ]; then /usr/bin/emacs "$@"; else /usr/bin/emacs "$@" & fi } pp=() { ps auxwww | egrep "(PID|${*:-.*})" } ff=() { if [ $# -eq 0 ]; then echo "Usage: ff pattern"; else find . \( -name \*$*\* -o -name $*\* -o -name \*$* \) -print; fi } setenv=() { if [ $# -eq 0 ]; then set; else export $1="$2"; fi } unsetenv=() { export -n $*; unset $* }



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

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

Самое время хотя бы мельком прочитать руководство:

unix1:/home/lavr> man tcsh или unix1:/home/lavr> man bash

и вероятно не помешает,

unix1:/home/lavr> man environ

Вернемся к некоторым важным переменным среды и интерпретатора, приглашение командной строки - PROMPT, вид командной строки можно установить через переменные интерпретаторов "prompt" для tcsh и "PS1" для bash, например:

в случае tcsh:

unix1:/home/lavr> set prompt="%m:%/[%T]%#"

и в результате, меняяем вид на:

unix1:/home/lavr[16:04]>

последовательности символов %m,%/,%T и %# - это только малый набор готовых директив характерных только для задания "prompt" конкретно в tcsh, для обзора возможных смотрите 'man tcsh'.

в случае bash:

[linux4u]~ > PS1="\h\w[\@] >" linux4u~[05:28pm] >

сответственно последовательность \h,\w,\@ - характерна для bash, для полного обзора смотрите 'man bash'.

Если по какой-то причине, у вас не работают команды операционной системы, например "env" или другие, возможно что неудачно установлена переменная PATH среды или переменные path для tcsh и PATH для bash. PATH - путь, он есть путь, последовательность директорий которые система будет просматривать на предмет запуска той или иной программы-команды. Пример задания переменной PATH:

в tcsh,

unix1:/home/lavr[17:45]>setenv PATH ${HOME}:/usr/local/bin:/usr/local/sbin:/bin:/usr/bin:/usr/X11R6/bin:/sbin:/usr/sbin

это пример задания переменной среды PATH, используя команду для установки переменный среды в tcsh - setenv.

unix1:/home/lavr[17:51]>set path=( ~/bin /usr/local/bin /usr/local/sbin /bin /usr/bin /usr/X11R6/bin /sbin /usr/sbin )

это пример задания переменой path интерпретатора tcsh, однако некоторые свои переменные tcsh синхронизирует с переменными среды, path одна из таких переменных.



в bash,

linux4u~[05:28pm] >PATH=$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/sbin:/sbin

пример задания переменной PATH в bash, для того чтобы экспортировать ее в среду, достаточно выполнить:

linux4u~[05:54pm] >export PATH

либо сразу выполнить 'export PATH=параметры'.

Не используйте мое ЗНАЧЕНИЕ переменной пути - PATH из примера, оно зависимо от системы, ниже я постараюсь отразить общую структуру дерева Unix.

В общем случае, установить переменные среды можно так:

tcsh, 'setenv ИМЯ значение' bash, 'export ИМЯ=значение'

посмотреть, echo $ИМЯ (напоминаю, символ "$" указывает что нужно показать ЗНАЧЕНИЕ переменной, иначе просто получим результат "эха")

переменные интерпретаторов:

tcsh, 'set имя=значение' bash, 'ИМЯ=значение'

Некоторые полезные переменные среды: HOME,USER,LOGNAME,MAIL,EDITOR,PAGER,LANG TERM,TERMCAP.

Переменная среды PATH нам уже знакома, переменная HOME указывает на домашнюю директорию пользователя, как нетрудно догадаться.

рассмотрим некоторые переменные на примерах:

unix1:/home/lavr[18:39]>echo $HOME /home/lavr unix1:/home/lavr[18:41]>

unix1:/home/lavr[18:41]>echo $USER lavr unix1:/home/lavr[18:42]>echo $LOGNAME lavr unix1:/home/lavr[18:42]>

в данный момент переменные среды USER и LOGNAME совпадают и соответствуют имени - login, вошедшего в сеанс пользователя.

unix1:/home/lavr[18:42]>echo $MAIL /var/mail/lavr unix1:/home/lavr[18:44]>

переменная MAIL указывает полный путь к вашему почтовому ящику в системе, о работе с почтой будет описано в другой _заметке_.

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

unix1:/home/lavr[18:44]>echo $EDITOR /usr/bin/vi unix1:/home/lavr[18:48]>

Сразу хочу заметить, в стандартной конфигурации разных Unix, основные редакторы , которые приходят с системой это: ed - строчный текстовый редактор "Эд"; vi,view,ex - что суть, одно и тоже, полноэкранный текстовый редактор "Ви-ай".



Базовый набор команд редактора "Vi" полностью включает команды строчного редактора "ed", который очень удобно использовать для мелких и быстрых правок текста. Предупреждаю, не торопитесь запускать любой из этих редакторов если ранее вы не сталкивались с редакторами у которых имеется режим "командной строки" и режим "редактирование". Для освоения этих редакторов советую использовать две открытые сессии терминалов(виртуальные консоли или xterm, или два физических терминала - это зависит от ваших возможностей), в одном сеансе - 'man vi[ed]', а в другом - 'vi [test]' или 'ed [test]'. Если у вас все-таки возникли проблемы с выходом из редакторов, то:

- в случае ed, необходимо выйти в командный режим используя сочетание клавиш CTRL-C (те послать сигнал INTR-прервать, ASCII DEL или BREAK), и получить в строке первым символом - "?", что означает переход в "командный режим" и затем выдать комадну "Q" - выйти из редактора.

- в случае vi, в комадный режим можно выйти через нажатие "escape" или CTRL-C, переход в командный режим обычно сопровождается звуковым сигналом и затем задать команду ":q" или ":q!".

Не трудно заметить, что самое замечательное свойство редакторов ed/vi, это то что они есть во всех Unix, других качеств, как положительных, так и отрицательных(?), тоже достаточно, но об этом отдельно в других заметках или разделах FAQ'ов. Несколько наиболее распространненых в Unix редакторов: - joe, jove, emacs(это целая среда), vile,vim,nvi (разнообразие vi-подобных) - xemacs, nedit - редакторы ориентированные для работы в графическом режиме X-Windows.

переменная PAGER указывает какая программа будет вызываться для просмотра файлов в текстовом формате, например команда "man" в разных OS Unix, зачастую проверяет эту переменную для использования в дальнейшем заданной там программы просмотра. Например: unix1:/home/lavr> echo $PAGER less unix1:/home/lavr> или 1.lavr@sunhe:/home/sunhe/lavr>echo $PAGER more 2.lavr@sunhe:/home/sunhe/lavr>



Где, less и more - самые распространенные и продвинутые утилиты для просмотра текстовых файлов.

Переменные среды TERM и TERMCAP указывают тип используемого терминала и базу данных с описаниями различных терминалов соответственно. Возможно, в следующих заметках суть этих терминов и их использование будет объяснено подробнее, сейчас же упомяну что все экранно-ориентированные программы используют одну из двух баз, старую - termcap или более современную, продвинутую - terminfo для операций с курсором, цветом, функциональными клавишами и тд и тп, тс операций ввода-вывода, в зависимости от типа терминала определенного в переменной TERM. Назначение этих переменных зависит от типа терминала(hardware), косвенно от OS Unix, режима терминала - текстовая консоль (виртуальная - богатая возможность использования переключения страниц видео-памяти в Intel-based Unix) или графический режим X-Windows. В широко известных Intel-based OS Unix: Linux, FreeBSD, Solaris-x86, SCO, Xenix, переменная TERM часто имеет следующие значения(в случае текстовой консоли):

Linux : TERM=linux FreeBSD : TERM=cons25 или pc3[x] (cons25r и pc3r с koi8-support) Solaris : TERM=at386 SCO/Xenix: TERM=[не помню] (подойдет at386 или измененный на его основе)

SUN/HP/OSF: TERM=sun/hp/sx

и разнообразные модификации на базе указанных значений TERM, смотрите файл /etc/termcap, например 'more /etc/termcap'.

В случае использования X-Windows, переменная TERM чаще всего имеет значения взависимости от используемой программы a-la "xterm": xterm,color-xterm,kxterm и тд и тп. Если вы используете эмуляторы терминала в различных программах дозвонки(bbs) или эмуляторов терминала в пакетах для работы с Unix из Windows9x/NT, не забудьте привести в соответствие или выбрать наиболее подходящий для вас режим эмуляции удаленного терминала, например в bbs'ках:

kermit,telix,telemate и многих других: ansi/vt52/100/200/220/...

тот же принцип и в пакетах "эмуляторы удаленного терминала" для Windows9x/NT. (Разнообразные NetTERM/TerraTERM и тд) Проверить, настроить или видоизменить "эмуляторы терминалов" можно после входа в систему, изменив переменные TERM/TERMCAP/TERMINFO, например:



unix1:/home/lavr> echo $TERM xterm unix1:/home/lavr> echo $TERMCAP /etc/termcap unix1:/home/lavr>

что говорит об использовании грфической среды X-Windows, для нее эмулятора терминала - xterm (TERM=xterm) и базы описания терминалов, файл /etc/termcap, который определен через переменную TERMCAP. Как упоминалось выше, в качестве базы описания терминалов можно использовать как TERMCAP, так и TERMINFO, в моих примерах я опираюсь на базу TERMCAP, в силу старой привычки. Нужно отемтить, использование баз TERMCAP/TERMINFO, часто зависит от того как ваш администратор собирает те или иные экранно-ориентированные программы.

примеры текстовых консолей,

FreeBSD:

unix1:/home/lavr> echo $TERM pc3r unix1:/home/lavr> echo $TERMCAP /etc/termcap unix1:/home/lavr>

Linux:

[linux4u]~ > echo $TERM linux [linux4u]~ > echo $TERMCAP /etc/termcap [linux4u]~ >

Sun(Sparc):

ultra:/home/lavr> echo $TERM sun ultra:/home/lavr> echo $TERMCAP /etc/termcap ultra:/home/lavr>

В программах удаленного доступа, например через модем - режим online, в старых-добрых telix/telemate, я использую эмуляцию терминалов vt52/ansi, тогда при входе на Unix машину имеет смысл проверить и при необходимости переопределить переменные TERM/TERMCAP. Например в telix, я выбираю эмуляцию vt52, а при входе через модем на машину с OS Unix, устанавливаю переменную TERM=vt100, в случае telemate - выбираю эмуляцию ansi-терминала и затем в Unix использую TERM=ansi или pcansi (и разнообразные модификации ansi или pcansi). Кстати, можно сделать разбор и установку переменной TERM при входе - те отработке "login", а в случае неизвестного терминала попросить задать переменную TERM интерактивно, как это сделать - личное дело администратора или пользователя, а вот где - ниже, мы коротко разберем процедуру входа в систему для пользователей с интерпретаторами bash/tcsh[sh/csh].

Последняя, упомянутая нами переменная среды - LANG. Эта переменная имеет отношение к локализации операционной системы, в нашем случае, руссификации - кириллизации. Спора о выборе кодировки(866-ALT,1251-Windows,ISO-8859-5,KOI8-R) не будет, гласный или негласный, зарегистрированный или нет, для русскоязычной части сети Интернет стандартом принято считать KOI8-R(точка). И в этом отношении правильную политику ведет сеть FIDO. В любом случае, имеется много руководств или FAQ-ЧАВО, написанных еще во времена Релкомовской _монархии_ :-), о сетевом этикете, терминах, ресурсах И КОДИРОВКЕ. На настоящий момент, наиболее удачно локализованная OS Unix - FreeBSD и вероятно Net[Open]BSD, Linux - те открытые системы. Что-то в этом плане сделал Sun в Solaris2.7, я не видел и не пробовал и утверждать не берусь. Во всем что касается локализации, как здесь, так и в дальнейшем будет подразумеваться кодировка KOI8-R. Возможно у нас будет раздел о локализации, пока же будем считать что система "как-то" локализована или по-крайней мере, имеет необходимые загруженные фонты и "клавиатурный переключатель" между разными раскладками клавиатуры(кодовыми таблицами). В этом документе мы попробуем дать лишь несколько советов как можно попытаться использовать 8-ой бит для чтения и написания кириллицы. Не хотелось бы "пудрить мозги начинающим", но следует уточнить такие моменты:



- в качестве рабочего места машина с OS Unix или X-Terminal, в этом случае ваш администратор должен позаботиться о локализации, а при использовании графической среды X-Windows вы можете загружать необходимые фонты и и "клавиатурный переключатель" самостоятельно;

- в качестве рабочего места машина с MS-DOS или Windows9x/NT, в этом случае у вас наверняка кодировки 866 и 1251 соответственно, тогда при использовании программ "удаленного доступа" вам следует позаботиться о переключении в MS-DOS/Windows в KOI8-R или использовать в качестве фонтов в программах "удаленного доступа" - фонты KOI8-R и переопредилить раскладку клавиатуры (если позволяют программы удаленного доступа)

Рассмотрим несколько примеров,

Допустим что локально мы можем смотреть и/или переключаться в KOI8-R.

1. Проверка характиристик устройства стандартного вывода.

- сначала проверим характеристики устройства стандартного вывода, по-русски установленный размер отображения символа 5,6,7 или 8 bit и чтобы не происходило обрезание последнего (8bit) в процессе ввода, воспользуемся командой "stty" (man stty), например:

unix1:/home/lavr> stty -a speed 9600 baud; 40 rows; 80 columns; lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo -extproc iflags: istrip icrnl -inlcr -igncr ixon -ixoff -ixany imaxbel -ignbrk brkint -inpck -ignpar -parmrk oflags: opost onlcr -oxtabs cflags: cread cs7 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow -dtrflow -mdmbuf cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ; eol2 = ; erase = ^H; intr = ^C; kill = ^U; lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W; unix1:/home/lavr>

ищите две компоненты в управляющих флагах(cflags) и входных(iflags): наличие cflags - наличие режима "cs8"(размер символа 8bit) и в iflags - "-istrip"(запретить обрезание входных символов до 7bit). В верхнем примере видим что установлены режимы cs7 и istrip, в то время как нам нужно cs8 и -istrip, посмотрите каков будет результат при переключении в KOI8-R: unix1:/home/lavr> MAMA MYLA RAMU



попробуем исправить, установив нужные нам режимы:

unix1:/home/lavr> stty cs8 -istrip

и снова наберем ту же фразу:

unix1:/home/lavr> мама мыла раму

Возможны варианты команды stty с параметрами, попробуйте следующие и если помогло, установите что именно:

unix1:/home/lavr> stty pass8

работает в разных версия BSD, Linux, OSF1, не работает в Solaris/HP-UX/AIX. или unix1:/home/lavr> stty -parity -evenp -oddp cs8 -istrip или unix1:/home/lavr> stty -parenb -istrip cs8

2. Проверка интерпретаторов на предмет работы с 8-ым битом.

- возможно ваш SHELL не пропускает 8-ой bit(и это по-большому счету несущественно, ибо главное чтобы можно было использовать кириллицу в редакторах и программах просмотра текста - less/more), можно указать на это системному администратору и попросить разобраться. Как проверить с какими возможностями скомпилированы tcsh/bash,

tcsh:

unix1:/home/lavr> set или unix1:/home/lavr> @ unix1:/home/lavr> set addsuffix argv () cdpath (/sys /usr/src/bin /usr/src/sbin /usr/src/usr.bin /usr/src/usr.sbin /usr/src/lib /usr/src/libexec /usr/src/share /usr/src/contrib /usr/src/etc /usr/src/games /usr/src/gnu /usr/src/include /usr/src/) cpu unix1 cwd /home/lavr ... version tcsh 6.08.00 (Astron) 1998-10-02 (i386-intel-FreeBSD) options 8b,nls,dl,al,sm,rh,color ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- это интересующая нас строка и в ней необходимо наличие параметров 8b - 8bit и nls - при отсутствии локализации.

bash:

если я не ошибаюсь, bash не сообщает параметры компиляции, но если возникли проблемы, то попробуйте создать в домашней директории файл .inputrc такого вида:

------------------------- begin .inputrc ---------------------------------- set convert-meta off set meta-flag on set output-meta on ------------------------- end of .inputrc ---------------------------------

затем запустить второй shell: 'bash --login' или выйти из сеанса и снова войти или задать эти параметры ввода и отображения входной строки так:



[linux4u]~ > bind 'set convert-meta off' 'set meta-flag on' 'set output- meta on' 3. Отображение кириллицы в редакторах.

При настроенной локализации, при этом неважно как ее определили, те для пользователей это возможность использования русских символов, ВСЕ ДОЛЖНО работать.

_правильное_ значение переменной LANG=ru_SU.KOI8-R , однако можно встретить достаточно большое разнообразие, например:

nusun:~>echo $LANG koi8 nusun:~>

или

lavr@decimal 101 -> echo $LANG ru.koi_8 lavr@decimal 102 ->

или ru,RU,su,SU и тд и тп, пользователям "фиолетово" - лишь бы работало.

При ненастроенной локализации, попробуйте такие варианты:

запустите ваш редактор, переключите клавиитуру в русскую раскладку и попробуйте напечатать, например "мама мала раму", если набранный текст не соответствует отображаемому, то:

- вы видите кириллицу, но она не соответствует введенному тексту, тогда у вас проблема с раскладкой клавиатуры;

- если вы видите восмиричные, шестнадцатиричные или "\код", ваш редактор требует настройки локализации, как этого избежать:

1. попробуйте отменить установку переменной LANG или задать ей пустое значение и посмотреть как это отразилось на работе редактора; 2. попробуйте установить переменную LANG в любое значение, найденное в вашей OS Unix, отличное от "C","Latin-1","en_US", лишь бы имелась возможность отображения 8-ого бита, например,

Solaris:

если у вас имеется директория /usr/lib/locale с локализацией для de,fr,es можете воспользоваться ими:

tcsh:

ultra:/home/lavr> setenv LANG de или ultra:/home/lavr> setenv LC_CTYPE de

bash:

ultra:/home/lavr> export LANG=de или ultra:/home/lavr> export LC_CTYPE=de

теперь редактор должен показывать русские буквы.

HP-UX:

если у вас имеется директория /usr/lib/nls с локализацией для german - de_DE.roman8 или других стран отличных от en_US (USA), вполне можете воспользоваться ими:

tcsh:

ultra:/home/lavr> setenv LANG de_DE.roman8 или ultra:/home/lavr> setenv LC_CTYPE de_DE.roman8



bash:

ultra:/home/lavr> export LANG=de_DE.roman8 или ultra:/home/lavr> export LC_CTYPE=de_DE.roman8

теперь редактор должен показывать русские буквы.

Это не есть верное решение проблемы, а всего лишь выход из положения который может не сработать для старых OS Unix и для sh/csh.

Коротко о том какие файлы для tcsh/bash нужно создать-модифицировать для настройки среды в OS Unix. При входе на машину с OS Unix у вас отрабатыает сценарий "login", подробно - читайте 'man login'. Если ваш интерпретатор - tcsh, то при входе в систему он пытается выполнить команды сначала из системных файлов-настроек: /etc/csh.cshrc и /etc/csh.login (порядок выполнения мб установлен во время компиляции tcsh), а затем из домашней директории пользователя: .tcshrc, .cshrc, .login (порядок мб изменен) Более полную информацию см. 'man tcsh'. Свои настройки вы можете сделать в файлах домашней директории: .tcshrc, .cshrc, .login. Если ваш интерпретатор - bash, то при входе в систему он пытается выполнить команды сначала из системных файлов-настроек: /etc/profile и после этого из файло в домашней директории пользователя: .bash_profile, .bash_login, .profile и .bashrc (порядок мб изменен при компиляции). Более полную информацию см. 'man bash'. Свои настройки вы можете сделать в файлах домашней директории: .bash_profile, .bash_login, .profile и .bashrc.

В большинстве разных OS Unix имеется директория содержащая заготовки для настройки пользовательской среды, sh/csh/tcsh/bash - /etc/skel, из нее копируются настроечные файлы в домашнюю директорию пользователя при регистрации. Часто бывает что администратор либо изменяет изначальные системные наситройки или добавляет что-то специфичное, либо заменяет эту диреторию на /usr/local/etc , возможно на иную, характерную для локальных целей. Например:

Solaris,

ultra:/tmp> ls -la /etc/skel total 24 drwxr-xr-x 2 root sys 512 Sep 2 1997 . drwxrwxr-x 28 root sys 3584 Oct 1 14:47 .. -rwxr-xr-x 1 vvm dug 6 Apr 4 1996 .bash_logout -rw-r--r-- 1 vvm dug 27 Mar 6 1996 .bash_profile -rw-r--r-- 1 vvm dug 21 Mar 6 1996 .bashrc -rw-r--r-- 1 root other 25 Sep 2 1997 .cshrc -rw-r--r-- 1 root other 25 Sep 2 1997 .login -rw-r--r-- 1 root other 6 Sep 2 1997 .logout -rw-r--r-- 1 root other 144 Jul 9 1997 .profile ultra:/tmp>



HP-UX,

[dtserv]~ > ls -la /etc/skel total 40 drwxrwxr-x 7 root sys 1024 Jan 30 1998 . dr-xr-xr-x 25 bin bin 5120 Oct 16 09:20 .. -rwxr-xr-x 1 root sys 6 Jan 29 1998 .bash_logout -rw-r--r-- 1 root sys 31 Jan 29 1998 .bash_profile -rw-r--r-- 1 root sys 25 Jan 29 1998 .bashrc -r--r--r-- 1 root sys 814 Jun 10 1996 .cshrc -r--r--r-- 1 root sys 347 Jan 28 1998 .exrc -r--r--r-- 1 root sys 347 May 30 1996 .exrc.orig -r--r--r-- 1 root sys 341 Jun 10 1996 .login drwxr-xr-x 2 root sys 1024 Jan 30 1998 .mc -rw-r--r-- 1 root sys 677 Jan 29 1998 .profile -r--r--r-- 1 root sys 446 Jun 10 1996 .profile.orig drwxr-xr-x 2 root sys 1024 Jan 30 1998 .ssh drwxr-xr-x 2 root sys 24 Jan 30 1998 Mail drwxr-xr-x 2 root sys 1024 Apr 21 1998 bin drwxr-xr-x 2 root sys 1024 Apr 21 1998 sbin [dtserv]~ >

Теперь попробуем рассмотреть повседневный набор команд в OS Unix:

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

1. uname - посмотреть под управлением какой OS и на какой платформе мы работаем:

`man uname`

Пример:

[unix1]~ > uname -a FreeBSD unix1.jinr.dubna.su 4.2-STABLE FreeBSD 4.2-STABLE #0: Tue Mar 13 17:31:28 MSK 2001 toor@unix1.jinr.dubna.su:/usr/src/sys/compile/LAVR i386 [unix1]~ >

ultra:/home/lavr> uname -a SunOS ultra 5.5.1 Generic_103640-32 sun4u sparc SUNW,Ultra-1 ultra:/home/lavr>

обычно команда `uname` сообщает версию OS и платформу.

2. date - текущие дата и время:

`man date`

ultra:/home/lavr> date Fri Jun 15 18:19:01 MSK/MSD 2001 ultra:/home/lavr>

3. who[w] - посмотреть среднюю загрузку и кто еще работает на машине и чем в текущий момент занят:

Примечание: команды who/w похожи и на разных систем имеют небольшие различия,

`man who` `man w`

[unix1]~ > who lavr ttyp1 14 июн 15:05 (unix1.jinr.dubna) lavr ttyp2 10 июн 15:10 (unix1.jinr.dubna) lavr ttyp3 15 июн 17:06 (unix1.jinr.dubna) lavr ttyp4 15 июн 18:10 (unix1.jinr.dubna) lavr ttyp5 15 июн 18:10 (unix1.jinr.dubna) pin ttyp6 15 июн 18:21 (dezcom.mephi.ru) lavr ttyp7 15 июн 18:28 (unix1.jinr.dubna) [unix1]~ >



ultra:/home/lavr> who palichik pts/3 Jun 14 17:53 (sunct2) tanyusha pts/5 Jun 15 16:05 (159.93.25.75) tanyusha pts/0 Jun 15 17:41 (159.93.25.75) lavr pts/2 Jun 15 18:17 (unix1.jinr.dubna.su) ultra:/home/lavr>

Примечание: если запущен демон rwhod, то команда rwho покажет всех работающих пользователей на остальных компьютерах сети под управлением OS Unix, в случае если на них тоже запущен демон rwhod:

cv:/local2/home/lavr> rwho asp cv:ttyp9 Jun 15 18:09 :08 eat cv:ttyp1 Jun 13 18:28 :01 eat cv:ttyp7 Jun 13 19:38 :01 karlov cv:ttypc Jun 15 18:03 lavr lxit00:pts/0 Jun 15 14:05 :08 minaev alice:pts/1 Jun 15 10:47 :25 popovla cv:ttyp6 Jun 15 17:44 :34 root dtmain:1 Jun 14 11:53 skachkov cv:ttyp5 Jun 15 17:19 :08 taratin bcv:ttyp3 Jun 15 14:46 :18 toor dtmain:0 Jun 6 13:51 zemlya cv:ttyp8 Jun 15 18:00 :19 cv:/local2/home/lavr>

в верхнем примере мы видим что на машине cv работают пользователи:

asp eat karlov popovla skachkov zemlya

на машине dtmain:

root toor

на машине lxit00:

lavr

на машине alice:

minaev

на машине bcv:

taratin

пример команды `w`:

[unix1]~ > w 6:28пп up 12 days, 6:48, 7 users, load averages: 1.47, 1.31, 1.18 USER TTY FROM LOGIN@ IDLE WHAT lavr p1 unix1.jinr.dubna чт 03пп 5 ftp ftp://lizard/video lavr p2 unix1.jinr.dubna вс 03пп 13 slogin lx000h lavr p3 unix1.jinr.dubna 5:06пп - /usr/local/bin/mc -U - lavr p4 unix1.jinr.dubna 6:10пп 5 lynx ftp://lizard/vide lavr p5 unix1.jinr.dubna 6:10пп 3 slogin cv pin p6 dezcom.mephi.ru 6:21пп - pine lavr p7 unix1.jinr.dubna 6:28пп - w [unix1]~ >

cv:/local2/home/lavr> w 6:25pm up 22 days, 23:37, 12 users, load average: 1.39, 1.95, 3.59 User tty login@ idle JCPU PCPU what vkc tty03 6:22pm 1 -csh[vkc] lavr ttyp0 6:21pm w eat ttyp1 6:28pm 6 3:39 1 -csh toor ttyp2 8:05pm191:42 11:42 23 -bash ayrjan ttyp3 5:15pm 3:22 10 9 pine pokorny ttyp4 6:22pm 3 sleep 30 skachkov ttyp5 5:19pm 40 -csh[skachkov] popovla ttyp6 5:44pm 40 1 -bash[popovla] eat ttyp7 7:38pm 6 2:34 8 pine asp ttyp9 6:09pm 17 2 -csh[asp] kon ttypb 1:48pm 1:39 25 13 -csh[kon] karlov ttypc 6:03pm 1 9 -csh[karlov] cv:/local2/home/lavr>



ultra:/home/lavr> w 6:39pm 3 users, load average: 0.04, 0.03, 0. 06 User tty login@ idle JCPU PCPU what palichik pts/3 Thu 5pm 4 4 mc -U palichik pts/0 6:35pm mc -U lavr pts/1 6:38pm w ultra:/home/lavr>

4. tty - посмотреть на каком терминале вы работаете:

`man tty`

ultra:/home/lavr> tty /dev/pts/1 ultra:/home/lavr>

[unix1]~ > tty /dev/ttyp7 [unix1]~ >

в примерах выше - pts и ttyp указывают что это сетевые терминальные сессии

[unix1]~ > tty /dev/console [unix1]~ >

[unix1]~ > tty /dev/ttyv3 [unix1]~ >

в прмерах выше - console и ttyv3 указывают на то что это консольные терминалы, а ttyv3 - 3'ий виртуальный терминал консоли.

5. more|less - команды просмотра содержимого текстовых файлов, часто используются как фильтры в pipe'ах:

`man more` `man less`

ultra:/home/lavr> more koi8.txt ultra:/home/lavr> less koi8.txt

ultra:/home/lavr> who | less ultra:/home/lavr> who | more

6. cat - программа слияния и распечатки файлов:

`man cat`

[unix1]~ > cat koi8.txt верхний регистр: winkeys ----------------

цифровой ряд: Ё!"'*:,.;()_+| Ё!"#;%:?*()_+|

ЙЦУКЕНГШЩЗХЪ ФЫВАПРОЛДЖЭ ЯЧСМИТЬБЮ?

нижний регистр: ---------------

цифровой ряд: ё1234567890-=\ ё1234567890-=/

йцукенгшщзхъ фывапролджэ ячсмитьбю/

[unix1]~ >

[unix1]~ > cat koi8.txt koi8.txt > 2koi8

в примере выше мы использовали команду cat для слияния файла koi8.txt, дважды в один файл 2koi8 с использованием перенаправления вывода в файл 2koi8.

7. ls - показать содержимое директории:

[unix1]~ > ls [unix1]~ > ls -la [unix1]~ > ls /usr/bin [unix1]~ > ls -la /usr/bin | more [unix1]~ > ls -la /usr/bin | less

8. cd - перейти в указанную директорию или файловую систему:

`man cd` - это встроенная команда вашего интерпретатора SHELL

[unix1]~ > cd /tmp [unix1]/tmp >

[unix1]/tmp > cd /usr/local [unix1]/usr/local >

[unix1]/usr/local > cd .. [unix1]/usr >

[unix1]/usr > cd ../home [unix1]/home >

9. pwd - посмотреть в каком текущем месте, директории мы находимся:



[unix1]~ > pwd /home/lavr [unix1]~ >

10. mkdir - создать директорию:

[unix1]~ > mkdir testdir [unix1]~ > ls -la testdir total 9 drwxr-xr-x 2 lavr dug 512 15 июн 18:57 . drwxr-xr-x 68 lavr dug 7680 15 июн 18:57 .. [unix1]~ > mkdir /tmp/testdir [unix1]~ > ls -la /tmp/testdir total 5 drwxr-xr-x 2 lavr wheel 512 15 июн 18:57 . drwxrwxrwt 37 root wheel 4096 15 июн 18:57 .. [unix1]~ >

11. ed,ex,vi - редакторы для создания и работы с файлами, touch,cat,copy - команды, в частности позволяющие создавать файлы:

ed - строчный редактор (распространяется в любом дистрибутиве OS Unix) ex,vi - полноэкранные редакторы (распространяется в любом дистрибутиве OS Unix)

указанные редакторы присутствуют в любом дистрибутиве любой OS Unix

`man ed` `man ex` `man vi`

примеры создания небольших файлов с помощью команд touch,cat,copy:

[unix1]~ > cat > testfile This is example Easy file creator - CTRL-D [unix1]~ >

нажатие CTRL-D мы использовали как посылку сигнала EOF (End Of File)

[unix1]~ > ls -la testfile -rw-r--r-- 1 lavr dug 34 15 июн 19:07 testfile [unix1]~ >

примечание: комбинационную связку клавиши-сигнал можно посмотреть командой `stty -a`:

[unix1]~ > stty -a speed 9600 baud; 40 rows; 80 columns; lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo -extproc iflags: -istrip icrnl -inlcr -igncr ixon -ixoff -ixany -imaxbel -ignbrk -brkint -inpck -ignpar -parmrk oflags: opost onlcr -oxtabs cflags: cread cs8 parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow -dtrflow -mdmbuf cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = ; eol2 = ^@; erase = ^H; intr = ^C; kill = ^U; lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ; stop = ^S; susp = ^Z; time = 0; werase = ^W; [unix1]~ >

примечание: stty - команда установки настроек терминальных устройств.

[unix1]~ > touch createfile [unix1]~ > ls -la createfile -rw-r--r-- 1 lavr dug 0 15 июн 19:18 createfile [unix1]~ >



с помощью команды `touch` можно создать пустой файл.

[unix1]~ > cp /dev/ stdin newfile Once again to create new file Hello, World. [unix1]~ > ls -la newfile -rw-r--r-- 1 lavr dug 44 15 июн 19:22 newfile [unix1]~ >

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

[unix1]~ > echo "Just add one string to file newfile" >> newfile [unix1]~ > cat newfile Once again to create new file Hello, World. Just add one string to file newfile [unix1]~ >

в данном случае ">>" означает добавить к уже существующему файлу.

Вариантов быстрого создания маленьких фалов много, но для реальной работы необходимо осваивать существующие в OS Unix редакторы, их много и поэтому рекоммендации такие:

- если вы планируете стать системным администратором:

ed/vi[vim] - обязаны знать, по-скольку это базовые редакторы всех OS Unix

- во всех остальных случаях:

ed/vi[vim] emacs/xemacs joe jove nedit - X11 редактор и тд и тп

12. rm - удалить файл, директорию:

`man rm`

удалить созданные ранее файлы:

[unix1]~ > rm 2koi8 remove 2koi8? y [unix1]~ >

удалить созданные ранее директории:

[unix1]~ > rm -r testdir remove testdir? y [unix1]~ >

[unix1]~ > rm -r /tmp/testdir remove /tmp/testdir? y [unix1]~ >

13. cp - команда копирования файлов, директорий:

копирование файла:

ultra:/home/lavr> cp cp: Insufficient arguments (0) Usage: cp [-f] [-i] [-p] f1 f2 cp [-f] [-i] [-p] f1 ... fn d1 cp -r|R [-f] [-i] [-p] d1 ... dn-1 dn ultra:/home/lavr>

ultra:/home/lavr> cp koi8.txt copy_koi8.txt ultra:/home/lavr> ls -la copy_koi8.txt -rw------- 1 lavr dug 1125 Jun 16 15:43 copy_koi8.txt ultra:/home/lavr>

копирование директории:

ultra:/home/lavr> ls -la Mail total 150 drwx------ 2 lavr dug 512 Jan 22 13:14 . drwxr-xr-x 39 lavr dug 3584 Jun 16 15:45 .. -rw------- 1 lavr dug 1407 Oct 29 1998 anarbay -rw------- 1 lavr dug 1409 Aug 1 1998 andrew -rw------- 1 lavr dug 3974 Jun 17 1999 iris -rw------- 1 lavr dug 2704 Dec 3 1999 lavr -rw------- 1 lavr dug 5568 Aug 13 1999 mailer-daemon -rw-r--r-- 1 lavr dug 43384 May 2 2000 posted -rw------- 1 lavr dug 0 May 14 1998 saved-messages -rw------- 1 lavr dug 381 Nov 16 2000 sent-mail -rw------- 1 lavr dug 2763 Jan 22 13:14 virtaliro.com -rw------- 1 lavr dug 6027 Jul 9 1999 vmitsyn ultra:/home/lavr>



ultra:/home/lavr> cp -R Mail AltMail ultra:/home/lavr> ls -la AltMail total 150 drwx------ 2 lavr dug 512 Jun 16 15:45 . drwxr-xr-x 40 lavr dug 3584 Jun 16 15:45 .. -rw------- 1 lavr dug 1407 Jun 16 15:45 anarbay -rw------- 1 lavr dug 1409 Jun 16 15:45 andrew -rw------- 1 lavr dug 3974 Jun 16 15:45 iris -rw------- 1 lavr dug 2704 Jun 16 15:45 lavr -rw------- 1 lavr dug 5568 Jun 16 15:45 mailer-daemon -rw-r--r-- 1 lavr dug 43384 Jun 16 15:45 posted -rw------- 1 lavr dug 0 Jun 16 15:45 saved-messages -rw------- 1 lavr dug 381 Jun 16 15:45 sent-mail -rw------- 1 lavr dug 2763 Jun 16 15:45 virtaliro.com -rw------- 1 lavr dug 6027 Jun 16 15:45 vmitsyn ultra:/home/lavr> ultra:/home/lavr> rm -rf AltMail ultra:/home/lavr>

14. mv - перенос файлов и директорий с одного места в другое:

ultra:/home/lavr> mv mv: Insufficient arguments (0) Usage: mv [-f] [-i] f1 f2 mv [-f] [-i] f1 ... fn d1 mv [-f] [-i] d1 d2 ultra:/home/lavr>

ultra:/home/lavr> mv koi8.txt lavr ultra:/home/lavr> ls -la koi8.txt koi8.txt: No such file or directory ultra:/home/lavr> ls -la lavr -rw------- 1 lavr dug 1125 Oct 28 1998 lavr ultra:/home/lavr> mv lavr koi8.txt ultra:/home/lavr> ls -la koi8.txt -rw------- 1 lavr dug 1125 Oct 28 1998 koi8.txt ultra:/home/lavr>

15. cut - команда позволяющая вырезать из заданного файла куски по полям или заданному формату:

`man cut`

ultra:/home/lavr> cut -f 1 -d: /etc/passwd результат вывода опущен

данный пример вырезает первое поле из файла /etc/passwd используя в качестве разделителя символ ":".

16 tr - перевод, замена символов по заданному шаблону:

`man tr`

ultra:/home/lavr> echo AGHKGAHKGHK | tr '[:upper:]' '[:lower:]' aghkgahkghk ultra:/home/lavr>

используя pipe[канал] подаем входную строку на вход команды `tr` с шаблоном перевести все символы в верхнего регистра в нижний.

17. grep - команда поиска данных в файле по образцу, можно использовать регулярные выражения:

ultra:/home/lavr> ls -la /tmp | grep lavr drwx------ 2 lavr dug 120 Jun 15 18:38 ssh-lavr ultra:/home/lavr>



в результате вывода команды `ls -la` найти все вхождения строки "lavr"

[unix1]~ >grep "~lavr" /var/log/apache/unix1-access.log | grep -v "159.93" | grep -v "194.87.162.86" | less

результаты вывода опущены, в данной команде в файле /var/log/apache/unix1-access.log ищется строка "~lavr" с исключением строк: "159.93" и "194.87.162.86", для исключения используетсяя опция "-v".

18. sed - потоковый редактор:

`man sed` - включая регулярные выражения - regexp, это целая жизнь:

ultra:/home/lavr> echo "asdjfh livr asdfjhjk" | sed s/livr/lavr/g asdjfh lavr asdfjhjk ultra:/home/lavr>

19. dmesg - в большинстве OS Unix, данная команда позволяет посмотреть сообщения процедуры загрузки, с важными системными сообщениями, тип системы, платформы, прерывания, обнаруженные устройства, диагностика, неполадки, сбои и тд и тп:

ultra:/home/lavr> dmesg | less Jun 16 16:09 cpu0: SUNW,UltraSPARC (upaid 0 impl 0x10 ver 0x22 clock 143 MHz) ^MSunOS Release 5.5.1 Version Generic_103640-32 [UNIX(R) System V Release 4.0] Copyright (c) 1983-1996, Sun Microsystems, Inc. mem = 131072K (0x8000000) avail mem = 127664128 Ethernet address = 8:0:20:83:4f:e8 root nexus = Sun Ultra 1 SBus (UltraSPARC 143MHz) sbus0 at root: UPA 0x1f 0x0 ... espdma0 at sbus0: SBus0 slot 0xe offset 0x8400000 esp0 at espdma0: SBus0 slot 0xe offset 0x8800000 Onboard device sparc9 ipl 4 sd0 at esp0: target 0 lun 0 sd0 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0

sd1 at esp0: target 1 lun 0 sd1 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@1,0

sd2 at esp0: target 2 lun 0 sd2 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@2,0

sd3 at esp0: target 3 lun 0 sd3 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@3,0

sd6 at esp0: target 6 lun 0 sd6 is /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@6,0 root on /sbus@1f,0/espdma@e,8400000/esp@e,8800000/sd@0,0:a fstype ufs zs0 at sbus0: SBus0 slot 0xf offset 0x1100000 Onboard device sparc9 ipl 12 zs0 is /sbus@1f,0/zs@f,1100000 zs1 at sbus0: SBus0 slot 0xf offset 0x1000000 Onboard device sparc9 ipl 12 zs1 is /sbus@1f,0/zs@f,1000000 keyboard is major minor



mouse is major minor

stdin is major minor

cgsix0 at sbus0: SBus0 slot 0x2 offset 0x0 SBus level 5 sparc9 ipl 9 cgsix0 is /sbus@1f,0/cgsix@2,0 cgsix0: screen 1152x900, single buffered, 1M mappable, rev 11 stdout is major minor

boot cpu (0) initialization complete - online ...

[unix1]~ > dmesg | less > tcp pid 10141 (communicator-4.7), uid 310: exited on signal 10 (core dumped) fxp0: promiscuous mode enabled fxp0: promiscuous mode disabled fxp0: promiscuous mode enabled fxp0: promiscuous mode disabled arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0 arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0 arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0 arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0 arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0 arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0 nfs server lx000h:/xpt/arch/private/lavr: not responding nfs server lx000h:/xpt/arch/private/lavr: is alive again pid 50336 (ftpd), uid 14 on /pub: file system full ...

[unix1]~ > dmesg | less > tcp pid 10141 (communicator-4.7), uid 310: exited on signal 10 (core dumped) fxp0: promiscuous mode enabled fxp0: promiscuous mode disabled fxp0: promiscuous mode enabled fxp0: promiscuous mode disabled arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0 arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0 arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0 arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0 arp: 159.93.17.1 moved from 00:d0:97:c0:98:00 to 00:30:94:9f:cd:80 on fxp0 arp: 159.93.17.1 moved from 00:30:94:9f:cd:80 to 00:d0:97:c0:98:00 on fxp0 nfs server lx000h:/xpt/arch/private/lavr: not responding nfs server lx000h:/xpt/arch/private/lavr: is alive again pid 50336 (ftpd), uid 14 on /pub: file system full

20. netstat - отобразить статус сети.сетевых ресурсов на машине:



`man netstat`

[unix1]~ > netstat -rn | less Routing tables

Internet: Destination Gateway Flags Refs Use Netif Expire default 159.93.17.1 UGSc 26 7070 fxp0 127.0.0.1 127.0.0.1 UH 14 2839577 lo0 159.93.16/20 link#1 UC 0 0 fxp0 =>

159.93.17.1 0:d0:97:c0:98:0 UHLW 23 0 fxp0 1197 159.93.17.2 0:30:94:9f:cd:80 UHLW 0 0 fxp0 713 159.93.17.7 8:0:20:a6:bc:dd UHLW 0 630 fxp0 1160 159.93.17.8 8:0:20:22:c9:e5 UHLW 0 11090 fxp0 1165 159.93.17.13 0:80:29:20:8:27 UHLW 0 35868 fxp0 1183 159.93.17.32 0:0:f8:3:e9:7e UHLW 0 8877 fxp0 1177 159.93.17.51 0:80:ad:85:f5:4d UHLW 1 1240802 fxp0 1024 159.93.17.75 8:0:20:83:4f:e8 UHLW 1 1788 fxp0 1082 159.93.17.93 0:d0:b7:d5:d5:a6 UHLW 0 2414 fxp0 1117 159.93.17.106 0:80:ad:50:d1:92 UHLW 1 1442633 fxp0 1165 159.93.17.110 0:50:da:35:96:16 UHLW 0 2011262 fxp0 1017 159.93.17.112 0:60:52:5:a0:3c UHLW 0 3527994 fxp0 1145 159.93.17.121 0:50:8b:5b:ae:6 UHLW 1 1593 lo0 159.93.17.129/32 link#1 UC 0 0 fxp0 =>

159.93.17.130 8:0:20:13:4:ff UHLW 0 201 fxp0 11 ...

с ключами "-rn" мы можем посмотреть таблицу маршрутизации на нашей машине.

[unix1]~ > netstat | less Active Internet connections Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp4 0 17520 xnc.http delta.radio.tsu..64577 ESTABLISHED tcp4 0 0 unix1.1794 h100.n166.cust.d.1228 ESTABLISHED tcp4 0 0 unix1.1793 h100.n166.cust.d.ftp ESTABLISHED tcp4 0 17520 xnc.http delta.radio.tsu..64552 ESTABLISHED tcp4 0 16060 xnc.http delta.radio.tsu..64551 ESTABLISHED tcp4 0 0 unix1.1786 spleen.demos.su.49177 ESTABLISHED tcp4 0 0 unix1.1784 spleen.demos.su.ftp ESTABLISHED tcp4 0 0 unix1.4034 ultra.ssh ESTABLISHED tcp4 0 0 localhost.6016 localhost.4032 ESTABLISHED tcp4 0 0 localhost.4032 localhost.6016 ESTABLISHED tcp4 0 0 unix1.down alone.dubna.ru.2232 ESTABLISHED tcp4 0 0 localhost.6015 localhost.4014 ESTABLISHED tcp4 0 0 localhost.4014 localhost.6015 ESTABLISHED tcp4 0 0 unix1.down alone.dubna.ru.2231 ESTABLISHED tcp4 0 0 localhost.6010 localhost.3977 ESTABLISHED tcp4 0 0 localhost.3977 localhost.6010 ESTABLISHED tcp4 0 0 unix1.down alone.dubna.ru.2117 ESTABLISHED tcp4 0 0 unix1.netbios-ssn dct058.4054 ESTABLISHED tcp4 0 0 localhost.6011 localhost.3606 ESTABLISHED tcp4 0 0 localhost.3606 localhost.6011 ESTABLISHED tcp4 0 0 unix1.down alone.dubna.ru.4950 ESTABLISHED ...



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

[unix1]~ > netstat -I fxp0 -w 2 input (fxp0) output packets errs bytes packets errs bytes colls 143 0 219287 66 0 6590 0 155 0 175309 77 0 5886 0 128 0 167191 61 0 5754 0 128 0 180442 61 0 4492 0 129 0 129614 63 0 3466 0

смотрим входящие и исходящие пакеты на сетевом интерфейсе fxp0 каждые 2 секунды и наличие коллизий.

21. ifconfig - посмотреть, изменить, сконфигурировать сетевые интерфейсы:

`man ifconfig`

ultra:/home/lavr> ifconfig -a lo0: flags=849 mtu 8232 inet 127.0.0.1 netmask ff000000 le0: flags=863 mtu 1500 inet 159.93.17.75 netmask fffff000 broadcast 159.93.31.255 ultra:/home/lavr>

[unix1]~ > ifconfig fxp0: flags=8843 mtu 1500 inet 159.93.17.121 netmask 0xfffff000 broadcast 159.93.31.255 inet6 fe80::250:8bff:fe5b:ae06%fxp0 prefixlen 64 scopeid 0x1 inet 159.93.25.88 netmask 0xffffffff broadcast 159.93.25.88 inet 159.93.17.129 netmask 0xffffffff broadcast 159.93.17.129 inet 193.124.144.1 netmask 0xffffff00 broadcast 193.124.144.255 ether 00:50:8b:5b:ae:06 media: 100baseTX status: active supported media: autoselect 100baseTX 100baseTX 10baseT/UTP 10baseT/UTP lp0: flags=8810 mtu 1500 faith0: flags=8000 mtu 1500 gif0: flags=8010 mtu 1280 gif1: flags=8010 mtu 1280 gif2: flags=8010 mtu 1280 gif3: flags=8010 mtu 1280 lo0: flags=8049 mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 ppp0: flags=8010 mtu 1500 ppp1: flags=8010 mtu 1500 ppp2: flags=8010 mtu 1500 ppp3: flags=8010 mtu 1500 [unix1]~ >

22. du - посмотреть дисковую статистику на предмет сколько блоков занимает тот или иной файл, директория, файловая система:

`man du`

[unix1]~ > du koi8.txt 1 koi8.txt [unix1]~ >

[unix1]~ > du koi8.txt 1 koi8.txt [unix1]~ > du -s /tmp du: /tmp/ssh-2vvlLjiH: Permission denied du: /tmp/ssh-rib6JdrI: Permission denied du: /tmp/ssh-SPFlXG4J: Permission denied du: /tmp/ssh-HKVnOass: Permission denied du: /tmp/ssh-4q1VOPlz: Permission denied du: /tmp/ssh-1rTOGbiD: Permission denied du: /tmp/screens/S-kev: Permission denied du: /tmp/kfm-cache-0: Permission denied 12906 /tmp [unix1]~ >



23. df - показать свободное дисковое пространство:

`man df`

[unix1]~ > df Filesystem 1K- blocks Used Avail Capacity Mounted on /dev/ad4s2a 79359 45477 27534 62% / /dev/ad4s2g 99183 12951 78298 14% /tmp /dev/ad4s1e 988591 642023 267481 71% /pub /dev/ad4s2f 2977230 2433724 305328 89% /usr /dev/ad4s2e 793983 240049 490416 33% /var /dev/ad4s2h 14086242 11159515 1799828 86% /pub/ftp/1 /dev/ad5s1e 793983 459880 270585 63% /home /dev/ad5s1f 18230608 15289542 1482618 91% /pub/ftp/2 /dev/ad0s1e 19396603 14413862 3431013 81% /pub/ftp/3 /dev/ad6s1c 9598123 8076441 753833 91% /pub/ftp/4 /dev/ad7s1e 19399910 13561354 4286564 76% /pub/ftp/incoming/moviez procfs 4 4 0 100% /proc lx000h:/xpt/arch/private/lavr 16513960 12538704 3136396 80% /pub/ftp/incoming/raid [unix1]~ >

24. Как самостоятельно изменить свой пароль:

`man passwd`

[unix1]~ > passwd Changing local password for lavr. Old password: (если правильно набран, идем далее) New password:

Retype new password: (для проверки на совпадение) [unix1]~ >

Теперь у нас новый пароль.

25. Как самостоятельно изменить себе SHELL:

`man chsh`

1) посмотрите какие shell-интерпретаторы доступны на вашей системе:

[unix1]~ > less /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells.

/bin/sh /bin/csh /bin/tcsh /bin/bash /usr/local/bin/bash /sbin/nologin /usr/bin/false /nonexistent

2) из этого списка: sh/csh/tcsh/bash с помощью команды chsh, установите наиболее удобный для вас.

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

sh - .profile, иногда .shrc csh - .login, .cshrc tcsh - .login, .tcshrc bash - .bash_rc, .bash_profile

В соответствии с выбранным вами SHELL, вы можете редактировать указанные выше файлы в вашей домашней директории, создавая, настройки под себя и для себя.

-- Andrey Lavrentyev/lavr | JINR, Dubna, Russia | lavr@cv.jinr.ru