Linux изнутри
Образовательная программа компании Global Inform. Украина, Харьков
автор статьи - Андрей Зубинский
НЕМНОГО ИСТОРИИ
Linux - это операционная система, родоначальником которой является Линус Торвальдс (Linus Torvalds) - молодой студент университета в Хельсинки (Финляндия). Еще во время учебы Линус заинтересовался Minix — простой Unix-системой, и решил разработать ОС, которая была бы лишена недостатков Minix и превосходила ее по мощности. В 1991 г. он выпустил первую версию ядра Linux 0.02, а в 1994 г. в результате упорного труда вышла версия 1.0. С тех пор над системой работают многие программисты по всему миру. Сейчас разрабатываемая версия стала общедоступной (с задержкой на 1—2 недели).
Распространяется эта система согласно условиям лицензии GNU General Public License. Таким образом, ее исходные тексты доступны всем, и каждый может использовать их и модифицировать применительно к решению своих задач. Подобная политика распространения, называемая также “рыночным” (bazaar) методом разработки, когда “свежеиспеченная” версия продукта сразу же выставляется для всеобщего использования и все желающие могут участвовать в отладке системы, обусловила быстрый рост ее популярности и дала возможность обнаруживать и устранять ошибки.
После длительного тестирования разрабатываемой версии ядра выпускается ее стабильная версия, у которой вторая цифра номера — четная. К примеру, 2.0.хх — стабильное ядро, а 2.1.ХХ - нет, и те, кто используют его, делают это на свой страх и риск. Естественно, и в стабильных версиях ядра могут появляться ошибки, которые исправляются в более поздних вариантах. Различие состоит в том, что в четные версии не добавляются новые возможности, и, таким образом, новые ошибки практически не вносятся. Последняя версия, находящаяся в стадии тестирования на момент написания статьи, — 2.1.92. С ее выходом Линус объявил о прекращении добавления новых возможностей, т. е. в последующие версии вплоть до 2,2.0, будут включаться только исправления обнаруженных ошибок. Основное отличие ядра 2.1.х от предыдущих -поддержка многопроцессорных машин (SMP).
В настоящее время версии 2.0.3х достаточно устойчивы, и вы можете использовать их, не опасаясь аварии. Известен случай, когда компьютер работал около 600 дней без ошибок и сбоев, используя версию 0.99р15 (датируемую осенью 1992 г.).
У Linux есть свой официальный талисман - пингвин, который был выбран Линусом Торвальдсом для представления образа, ассоциированного с ОС, которую он создал, Существует много вариантов произношения названия, однако чаще всего встречается “Линукс” с ударением на первом слоге.
ВОЗМОЖНОСТИ ПРИМЕНЕНИЯ
Linux может быть использована в самых различных сферах, в том числе в сетях, для разработки программного обеспечения и в качестве платформы конечного пользователя; часто рассматривается как дешевая альтернатива другим, более дорогим операционным системам.
Благодаря природной функциональности и доступности Linux завоевала популярность по всему миру, и большое количество программистов модифицировали ее исходные тексты для своих нужд. Сейчас в работе находятся десятки проектов переноса Linux на различные конфигурации аппаратного обеспечения и модификации ее для специальных целей.
В настоящее время Linux выпускается для PC-совместимых платформ конфигураций 386/486/Pentium/Pentium Pro с шинами ISA, EISA, PCI, VLB и MCA (поддержка MCA добавлена в версии 2.1 ядра и еще подлежит тестированию); идет работа над ее переносом на многие платформы с процессорами Motorola 680х0. Хорошо освоены некоторые машины Amiga, Atari, VME. Работает эта ОС и на процессорах DEC ALPHA. Перенос Linux на другие архитектуры, включая MIPS, ARM и i8086, находится на различных стадиях разработки.
Linux поддерживает достаточно большое количество оборудования, включая звуковые и различные сетевые карты, Zip-диски, всевозможные SCSI-адаптеры и многие другие типы аппаратного обеспечения.
ЯДРО И МОДУЛИ
Собственно Линус Торвальдс разработал ядро операционной системы, т. е. ее основную часть, отвечающую за загрузку ОС, управление аппаратурой, памятью и задачами. Скомпилированное ядро Linux 2.0.30 занимает около 300 KB. Очень тесно с ядром связано понятие модуля (драйвера). В Linux большинство возможностей, будь то работа с различным “железом”, поддержка файловых систем других ОС или сетевые протоколы, могут быть скомпилированы внутри ядра или в виде модулей. Модули могут загружаться и выгружаться пользователем или операционной системой, и для этого не нужно перезагружаться. Если драйвером управляет операционная система, то при запросе к определенной услуге, обслуживаемой модулем, ядро автоматически его загружает. Если модуль не используется в течение некоторого времени, он выгружается из памяти. Естественно, некоторые модули должны быть скомпилированы в ядре (например, поддержка жесткого диска, если с него будет производиться загрузка). Большинство модулей поставляются вместе с ядром, однако некоторые компании уже предлагают драйверы для своих устройств для Linux.
ЗАГРУЗКА И УПРАВЛЕНИЕ
Одной из главных компонент в Linux (как и во всех Unix) является процесс init, который загружается первым, и его остановка означает прекращение работы системы. Этот процесс производит настройку системы и является “родителем” по отношению ко всем процессам в системе. Необходимо отметить, что init работает в одном из шести режимов (run level). Среда каждого из них определяется файлами конфигурации. В основном, используются уровни 3 и 5. Уровень 3 соответствует работе с консолью в текстовом режиме, а уровень 5 означает автоматическую загрузку Х Window System. Первый уровень является однопользовательским режимом - загружается минимальное количество задач и разрешен вход в систему только одного пользователя. При переходе в режимы 0 и 6 осуществляются соответственно останов и перезагрузка системы. Загрузившись, init запускает login - задачу регистрации пользователей, которая, проверив их имя и пароль, в свою очередь, запускает рабочую оболочку (shell).
Для останова системы необходимо запустить команду halt или reboot соответственно для останова или перезагрузки системы. Существует и более гибкая команда -shutdown, позволяющая задать время, когда должен произойти останов системы.
Если Unix работает на многопользовательском компьютере, то обычно можно зайти в систему с различных консолей. В Linux для пользователей персональных компьютеров существует аналогичное средство - виртуальные консоли, переключение между которыми осуществляется с помощью простой комбинации клавиш Alt+Fn, где n - номер консоли.
Весьма эффективна работа с оперативной и виртуальной памятью. Свопинг осуществляется на один или несколько выделенных разделов на жестком диске, что обеспечивает большую его скорость, чем при использовании для этих целей файла (как это делается в Windows 95), хотя существует метод, позволяющий Windows 95 и Linux разделять для свопинга одно и то же дисковое пространство. Всю свободную оперативную память Linux занимает под кэш-буфер. Так как из всею оборудования, с которым вы работаете постоянно, самым медленным является жесткий диск, то это значительно повышает производительность системы. Обычно после пяти минут работы в Linux свободной памяти у вас останется не более нескольких сотен килобайт, однако этого не следует бояться - при необходимости часть кэша освободится для запрашивающей программы. Одним словом, Linux действует по принципу “свободная память - простаивающее оборудование”.
ФАЙЛОВАЯ СИСТЕМА
В настоящее время “родной” файловой системой Linux является second extended file system - ext2fs. Она поддерживает имена файлов длиной до 255 символов и разрешает использование многих специальных символов (включая пробелы). Для тех, кто знаком с файловой системой DOS/ Windows, выделю два основных отличия: прописные и строчные буквы в ней различаются, а названия каталогов в пути разделяются прямой косой чертой "/". Структура файловой системы достаточно проста. Верхний уровень называется корнем (root) и обозначается "/". Кроме привычных специальных символов "." и "..", подразумевающих соответственно текущий и родительский каталоги, существует еще один -"~", домашний, обычно это /home/user, где user — имя пользователя. Такое разделение очень полезно, если на машине работают несколько человек: во-первых, другой пользователь не сможет изменить ваши файлы (а если вы захотите, то не сможет и увидеть), а во-вторых, так как настройки системы для конкретного пользователя находятся в его домашнем каталоге, каждый из них может настраивать систему по своему усмотрению.
Корневой каталог имеет постоянную структуру и включает такие основные подкаталоги:
/bin — основные
команды:
/boot - файлы, необходимые для
загрузки системы;
/dev — различные устройства;
/etc — всевозможные файлы
конфигурации;
/home— домашние каталоги
пользователей,
/lib - основные библиотеки и модули;
/mnt — каталоги для монтирования
других файловых систем;
/proc файлы состояния системы;
/root - домашний каталог
администратора (root);
/sbin - основные команды
администрирования системы;
/Imp - временные файлы;
/usr
/Lisr/X11 - файлы системы Х Windows System;
/usr/bin — различные команды и утилиты;
/usr/lib - библиотеки;
/Lisr/local — этот каталог имеет
структуру, идентичную корневому, но
с файлами, которые вы
устанавливаете сами (здесь удобно,
например, размещать программы,
находящиеся на стадии
альфа-тестирования);
/usr/sbin — команды и утилиты
администрирования;
/var — каталог для часто меняющихся
файлов (протоколы системы, каталоги
почты, очереди печати и др.)
Все устройства в Linux представляются в виде файлов. Обычно они находятся в каталоге /dev (или в других, но это случается редко). Например, устройства IDE (жесткие диски и CD-ROM) обозначаются /dev/hda, /dev/hdb (соответственно первичное и вторичное устройства) на первом канале контроллера и /dev/hdc и /dev/hdd — на втором; дискеты имеют обозначения /dev/fdO /dev/fdl, последовательные порты — /dev/ttySO, /dev/ttySI и т. д. Таким образом, при чтении файла /dev/fdO фактически этот процесс осуществляется с дискеты. Для определения разделов жесткого диска добавляются их номера: /dev/hdal — первый раздел на первом диске, /dev/hda2 — второй и т. д.
Linux поддерживает файловые системы: FAT, VFAT (FAT с длинными именами файлов для Windows 95, включая версию FAT32), HPFS, NTFS, других версий Unix, IS09660 (файловая система CD-ROM); компьютеров Macintosh. Таким образом, вы можете получить доступ к разделам других ОС на вашем диске.
В системе ext2fs файлы и каталоги имеют своего владельца, группу пользователей (каждый из которых может быть членом нескольких групп) и двенадцать атрибутов. Девять атрибутов являются разрешением чтения, записи и выполнения файла (для каталогов — разрешение на вход) для владельца, группы и всех остальных пользователей. Три остальных атрибута используются реже.
Файл может иметь одно или даже несколько расширений, что, кстати, используется достаточно часто, поскольку здесь оно является частью имени файла, а не отдельным атрибутом (таким образом, шаблон "*" обозначает “все файлы”, а не “все файлы без расширения”, как в DOS). Выполняемые файлы обычно не имеют расширения (например, .ЕХЕ, как привыкли пользователи DOS и Windows), но имеют установленный атрибут "выполняемый".
УТИЛИТЫ
В Linux существует громадное количество утилит, которые помогают решать всевозможные задачи. Часть их была перенесена сюда из других версий Unix, некоторые написаны фондом Free Software Foundation или программистами со всего мира. И хотя в последнее время в Unix стремительно развиваются графические оболочки, замещающие функции многих утилит и команд, значение командной строки пока еще огромно.
Автор, работавший до Linux в DOS и Windows, наиболее удобной для себя средой в Linux считает Midnight Commander — аналог Norton Commander, обладающий множеством дополнительных возможностей.
Текстовые редакторы в Linux - это, пожалуй, один из самых неприятных моментов для людей, не работавших до этого в Unix. И поскольку большинство конфигурационных файлов в Linux являются текстовыми, довольно часто приходится пользоваться этим типом программ. Самый простой и распространенный (и, вероя1но, самый старый) редактор — это vi. В большинстве дистрибутивов также поставляется emacs значительно более богатый и удобный 1 редактор, позволяющий, кроме того, просматривать почту, 1 проверять орфографию и многое другое, однако он занимает достаточно мною места в памяти и на диске. Для начала я бы посоветовал редактор, встроенный в Midnight Commander версии 4.0 и выше, - работа с ним практически
- такая же, как и в Norton и, к тому же, он обладает некоторыми дополнительными возможностями.
Понятия архивирования и сжатия в настоящее время употребляются как синонимы, хотя, обычно, первое подразумевает второе. Пользователи DOS привыкли, что, например, 1 программа ARJ и сжимает файлы, и упаковывает их в один. Однако раньше эти процессы были разделелы, и в Linux они выполняются различными программами. Программа для упаковки нескольких файлов и директорий в один файл называется tar (tape archiver - ленточный архиватор). Существует достаточно много программ для сжатия. Одна из них — compress, довольно популярная еще пару лет назад, ) уже уступила свое место преемнику — gzip (буква g перед 1 многими утилитами означает, что ее авторами являются программисты из GNU Software). С помощью gzip сейчас упаковывается подавляющее большинство файлов в Unix, системах. Недавно появилась программа bzip2, которая, хотя и работает немного медленнее gzip, однако обеспечивает большую степень сжатия (приблизительно на 15% лучше для текстовых файлов). Для сравнения, степень сжатия gzip приблизительно соответствует этим показателям известной в среде DOS программы RAR. Такой выигрыш очень полезен при передаче больших файлов, например по Internet, где лишний мегабайт может обойтись в ) час ожидания. В Linux существуют распаковщики для архивов RAR, ARJ, PKZIP и некоторых других, но эти форматы здесь практически не используются.
Таким образом, чтобы запаковать каталог с файлами, у необходимо сархивировать его командой tar. а затем сжать при помощи gzip (сжатие архива файлов эффективнее архивирования нескольких сжатых файлов). Это можно сделать и одной командой tar - она может автоматически вызвать gzip для сжатия сархивированного файла. Сжатые архивы могут иметь несколько расширений, например filename. tar. gz Возможен и сокращенный вариант - filename.tgz.
Для управления инсталляцией и деинсталляцией существуют несколько программ. Наиболее популярной является система пакетов RPM. Она используется в дистрибутивах RedHat и S.u.S.E. Пакеты, инсталлирующиеся с помощью этой системы, имеют расширение .rpm. Есть две х версии менеджера пакетов rpm (для командной строки) и glint (для Х Window). После установки можно проверить файлы пакета на изменение, обновить его версию и, наконец, деинсталлировать.
СЕТИ
Устойчивость Linux обеспечивает хорошую базу для сервера как в локальных сетях, так и в Internet. Он может общаться по ( сети с Windows-компьютерами, разделять свои диски и монтировать чужие. Здесь вы найдете файл-сервер для клиентов Novell NetWare и, собственно, клиента для этих серверов.
Практически во всех дистрибутивах поставляются серверы разнообразных сетевых услуг (WWW, FTP, NFS и др.). Linux поддерживает сети Ethernet, Token Ring, FDDI, ISDN. Идет paбота над проектом поддержки АТМ. Профессионалам в области сетей будет интересно узнать, что здесь поддерживаются такие специальные возможности, как маскарадинг IP-адресов, протокол IP версии 6, разделение нагрузки по нескольким последовательным каналам и многие другие.
Linux - ОС, хорошо приспособленная для работы на бездисковых рабочих станциях. Необходимо только включить поддержку сетевой корневой файловой системы и протокола удаленной загрузки. Зашив такое ядро в ПЗУ машины, вы получите так называемого “тонкого клиента”. Существуют бездисковые , рабочие станции, выполняющие специфические функции. Например, сейчас в работе находится проект Linux-router. Идея такова: вы вставляете в компьютер ПЗУ, прошитое кодом Linux-router, или загружаете с дискеты эту систему и получаете полноценный маршрутизатор, что гораздо дешевле, чем, например, покупка маршрутизатора Cisco. Хотя этот вариант не может конкурировать с мощными аппаратными маршрутизаторами, однако в большинстве случаев это вполне приемлемый вариант.
ЭМУЛЯТОРЫ
Linux “умеет” выполнять программы DOS и Windows. Первое обеспечивает эмулятор DOS — DOSEMU, второе — эмулятор Windows - WINE. DOSEMU “справляется” со своими функциями достаточно успешно, и проделав некоторые манипуляции, можно даже заставить запуститься Windows 3.1 в стандартном режиме. WINE, хотя и выполняет некоторые программы для Windows 95, еще находится в стадии альфатестирования. Существуют также коммерческие эмуляторы Windows - WABI и Macintosh - Executor.
Кромр того, в Linux можно запускать программы для других версий Unix с процессорами Intel х86, например SCO Unix или Solaris - это обеспечивает модуль iBCS. Однако драйверы из других Unix-систем нельзя переносить.
ИГРЫ
В Linux вы, естественно, не найдете такого количества игровых программ, как для DOS. Хотя и нельзя сказать, что их совсем hoi. Некоторые популярные игры перенесены под Linux, среди них такие как DOOM, Quake, SimCity и др. Впрочем. большинство игр DOS запускаются из DOSEMU.
ИНСТАЛЛЯЦИЯ
Инсталляция Linux, вообще-то говоря, зависит от дистрибутива, который вы приобрели, но общими для нее являются следующие моменты.
В Linux есть свой загрузочный менеджер — LILO (Linux loader). При его установке вы не теряете возможности работать с дру1ими ОС, установленными на вашем компьютере (вообще-то говоря, Linux можно установить и в раздел DOS, однако это делать не рекомендуется). Для полноценной установки необходимо выделить под Linux раздел на жестком диске — для первой вашей инсталляции и экспериментов будет вполне достаточно 200 MB (минимальная конфигурация может уместиться и в 40 MB, но там будет очень тесно). Лучше выделить один отдельный раздел под свопинг. Его объем обычно —от 8 до 32 MB. Linux может быть установлен на любой из находящихся в вашей системе винчестеров и в каждый раздел — как в первичный, так и расширенный.
При установке большинство дистрибутивов в интерактивном режиме запрашивают у вас параметры для множественной загрузки, выделения разделов под Linux. Они также определяют имеющиеся на диске разделы других ОС и предлагают настроить Linux для автоматической монтировки этих файловых систем при стартe.
Аналогичным образом они помогают вам настроить сеть (если таковая имеется). Некоторые дистрибутивы при желании пользователя проводят инсталляцию в графическом режиме Х Window System.
Настройка системы облегчается наличием большого количества документации. Практически на каждую команду есть справка по ее использованию. Кроме того, существует отдельный каталог /usr/doc, в котором вы найдете документацию по самым разным аспектам настройки Linux. Особо хотелось бы отметить каталог /usr/doc/HOWTO; он содержит в себе файлы с решениями конкретных задач, например, как установить сервер для клиентов Windows, как произвести русификацию системы, как настроить Х Window System и брандмауэр для вашей сети и многое другое.
ДИСТРИБУТИВЫ И ПО
Наиболее популярные дистрибутивы Linux и Web-серверы их поставщиков приведены ниже.
Название | Последняя версия | WWW-сервер |
RedHat | 5.1 | www.redhat.com |
S.u.S.E. | 5.3 | www.suse.com |
SlackWare | 3.3 | www.slackware.com |
Debian | 2.0 | www.debian.orq |
OpenLInux | 1.2 | www.caldera.com |
Кроме того, существует огромное количество серверов в Internet, на которых вы можете найти последние версии ядра Linux и основных утилит, самые разнообразные программы для Linux, документацию и последние новости. В России и Украине есть несколько серверов, посвященных этой ОС: http://www.linux.org/ - основной сервер Linux; http://www.linuhq.com/ - основной сервер разработчиков ядра Linux;
ftp://sunsite.unc.edu/pLib/Linux - один из самых обширных архивов Linux;
ftp://tsx-11.mit.edu/pub/linux - популярный архив Linux; http://kulichki-koi.rambler.ru/moshkow/ - очень по пулярный российский сервер (и не только из-за огромного количества информации о Unix);
http://www.unity.net/cheapb - сервер в Днепропетровске, здесь вы можете заказать компакт-диски с Linux и FreeBSD за символическую цену и с доставкой курьерской почтой по Украине.
Программное обеспечение для Linux на FTP-серверах, как правило, находится в исходных файлах. Обычно они могут быть скомпилированы под различными версиями Unix, и иногда даже под другими ОС. Слово “компиляция” может звучать несколько отпугивающе для людей, слабо знакомых с программированием, однако этот процесс обычно состоит всего из трех команд, которые необходимо выпол нить, - configure, make и make install. Для этого у вас должна быть установлена одна из самых мощных утилит в Linux - gee, компилятор языка “С” фонда GNU. Попадаююя также скомпилированные версии для конкретных ОС (FreeBSD, Linux и др.).
КОММЕРЧЕСКИЕ ПРОГРАММЫ
Для Linux существует достаточно много коммерческих приложений, и их количество постоянно растет. Среди них можно назвать такие как WordPerfect и ApplixWare — офисные пакеты, Mathernatica - математический пакет, ADABAS D -СУБД. На российском WWW-сервере фирмы Borland появилось сообщение о скором выходе IntraBuilder под Linux.
На CD-ROM дистрибутива RedHat вы сможете найти файл Commerdal-HOWTO с достаточно длинным списком коммерческого программного обеспечения для Linux.
Написание своих программ для Linux “на продажу” требует некоторой осмотрительности. Прежде чем приступить к созданию своей коммерческой программы, внимательно просмотрите лицензии программ и библиотек, которые вы будете применять. Некоторые библиотеки разрешают свое использование только в свободно распространяемом ПО.
ПОДДЕРЖКА
Пожалуй, одна из самых главных частей программного обеспечения — документация. Если она отсутствует или является неполной, освоение ПО может очень сильно усложниться.
Один из центральных Linux-проектов LDP (Linux Documentation Project - проект документации Linux). Документы этого проекта описывают всевозможные аспекты использования Linux, способы решения конкретных задач, советы по настройке системы и многое другое. Файлы каталога /usr/doc/HOWTO являются частью этого проекта.
Еще одна необходимая составляющая для софта - техническая поддержка. Для тех, кто купил коммерческую версию RedHat или S.u.S.E., доступна техническая поддержка по телефону (правда, еще не во всех странах). Эти компании также объявили о программе привлечения заинтересованных организаций к осуществлению технической поддержки своих дистрибутивов в других странах.
Недавно, к удивлению многих, Linux была названа ОС с наилучшей технической поддержкой. Однако это вполне объяснимо, так как существует большое количество Web- и FTP серверов с разнообразной документацией, новостями и софтом для Linux. Издаются газета и журнал для пользователей Linux — “Linux Gazett” и “Linux Journal”. К тому же в телеконференциях comp.os.linux* и relcom.fido.ru.linux вы сможете найти самую разнообразную информацию, получить ответы на свои вопросы, а также “послушать” споры о том, какая ОС лучше, и поучаствовать в них.
Таким образом, если вы решитесь использовать Linux, недостатка в документации и поддержке у вас не будет. К тому же по последним оценкам в мире насчитывается несколько миллионов пользователей этой ОС, так что вы не будете одиноки в своих начинаниях.
пишите автору: e-mail:niistat@mail.kar.net
This page maintained by Global Inform Group Ukraine, Kharkov © 1998-99