Операционные системы - статьи

         

Ядро Linux


За подключение к Internet в любой разновидности операционной системы UNIX отвечает несколько компонент: ядро ОС, которое должно поддерживать стек протоколов TCP/IP; программа реализации протокола физического уровня (для телефонного соединения это протоколы PPP или SLIP); подсистема настройки модема - chat-сценарий либо AT-команды (прямое общение с модемом). Кроме того, нужно настроить DNS для разрешения использования имен удаленных серверов и программу обслуживания стека протоколов TCP/IP inetd. Впрочем, вопросы настройки DNS и inetd выходят за рамки настоящей статьи.

Раньше, чтобы ядро ОС Linux поддерживало протокол TCP/IP, его требовалось перекомпилировать, но в последней версии дистрибутива Red Hat эта проблема была решена с помощью модулей, которые загружаются в ядро. Поддержка загружаемых модулей существовала и прежде, однако в новом дистрибутиве она используется наиболее активно, что позволяет изменять конфигурацию ядра без перезагрузки компьютера и остановки вычислений. В дистрибутиве Red Hat 6.0 поставляется ядро, откомпилированное с поддержкой всех возможных модулей, в том числе и TCP/IP, поэтому вполне достаточно загрузить соответствующий модуль командой insmod. Причем саму команду вызывать не стоит - для загрузки в ядро модуля поддержки TCP/IP лучше задействовать файл конфигурации сети network в каталоге /etc/sysconfig/. Для поддержки сетевых протоколов в нем должна быть следующая строка:

NETWORKING=yes.

Если такой строки нет, то нужно ее добавить или изменить.

Следует отметить, что файлы из каталога /etc/sysconfig просматривают сценарии начальной загрузки системы, которые располагаются в каталоге /etc/rc.d. Они написаны на языке оболочки UNIX, и поэтому можно понять, как именно и в каком порядке происходит загрузка Linux. Чтобы ОС соответствовала указанной в файле конфигурации, необходимо либо ее перезагрузить, либо перезапустить соответствующий сценарий (это можно сделать с помощью сценариев из каталогов /etc/rc.d/init.d/, вызвав их с ключом restart). Сценарий для работы с сетью обычно называется *network (вместо * может стоять код, указывающий загрузчику, когда этот сценарий нужно запускать). После того как будет установлена поддержка TCP/IP в ядре, можно переходить к настройке самого телефонного соединения.



Этюд о героях невидимого фронта


Copyright(С) Олег П. Филон

канун 2000, Гомель, BY

см. также статью

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

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

Любознательный студент-первокурсник в заснеженной Финляндии на другом конце земного шара публикует в Сети Интернет крошечную программку, которая начинает стремительно расти. Вокруг этого проекта под названием ОС Линукс объединяют свои усилия тысячи добровольцев и он постепенно проникает на миллионы компьютеров по всему миру.

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

Если же говорить серьезно, то до полной победы пока далеко и нам еще предстоит увидеть много драматических сражений и при желании в них поучаствовать. Но уже сейчас нужно назвать имена героев, бескорыстно отдающих свой труд и свое вдохновение всем, кто использует открытые программы из проекта GNU, в том числе и саму ОС Линукс. Таких программ уже многие тысячи и у каждой из них множество авторов и соавторов, так что полный список составил бы десятки тысяч человек. Этому списку черед еще придет, а мы пока порассуждаем о том, что же заставляет людей становиться такими альтруистами.


Ричард Столмен в своем Манифесте GNU описывает причины, почему он раздает свои программы людям и надеется, что найдется много программистов, которые последуют его примеру. На первых порах его борьба была действительно трудна. Первые версии программ из проекта GNU были по сегодняшним меркам любительскими, многие из них пришлось писать наново, с нуля, общение с единомышленниками было затруднено - Internet еще не получил широкого распространения. Пришлось также доказывать, почему нужно использовать именно лицензию GNU GPL. Только сейчас, спустя много лет и наблюдая триумф свободных программ, очевидна важность этой лицензии. Она является гарантией, что программа останется открытой навсегда, и налагает обязательство на каждого, кто распространяет подобную программу: всегда публиковать исходный код, в том числе и сделанных изменений. Эта лицензия также гарантирует авторство разработчикам, так что мы сможем и через десятки лет узнать имена каждого, кто сделал вклад в данную конкретную программу.

Подробный анализ мотивов, движущих авторами свободных программ, сделал Эрик С. Реймонд в своей статье "The Cathedral and the Bazaar". Анализирую собственный опыт открытой разработки и феноменальный успех проекта Линуса, Эрик не только показал жизнеспособность открытого метода разработки программ, но и убедил некоторых известных производителей ПО попробовать этот метод в своей практике. К его глубинному анализу изнутри проекта, простирающемуся от цитат из классика анархизма Петра Кропоткина и вплоть до сравнения с саморегулирующимися биологическими и рыночными системами, осмелюсь добавить одно замечание со стороны.

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




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

Имена авторов, особенно в больших проектах с сотнями разработчиков, иногда помещают в файле под именем CREDITS. Например, в исходниках ядра linux-2.2.13 в этом файле список из 283 человек. Каждый программист, сделавший значительный вклад в проект, имеет запись в этом файле наподобие этой:

N:Alan Cox

W: http://roadrunner.swansea.linux.org.uk/alan.shtml

E: alan@lxorguk.ukuu.org.uk

E: alan@www.linux.org.uk (linux.org.uk stuff)

E: Alan.Cox@linux.org (if others fail)

D: Linux Networking (0.99.10->2.0.29)

D: Original Appletalk, AX.25, and IPX code

D: Current 3c501 hacker. >>More 3c501 info/tricks wanted<<.

D: Watchdog timer drivers

D: Linux/SMP x86 (up to 2.0 only)

D: Initial Mac68K port

D: Video4Linux design, bw-qcam and PMS driver ports.

D: 2.1.x modular sound

S: c/o I2IT Limited

S: The Innovation Centre

S: Singleton Park

S: Swansea, SA2 8PP

S: Wales, United Kingdom

Это пример текстовой базы данных с полями из обычных строк, а первые два символа в строке задают имя поля - N: для имени человека, W: веб-страничка, E: электронный адрес, D: описание сделанного, S: почтовый адрес. Такие текстовые базы данных вместе с несколькими простыми утилитами для их обработки позволяют легко и быстро извлечь нужную информацию. Например, чтобы подсчитать, сколько человек упомянуто в списке CREDITS, наберем из командной строки:

... $ grep "^N:" CREDITS|wc -l

Команда grep сканирует файл в поиске указанного контекста, и передает результат через т.н. конвейер следующей команде wc, которая подсчитывает количество строк, слов и знаков (ключ -l показывает только строки). Если вы не знакомы с такими текстовыми утилитами, срочно разыщите файл под именем textutils_2.0.tar.gz и попытайтесь установить их в своей системе. Если вы можете выполнять команды на Юникс машине, то эти утилиты уже обязаны там быть. С помощью этих утилит мы и попробуем исполнить наш этюд.



Мы составим список самых результативных сопроводителей (maintainer) из дистрибутива Debian. Этот проект основал в 1994г. Ян Мэрдок (Ian Murdock), и он оказался важной и необходимой частью движения GNU. Сам Ричард Столмен одобрил и назвал его официльным дистрибутивом начатого им проекта GNU. Особенностями Debian являются открытая разработка, несколько поддерживаемых вычислительных платформ, огромное количество программ, высокое качество и профессионализм. Над проектом Debian трудятся почти пол-тысячи разработчиков, кооперирующихся через Сеть. За много лет отработана уникальная система "дебианизации" программ из интернет и раскинута широкая сеть зеркал архива. На основе Debian построен дистрибутив Corel и несколько других.

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

... $ for i in main non-free contrib;do \ wget ftp://ftp.debian.org/debian/dists/potato/$i/binary-i386/Packages.gz;\ gzip -cd Packages.gz>>debian-packages;rm Packages.gz;done

Для полноты картины сделаем то же самое и для архива non-us.debian.org . Этот архив расположен в Голландии и хранит програмы, которые из-за экспортных ограничений, существующих в США, нельзя держать на основном сайте. Хотя таких программ немного, в некоторых случаях они могут оказаться весьма важными, т.к. обеспечивают шифрование и защиту информации.

... $ for i in main non-free contrib;do \ wget ftp://non-us.debian.org/debian-non-US/dists/potato/non-US/$i/binary-i386/Packages.gz;\ gzip -cd Packages.gz>>debian-packages;rm Packages.gz;done

Эти команды для удобства разбиты на 3 строки, но так же работает и одна длинная строка. Полученный файл debian-packages представляет собой текстовую базу данных, имеющую следующие поля:

Package: textutils Version: 2.0-2 Priority: required Section: base Essential: yes Maintainer: Galen Hazelwood <galenh@debian.org> Pre-Depends: libc6 (>= 2.1) Conflicts: ptx Provides: ptx Replaces: bsdmainutils (<= 4.5.2), ptx Architecture: i386 Filename: dists/unstable/main/binary-i386/base/textutils_2.0-2.deb Size: 498524 MD5sum: 0aedf1cd8f4dd591ab66008db45aa431 Description: The GNU text file processing utilities.


The utilities: cat cksum comm csplit cut expand fmt fold head join nl od paste pr ptx sort split sum tac tail tr tsort unexpand uniq wc. installed-size: 1334

Названия полей говорят сами за себя. Добавлю лишь, что весь архив разбит сначала на 2 версии - стабильную и экспериментальную. Эти версии дистрибутивов имеют соответственно имена slink и potato. Затем каждый дистрибутив разбит на 3 секции : main, non-free и contrib. Первая и самая большая из них полностью удовлетворяет требованиям проекта Debian и его политике. Программы в секциях non-free и contrib имеют некоторые ограничения на распространение или как-то иначе не выдерживают строгих требований ревнителей чистоты Debian. Отдельно хранятся исходники, общие для всех типов процессоров, и откомпилированные пакеты для нескольких платформ. Далее каждая секция разбивается на 26 каталогов, и каждый пакет хранится в каталоге в соответствии со своим назначением.

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

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

... $ grep "^Package: " debian-packages|wc -l

У меня получилось 4485, но у вас может быть и больше.


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

... $ grep "^Maintainer:" debian-packages|cut -c 13-|less

В списке много повторяющихся фамилий - это значит, что человек сопровождает несколько пакетов. Попробуем узнать, кто же из них чемпион? Сделать это нам помогут еще пара утилит: sort и uniq. Вторая из них может в отсортированном списке подсчитать количество совпадающих строк. Таким образом

... $ grep "^Maintainer:" debian-packages|cut -c 13-|sort|uniq -c|less

уже выдает нам интереснейший список. Но внимательно на него посмотрев, обнаруживаем, что у некоторых сопроводителей по нескольку e-mail адресов, так что наш список не совсем точен. Уберем эти адреса - нас интересуют только люди. Воспользуемся потоковым редактором sed - программкой, выполняющей ряд заданных команд редактирования для каждой строки.

... $ grep "^Maintainer:" debian-packages|cut -c 13-|sed 's/ *//'\ > |sort|uniq -c|less

Что-то команда стала слишком длинная. Давайте переименуем файл debian-packages в более короткое имя pks, или еще лучше - сделаем на него символическую ссылку (symbolic link):

... $ ln -s debian-packages pks

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

$ grep "^Maintainer:" pks|cut -c 13-|sed 's/ *//'|sort|uniq -c|sort -k1nr -k2f|less

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

$ awk -F" <" '/^Maintainer:/{print $1}' pks|cut -c 13-|sort|uniq -c|sort -k1nr -k2f|head -n 20 87 Joey Hess 80 Herbert Xu 66 Adrian Bridgett 62 James LewisMoss 59 Adam Heath 56 Turbo Fredriksson 53 Matthias Klose 52 Takuo KITAME 51 Branden Robinson 51 Gergely Madarasz 51 Michael Alan Dorman 47 Debian QA Group 44 David Engel 41 Charles Briscoe-Smith 39 Santiago Vila 38 Andrea Fanfani 37 Torsten Landschoff 36 Josip Rodin 36 Martin Mitchell 35 Debian GCC maintainers



В этот список попали два коллективных сопроводителя: Debian QA Group с 47 пакетами и GCC maintainers с 35. Первый нечто вроде группы контроля качества (Quality Assurance), а вторая группа следит за GNU Compiler Collection - именно так теперь расшифровывается GCC. Тем удивительнее производительность некоторых сопроводителей, обошедших целые коллективы. А долговременный чемпион Joey Hess сопровождает также и весь мастер-архив проекта Debian, и является автором множества скриптов, автоматизирующих дебианизацию новых программ.

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

... $ info -f textutils

Так же подробно описаны sed и gawk - GNU вариант языка запросов awk. К сожалению, хотя дистрибутив Debian содержит документацию на многих языках, русского среди них нет. Море полезной информации на эту тему имеется на сервере

В заключение, воздав хвалу таланту и бескорыстию авторов открытых программ, хочу обратить внимание на один тревожный факт - очень редко встречающиеся фамилии из бывшего СССР. Вот некоторые имена, попавшие в почетные списки в крупных проектах: Олег Дрокин из Евпатории, Юрий Пер из Тулы в списке 283 из файла CREDITS ядра версии 2.2.13. Алексей Кузнецов (Москва?) в списке действующих MAINTAINERS этой же версии. Упоминаются как авторы правок к ядру также Boris Tobotras, Sergey Smitienko, Savochkin Andrey Vladimirovich. Точно знаю, что под именем Solar Designer также скрывается наш человек. В проекте Debian среди почти полутысячи сопроводителей отыскал похожие на русские имена: Dima Barsky, Alexander Yukhimets, Igor Grobman. Вспоминаю еще Андрея Чернова, известного человека из мира FreeBSD. Даже если я не упомянул или не нашел многих наших, уже могу утверждать - ex-СССР представлен среди лидеров открытого программирования непропорционально мало. Это повод для беспокойства более серьезного, чем в случае спортивных поражений.Отставание в программировании может иметь далеко идущие последствия для экономики наших стран и для их информационной безопасности. Но это тема другой статьи.



К сбою готов!



Иллюстрация:
Стив Адамс
А вы задумывались над тем, что будете делать, если однажды ваш сервер зависнет после перезагрузки системы? И, что не менее важно, сколько времени вам потребуется на решение возникшей проблемы? Большинство администраторов Windows NT при одной мысли о возможности увидеть голубой экран с кучей цифр и надписью STOP (известный как blue screen of death) бросает в холодный пот. Впрочем, и любая другая неполадка в работе сервера компании не может вызвать улыбку.

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



К вопросу о развлечениях


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

В состав KDE входит серия мультимедийных программ - CD-проигрыватель, пара MPEG-плейеров, видеоплейер, микшер, проигрыватели wav- и midi-файлов (рис. 7). Функционально они ничуть не уступают своим аналогам под Windows.

Рис. 7. Мультимедийные средства KDE (сверху вниз и слева направо): микшер, kmpg - штатный mpeg-аудиоплейер, X11amp - развитый mpeg-аудиоплейер (аналог Winamp'а), CD-плейер

Настройка их тоже не сложна. В Mandrake (и, вероятно, в прочих клонах RedHat'а) по умолчанию поддержка звука в ядре включена. Разумеется, если Linux сам по себе поддерживает Вашу звуковую карту (если нет - вопрос не ко мне; впрочем, это неоднократно описывалось и в Сети, и на бумаге). Проверить это можно с помощью программки sndconfig (вероятно, есть и другие способы, но я их пока не знаю). Она задаст несколько вопросов (ответы на них - очевидны) и проведет тест: если Вы услышите wav и midi звуки - значит, все в порядке.

Для доступа к mpeg-аудиофайлам непосредственно в KDE необходима еще одна процедура: дать user'у право доступа к аудиоустройству (по умолчанию этой привелегией располагает только root). Для этого надо назваться последним (посредством su) и запустить chmode с соответствующими ключами (точный формат команды выдается в ответ на попытку запустить микшер, будучи user'ом). После этого Вы получаете доступ ко всей перечисленной выше музыке.

Дополнение: давеча получил письмо от одного из посетителей моего сайта (подписавшегося ником Ulrith. В нем приведена столь замечательная история, что не могу не присести ее здесь. Сначала автор письма пытался настроить звук тем способом, как описано у меня. И получалось скверно: под root'ом звук был, под user'ом - отсутствовал. А дальше (цитирую):

"На след. день мне приснился сон (!), в котором я решил эту проблему совершенно идиотским способом, а именно: пошел в рута, и в центре управления КДЕ понавыбирал всяких звуков для всяких событий. (Ранее я считал, что руту мультимедя не нужна - не солидно как-то ;) Потом пошел в себя и сделал там то же самое.
И вот тут-то оно и заработало. Проснувшись, я подивился глупости сюжета, но ;), все-таки проделал вышеописаное на работе. Сон оказался в руку ;) Такая вот эпопея с элементами мистики ;)"

(конец цитаты, как говорят телекомментаторы.

Так что и такой способ возможен. Я-то, честно говоря, поступил очень неизящным способом: звук требовался срочно (на предмет укладывания детей спать), а потому я просто (назвавшись root'ом) присвоил все файлы в каталоге /dev самому себе, но уже в роли user'а...

Доступ к музыке возможен через штатный MPEG-плейер, довольно примитивный, или через X11amp - полный функциональный аналог известного winamp'а. Однако, на мой взгляд, удобнее воспользоваться Райнера Максимини (Rainer Maximini). Как следует из названия, это, в сущности, база данных mpeg-файлов, с возможностью создания и импорта плейлистов, их сортировки, редактирования информации об исполнителях, а также развитыми средствами конфигурирования. И, разумеется со средствами воспроизведения mpeg-файлов. Интересной особенностью является возможность одновременного воспроизведения двух файлов - в некоторых случаях дает весьма любопытный эффект. Но может использоваться и по прямому назначению - например, для наложения аккомпанемента на пение.

Если же возникает потребность в RealAudio (большинство сайтов любимой мной авторской песни - в этом формате) - нужно обратиться на сайт соответствующей фирмы (то есть ). Там с некоторых пор доступна бесплатная Linux-версия RealPlayer G2. Правда, из всех их серверов ни один не поддерживает докачку. Что, в наших условиях, не есть хорошо. И, надо сказать, не все редакции работают хорошо, а некоторые не работаю просто.


Как администрировать юзеров и регулировать доступ к файлам?


Для этого есть специальные утилиты, например, adduser. Но эти

утилиты слишком умные: например, копируют стандартные инициализационные

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

что надо копировать, а что - нет.

Базовый файл - /etc/master.passwd, из него получаются

/etc/passwd (общедоступный список пользователей), /etc/spwd.db

(база пользователей) и /etc/pwd.db (база паролей). Для добавления и

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

команду vipw (как следует из ее названия, она запускает редактор

vi или другой, если установлена переменная окружения EDITOR).

Но я предпочитаю deco, а затем даю команду pwd_mkdb

master.passwd. (Внимание - это можно делать только если гарантируется,

/etc/что никто другой не будет редактировать файл в это время! vipw

блокирует запуск другого экземпляра этой (но не другой) программы

администрирования юзеров.)

В файле master.passwd на каждого юзера отведено по одной строке. Каждая строка состоит из полей:

имя пользователя (вводится на приглашение login:)

закодированный пароль

UID (User IDenteficator), число

GID (Group IDenteficator), число

User's general classification (в 2.0 не использовалось, в 2.2.2 вроде уже задействовано).

Password change time (у меня в этом поле всегда ноль)

Account expiration time

комментарий; обычно - полное имя пользователя

home (домашняя директория)

shell (программа, запускаемая при входе с терминала)

Имя пользователя задействовано во множестве мест, в т.ч. в терминальном

входе (при работе на машине с Unix как на рабочей станции), в почтовом обмене

(как имя отправителя и получателя), а также в доступе по FTP и Samba. Во всех

случаях используется один и тот же пароль.

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

а при входе в систему сравниваются зашифрованный пароль из базы паролей и

свежезашифрованный введенный пользователем пароль. Сменить пароль можно

командой passwd имя_юзера; если дать просто команду passwd,


это относится к тому имени, под которым сейчас работаем; обычный юзер

(не супервизор) должен сначала ввести старый пароль, и если система сочтет

его пароль недостаточно секретным (слишком короткий, содержит только строчные

буквы), то не примет его. Пароль надо вводить дважды, причем вслепую -

обычные меры безопасности, принятые нынче во всех системах.

Пустой пароль при шифрации превращается в пустую строку, так что

если надо убрать пароль, нужно стереть его ручками (ввод пустого пароля

рассматривается как отказ от изменений). Никакой пароль не превращается

в звездочку "*", это используется как запрет входить под таким именем.

Отсутствие пароля (пустой пароль) приводит к отказу некоторых осторожных

сервисов работать с этим пользователем.

UID идентифицирует права пользователя на файлы и процессы (а не имя!).

Таким образом, второй account с тем же UID будет лишь alias для первого (т.е.

оба account'а будут иметь идентичные права). /* Переводите с английского сами,

я не могу. */ Этот UID будет присвоен всем файлам и директориям, созданным

юзером. Изменить UID файла может только супервизор (пользователь с UID=0).

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

Юзер может входить в несколько групп, если это прописано в /etc/group.

Со следующими тремя полями я не разбирался.

Комментарий используется в строке "From:" в письмах, отправляемых

командой mail, сообщается командой finger.

Домашняя директория становится текущей и записывается в переменную HOME

при терминальном входе, в ней лежат настроечные файлы ко многим программам.

Также является корневой при подключении по Samba ресурса homes.

Shell - для терминальных пользователей как правило /bin/sh,

/bin/csh или /bin/bash. Для почтового обмена по UUCP -

/usr/libexec/uucp/uucico. Для тех, кому надо предоставить только

специфический доступ (например, POP3 и Samba) ставится /usr/bin/passwd

и единственной возможностью при входе терминалом или по Telnet для них будет

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

псевдопользователей) ставится несуществующий /none или безобидный

/bin/false.

Если shell, указанный пользователю, не прописан в файле

/etc/shells, то многие сервисы (например, ftpd и pcnfsd)

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


Как его настроить


Ядро

Первым делом надо настроить ядро. Проверьте, есть ли у вас файл /proc/net/ip_fwchains. Если да, то ядро уже готово к работе с ipchains.

Если нет, то установите опции ядра CONFIG_FIREWALL=y CONFIG_IP_FIREWALL=y

Возможно, вам понадобятся и другие опции: CONFIG_IP_FIREWALL_NETLINK=y

- позволяет направлять копии пакетов программам мониторинга для протоколирования, извещения администратора о попытках атак и т.п. CONFIG_IP_ALWAYS_DEFRAG=y

- всегда дефрагментировать транзитные пакеты. Эта опция требуется для маскарадинга. CONFIG_IP_TRANSPARENT_PROXY=y

- позволяет включить прозрачное проксирование CONFIG_IP_MASQUERADE=y

- позволяет включить маскарадинг CONFIG_IP_MASQUERADE_ICMP=y

- позволяет маскарадить ICMP-пакеты (т.е. у вас будут работать, например, ping и traceroute с машин с fake-адресами).

Затем перекомпилируйте ядро и запустите его. Если вы не знаете, как это делать, почитайте Kernel-HOWTO.

Если вы поменяли ядро с 2.0.x на 2.1.x или более новое и не хотите изучать ipchains, существует скрипт ipfwadm-wrapper, который позволяет использовать с ipchains параметры от ipfwadm. Он входит в набор ipchains-scripts: ftp://ftp.rustcorp.com/ipchains/ipchains-scripts-1.1.2.tar.gz или более свежий. Кроме того, в этот набор входят скрипты, позволяющие записать текущие настройки фильтра пакетов в файл, и наоборот, загрузить их из файла (ipchains-save и ipchains-restore).

Включение фильтрации пакетов

Чтобы фильтр пакетов начал работать, надо записать '1' в файл /proc/sys/net/ipv4/ip_forward: echo 1 > /proc/sys/net/ipv4/ip_forward

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

Как работает фильтрация пакетов

Ядро запускается с тремя встроенными (built-in) цепочками (chains) правил (rules) фильтрации, которые называются входная (input), выходная (output) и пересылочная (forward). В дополнение к встроенным можно создавать новые цепочки правил.


Цепочки состоят из правил (rules). Каждое правило содержит условие и, возможно, действие (target), которое надо произвести с пакетом, если его заголовок соответствует условию. Если заголовок пакета не соответствует условию, то проверяется следующее правило в цепочке. Если заголовок пакета не удовлетворяет ни одному условию, используется политика (policy) самой цепочки. В защищенных системах эта политика обычно требует уничтожить или отвергнуть пакет.

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

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

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

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



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

если пакет пришел извне или адресован на данную машину (или и то, и другое), то он проверяется по входной цепочке;

если пакет адресован на другую машину, или сгенерирован на данной машине, (или и то и другое), то он проверяется по выходной цепочке;

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

Побочные эффекты работы фильтра пакетов. Если пакет соответствует условию, то производятся следующие действия:

Счетчик байт для данного правила увеличивается на размер пакета (включая заголовок).

Счетчик пакетов для данного правила увеличивается на 1.

Если правило того требует, то пакет записывается в журнал.

Если правило того требует, то у пакета изменяется поле Тип Обслуживания (TOS, Type Of Service).

Если правило того требует, то пакет маркируется (кроме ядер 2.0.x). Сие есть вещь сильно загадочная. Если она вас заинтересовала, читайте оригинальную документацию.

Если в правиле указано действие (target), то оно производится.

ipchains: команды, параметры, флаги

Команды операций с правилами в цепочке:











Условия проверки пакетов, которые можно задавать в правилах:



















Действия с пакетами, которые можно задавать в правилах:







Команды операций с целыми цепочками:













Команды маскарадинга:





Ручная проверка работы фильтра

Изменение нескольких правил одной командой:







А теперь подробно обо всех командах, параметрах и флагах:


Как Linux работает с памятью.


Первая публикация данной статьи произошла на

Stanislav Ievlev,

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

Возникла мысль обратиться к прошлому, чтобы, по крайней мере, разобраться, как все это развивалось (с версии 0.1). Затея удалась... это помогло понять и современное ядро. В дальнейшем речь пойдет о ядрах серии 2.2, об изменениях в 2.4 будет сообщено особо.

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

Итак, в основе всего лежат страницы памяти. В ядре они описываются структурой mem_map_t.

typedef struct page { /* these must be first (free area handling) */ struct page *next; struct page *prev; struct inode *inode; unsigned long offset; struct page *next_hash; atomic_t count; unsigned long flags; /* atomic flags, some possibly updated asynchronously */ struct wait_queue *wait; struct page **pprev_hash; struct buffer_head * buffers; } mem_map_t;

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

Все страницы адресуются глобальным указателем mem_map

mem_map_t * mem_map

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

static inline unsigned long page_address(struct page * page) { return PAGE_OFFSET + PAGE_SIZE * (page - mem_map); }


Свободные страницы хранятся в особой структуре free_area

static struct free_area_struct free_area[NR_MEM_TYPES][NR_MEM_LISTS];

, где первое поле отвечает за тип области: Ядра, Пользователя, DMA и т.д. И обрабатываются по очень интересному алгоритму.

Страницы делятся на свободные непрерывные области размера 2 в степени x умноженной на размер страницы ((2^x)*PAGE_SIZE). Области одного размера лежат в одной области массива.

.... |------ |Свободные Страницы размера PAGE_SIZE*4 ---> список свободных областей |------ |Свободные Страницы размера PAGE_SIZE*2 ---> список свободных областей |------ |Свободные Страницы размера PAGE_SIZE ---> список свободных областей |------

Выделяет страницу функция get_free_pages(order). Она выделяет страницы составляющие область размера PAGE_SIZE*(2^order). Делается это так. Ищется область соответствующего размера или больше. Если есть только область большего размера, то она делится на несколько маленьких и берется нужный кусок. Если свободных страниц недостаточно, то некоторые будут сброшены в область подкачки и процесс выделения начнется снова.

Возвращает страницу функция free_pages(struct page, order). Высвобождает страницы, начинающиеся с page размера PAGE_SIZE*(2^order). Область возвращается в массив свободных областей в соответствующую позицию и после этого происходит попытка объединить несколько областей для создания одной большего размера.

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

Вот собственно и вся базовая работа с реальными страницами. Самое время вспомнить, что процесс работает все-таки с виртуальными адресами, а не с физическими. Преобразование происходит посредством вычислений, используя таблицы дескрипторов, и каталоги таблиц. Linux поддерживает 3 уровня таблиц: каталог таблиц первого уровня (PGD - Page Table Directory),каталог таблиц второго уровня (PMD - Medium Page Table Diractory), и, наконец, таблица дескрипторов (PTE - Page Table Entry).


Реально конкретным процессором могут поддерживаться не все уровни, но запас позволяет поддерживать больше возможных архитектур (Intel имеет 2 уровня таблиц, а Alpha - целых 3). Преобразование виртуального адреса в физический происходит соответственно в 3 этапа. Берется указатель PGD, имеющийся в структуре описывающий каждый процесс, преобразуется в указатель записи PMD, а последний преобразуется в указатель в таблице дескрипторов PTE. И, наконец, к реальному адресу, указывающему на начало страницы прибавляют смещение от ее начала. Хороший пример подобной процедуры можно посмотреть в функции ядра partial_clear:

page_dir = pgd_offset(vma->vm_mm, address); if (pgd_none(*page_dir)) return; if (pgd_bad(*page_dir)) { printk("bad page table directory entry %p:[%lx]\n", page_dir, pgd_val(*page_dir)); pgd_clear(page_dir); return; } page_middle = pmd_offset(page_dir, address); if (pmd_none(*page_middle)) return; if (pmd_bad(*page_middle)) { printk("bad page table directory entry %p:[%lx]\n", page_dir, pgd_val(*page_dir)); pmd_clear(page_middle); return; } page_table = pte_offset(page_middle, address);

Вообще-то все данные об используемой процессом памяти помещаются в структуре mm_struct

struct mm_struct { struct vm_area_struct *mmap; /* Список отображенных областей */ struct vm_area_struct *mmap_avl; /* Те же области но уже в виде дерева для более быстрого поиска */ struct vm_area_struct *mmap_cache; /* Последняя найденная область */ pgd_t * pgd; /*Каталог таблиц*/ atomic_t count; int map_count; /* Количество областей*/ struct semaphore mmap_sem; unsigned long context; unsigned long start_code, end_code, start_data, end_data; unsigned long start_brk, brk, start_stack; unsigned long arg_start, arg_end, env_start, env_end; unsigned long rss, total_vm, locked_vm; unsigned long def_flags; unsigned long cpu_vm_mask; unsigned long swap_cnt; /* количество страниц для свопинга при следующем проходе */ unsigned long swap_address; /* * Это архитектурно-зависимый указатель.


Переносимая часть Linux ничего не знает о сегментах. */ void * segments; };

Сразу замечаем, что помимо вполне понятных указателей на начало данных (start_code, end_code ...) кода и стека есть указатели на данные отображенных файлов (mmap). Это, надо сказать, особенность Linux - тащить в себя все, что только можно. Может быть это и хорошо, но с другой стороны так разбазариваться памятью ...(вспомним еще буфера ввода/вывода при файловой системе, которые тоже будут кушать все новую память пока она есть). Данный подход может негативно отразиться на стабильности системы, ведь для запуска какого-то жизненно необходимого процесса может потребоваться время на освобождение лишних кешей. Простенькая проверка на потерю свободной памяти: введите команду "cat /dev/mem >/image " и посмотрите сколько свободной памяти после этого осталось. Если вам это не нравится, то обратите взгляд на функцию invalidate_inode_pages(* struct_inode), освобождающую страничный кэш для данного файла.

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

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

struct vm_area_struct { struct mm_struct * vm_mm; /* параметры области виртуальной памяти */ unsigned long vm_start; unsigned long vm_end; /* Связянный список областей задачи отсортированный по адресам */ struct vm_area_struct *vm_next; pgprot_t vm_page_prot; unsigned short vm_flags; /* AVL-дерево областей, для ускоренного поиска, сортировка по адресам */ short vm_avl_height; struct vm_area_struct * vm_avl_left; struct vm_area_struct * vm_avl_right; /* Для областей используемых при отображении файлов или при работе с разделяемой памяти, иначе эта часть структуры не используется */ struct vm_area_struct *vm_next_share; struct vm_area_struct **vm_pprev_share; struct vm_operations_struct * vm_ops; /*операции над областью */ unsigned long vm_offset; struct file * vm_file; unsigned long vm_pte; /* разделяемая память */ }; struct vm_operations_struct { void (*open)(struct vm_area_struct * area); void (*close)(struct vm_area_struct * area); void (*unmap)(struct vm_area_struct *area, unsigned long, size_t); void (*protect)(struct vm_area_struct *area, unsigned long, size_t, unsigned int newprot); int (*sync)(struct vm_area_struct *area, unsigned long, size_t, unsigned int flags); void (*advise)(struct vm_area_struct *area, unsigned long, size_t, unsigned int advise); unsigned long (*nopage)(struct vm_area_struct * area, unsigned long address, int write_access); unsigned long (*wppage)(struct vm_area_struct * area, unsigned long address, unsigned long page); int (*swapout)(struct vm_area_struct *, struct page *); pte_t (*swapin)(struct vm_area_struct *, unsigned long, unsigned long); };



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

Что делать, когда требуется получить новую область памяти. Есть целых 3 способа.

Уже знакомый get_free_page() kmalloc - Простенькая (по возможностям, но отнюдь не коду) процедура с большими ограничениями по выделению новых областей и по их размеру. vmalloc - Мощная процедура, работающая с виртуальной памятью, может выделять большие объемы памяти.

С каждой из двух процедур в ядре связаны еще по списку свободных/занятых областей, что еще больше усложняет понимание работы с памятью. (vmlist для vmalloc, kmem_cash для kmalloc)

Что же в 2.4?

Добавлена поддержка новой архитектуры памяти NUMA. В противовес классической UMA память делится на зоны с разным временем доступа к каждой из них. Это очень полезно и для кластерных решений. В связи с этим появились новые обертки на функции, новые структуры и найти суть стало еще сложнее. Появилась также поддержка памяти до 64Гб.

Раньше для всех файловых систем был один generic_file_read и generic_file_mmap в связи с тотальным засасыванием всего подряд в память при чтении (различия делались уже только на уровне inode->readpage). Теперь появился и generic_file_write. В общем, еще пара таких generic и прощай виртуальная файловая система.

Но посмотрим - увидим. Ведь Linux развивается очень быстро и не всегда предсказуемо.

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

Удачи.



КАК ОЦЕНИТЬ ВОЗМОЖНОСТИ ОС


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

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

По своему назначению серверы делятся на следующие основные виды:

файловый сервер;

сервер печати;

коммуникационный сервер, в частности сервер удаленного доступа и сервер, выступающий в качестве маршрутизатора, межсетевого экрана и средства построения виртуальных частных сетей (Virtual Private Network, VPN);

сервер приложений, в особенности сервер системы управления базами данных (СУБД) и системы планирования корпоративных ресурсов;

сервер Internet, и прежде всего сервер Web и ftp;

сервер сетевого управления и инвентаризации сетевых ресурсов.

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

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

Те же самые требования, правда, в не столь жесткой форме, предъявляются и к настольным системам. Однако у них имеются и свои специфические особенности. Говоря об использовании настольных операционных систем, очень важно знать, для каких пользователей и каких задач данная система лучше подходит. Это могут быть и обычные офисные задачи, наподобие ввода текстовой информации или сканирования изображений, и инженерные задачи, например расчеты или автоматизированное проектирование (САПР), и узко специфические задачи вроде сетевого управления. Понятно, что в случае офисных задач требования в отношении удобства работы должны быть самыми высокими, поскольку именно ими занимается абсолютное большинство пользователей, в том числе ничего не смыслящих в архитектуре ОС.

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

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



Как подключить Linux к Internet


Валерий Коржов , #06/2000

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

Все довольно просто, поскольку в последних дистрибутивах Linux предусмотрена возможность централизованной настройки различных компонент операционной системы, которые отвечают за подключение к Сети. Вам не нужно будет изучать форматы различных файлов и конфигурировать каждый компонент системы в отдельности. Централизованная настройка появилась в дистрибутиве Linux Red Hat 6.0, о котором и пойдет речь в дальнейшем.

Разработчики Red Hat 6.0 включили в новую версию дистрибутива единый конфигуратор linuxconf. Он работает как в текстовом, так и в графическом режимах, что позволит вам применять его практически в любой конфигурации системы. Создатели linuxconf стремились сделать настройку компонент Linux более понятной и удобной, и в большинстве случаев это им удалось.



Как подогнать операционную систему под свои требования


Все, кто уже успел установить Windows 2000, сразу обратили внимание, что она выглядит несколько иначе, чем Windows NT. Чтобы настроить новую систему, первым делом нужно отыскать средства конфигурирования. Эта статья представляет собой что-то вроде пособия для начинающих работать с Windows 2000. Я расскажу как о новых, так и о хорошо знакомых средствах настройки системы, которые могут потребоваться для подготовки к использованию Windows 2000. Предлагаемые рекомендации адресованы системным администраторам и специалистам по технической поддержке. Конечным пользователям скорее подойдут более жесткие настройки, определяемые для каждого конкретного предприятия.



Как применять эти условия к вашим новым программам


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

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

одна строка, содержащая название программы и краткое описание, что она делает.

Copyright (C) 19гг наименование (имя) автора

Это свободная программа; вы можете повторно распространять ее и/или модифицировать ее в соответствии с Универсальной Общественной Лицензией GNU, опубликованной Фондом Свободного ПО; либо версии 2, либо (по вашему выбору) любой более поздней версии.

Эта программа распространяется в надежде, что она будет полезной, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. Для получения подробных сведений смотрите Универсальную Общественную Лицензию GNU.

Вы должны были получить копию Универсальной Общественной Лицензии GNU вместе с этой программой; если нет, напишите в Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

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

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

Gnomovision, версия 69, (C) имя автора 19гг

Gnomovision поставляется АБСОЛЮТНО БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; для получения подробностей напечатайте 'show w'. Это свободная программа, и вы приглашаетесь повторно распространять ее при определенных условиях; для получения подробностей напечатайте 'show c'.

Гипотетические команды show w и show c должны показывать соответствующие части Универсальной Общественной Лицензии.
Конечно, используемые вами команды могут вызываться как-нибудь иначе, нежели show w и show c; они даже могут выбираться с помощью мыши или быть пунктами меню --- все, что подходит для вашей программы.

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

Компания "Братья іЈдины" настоящим отказывается от всех имущественных прав на программу 'Gnomovision' (которая делает пассы в сторону компиляторов), написанную Абстрактным, К.И.

подпись: Маг Нат, 1 апреля 1989 г Маг Нат, Президент фирмы Вице.

Данная Универсальная Общественная Лицензия не позволяет вам включать вашу программу в программы, являющиеся частной собственностью. Если ваша программа --- это библиотека процедур, вы стоит подумать, не будет ли лучше разрешить программам, являющимся частной собственностью, связываться с вашей библиотекой. Если это то, чего вы хотите, используйте вместо этой Лицензии Универсальную Общественную Лицензию GNU для библиотек.



Как просто работать в Linux'е


Алексей Федорчук

Это заметка о том, как просто работать в Linux. Не в том смысле, что работать в Linux'е - просто (работать вообще очень сложно, как говаривал Антон Павлович Чехов). А о том, как, работая под Linux'ом, выполнять свою повседневную работу. Каковая (по крайней мере для меня) включает набор текстов для последующей печати или помещения в Сеть, подготовка и вставка иллюстраций, как растровых, так и векторных, просмотр Сети.

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

Поскольку именно среда во многом и определяет впечатление от системы, с нее то мы и начнем. Все ниже сказанное относится к Linux Mandrake 6.0 Russian Edition. В которой оконной средой по умолчанию является KDE, содержащая встроенные средства, позволяющие (по крайней мере теоретически) как-то решать почти все перечисленные проблемы. И так,



Как разбивать?


Теоретически обязательно требуется два раздела: корневой (/) и раздел подкачки (linux swap). Однако практически их может потребоваться больше - в зависимости от дистрибутива, задач, размера диска, используемых файловых систем. Часто целесообразно выделение небольшого (10-20 Мбайт) раздела под каталог /boot, в котором будут размещены ядро системы и необходимые для его загрузки файлы. Этим достигается надежность системы и повышение ее производительности. Первое - за счет изоляции критически важных для загрузки (и редко изменяемых) компонентов и гарантии размещения ядра системы в пределах первых 1024 цилиндров (ядро иногда не может быть загружено с более дальних областей диска). Производительность возрастает, если сразу за таким разделом (т. е. максимально близко к началу диска) разместить раздел подкачки. Рекомендованный размер последнего для современных ядер равен удвоенному размеру оперативной памяти (но не более 2 Гбайт), минимально возможный - 128 Мбайт.

Ядро Linux не всегда может быть загружено из разделов с журналируемыми файловыми системами, например, ReiserFS. И если предполагается использование последней для корневого раздела, то необходимо выделение раздела под каталог /boot.

Для настольной машины практически обязателен раздел под каталог /home, в котором будут располагаться пользовательские данные - человеческий фактор чаще является причиной краха системы, чем все аппаратные сбои и программные ошибки, вместе взятые. Корневой раздел также требует места - именно в нем окажутся базовые компоненты системы и пользовательские программы. А дискового пространства под это нужно немало - в SB-дистрибутивах возникает необходимость большого свободного пространства для временного хранения архивов исходных кодов, результатов их распаковки и промежуточных продуктов компиляции. Так, для полного развертывания некоторых из них рекомендуется раздел в 8 Гбайт. Это, конечно, крайность, но задействовать под корневой раздел 4-5 Гбайт окажется не лишним в любом случае. Или - выделить из него в самостоятельные разделы каталоги /usr (для штатных пользовательских программ дистрибутива), /usr/local (для программ, самостоятельно собираемых из исходных кодов), /usr/X11 (для программ графического режима).
В некоторых случаях создаются разделы для каталогов /tmp и /var, правда, это касается в основном серверов - на настольной машине их выделение нецелесообразно.

Какие создавать разделы, первичные или логические, вопрос спорный. Установщики многих дистрибутивов по умолчанию отдают предпочтение разделам логическим. Мое же глубокое убеждение - если четырех первичных разделов хватает (под корневой каталог, каталоги /boot, /swap и /home, к примеру), то ими лучше и ограничиться. К логическим разделам следует обращаться, только если их требуется больше (например, если уже установлена Windows и хочется оставить место под FreeBSD). И в любом случае корневой раздел должен быть первичным.

Все высказанные соображения относились к ситуации с единственным физическим диском. Если их в машине больше, то возможны варианты. Первый - вынесение на второй диск некоторых разделов, например, под каталог /home или его часть, предназначенную для резервного хранения данных. Кроме того, в этом случае рекомендуется разнесение на разные диски области подкачки путем создания на каждом самостоятельного swap-раздела половинного (но не менее 128 Мбайт каждый) размера. Это способствует повышению производительности за счет распараллеливания обращений к виртуальной памяти. Другой путь - создание программного RAID-массива, логического тома, объединяющего в себе разделы, расположенные на разных дисках. Однако использование их на настольных машинах (не серверах) представляется нецелесообразным.

В заключение напомню, что на стадии создания дисковых разделов мы отнюдь не предопределяем их назначение - раздел под каталог /boot станет таковым только после его монтирования в файловую систему.


Какие бывают Unix'ы и на каких машинах они запускаются?


Unix платформа
SCO Unix (Santa Cruz Operation) i*86
Novell UnixWare (куплена SCO) i*86
Interactive Unix (куплен Sun) i*86
Linux i*86, Motorolla 680*0, DEC Alpha, IBM POWER-PC, Sun Sparc, ???
Семейство BSD: BSDI, FreeBSD, NetBSD, OpenBSD i*86, Acorn ARM, Sun Sparc, ???
Solaris Sun Sparc, i*86
AIX IBM RS/6000 и AS/400 на POWER-PC
IRIX SGI MIPS
Digital Unix (ранее Unix OSF/1) DEC Alpha
HP-UX Hewlett-Packard PA-RISC

Этот список не претендует на полноту, ибо кроме перечисленных есть еще множество менее распространенных Unix'ов и Unix-подобных систем, не говоря уже о древних Unix'ах для устаревших машин.

Условно можно выделить семейства System V и Berkeley. System V (читается "System Five") имеет несколько вариантов, последний по моим сведениям System V Release 4. Университет Berkeley славен не только разработкой BSD, но и большинства протоколов Internet. Впрочем, многие Unix'ы сочетают свойства обеих систем.



Какие особенности настройки Samba?


Настройка Samba заключена в файле /usr/local/samba/lib/smb.conf

или в /usr/local/etc/smb.conf, на всякий случай я залинковал их и

у меня это как бы один файл. Вот он:

[global]

comment = FreeBSD - Samba %v

log file = /var/log/samba.log

dont descend = /dev,/proc,/root,/stand

printing = bsd

map archive = no

status = yes

public = yes

read only = no

preserve case = yes

strip dot = yes

security = share

workgroup = Unix

[homes]

browseable = Yes

comment = %U's Home Directory

create mode = 0664

public = no

mangled map = (*.html *.htm) (*;1 *)

[pub]

browseable = Yes

path = /var/ftp/pub

comment = Public domain

public = yes

read only = yes

Комментарии к этому файлу даст команда man smb.conf, а я пока

лишь замечу, что к этой машине не подключен принтер (соответственно нет

секции [printers]), а в качестве публично доступной директории

используется та же самая, что и по FTP.



Каким образом GNU станет доступна


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

GNU is not in the public domain. Everyone will be permitted to modify and redistribute GNU, but no distributor will be allowed to restrict its further redistribution. That is to say, proprietary modifications will not be allowed. I want to make sure that all versions of GNU remain free.



Каким образом вы можете внести свой вклад


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

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

Я нашел очень много программистов, готовых потратить часть своего рабочего времени для работы над GNU. Для большинства проектов такую распределенную работу с неполной занятостью очень трудно координировать; независимо написанные части, возможно, не заработают вместе. Но для частной задачи замещения Unix это проблема отсутствует. Полная система Unix содержит сотен утилит, каждая из которых документирована отдельно. Большинство описаний интерфейсов зафиксированы для совместимости с Unix. Если каждый сотрудник сможет написать совместимую замену для одной Unix-утилиты и сделает так, чтобы она работала вместо оригинала в системе Unix, тогда вместе эти утилиты будут работать надлежащим образом. Даже если позволить Мерфи создать несколько неожиданных проблем, объединение этих компонент будет осуществимой задачей. (Ядро требует более тесной взаимосвязи и будет разрабатываться небольшой компактной группой).

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



Какой путь избрать?


Предположим, вы решили устанавливать систему. В таком случае нужно определиться, проводить ли модернизацию (upgrade) или "чистую" инсталляцию (clean install), т. е. устанавливать ли Windows 2000 поверх имеющейся на машине ОС Windows или в отдельный каталог жесткого диска, оставив существующую систему (системы) в неприкосновенности. Можно также установить ее совершенно отдельно, поместив в пустой раздел жесткого диска.

Рассмотрим достоинства и недостатки каждого варианта.

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

Установка Windows 2000 поверх Windows NT 4.0. Переход к Windows 2000 от Windows NT 4.0 будет, подобно описанному выше переходу от Windows 9x, в основном автоматическим. Кроме того, программы и устройства, работавшие с NT, должны заработать и с Windows 2000, так что проблем с совместимостью будет меньше, а значит, инсталляция пройдет несколько быстрее. Если сейчас у вас на машине в режиме двухвариантной загрузки работают Windows NT 4.0 и 9x, то после модернизации вы получите сценарий двухвариантной загрузки с Windows 2000 и Windows 9x.

Установка Windows 2000 наряду с прежней ОС. "Чистая" инсталляция позволит в дальнейшем при каждом включении компьютера запускать по своему выбору Windows 2000 или предыдущую систему (одну из систем, если их было несколько). Инсталляционная программа настраивает аппаратное обеспечение компьютера под Windows 2000, но не переносит туда ни настройки текущей версии Windows, ни прикладные программы. Вам придется воссоздать настройки системы и установить по второму экземпляру всех программ.

Этот сценарий позволяет управлять определенными режимами, недоступными в других случаях, в частности, можно скопировать все инсталляционные файлы на жесткий диск (благодаря чему повторные установки идут намного быстрее). Но здесь процесс не столь автоматизирован, как при установке поверх прежней ОС, и вам придется сидеть перед ПК, чтобы по запросу вводить свое имя, пароль, имя рабочей группы, домена и т. д.

Если вы решите, что Windows 2000 должна быть единственной "живой душой", обитающей в вашей машине, утилита установки спросит, не преобразовать ли разделы диска с используемыми в Windows 9x файловыми системами FAT16 и FAT32 в NTFS5 (NT File System 5) - разработанную для Windows 2000 усовершенствованную версию файловой системы с добавлением шифрования и других новых возможностей. Готовясь дать утвердительный ответ, не забывайте, что после этого будет сложно установить другую операционную систему (например, более раннюю версию Windows).



Каковы основные отличия Unix от других OS?


Unix состоит из ядра с включенными в него драйверами и из утилит

(внешних по отношению к ядру программ). Если надо изменить конфигурацию

(добавить устройство, изменить порт или прерывание), то ядро пересобирают

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

/* Это не совсем верно. Некоторые параметры пожно поправить без пересборки.

Существуют также loadable kernel modules. */

В противоположность Unix'у Windows (если не уточняется, какая, то имеются

в виду 3.11, 95 и NT) и OS/2 при загрузке фактически на ходу прилинковывают

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

общего кода на порядок ниже, чем у Unix. Кроме того, при неизменной

конфигурации системы ядро Unix без переделки (потребуется изменить только

стартовую часть BIOS) может быть записан в ПЗУ и выполняться _не_загружаясь_

в ОЗУ. Компактность кода особенно важна, т.к. ядро и драйверы никогда

не покидают физическую оперативную память, не свопятся на диск.

Unix - самая многоплатформенная OS. WindowsNT пытается подражать ему,

но пока это плохо удается - после отказа от MIPS и POWER-PC, W'NT остались

всего на двух платформы - традиционная i*86 и DEC Alpha. Переносимость

программ с одной версии Unix на другую ограничена. Неаккуратно написанная

программа, не учитывающая различий в реализациях Unix, делающая необоснованные

предположения типа 'переменная integer должна занимать четыре байта' может

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

чем например пернести с OS/2 на NT.



Какую машину мне приготовить для FreeBSD?


В отличие от WindowsNT, для работы Internet-сервером вполне достаточно 486SX-33 и 8 MB RAM. Операции с плавающей точкой серверу не нужны, быстродействие определяется не процессором, а пропускной способностью сети, а графическая карта сойдет самая слабая, какая только есть - все равно он будет работать в текстовом режиме. Мышь, кстати, тоже не нужна. Так что, как видите, использовать легальное ПО действительно дешевле, чем цельнотянутое.



Каждый из начинающих пользователей


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



Ключи реестра SAM


NT хранит постоянно используемую копию базы данных SAM на жестком диске. Вы можете получить доступ к этой базе данных через реестр системы (HKEY_LOCAL_MACHINE, ключ SAM), написав программу или используя редактор реестра (например, regedt32.exe). В принципе, пользователи не имеют доступа к ключу реестра SAM непосредственно из редактора реестра, так как NT предоставляет права доступа к данному ключу только системной учетной записи SYSTEM. Однако пользователи, имеющие административные привилегии, могут воспользоваться трюком NT и обеспечить доступ из пользовательской среды с правами SYSTEM.

Блокировка службы Планировщика NT (NT Scheduler). Упомянутый выше трюк состоит в использовании службы Планировщика NT для запуска редактора реестра на системной консоли в некоторое заранее определенное время. По умолчанию, Планировщик NT при выполнении заданий использует права учетной записи SYSTEM. Поэтому любая программа, запущенная Планировщиком, имеет полный набор системных привилегий, включая доступ к базе данных SAM. Чтобы защититься от данной опасности, приходится действовать жесткими методами, так как для этого необходимо заблокировать службу Планировщика NT. Блокировка данной службы не всегда возможна в связи с тем, что она может потребоваться для запуска обычных заданий. Если вы не в состоянии заблокировать службу Планировщика, постарайтесь сконфигурировать ее таким образом, чтобы она работала от имени учетной записи пользователя (права пользователя - это необходимый минимум для выполнения запланированных заданий).

Использование технологии системного ключа (system key). Для обеспечения защиты SAM вы также можете применить предлагаемую Microsoft технологию системного ключа. Данная технология впервые появилась в составе дополнений (hotfix) к пакету обновления NT Service Pack 2 (SP2), но широкую известность она получила, когда вошла в состав SP3. (О сервисном пакете SP3 читайте статью Service Pack 3 Is Really Security Pack 3 в журнале Windows NT Magazine, август 1997.) Технология системного ключа применяется для защиты NT и ее паролей посредством шифрования базы данных SAM и требует использования ключа шифра при загрузке операционной системы.


Можно использовать один из трех вариантов системных ключей.

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

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

Для формирования ключа применяется пароль, выбираемый администратором.

Более подробно о каждом из этих вариантов можно прочитать в статье Microsoft: Windows NT System Key Permits Strong Encryption of the SAM ().

Хотя системный ключ и помогает защитить SAM, прежде чем броситься в бой и начать его устанавливать, следует осознать несколько важных моментов. Нужно иметь в виду, что после установки syskey.exe на компьютере не существует возможности его удаления. Следовательно, необходимо очень внимательно отнестись к вопросу выбора оптимального для вашей системы метода хранения ключа. Непосредственно после установки syskey.exe нужно сформировать новую дискету ERD (Emergency Repair Disk). В противном случае вы не сможете полностью восстановить систему, если это потребуется.

Одно из реальных преимуществ использования системного ключа состоит в том, что если взломщикам удастся получить копию вашей базы данных SAM, они не смогут вытащить оттуда действующие хэш-коды паролей. У них не будет возможности применить для расшифровки паролей такие утилиты как L0phtCrack от L0pht Heavy Industries. Но следует заметить, что системный ключ не сможет остановить тех пользователей, которые имеют административные привилегии. Эти пользователи могут выгрузить базу данных SAM в формате, пригодном для взлома такими инструментами, как L0phtCrack; поэтому нужно очень аккуратно назначать административные права. Например, утилита Pwdump2 успешно получает хэш-коды паролей из базы данных SAM, даже если используется технология системного ключа. Следует учитывать потенциальную опасность, которую представляют подобные инструменты.

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


Конечно, такой метод взлома возможен только в том случае, если вы можете загрузиться с системного диска NT. Однако если это удается сделать, то взломщик может перенести базу данных SAM в другое место и затем перезагрузить компьютер. В процессе перезагрузки NT обнаруживает отсутствие базы данных SAM и создает новую базу, которая содержит только двух пользователей: Administrator и Guest, причем оба имеют пустые пароли. Очевидно, что теперь взломщик может зарегистрироваться в системе как Administrator, введя пустой пароль, сделать все, что ему нужно, затем перезагрузиться со своего системного диска и вернуть оригинальную копию базы данных SAM на прежнее место.

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


Когда делать первый шаг?


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

Те, кто относит себя к категории "разведка", обычно переходят на новую ОС в течение двух месяцев с момента официального выхода системы или появления SP1. Это те пользователи, которые объединены программой Windows 2000 Joint Development Program, или специалисты малых и средних компаний, те, кому самые современные технологии нужны для успешной конкуренции на рынке. Развертывание Windows 2000 в небольшой сети таит в себе меньше риска, чем в большой. Но в любом случае возможности продукта будут те же.

Те, кто принадлежит к авангарду, переходят на новую систему, начиная с двух месяцев и до полугода с момента ее выхода или после появления SP1 или SP2. И хотя им тоже необходимы преимущества самых современных технологий для выживания в конкурентной борьбе, они не желают начинать первыми. Таким пользователям нужны лишь некоторые новые возможности Windows 2000 для корректировки проблем в существующей инфраструктуре NT.

Основные силы начинают переход на систему через 6-18 месяцев после выпуска системы либо после выхода SP2, SP3 или SP4. Эти пользователи предварительно тестируют операционную систему, наблюдая за процессом ее усовершенствования со стороны. Они точно знают, чего хотят от новой OC. Существующая у них инфраструктура работает достаточно хорошо, что дает им возможность ждать, пока в системе будет исправлена большая часть ошибок. Поскольку более-менее устойчивую работу NT 4.0 можно получить, начиная с SP3, имеет смысл дождаться выпуска хотя бы первого пакета исправлений.

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

Переход к Windows 2000 является глобальной задачей вне зависимости от того, когда намечается ее развертывание, и начинать планирование нужно сейчас. Наверняка имеющиеся сейчас знания о Windows 2000 весьма приблизительны, поскольку Microsoft очень сильно изменила операционную систему, по сравнению с NT 4.0. Модель управления отличается от той, что была прежде. Для проведения плавного перехода на новую систему придется сделать много предварительной работы. Невозможно логично построить структуру домена без изменения DNS, поскольку Windows 2000 оказывает сильное влияние на организацию DNS предприятия. Те, кто связан с управлением службой DNS, должны хорошо понимать, как она реализована в Windows 2000. В силу значительных аппаратных требований возникнет необходимость в модернизации серверов и пользовательских компьютеров. Придется также поразмыслить над конфигурированием вновь появившихся средств. Кроме этого, потребуются и организационные изменения. Возможность делегирования административных полномочий позволяет удовлетворить всех.

Стефен Кохвей, консультант по вопросам управления, считает, что наиболее продуктивно можно выполнить важную, но не срочную работу. Это напрямую относится к развертыванию Windows 2000. Разве что из-за объема предстоящей работы срочность возрастет.


Комадный интерпретатор


В Unix практически всегда входят два командных интерпретатора - sh (shell)

и csh (C-подобный shell). Кроме них еще бывают bash (Bourne), ksh (Korn),

и другие. Не вдаваясь в подробности, приведу общие принципы:

Все команды, кроме изменения текущей директории, установки переменных окружения

(environment) и операторов структурного программирования - внешние программы.

Программы эти как правило располагаются в каталогах /bin и /usr/bin.

Программы системного администрирования - в каталогах /sbin и /usr/sbin.

Команда состоит из имени запускаемой программы и аргументов. Аргументы

отделяются от имени команды и друг от друга пробелаим и табуляциями.

Некоторые спецсимволы интерпретируются самим shell'ом.

Спецсимволами являются " ' ` \ ! $ ^ * ? < > | & ; (еще какие?).

В одной командной строке можно дать несколько команд. Команды могут быть разделены ; (последовательное выполнение команд), & (асинхронное одновременное выполнение команд), | (синхронное выполнение, стандартный вывод stdout первой команды будет подан на стандартный ввод stdin второй).

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



Команды logger и tailf


Из предыдущего описания можно сделать вывод, что выдача всех сообщений для системных журналов должна быть заложена программистом на этапе создания программы. Это не совсем так. Пользователь тоже имеет возможность послать сообщение демону syslogd. Для этого в Linux имеется команда logger, входящая в состав пакета util-linux. В первую очередь эта команда предназначена для обеспечения возможностей протоколирования при создании разного рода скриптов оболочки. Но ее можно запустить и непосредственно из командной строки, например, для ознакомления с возможностями системы протоколирования. Формат запуска команды:

logger [-isd] [-f file] [-p PRI] [-t TAG] [-u socket] [MSG ...]

Параметры командной строки:

-i - включать в сообщение номер процесса; -s - дублировать сообщение на stderr; -d - использовать при отправке сообщений режим дейтаграмм (вместо обычного потокового); -f имя-файла - сохранять сообщение в указанном файле; -p facility.level - задать категорию и приоритет сообщения; -t TAG - задать поле TAG; -u socket - отправлять сообщение в указанный сокет, вместо обращения к syslogd; MSG - текст сообщения.

Пошлите несколько сообщений с помощью программы logger и полюбуйтесь на результат в файле /var/log/messages. Кстати, имеется очень интересный способ просмотра сообщений, записываемых в файл /var/log/messages командой logger. Способ этот основан на использовании специальной программы tailf. Откройте окно терминала, получите права суперпользователя и выполните в этом окне команду tailf /var/log/messages. После этого переключитесь в другой терминал и выполните команду logger произвольный_текст. Ваше сообщение тут же отобразится в том окне, где запущена программа tailf.



Команды операций с целыми цепочками


Вы можете создавать свои цепочки правил. Называть цепочки можно любыми именами, кроме имен встроенных цепочек и стандартных действий (т.е. input, output, forward, ACCEPT, DENY, REJECT, MASQ, REDIRECT, RETURN). Не рекомендуется использовать в именах большие буквы, поскольку они могут быть задействованы в следующих версиях ipchains. Имя цепочки может содержать до 8 символов.

Создание новой цепочки производится командой '-N' (new), например: ipchains -N test

Удаление цепочки производится командой '-X', например: ipchains -X test

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

Очистка (flushing) цепочки (т.е. удаление из нее всех правил) производится командой '-F' (flush), например: ipchains -F forward

Если имя цепочки не указано, то будут очищены все цепочки.

Просмотр одной цепочки или всех сразу производится командой '-L' (list), например: ipchains -L input

Если имя цепочки не указано, то будут показаны все цепочки. В выводимой информации значение refcnt означает, сколько правил ссылаются на данную цепочку в своих действиях. Чтобы цепочку можно было удалить, ее refcnt должен быть равен 0. Вместе с командой '-L' можно указывать следующие флаги:

'-n' (numeric) - не преобразовывать IP-адреса в символические

'-v' (verbose) - показывать дополнительную информацию по правилам, в т.ч. счетчики байт и пакетов, маски Типов Обслуживания, маркировку пакетов. Если -v не указан, то эта информация не выводится.

'-x' (expand numbers) - обычно счетчики пакетов и байт выводятся с использованием суффиксов 'K', 'M' и 'G' (обозначающих, соответственно, 1000, 1 000 000 и 1 000 000 000). Флаг -x позволяет просмотреть точные значения счетчиков, как бы велики они ни были.

Сброс (обнуление) счетчиков производится командой '-Z' (zero), например: ipchains -Z input

Если имя цепочки не указано, то обнуляются счетчики всех цепочек.
Иногда требуется узнать состояние счетчиков непосредственно перед обнулением. Применение последовательно команд 'ipchains -L -v' и 'ipchains -Z' не подходит, поскольку в промежутке между их выполнением счетчики могут изменить свое значение. В таком случае можно указать обе команды в одном вызове: ipchains -L -v -Z

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

Задание политики для цепочки производится командой '-P' (policy). Если пакет не удовлетворяет ни одному условию в цепочке, то к нему применяется политика цепочки. Политика может задаваться только для встроенных цепочек (input, output, forward). Политика может быть: ACCEPT, DENY, REJECT а для пересылочной цепочки еще и MASQ. Задание политики MASQ для пересылочной цепочки не рекомендуется по соображениям безопасности: злоумышленник может настроить маршрутизацию своих пакетов на ваш шлюз, и его пакеты, не соответствующие явно никаким правилам в пересылочной цепочке, будут по умолчанию маскарадиться. В результате он сможет работать в интернете с IP-адреса вашего шлюза, скрывая свой реальный адрес.

Хинт: использование действия RETURN в правилах цепочки позволяет применить к подходящему пакету текущую политику цепочки вместо конкретного действия.


Команды операций с правилами в цепочках


Добавление нового правила к цепочке производится командой '-A' (add), за которой следует имя цепочки и все другие необходимые параметры и флаги, например: ipchains -A input -s 127.0.0.1 -p icmp -j DENY

будет уничтожать ICMP-пакеты с адреса 127.0.0.1 при проверке по входной цепочке. Правила, добавляемые командой -A, приписываются в конец цепочки.

Новое правило можно вставить в определенную позицию цепочки командой '-I' (insert), после которой должен быть указано имя цепочки и номер, а также другие необходимые параметры. Остальные правила в цепочке (если они есть) будут сдвинуты на следующие позиции. Первое правило в цепочке имеет номер 1. Например: ipchains -I forward 1 -p tcp -d 0/0 www -j DENY

запрещает пересылку tcp-пакетов на www-порт.

Заменить правило в определенной позиции цепочки можно командой '-R' (replace), после которой должен быть указано имя цепочки и номер, а также другие необходимые параметры. Синтаксис полностью совпадает с командой '-I'.

Удалить правило в определенной позиции цепочки можно командой '-D' (delete), например: ipchains -D forward 1

Остальные правила в цепочке (если они есть) сдвигаются на 1 позицию.

Если вы не знаете номера правила в цепочке и не хотите его определять, то можно применить команду удаления по условию. Для этого после команды -D и названия цепочки надо указать абсолютно тот же набор параметров, который использовался при создании правила командами '-A', '-I' или '-R', например: ipchains -D input -s 127.0.0.1 -p icmp -j DENY

Однако, если в цепочке было несколько одинаковых правил, будет удалено только первое из них.



Компьютерная демонология


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

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

В конфигурационном файле inetd (/etc/inetd.conf) записано, какой демон обслуживает обращения к какому сервису Internet. Обычно с помощью inetd вызываются программы pop3d, imap4d, ftpd, telnetd (предоставляю читателю определить, какие именно сервисы они обслуживают) и некоторые другие. Эти программы не являются постоянно активными, а значит, не могут считаться демонами в строгом смысле слова, но поскольку они порождаются "полноценным" демоном, их все равно так называют.



Компоненты Corel LINUX OS


Компоненты Internet-версия Corel LINUX OS Standard Corel LINUX OS Deluxe

Операционная система Corel LINUX OS на основе ядра Debian 2.2++ +
Переработанная среда KDE+++
Corel Install Express+++
Corel File Manager+++
Руководство пользователя ++
Netscape Communicator  ++
Adobe Acrobat Reader   ++
ICQ-клиент Instant Messenger  ++
Шрифты Bitstream и Type 1  20200
Corel WordPerfect 8 for Linux  версия Lightполная версия
Руководство пользователя Corel WordPerfect 8 for Linux    +
Расширенные звуковые драйверы (OSS)   +
Игра CIVILIZATION: Call to Power - ограниченная редакция   +
ПО резервного копирования BRU   +
3.5-дюймовый логотип Linux Penguin   +



Конфигурирование журналов событий


Системные администраторы частенько забывают о необходимости контроля за журналами событий, и те переполняются. Чтобы этого не произошло, нужно запустить программу Administrative Tools из окна Control Panel, открыть Event Viewer и щелкнуть правой кнопкой мыши на каждом из журналов и выбрать в меню команду Properties. По умолчанию для всех журналов устанавливаются следующие параметры: размер 512 Кбайт; перезапись событий, произошедших более 7 дней назад. Эти установки можно не менять. Но если какое-либо из используемых приложений (например, Microsoft SQL Server) часто добавляет новые записи в журнал, то, возможно, стоит увеличить максимальный размер журнала или выбрать режим Overwrite events as needed (см. Экран 3).

экран 3. Настройка журнала приложений.

Хотя нужно иметь в виду, что в целях повышения безопасности (например, если в организации используются требования категории C2), следует установить переключатель в положение Do not overwrite events - clear log manually. Системные администраторы часто комбинируют этот режим с архивированием журнала в файл для проведения аудита при возникновении экстренной ситуации.



Контроль Доступа


Средства Дискреционного Контроля за Доступом системы UNIX (UNIX Discretionary Access Control) используют модель разрешающего бита (permission bit model), основанную на традиционных способах организации категорий защиты, например таких, когда к файлу имеет доступ только владелец файла или члены группы-владельца файла и других способах. Однако, такая модель не может быть достаточно качественным образом масштабирована для поддержки больших концернов с множеством пользователей или групп пользователей.

Таблицы Контроля Доступа системы POSIX (POSIX Access Control Lists - ACLs) обеспечивают более тщательный контроль за доступом, чем тот, который возможен при использовании только разрешающих битов. Таблицы контроля доступа - это механизм, представляющий собой надмножество (множество множеств) разрешающих битов, что позволяет им сохранять совместимость с уже имеющимися приложениями, поэтому модификации приложений при использовании таблиц не требуется. В отличие от стандартной модели системы UNIX, таблицы POSIX очень хорошо масштабируются для обслуживания больших совокупностей пользователей и пользовательских групп.

Средства Обязательного Контроля за Доступом (Mandatory Access Control - MAC) обеспечивают защиту информации более надежную, чем объект, который ее содержит. Контроль является обязательным в том смысле, что пользователи не могут изменять стратегию MAC в отношении объектов. При создании объекта система автоматически присваивает ему атрибуты MAC, и изменить эти атрибуты может только администратор, имеющий соответствующие полномочия. Средства MAC не позволят пользователю случайно или преднамеренно сделать информацию доступной для лиц, которые не должны обладать ею.

Средства Дискреционного Контроля за Доступом (Discretionary Access Control - DAC) обеспечивают защиту персональных объектов в системе. Контроль является дискреционным в том смысле, что владелец объекта сам определяет тех, кто имеет доступ к объекту, а также вид их доступа.

Средство Контроля Возможности Доступа (Capability Access Control - CAC) реализует еще одну - третью стратегию контроля, которую предоставляет только продукт DG/UX B2 Security Option. CAC позволяет владельцу объекта ограничить доступ к нему, предоставив его только тем пользователям, которые обладают определенной характеристикой (или привилегией). Хотя данное средство можно также назвать дискреционным имея в виду, что владелец сам определяет возможность доступа других лиц к его объекту, однако CAC обеспечивает более надежную защиту по сравнению с описанными дискреционными методами, т.к. ни один пользователь, включая и администратора, не может преодолеть эту защиту.

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



Контроль утечки памяти


Первые два счетчика в , Process:Working Set и Process: Pagefile Bytes, дают возможность контролировать уровень потребления памяти приложением. Счетчик Working Set - важный показатель эффективности работы программы, поскольку позволяет определить, сколько физической памяти (т. е. реальных страниц ОЗУ) она занимает. Постоянно отслеживая значение счетчика, можно обнаружить вызываемые приложением утечки памяти. Если, как показано на Экране 1, наблюдается постоянное увеличение показаний счетчика, значит, приложение не обеспечивает корректного освобождения ранее выделенной для него памяти. Однако при этом важно понимать алгоритм работы приложения. Например, если я оставлю в памяти компьютера не выполняющую никаких задач копию Microsoft Word, а ее рабочее пространство будет непрерывно увеличиваться, то можно быть уверенным, что Word инициирует утечки памяти. Однако, когда на моем компьютере функционирует программа сбора данных, размещающая информацию в массивах увеличивающихся размеров, прирост значения Working Set ее процесса будет вполне оправданным (хотя, возможно, и нежелательным).

ЭКРАН 1. Наблюдение за счетчиком Working Set.

Значение счетчика Process:Pagefile Bytes весьма точно следует за изменением размера рабочего пространства приложения, увеличиваясь по мере роста объема потребляемой приложением памяти. Например, при использовании Working Set для контроля за работой приложения, порождающего утечки памяти, видно, что значение счетчика PageFile Bytes будет находиться в близкой к линейной зависимости от Working Set.



Контролирующая Подсистема


Контролирующая подсистема продукта DG/UX B2 Security Option осуществляет модульное управление (fine-grained control) контролем и ревизией, определяя объект и время ревизии. Контролирующие подсистемы других поставщиков обычно используют только один шаблон, в соответствии с которым происходит поиск потенциальных нарушений защиты. Следствием этого является избыточность ревизии, что означает повышенные требования к средствам хранения данных, огромные объемы информации, которые невозможно анализировать, необходимость использовать генераторы отчетов для работы с громоздким контрольным журналом (audit-trial), и, в результате этого, снижение производительности системы. Эти проблемы приводят к тому, что многие системные администраторы деконфигурируют средства защиты системы или даже полностью отказываются от них.

Таких проблем не возникает при использовании продукта DG/UX B2 Security Option. Он предоставляет множество модульных контрольных шаблонов, в соответствии с которыми происходит контроль - определяется объект и время ревизии; контроль основывается на данных о том, кто получает доступ к системе и как осуществляется этот доступ. DG/UX B2 Security Option предоставляет возможность создавать контрольные шаблоны процессов. Контрольный шаблон может быть присвоен процессу исходя из времени, локализации и атрибутов защиты сеанса.

Всякий раз, когда пользователь входит в систему, DG/UX B2 Security Option присваивает ему опознавательный идентификатор (authentication identifier - AUTHID). Система присваивает AUTHID каждому пользовательскому процессу, независимо от того, какая программа выполняется. Например, даже если пользователь изменяет свой истинный или действующий идентификатор (например с помощью команды su), система все равно узнает - какой из пользователей произвел ту или иную операцию благодаря тому, что каждому пользовательскому процессу присваивается неизменный идентификатор AUTHID. После того, как AUTHID присвоен пользователю или процессу, никто - ни пользователи, ни администраторы - не могут изменить этот идентификатор, какими бы полномочиями они не обладали.



Корневой каталог


Стандарт FHS предлагает создать в корневом каталоге следующие подкаталоги:

bin - файлы основных команд (утилит), которые необходимы, когда никакая другая файловая система еще не смонтирована (например, в однопользовательском режиме); boot - неизменяемые файлы, необходимые для загрузки системы; dev - файлы устройств; etc - файлы конфигурации системы на данном компьютере; home - домашние каталоги пользователей (факультативно); lib - основные разделяемые библиотеки и модули ядра; lib<alt> - основные разделяемые библиотеки для альтернативных форматов (факультативно); mnt - точку монтирования для временно подключаемых файловых систем; root - домашний каталог пользователя root (факультативно); opt - дополнительные пакеты программного обеспечения; sbin - основные системные исполняемые файлы; tmp - временные файлы; usr - иерархию второго уровня; var - переменные данные.

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

Каталог /bin содержит команды, которые могут использоваться как администратором, так и рядовыми пользователями, причем только те команды, которые необходимы, когда никакая другая файловая система, кроме корневой, еще не смонтирована (например, в однопользовательском режиме). Те утилиты, которые не так важны, чтобы размещаться в корневой файловой системе, должны размещаться в каталоге /usr/bin. В /bin обязательно должны иметься следующие команды (или символические ссылки на них): cat, chgrp, chmod, chown, cp, date, dd, df, dmesg, echo, false, hostname, kill, ln, login, ls, mkdir, mknod, more, mount, mv, ps, pwd, rm, rmdir, sed, sh, stty, su, sync, true, umount, uname, csh, ed, tar, cpio, gzip, gunzip, zcat, netstat, ping.
В каталоге /bin не должно быть подкаталогов.

Каталог / boot содержит все, что необходимо в процессе загрузки, исключая конфигурационные файлы и установщика карты загрузки. Ядро операционной системы должно располагаться либо в корневом каталоге /, либо в /boot; программы, необходимые загрузчику для организации загрузки файлов, должны размещаться в /sbin, а конфигурационные файлы загрузчика — в /etc.

/dev — место расположения специальных файлов устройств. На случай, если потребуется создавать файлы устройств вручную, каталог /dev должен содержать команду MAKEDEV, которая может создать файл устройства в случае необходимости.

Каталог /etc содержит конфигурационные файлы и каталоги, специфичные для данной конкретной системы, но в нем не должно быть двоичных файлов. В соответствии со стандартом FHS каталог в обязательном порядке должен содержать подкаталог /opt, в котором должны размещаться подкаталоги с конфигурационными файлами отдельных пакетов и приложений. Для каждого установленного пакета <package> должен создаваться конфигурационный каталог /etc/opt/package. В каталоге /etc должны содержаться следующие каталоги и файлы:

/X11 - конфигурационные файлы X Window; /sgml - конфигурационные файлы для SGML и XML; csh.login - общесистемный инициализационный файл для csh; exports - список контроля доступа для сетевой файловой системы NFS; fstab - постоянная информация для монтирования файловых систем; ftpusers - список контроля доступа для демона FTP; gateways - список шлюзов для демона routed; gettydefs - установки терминала, используемые демоном getty; group - список групп пользователей в системе; host.conf - файл конфигурации для системы разрешения имен; hosts - постоянная информация об именах хостов; hosts.allow - список хостов, с которых разрешен доступ в систему; hosts.deny - список хостов, с которых запрещен доступ в систему; hosts.equiv - список доверенных хостов для rlogin, rsh, rcp; hosts.lpd - список доверенных хостов для демона печати lpd; inetd.conf - конфигурационный файл для демона inetd; inittab - конфигурационный файл для демона init; issue - сообщение, выдаваемое системой до регистрации пользователя; ld.so.conf - список каталогов для поиска разделяемых библиотек; motd - сообщение, выдаваемое системой после регистрации пользователя; mtab - динамически изменяющаяся информация о смонтированных файловых системах; mtools.conf - конфигурационный файл для mtools networks - статическая информация о сетевых именах; passwd - файл паролей пользователей; printcap - база данных с настройками принтеров для демона lpd; profile - общесистемный файл инициализации для оболочки, запускаемой при входе пользователя в систему; protocols - перечень IP-протоколов; resolv.conf - конфигурационный файл для системы разрешения имен; rpc - перечень протоколов удаленного вызова процедур; securetty - файл со списком устройств, с которых может заходить пользователь root; services - имена портов для сетевых служб; shells - список имеющихся в системе оболочек; syslog.conf - конфигурационный файл для демона syslogd.



Файл mtab не соответствует неизменяемой природе файлов, размещенных в /etc, и помещен в данный каталог в виде исключения, по историческим причинам.

В небольших системах каждый домашний каталог пользователя является одним из непосредственных подкаталогов каталога /home, таких как /home/smith, /home/operator и т.д. В больших системах (особенно когда каталоги /home являются разделяемыми между многими хостами) полезно объединить домашние каталоги в группы, введя подкаталоги групп, такие как /home/staff, /home/students. Поскольку структура домашних каталогов различается от хоста к хосту, никаких требований на нее не налагается.

/lib содержит разделяемые библиотеки, необходимые для загрузки системы и запуска команд из каталогов /bin и /sbin. По крайней мере, один из файлов, соответствующих каждому из следующих шаблонов, должен найтись в данном каталоге (это могут быть либо реальные файлы, либо символические ссылки): libc.so.*, динамически подсоединяемые библиотеки Cи; ld*, загрузчик/ времени выполнения. Не должны располагаться в /lib разделяемые библиотеки, которые необходимы только исполняемым файлам, расположенным в /usr (таким, как двоичные файлы X Window). В частности, библиотека libm.so.* может быть расположена в /usr/lib, если она не требуется никаким программам из /bin или /sbin. Может существовать более одного варианта каталога /lib в системах, поддерживающих более одного формата исполняемых файлов (например, 32–разрядные и 64-разрядные форматы), при этом для каждого формата требуется свой отдельный вариант разделяемых библиотек (которые могут называться /lib32 и /lib64).

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

/opt резервируется стандартом FHS для установки дополнительных программных пакетов. Предполагается, что любой такой пакет должен размещать свои статические файлы в отдельной структуре /opt/<package>, где <package> — название пакета.


Исполняемые программы располагаются в каталоге /opt/<package>/bin, а в /opt/<package>/ man размещаются страницы обычного для Unix интерактивного руководства man. Файлы пакета, которые являются переменными (изменяемыми при выполнении стандартных операций), должны устанавливаться в /var/opt, а специфичные для хоста конфигурационные данные должны устанавливаться в /etc/opt. Никакие файлы пакета не должны размещаться вне каталогов /opt, /var/opt и /etc/opt, кроме тех файлов, которые должны оказаться в других местах по той причине, что иначе пакет не сможет функционировать нормально. Например, файлы блокирования устройств должны располагаться в /var/lock, а файлы устройств должны располагаться в /dev.

/root — домашний каталог суперпользователя. Рекомендуемое место его расположения — корневая файловая система. В FHS подчеркивается, что учетная запись суперпользователя должна использоваться исключительно для системного администрирования и его не рекомендуется расходовать для выполнения задач, которые могут быть выполнены непривилегированным пользователем. По этой причине не стоит размещать в root подкаталоги для почты и других приложений. Почта для таких администраторских ролей, как root, postmaster и webmaster должна пересылаться соответствующему пользователю.

/sbin содержит утилиты для выполнения задач системного администрирования (и другие команды, используемые только пользователем root). Этот каталог содержит исполняемые файлы, необходимые для загрузки системы и ее восстановления в различных ситуациях (restoring, recovering, and/or repairing the system), не попавшие в каталог /bin. Единственная команда, которая обязательно должна присутствовать в /sbin, — shutdown. К примеру, команда ping, хотя она абсолютно необходима суперпользователю, часто используется и рядовыми пользователями, и по этой причине должна размещаться в /bin. Авторы стандарта рекомендуют предоставить всем пользователям право на чтение и выполнение для всех файлов, расположенных в /sbin, кроме, может быть тех программ, для которых установлены биты setuid и setgid.


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

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

Для сохранения совместимости со старыми системами (до тех пор, пока все реализации не начнут использовать каталоги, размещенные непосредственно в /var) могут создаваться следующие символические ссылки:

/usr/spool -> /var/spool

/usr/tmp -> /var/tmp

/usr/spool/locks -> /var/lock

Каталог /usr/local используется для установки программ, которые будут использоваться локально в рамках данного хоста. Он может использоваться для программ и данных, не попавших в каталог /usr, доступ к которым разрешен с других хостов. Этот каталог не должен перезаписываться при обновлениях системного программного обеспечения. Поскольку в этот каталог устанавливаются программные пакеты, в нем создается структура подкаталогов, аналогичная структуре корневого каталога и каталога /usr.

/usr/share содержит все файлы, которые предназначены только для чтения и не зависят от архитектуры. Скажем, компьютеры на платформах i386, Alpha и PowerPC могут поддерживать один общий каталог /usr/share, который монтируется на остальных компьютерах. Примерами файлов, которые размещаются в этом каталоге, могут служить файлы документации (man, doc) или базы данных (dict, terminfo, zoneinfo). Любая программа или пакет, который содержит или требует данных, не подлежащих модификации, должны хранить эти данные в каталоге /usr/share (или /usr/local/share, если пакет установлен локально). В каталоге /usr/share создаются следующие подкаталоги или символические ссылки:

man — интерактивные руководства; misc — различные архитектурно-независимые данные, для которых не требуется отдельный подкаталог в /usr/share; dict — словари (факультативно), обычно здесь находится только файл words для английского языка, который используется утилитой look и различными программами проверки правописания; списки слов для других языков могут быть добавлены, используя английское название соответствующего языка, например, /usr/share/dict/french, /usr/share/ dict/danish и т.д.; doc - различная документация (факультативно); games - файлы статических данных для /usr/games (факультативно); info - основной каталог для системы GNU Info (факультативно); locale - локальная информация (факультативно); nls - каталоги сообщений для поддержки языков (факультативно); sgml - данные для SGML и XML (факультативно); terminfo - каталог базы данных для terminfo (факультативно); tmac - макросы для troff (факультативно); zoneinfo - конфигурационные файлы и информация о временной зоне (факультативно).



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

Как известно, страницы интерактивного руководства man традиционно разбиты на секции. Для каждой секции создается отдельный каталог с именем <mandir>/<locale>/manN/<arch>, где <arch> — указание на архитектуру (например, i386), а строка <locale> определяет язык, страну и кодировку и имеет следующий формат:

<language>[_<territory>][.<character-set>][,<version>].

Каталог /var содержит файлы с изменяющимися данными: каталоги и файлы очередей, данные об администрировании, временные файлы. Некоторые части каталоговой структуры /var не являются разделяемыми между разными системами. К ним относятся /var/log, /var/lock и /var/run. Другие части могут быть разделяемыми, например, /var/mail, /var/cache/man, /var/cache/fonts и /var/spool/news. Структура каталогов /var определяется в стандарте FHS с той целью, чтобы сделать возможным монтирование каталога /usr в режиме только для чтения. Все, что записывается на диск в процессе выполнения системных операций (в противоположность процессам установки и поддержки программ), должно размещаться в каталоге /var. Несколько подкаталогов «зарезервированы» — они не должны использоваться произвольным образом, поскольку это противоречит сложившейся практике: /var/backups, /var/cron, /var/msgs,
/var/preserve.

Приложения в общем случае не должны добавлять каталоги непосредственно в /var. Такие каталоги должны создаваться в соответствующих подкаталогах. Каталог /var/cache предназначен для кэширования данных приложениями. В отличие от /var/spool, кэшированные файлы могут быть удалены без потери данных. Но эти данные должны сохраняться между сеансами работы приложения и при перезагрузках системы. Приложение должно всегда иметь возможность продолжить работу, даже после удаления этих файлов администратором (например, при нехватке дискового пространства).


Существование отдельного каталога для кэшируемых данных позволяет системным администраторам устанавливать для этого каталога правила использования и резервного копирования, отличающиеся от правил, устанавливаемых для других каталогов в /var. Обычно в этом каталоге создаются подкаталоги fonts (локально сгенерированные шрифты), man (локально отформатированные страницы руководства), www (кэш данных для WWW-прокси), <package> (кэшируемые данные пакета <package>). /var/cache/man предусмотрен для сайтов, в которых файловая система /usr монтируется только на чтение, но в них допускается создание страниц руководства, отформатированных локально. Сайты, в которых /usr монтируется с правом записи (например, когда у системы всего один пользователь) могут не создавать каталога /var/cache/man, а использовать вместо него каталоги cat<section> непосредственно в /usr/share/man.

Файлы блокирования устройств и других ресурсов, используемые многими приложениями, такие как файлы блокирования последовательных портов, должны храниться в каталоге /var/lock. Названия этих файлов должны формироваться в соответствии с соглашением, согласно которому используется префикс «LCK..», за которым следует базовое имя устройства. Файлы блокирования в /var/lock должны быть всем доступны по чтению.

Кталог /var/log содержит разнообразные файлы протоколов: lastlog (запись о последнем входе в систему каждого пользователя); messages (системные сообщения от syslogd); wtmp (записи о всех входах и выходах пользователей в систему).

Область спулинга для почты должна размещаться в каталоге /var/mail, а имена файлов с сообщениями должны иметь вид <username>. Файлы почтовых ящиков в этих каталогах должны храниться в формате стандартных почтовых ящиков Unix.

Переменные данные для пакетов, установленных в /opt, должны размещаться в /var/opt/<package>, где <package> — название структуры каталогов в /opt, в которой хранятся статические данные дополнительного пакета ПО, исключая те случаи, когда размещение явно указано в каком-либо файле из /etc.


На внутреннюю структуру каталога /var/opt/<package> никаких ограничений не накладывается.

Каталог /var/ run содержит данные, описывающие состояние системы с момента ее загрузки. Программы могут иметь подкаталоги в каталоге /var/run, тем более, если они используют более одного файла времени выполнения. В этом каталоге должны быть, в частности, размещены файлы с идентификаторами запущенных процессов (PID). Соглашение об именах этих файлов следующее: <program-name>.pid. Содержимое PID-файла представляет собой идентификатор процесса в коде ASCII, записанный в десятичной нотации, за которым следует символ конца строки. Например, если crond запущен как процесс с номером 25, /var/run/crond.pid будет содержать три символа: два, пять и символ новой строки. В /var/run расположен также файл utmp, в котором хранится информация о том, кто в данный момент использует систему. Непривилегированные пользователи должны быть лишены права записи в каталог /var/run.

Каталог /var/spool содержит данные, которые ожидают какой-то последующей обработки: подкаталоги lpd (спулинг для принтера), mqueue (очередь исходящей почты), news (спулинг новостей), uucp (спулинг для UUCP) и т.п.

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


Корпоративный стиль:


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

Ускорение поиска неисправностей в аппаратной и программной части:

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

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

Игорь Храповский

Помогу своим прямым участием внедрить технологию.

Можете считать эту статью под GPL. Или шлите проценты.

P.S. Не обижайте Алсу.



Кризис в программном обеспечении и способы его преодоления


Copyleft (С) Олег П. Филон ()

v1.0 Ноябрь 1999, Гомель, BY

см. также статью

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

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

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

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

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

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

У нас же, и это тоже одно из проявлений кризиса, вышеупомянутая платформа Wintel практически вытеснила другие вычислительные платформы. Приученные к бесплатному сыру, многие наши специалисты-компьютерщики так и не поняли, что они оказались в мышеловке. Удобство работы пользователя, его привычка к определенному стилю работы, отсутствие системы подготовки профессионалов привели к тому, что ОС Windows устанавливают везде, где надо и где не надо. Затем оказывается, что сервер Windows отдает явное предпочтение другим программам от Microsoft, а с другими системами в общей сети Интернет Windows взаимодействует весьма неохотно. Таким образом круг замыкается, вы оказываетесь в плену у т.н. "решений Microsoft", и вырваться из этого плена все труднее.

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



Движение за свободное ПО, или т.н. проект GNU (Gnu Not Unix) основал легендарный программист Ричард Столмен в середине восьмидесятых. Его целью было создание совершенно открытой ОС с доступными исходными кодами, а также всех необходимых для нормальной работы приложений. И не только полностью открытых, но и с гарантией, что эти программы будут открытыми и доступными на все времена. Столмен вместе с первыми версиями своих программ разработал особое лицензионное соглашение, GNU GPL (General Public Licence). Это соглашение гарантирует, что автор программы разрешает как угодно использовать свою программу, дополнять, изменять ее, но требует всегда публиковать исходный код программы и сделанных изменений. Таким образом, фирмы, создающие коммерческие закрытые программы, или не могут использовать программы из проекта GNU, или обязаны предоставить исходный код своих доработок.

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

Первым фактором, кардинально изменившим привычное положение вещей, стало широкое распространение Интернет. Открытая модель разработки, использующая преимущество доступности исходного кода программ, позволила привлечь к разработке современных программ самых талантливых программистов по всему миру. Работая над одним проектом, люди зачастую общаются исключительно через Сеть (Интернет), находясь в разных концах земного шара. Открытость исходного кода резко ускоряет нахождение ошибок, гарантирует качество алгоритмов и невозможность замаскированых дыр в "черном ящике" внутри программ. Несмотря на отсутствие прямой денежной платы за работу над тем или иным проектом, сегодня армия программистов, так или иначе делающих вклад в проекты GNU, огромна, и для отдельных проектов далеко превосходит возможности даже такого монстра как Microsoft.



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

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

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

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


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

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

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

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

Многие страны предпринимают попытки вырваться из плена Microsoft и использовать возможности, предоставляемые Интернет и открытыми программами. Например, в Мексике принята государственная программа по установке более ста тысяч компьютеров с ОС Linux в школах по всей стране и подключении этих школ к сети Интернет. В Европе, в странах ЕС, также стараются поддержать альтернативную платформу, в первую очередь ОС Linux.Более подробно об этой ОС, наиболее яркой и перспективной из открытых систем, можно прочитать в интернет, например, на


Куда податься?


Мечта любого разработчика - операционная система на все случаи. Чтобы и управляла, и печатала, и т. д. Однако универсальные ОС, такие как Windows NT и Unix, не предназначены для задач реального времени и зачастую с ними не справляются. Приведем достаточно типичный пример. Разработчик перенес свою программу из DOS в Unix. Программа должна сохранять на диске снятую с видеокамеры информацию, а также управлять работой камеры. В DOS все шло гладко, но при переходе в среду Unix появились задержки в передаче на камеру управляющих сигналов. В результате анализа ситуации выяснилось, что задачи пользователя простаивают из-за процесса sync, который призван синхронизировать кэш файловой системы при обращении к диску. Попытки отключить подкачку и установить программе управления камерой наивысших приоритетов результатов не дали.

Так как же быть разработчику? Закупать операционную систему реального времени? Или все же есть способ добиться предсказуемого поведения и компактной реализации при использовании традиционных операционных систем?



KURT


Проект KURT () характеризуется минимальными изменениями ядра Linux и предусматривает два режима работы - нормальный (normal mode) и режим реального времени (real-time mode). Процесс, использующий библиотеку API-интерфейсов KURT, в любые моменты времени может переключаться между этими двумя режимами. Программный пакет KURT оформлен в виде отдельного системного модуля Linux - RTMod, который становится дополнительным планировщиком реального времени. Данный планировщик доступен в нескольких вариантах и может тактироваться от любого системного таймера или от прерываний стандартного параллельного порта. Так как все процессы работают в общем пространстве процессов Linux, программист использует в своих программах стандартные API-интерфейсы Linux и может переключаться из одного режима в другой по событиям, либо в определенных местах программы. При переключении в режим реального времени все процессы в системе "засыпают" до момента освобождения ветви процесса реального времени. Это довольно удобно при реализации задач с большим объемом вычислений, по своей сути требующих механизмов реального времени, например в задачах обработки аудио- и видеоинформации.

Стандартно такты планировщика RTMod задаются от системного таймера - время переключения контекста задач реального времени (time slice) равно 10 мс. Используя же KURT совместно с UTIME, можно довести время переключения контекста задач до 1 мс. Прерывания обрабатываются стандартным для ОС Linux образом - через механизм драйверов.

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

set_rtparams позволяет добавить процесс в ядро с маской SCHED_KURT. Только процессы, чья политика в планировщике установлена как SCHED_KURT, смогут работать в режиме реального времени;

get_num_rtprocs получает идентификатор "rt_id" процесса из планировщика реального времени RTMod;

rt_suspend позволяет приостановить планировщик реального времени;

get_rt_stats получает статус процесса из таблицы планировщика процессов реального времени.

Простота использования KURT позволяет с максимальным комфортом программировать задачи, требующие как функций реального времени, так и всего многообразия API-интерфейса Unix. Использование "мягкого" реального времени обычно подходит для реализации мультимедийных задач, а также при обработке разного рода потоков информации, где критично время получения результата. Совершенно другой подход применен при реализации в Linux "жесткого" реального времени.



LINUX 2.2.x


Операционная система Linux ведет свою историю с 1991 г., когда никому не известный студент из Хельсинки Линус Торвальдс начал разрабатывать свою версию UNIX-подобной операционной системы. Она была написана, что называется, с нуля - автор не использовал код оригинальных версий UNIX. Вместе с тем в архитектуре Linux и, особенно, в средствах системного администрирования и комплектования документации четко прослеживается влияние BSD UNIX. Кроме того, многие дистрибутивы имеют процедуру начальной загрузки, характерную для AT&T UNIX.

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

Ядро Linux является модульным, хотя пользователи могут скомпилировать и монолитное ядро. При создании модульного ядра пользователи имеют возможность указать, поддержка каких устройств будет реализована непосредственно в составе ядра, а каких - в виде загружаемых модулей. Модульная структура позволяет задействовать минимальный объем оперативной памяти. Обратной стороной медали являются накладные расходы на первоначальную загрузку модулей.

Ядро Linux неплохо подходит для однопроцессорных вычислительных систем, но гораздо хуже - для многопроцессорных и особенно кластерных конфигураций. Преимущества Linux состоят прежде всего в бесплатности системы и ее нетребовательности к аппаратному обеспечению, но никак не в техническом совершенстве архитектуры ядра. Здесь мне представляется уместным привести слова одного из создателей UNIX - Кена Томпсона: "Не думаю, что его [Linux] ожидает большой успех. Я видел исходные тексты, там есть как вполне приличные компоненты, так и никуда не годные... Microsoft выпускает не слишком надежные программные продукты, но Linux хуже их".
Возможно, Кен чересчур категоричен, но подобную реакцию доводилось наблюдать и со стороны других специалистов, мнение которых никак нельзя считать предвзятым.

Среди прочих недостатков ОС Linux можно отметить поистине убогую файловую систему ext2. Размер файлов ограничен 2 Гбайт, что явно недостаточно для корпоративных приложений. Средства протоколирования и поддержка списков контроля доступа (ACL) отсутствуют, что также не повышает привлекательность Linux как основы для серьезных сетевых решений. По этим показателям Linux проигрывает не только мощным UNIX на платформе RISC, но и коммерческим UNIX на платформе Intel, а также Windows NT и NetWare.

Полгода назад компания SGI объявила о начале разработки журнальной файловой системы для Linux, но пока непонятно, как ее собираются реализовать и сколько она будет стоить для конечных пользователей. Раз уж речь зашла о компании SGI, я хотел бы упомянуть о следующем любопытном факте: эта компания объявила Linux своей приоритетной ОС. Вместе с тем SGI имеет мощнейшую систему IRIX, причем в том, что касается поддержки корпоративных конфигураций, она даст Linux фору по всем статьям. Вместе с тем в SGI считают, что им по силам довести Linux до уровня IRIX. Спрашивается, зачем же так напрягаться, взяли бы да опубликовали исходные тексты IRIX?

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

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

Хотя с точки зрения стабильности и отказоустойчивости ОС Linux сильно проигрывает UNIX на платформе RISC, она вполне конкурентоспособна в сравнении с Windows NT/2000 и NetWare. В принципе, NetWare не является универсальной ОС, и поэтому подобное сравнение не вполне правомерно с точки зрения применения ОС в качестве сервера приложений.



Другое дело - Windows NT/2000, главный претендент на роль системы для серверов приложений. В UNIX графическая оболочка полностью отделена от ядра и работает в режиме обычного приложения, в то время как в Windows NT/2000 графическая подсистема интегрирована в ядро. Для настольной ОС - это немаловажное преимущество, так как такой подход позволяет достичь максимальной производительности на графических операциях. Учитывая более низкую стоимость работающих с графикой программ на платформе NT, преимущество оказывается за NT. Кстати, это подтверждается статистикой продаж: для задач САПР или издательских систем доля UNIX быстро уменьшается.

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

В текстовом режиме Linux может функционировать уже при объеме оперативной памяти 4-8 Мбайт - недостижимый показатель для Windows NT/2000. При 32 Мбайт компьютер Linux неплохо справляется с задачами сервиса файлов и печати, но, конечно, чем больше объем ОЗУ, тем лучше и устойчивее этот сервис работает. Максимальный размер оперативной памяти, используемый Linux на платформе Intel, составляет 2 Гбайт, хотя некоторые оригинальные разработки позволят увеличить эту цифру до 4 Гбайт.

Еще одно преимущество UNIX, в том числе Linux, по сравнению с NT заключается во встроенной поддержке удаленного администрирования. Несмотря на наличие решений наподобие Citrix WinFrame или Windows Terminal Server для NT, разве их возможности можно сравнить (по требуемым ресурсам и надежности) с утилитами UNIX?!

Что же касается сопоставления надежности Linux с коммерческими UNIX на платформе Intel, то однозначный ответ здесь получить трудно. Одни считают, что Linux устойчивее коммерческих UNIX, другие верят в обратное. На этот счет можно утверждать лишь то, что "уронить" любую систему на платформе Intel гораздо легче, чем на платформе RISC.Во всяком случае в процессе тестирования у нас "падала" и Linux, и FreeBSD, и SCO UnixWare, и Sun Solaris. Однако это связано скорее всего не со спецификой конкретной ОС, а с изъянами архитектурной модели компьютеров Intel.

В Linux поддерживается разработанная для BSD UNIX система квот, с помощью которой администратор может задавать лимиты дискового пространства для отдельных пользователей. Хотя эта система значительно уступает по своим возможностям имеющейся в NetWare, но по сравнению с Windows NT, которая пока вообще не имеет ничего подобного, это прогресс. Правда, Windows 2000 будет комплектоваться встроенной системой квотирования, так что преимущество Linux здесь временное.

В отличие от других UNIX-подобных операционных систем, Linux более экономно использует область подкачки на диске. Она задействуется Linux только тогда, когда объем свободной оперативной памяти приближается к критической отметке.


Linux и графика


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

Как я уже говорил, Linux может вообще не использовать графический интерфейс. Однако, как известно, большинство пользователей привыкли иметь дело с графикой, а поставщики Linux, естественно, хотят расширить круг своих клиентов. Поэтому при инсталляции многих современных версий Linux настоятельно рекомендуется устанавливать GUI. Например, SuSE Linux, Corel LINUX и OpenLinux по умолчанию работают в графическом режиме, сразу загружая среду X Window. Тем, кому графика не нужна, придется немного поколдовать над файлами конфигурации.

Мне пришлось приложить немало усилий, чтобы графический интерфейс устанавливаемых версий заработал. Вероятно, это связано с относительно недавним приходом графики в мир Linux. Я очень надеюсь, что разработчики SuSE, Caldera и других компаний решат эти проблемы к 2001 г. или даже раньше. Пока же настоятельно рекомендую не пытаться устанавливать Linux, не выяснив тип набора микросхем видеоадаптера, объем видеопамяти и диапазон частот горизонтальной и вертикальной развертки. Получить такую информацию можно с помощью уже установленной операционной системы (например, Windows NT или Windows 9x). Характеристики монитора приведены либо в ее описании, либо на сайте изготовителя.



Linux конторский. Об офисном инструментарии и главным образом о StarOffice 5.1a


Алексей Федорчук

Широким массам трудящихся, использующим компьютер в своей повседневной работе, требуется от него почти исключительно две функции: умение работать с буквами и цифрами. Причем с буквами - гораздо больше, чем с цифрами. Поэтому самые широко распространенные программы - это текстовые процессоры и электронные таблицы. Причем по доброй традиции (подобной ненавязчивому советскому сервису), они распространяются обычно не сами по себе, а в составе т.н. офисных комплектов. Куда производители, в своей заботе о пользователях, включают, помимо указанных компонентов, также всякого рода органайзеры и коммуникационные программы, средства групповой работы, а также столь необходимые простому человеку вещи, как пакеты для создания презентаций и настольные СУБД.



Дистрибутив Mandrake был составлен французским


Дистрибутив Mandrake был составлен французским программистом Жилем Дювалем. Он на 100% обратно совместим с RedHat, т. е. любые приложения для RedHat без проблем устанавливаются и запускаются на Mandrake. Номера версий Mandrake, как правило, соответствуют номерам версий RedHat. Текущая версия Mandrake базируется на ядре 2.2.13. Фактически Mandrake - это несколько модернизированный вариант RedHat.

Если RedHat функционирует на всех компьютерах Intel, начиная с процессора 386, а также SPARC и Alpha, то Mandrake работает только на процессорах Pentium и выше.

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

В Mandrake абсолютно все приложения скомпилированы для процессора Pentium, и за счет этого их производительность выше на 5-30% по сравнению с RedHat.

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



Рисунок 6. Графическая оболочка KDE.

В отличие от RedHat, где предпочтение отдано GNOME, в Mandrake основной акцент сделан на поддержку графической оболочки KDE (см. Рисунок 6). Графическая оболочка поставляется с удобными настройками и дополнительными утилитами, так что пользователю вряд ли придется затратить много времени на освоение системы. Надо отметить, что многие пользователи некоммерческих UNIX отдают предпочтение KDE, как более мощной, удобной и развитой оболочке, хотя она использует коммерческую библиотеку Qt компании Troll Technologies. Разумеется, комплект Mandrake также включает оболочки GNOME, Afterstep, WindowMaker и другие.

Процедура инсталляции Mandrake 6.1 аналогична процедуре инсталляции RedHat 6.0 (sic) и осуществляется в текстовом режиме. При этом у нас не возникло никаких проблем ни с настройкой сетевых плат, ни с заданием доменов.



Рисунок 7. Средство администрирования linuxconf из состава Mandrake.

Во всем остальном Mandrake 6.1 полностью идентичен RedHat 6.1, и выводы, сделанные относительно RedHat, полностью справедливы и в отношении Mandrake. Единственным исключением, причем приятным, является отсутствие необходимости копаться в настройках русского языка: все заработало сразу и без проблем. Пожалуй, еще одно отличие состоит в более удобном и понятном интерфейсе linuxconf (см. Рисунок 7).

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


Linux реального времени


Журнал , #09-10/1999

Алексей Черемисин,

Олег Кобызев

До недавнего времени для решения задач автоматизации в основном использовались операционные системы (ОС) реального времени (РВ). Это компактные системы, основанные на микроядерной архитектуре, - такие так VxWorks, OS-9, PSOS, QNX, LynxOS. Эти системы обладают быстрым временем реакции на события и прерывания, компактностью кода, хорошей встраиваемостью и другими преимуществами, характерными для операционных систем с микроядерной архитектурой.

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

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

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

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



Linux: свобода и коммерция


Сергей Кузнецов

В первый раз я видел и слышал Линуса Торвалдса около четырех лет тому назад на конференции Румынской ассоциации пользователей ОС UNIX в Бухаресте. Конференция проходила в громадном зале Дворца детей, и обычно на докладах присутствовало 200-300 человек. Во время выступления Линуса зал был набит битком - более 1000 человек. И основную часть публики составляли студенты. Это и не удивительно, потому что в то время ОС Linux была одной из любимых игрушек студентов, склонных к серьезному программированию. В то же время, уже тогда Линус был настроен очень серьезно, говоря, что при имеющемся количестве квалифицированных, активных и заинтересованных соразработчиков, координирующих свою работу через Internet Linux обладает выдающимися перспективами развития и распространения.

В январе 1996 г. в Анахейме (шт. Калифорния) параллельно с ежегодной технической конференцией Usenix проходила специализированная конференция по Linux. Естественно, там был и Линус. Я был поражен тем, насколько отличалась публика от бухарестского варианта. Конечно, в зале была и молодежь, но в основном это были взрослые и серьезные люди, которых конференция интересовала не по причине горячей любви к Linux или желания участвовать в дальнейшем развитии системы. Нет, это были, главным образом, разработчики приложений в среде Linux. Нормальных коммерческих приложений. И вопросы они задавали, абсолютно характерные для разработчиков приложений. Нормальные вопросы по поводу поведения операционной среды. Возникало ощущение, что Linux уже вышел за пределы университетов и Internet, что это система, воспринимаемая в мире бизнеса. Но тогда, два года назад, не чувствовалось серьезного отношения к Linux со стороны гигантов софтверного бизнеса. Сейчас ситуация радикально изменилась.

Пожалуй, я начну с того, что меня лично больше всего занимает. Во всех сравнительно полнофункциональных пакетах свободно распространяемого программного обеспечения (GNU, BSD, Linux) всегда ощущался недостаток в развитых средствах управления базами данных.
Наличие таких систем как mySQL и PostgreSQL явно недостаточно, поскольку практически невозможно довести бесплатно разрабатываемую СУБД до уровня развитой коммерческой системы. Я это почувствовал на основе собственного опыта (проект свободно распространяемого SQL-сервера до сих пор не доведен до должного уровня). Сравнительно легко спроектировать и разработать такую систему, но очень трудно довести ее до уровня, которым обладают коммерческие продукты. Поверьте мне, что это гораздо труднее создания операционной системы.

В этом году операционной среде Linux пристальное внимание уделили практически все ведущие производители реляционных СУБД (вернее, все, кроме Microsoft). Мне кажется, что полезно рассказать об этом более подробно.

Первой была компания Informix со своим заслуженным (и несколько престарелым) продуктом Informix SE (Standard Edition). Informix предоставляет свой продукт с полной документацией (на английском языке; то же самое относится и ко всем остальным программным средствам, упоминаемым ниже) свободно (бесплатно) в сопровождении своей лицензии. Informix SE - это надежная и проверенная в течение многих лет система, поддерживающая стандарты языка SQL, но пригодная, главным образом, для создания информационных систем масштаба мелких и средних предприятий. Сервер БД (естественно, для Intel в машинных кодах) и документацию можно получить на сайте www.informix.com. В настоящее время Informix предлагает SE для платформ Linux Caldera (www.caldera.com) и S.u.S.E. (www.suse.com). В скором времени ожидается появление Informix SE для Linux RedHat (www.redhat.com).

Вторым по счету стало подразделение компании Inprise (www.inprice.com) Interbase (www.interbase.com). Компания произвела для платформы Linux RedHat и предоставила в открытый доступ предпоследнюю версию своего сервера 4.0. Получить эту систему можно на сайте Interbase. Последняя, пятая версия сервера Interbase тоже доступна для платформы RedHat, но уже за деньги, с полной поддержкой компании. Преимуществом продуктов Interbase является их полная интегрированность и средствами разработки приложений компании Inprise (Delphi, C++-Builder и т.д.).



Единственной компанией, предоставившей для среды Linux последнюю версию своего сервера (Adaptive SQL Server), является Sybase (www.sybase.com). Эта система в среде Linux сейчас работает только на платформе RedHat. Получить ее вместе с документацией (естественно, без поддержки компании) можно на сайте компании Red Hat Software www.redhat.com. Понятен плюс этого выбора: вы получаете полнофункциональную версию сервера для использования в исследовательских или коммерческих целях без каких бы то ни было ограничений. (Правда, свободно распространяемых средств разработки приложений компания пока не предлагает!)

Другим путем идет компания Oracle (www.oracle.com) во главе со своим бессменным лидером Ларри Эллисоном. Сейчас на сайте компании можно получить пробную версию Oracle8 для RedHat, Caldera и S.u.S.E. Но это только чтобы попробовать! Oracle не собирается раздавать гостинцы. Oracle8 для Linux будет распространяться на общих основаниях на основе единой ценовой политики компании (цены пока неизвестны). Зато обещается такой же уровень поддержки, что и для всех остальных платформ.

В ближайшем будущем обещает выпустить DB2 Universal Database для Linux компания IBM (www.ibm.com). Судя по всему, при распространении этого продукта IBM будет придерживаться того же подхода, что и Oracle. Хотя в печати IBM утверждает, что перенос DB2 UDB в среду Linux завершен на 90%, пока на сайте IBM не предлагается даже пробный вариант.

Итак, у основных поставщиков систем баз данных мы видим три разных подхода: бесплатная раздача последней версии сервера баз данных (Sybase); свободное распространение работоспособного, но несколько устаревшего программного обеспечения (Informix и Interbase); строгая политика продаж, действующая одинаковым образом по отношению ко всем платформам (Oracle и, возможно, IBM). Кто более прав, покажет время.

Теперь поговорим о средствах разработки Internet/intranet-приложений. Я не буду останавливаться на известных свободно распространяемых системах поддержки Web-серверов, например, Apache (www.apache.org) и т.д., поскольку они широко известны в мире свободно распространяемого программного обеспечения для Internet.


Менее известно, что коммерческая компания Netscape (www.netscape.com) теперь предлагает свой клиентский продукт Netscape Communicator, пригодный для использования в среде Linux. Свободно (без ограничений на распространение) доступна версия 4.07. Самый последний вариант (еще не выпущенный официально) также доступен свободно, но с ограничением на распространение (т.е. можно взять его для себя лично либо в учебных целях).

Еще более интересно то, что для использования в среде Linux теперь имеется стандартный джентльментский набор средств разработки приложений на языке Java. Группа энтузиастов с согласия компании Sun Microsystems выполнила портирование в среду Linux пакета JDK 1.1 (Java Development Kit). Этот продукт можно получить на сайте www.blackdown.org/java-linux.html . Компания NetBeans (www.netbeans.com) бесплатно предлагает одноименный созданный на языке Java продукт, представляющий собой среду разработки Java-приложений и пригодный для использования в окружении Linux. В совокупности эти два продукта обеспечивают все необходимое для разработки и использования приложений на основе языка Java. Мне кажется, что особенно полезно использовать эти средства в комбинации с Web-серверами и/или ориентированным на Java Sybase Adaptive SQL Server.

Теперь поговорим немного про офисные средства на платформе Linux. Вообще-то их пока недостаточно. Но уже видны первые ласточки. Компания Corel (www.corel.com) предлагает для работы в среде Linux самую последнюю версию своего всемирно распространенного продукта Word Perfect 8. В соответствии со стратегией компании система не является свободно распространяемой и стоит столько же, как и Word Perfect для других платформ. Я думаю, что это только начало и что другие независимые производители офисных и издательских систем последуют примеру Corel.

Наконец, нельзя не сказать об интеграции Linux и GNU (www.gnu.org и www.fsf.org). Хотя девизом компании Ричарда Столлмана Free Software Foundation по прежнему остается "GNU's Not Unix", видимо, неправильно было бы сказать "GNU's Not Linux".Несмотря на наличие собственной реализации UNIX под названием Hurt, FSF считает Linux основной платформой для использования продуктов семейства GNU. Более того, без использования утилит, компилятора GCC, редактора Emacs и других программных средств GNU ОС Linux просто не могла бы существовать. Linux как и GNU распространяется при использовании одной и той же General Public Licence (GPL), и создатели этих программных средств исповедуют одни и те же идеи свободного и неограниченного распространения программ и идей. Упоминавшиеся выше коммерческие компании, распространяющие и поддерживающие Linux, а также разрабатывающие программные средства для расширения возможностей системы входят в состав спонсоров FSF.


Окончание процедуры инициализации ядра Linux


if (execute_command) execve(execute_command,argv_init, envp_init);
execve("/sbin/init",argv_init,envp_init);
execve("/etc/init",argv_init,envp_init);
execve("/bin/init",argv_init,envp_init);
execve("/bin/sh",argv_init,envp_init);
panic("No init found. Try passing init= option to kernel.");
}

Первый процесс в системе запускается при инициализации ядра. Пожалуй, даже человеку, не умеющему программировать, достаточно будет взглянуть на конец процедуры инициализации ядра Linux (см. листинг 2), чтобы понять, как определяется выполняемая в этом процессе программа: вначале делается попытка "переключить" процесс на файл, указанный в командной строке ядра (есть и такая...), потом на файлы /sbin/init, /etc/init, /bin/init и напоследок на /bin/sh.



Манифест GNU


Манифест GNU, приведенный ниже, был написан Ричардом Столменом в начале проекта GNU, чтобы призвать к сотрудничеству и поддержке. За первые несколько лет он был немного изменен, чтобы учесть новые разработки, но сейчас кажется лучшим оставить его неизменным, поскольку многие люди его уже видели.

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

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



Менеджер файлов


Для выполнения файловых операций в Corel LINUX есть утилита Corel File Manager (рис. 3).

Рис. 3

Как и Windows Explorer, файловый менеджер описываемого продукта содержит: панель инструментов с пиктограммами, строку адреса, панель структуры каталогов и панель их содержимого. Корень у всей файловой системы Corel LINUX - рабочий стол Desktop. Из него "произрастают" домашний каталог пользователя, папки смонтированных NFS и сетей Windows, ну и всякое другое. Corel File Manager перенял у Windows Explorer еще одно важное свойство, а именно умение показывать HTML-страницы в режиме браузера.

Удивитесь ли вы, узнав, что файлы и каталоги в Corel File Manager можно копировать и перемещать перетаскиванием? Вряд ли - это само собой разумеющаяся возможность любой современной среды.

Вот что лично мне безумно понравилось в файловом менеджере Corel LINUX, так это его автоматическое подключение "чужих" дисков. Он корректно определил три раздела Windows и смонтировал их в каталоги /disks/c, /disks/d и /disks/e своей файловой системы. С этого момента возможна работа с любыми физическими разделами моего компьютера. Бальзам для души - замена CD-ROM на ходу. Если у вас есть минимальный опыт работы с любой системой UNIX, то вы должны знать, что смена CD-ROM в этой ОС требует размонтирования, собственно смены диска и повторного его монтирования. Corel LINUX делает это за вас. Пользователи Windows не почувствуют никакой разницы, разве что для чтения данных с компакт-диска вам нужно будет обращаться к каталогу с именем CD-ROM файловой системы. То же касается и флоппи.

Всем хорошим, о чем было сказано, мы обязаны программе-демону автоматического монтирования дисков. К сожалению, в процессе работы с Corel LINUX вылезли и побочные явления. Так, по умолчанию в Corel File Manager не видны скрытые каталоги Windows, а на флоппи-дисках длинные имена показываются в сокращенном виде.



МЕСТО НЕКОММЕРЧЕСКИХ UNIX


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

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

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

Что касается применения на серверах, то здесь положение несколько иное, и все зависит от класса решаемых задач. В качестве небольших серверов Internet или серверов удаленного доступа Linux и FreeBSD могут дать фору многим конкурентам. Но из-за некачественной поддержки многопроцессорных и кластерных конфигураций (имеется в виду истинная кластерная конфигурация, с распараллеливанием процессов), отсутствия журнальных файловых систем и других ограничений они пока не могут претендовать на роль корпоративных серверов. То же самое относится к серверам приложений, файловому сервису и сервису печати (в частности, программам samba и mars).
На многопроцессорных машинах некоммерческие UNIX по производительности серьезно уступают не только своим коммерческим собратьям, но и Windows NT. Однако в однопроцессорной конфигурации они вполне конкурентоспособны.

Некоммерческие UNIX далеко не бесплатны. Да, конечно, дистрибутивы имеют сравнительно невысокую стоимость, но и тут положение быстро меняется в худшую сторону: цена полного дистрибутива RedHat 6.1 уже достигла 150 долларов - при таких темпах разница в цене между некоммерческими и коммерческими системами скоро исчезнет совсем. Однако по непонятным причинам многие забывают включать в смету расходов затраты на обучение специалистов (которые, кстати, выше, чем для коммерческих ОС), на развертывание системы, ее эксплуатацию, обновления, а также учитывать аналогичные расходы на программное обеспечение, т. е. все то, что на Западе характеризуют термином TCO - т. е. общая стоимость владения.

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


MIME Type Editor


Еще одна важная утилита - утилита-редактор типов файлов, MIME Type Editor, заведующая связями между типами файлов и программами-серверами (рис. 6).

Рис. 6

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



Модернизация BIOS


Необходимо также выяснить, обеспечивает ли BIOS вашего ПК совместимую с Windows 2000 поддержку стандарта ACPI. (BIOS - это низкоуровневая программа, отвечающая за взаимодействие процессора, памяти и других основных компонентов компьютера друг с другом и с операционной системой; ACPI - Advanced Configuration and Power Interface, расширенный интерфейс конфигурирования и управления электропитанием).

При установке Windows 2000 инсталляционная программа проверяет, числится ли BIOS компьютера в списке "хороших" в смысле совместимости с ACPI или, наоборот, известна как несовместимая, и в зависимости от результатов устанавливает версию ОС с поддержкой либо ACPI, либо более старой спецификации APM (Advanced Power Management - расширенное управление электропитанием). ACPI совершеннее APM: эффективнее управляет электропитанием, имеет более гибкие и надежные средства приостановки работы и обладает другими достоинствами, весьма существенными для пользователей портативных компьютеров.

Иногда совместимость BIOS с ACPI является непременным условием установки Windows 2000. Если программы BIOS вашего ПК не окажется ни в "хорошем", ни в "плохом" списке, инсталляционная программа примет решение относительно ее совместимости на основе даты. И в этом случае неполная совместимость BIOS с ACPI способна привести к тому, что Windows 2000 вообще не удастся установить. Такова была ситуация с одним из наших тестовых компьютеров - Compaq Presario 5700: попытки инсталлировать на нем Windows 2000 регулярно оканчивались крахом.

Один из способов избежать проблем и обеспечить использование ACPI состоит в том, чтобы перед тем, как модернизировать Windows, получить с Web-узла изготовителя и установить у себя последнюю версию BIOS. Найти нужную программу поможет поддерживаемый Microsoft узел Windows 2000 BIOS update ().



Монтирование


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

Чтобы избежать подобных эффектов, любую файловую систему необходимо перед началом работы с ней в явной форме подключить к ОС (смонтировать - mount), а по окончании отключить (размонтировать - unmount). Для этой цели служат команды mount и umount (без n, хотя соответствующее действие называется unmount). Команда mount имеет множество опций (см. врезку "Монтирование: подробности для любознательных"), но обязательных аргументов у ее стандартного варианта два: имя файла блочного устройства и имя каталога. В результате выполнения этой команды файловая система, расположенная на указанном устройстве, подключается к системе таким образом, что ее содержимое заменяет собой содержимое заданного каталога (поэтому для монтирования обычно используют пустой каталог). Команда umount выполняет обратную операцию - отсоединяет файловую систему, после чего накопитель можно извлечь и положить на полку (на самом деле проблемы возникают почти исключительно с дискетами: CD-ROM, магнитно-оптический диск или Zip-диск, который забыли размонтировать, просто не удастся вытащить без помощи скрепки - он блокируется).


Монтирование осуществляется командой mount, требующей двух аргументов - имени файла монтируемого устройства (дискового раздела) и точки монтирования. Кроме того, желательно явным образом (с помощью опции -t) задать тип монтируемой файловой системы (особенно если это не ext2fs):

$ mount -t ext3fs /dev/hd?# /mount_point

Каталог, в который монтируется файловая система, должен быть создан заблаговременно. И желательно пустой: монтирование в каталог с файлами в современных Linux фатальных последствий не повлечет (раньше это могло привести к краху системы), но все его содержимое станет недоступным вплоть до размонтирования файловой системы. Очевидно также, что первым должен монтироваться корневой каталог (/), поскольку и /boot, и /home, и /usr, и прочие представляют собой ветви на его древе. Собственно, свои имена они и обретут только после монтирования в корневую файловую систему.

Корневая файловая система отличается от всех прочих тем, что в ней задействуется загрузочный блок. Конечно, он существует и в любой другой из файловых систем, так как возникает при их создании, но не используется за ненадобностью. И здесь возникнет вопрос, как монтировать раздел, зарезервированный под корневой, к уже существующему корневому разделу. Или, хуже того, к корневому разделу системы, которая еще не инсталлирована. Ответ таков - установщик Linux работает под управлением этой же ОС, которая имеет многие атрибуты полноценной системы, в том числе и корневую файловую систему. Другое дело, что базируется она не на каком-либо дисковом устройстве, а находится в оперативной памяти и раздел, которому суждено стать корневым, монтируется в некий каталог этой виртуальной корневой файловой системы. Уже говорилось, что существуют различные опции монтирования, способствующие повышению производительности при файловых операциях. К ним относится опция -o noatime, которая отключает обновление атрибута времени последнего доступа для обычных файлов и каталогов, соответственно. Монтирование с этой опцией целесообразно для всех типов файловых систем и всех разделов. Другие опции специфичны для файловых систем определенного типа. Так, уже упоминались три режима журналирования в ext3fs, существенно различающиеся по быстродействию и надежности. Так вот, режимы эти задаются именно при монтировании файловой системы с помощью той же опции -o, принимающей значения data=journal, data=ordered и data=writeback для режимов полного журналирования, последовательного и обратной записи, соответственно. Наконец, так же опция -o будет отвечать и за отключение режима тайлинга в файловой системе ReiserFS, для чего ей нужно придать значение notail.

За отсутствием файловой системы swap-раздел в монтировании не нуждается, но должен быть активизирован, для чего служит команда swapon.

Алексей Федорчук(fedorchuk@geo.tv-sign.ru) - сотрудник Геологического института РАН (Москва)