1 Введение в LINUX

Содержимое этого раздела

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

Linux (произносится "лИнукс") принадлежит семейству UNIX-подобных операционных систем, которая может работать на компьютерах Intel 80386 и 80486. Он поддерживает широкий спектр программных пакетов от TeX до X Windows, компиляторов GNU C/C++, протоколов TCP/IP. Это гибкая реализация ОС UNIX, свободно распространяемая под генеральной лицензией GNU (см. приложение E).

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

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

Что делает Linux столь отличным от других ОС - это его создание версии UNIX "на общественных началах" (free implementation).. Он был создан и продолжает совершенствоваться и развиваться группой добровольцев, первоначально в кругу пользователей сети Internet, которые обменивались кодами, информацией об обнаруженных ошибках, выявлением проблем, возникавших при расширении сферы применения. Все желающие приглашаются подключиться к этой работе. Единственное, что требуется - это интерес к семейству UNIX и желание совершенствовать свои навыки в этой сфере. Данная книга - ваш путеводитель.

1.1 Об этой книге

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

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

В этой книге мы рассматриваем следующие вопросы:

Эта книга для пользователей персональных компьютеров, желающих начать работать с Linux. Мы не предполагаем предварительного опыта работы с UNIX, но надеемся, что новички будут обращаться по ходу дела к дополнительной литературе. Для незнакомых с UNIX в Приложении А приведен список полезных источников. В общем случае предполагается чтение этой книги совместно с какой-либо книгой по общим концепциям ОС UNIX.

1.2 Краткая история Linux

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

В чем реальная причина популярности UNIX? Многие хакеры нутром чувствуют, что UNIX - это "настоящая вещь", Единственная Настоящая Операционная Система. Отсюда и появление Linux, как системы, разрабатываемой все более расширяющейся группой энтузиастов UNIX, которые хотят собственноручно в ней поковыряться.

Существуют версии UNIX для многих систем, начиная от персонального компьютера, до суперкомпьютеров, таких как Cray Y-MP. Большинство версий UNIX для персональных компьютеров достаточно дороги и сложны. К моменту написания этой книги одномашинная версия AT&T's System V для 386 стоила US$1500.

Linux - свободно распространяемая версия UNIX, первоначально была разработана Линусом Торвальдсом (Linus Torvalds) (torvalds@kruuna.helsinki.fi) в Университете Хельсинки (Финляндия). Linux был создан с помощью многих UNIX-программистов и энтузиастов из Internet, тех, кто имеет достаточно навыков и способностей развивать систему. Ядро Linux не использует коды AT&T или какого-либо другого частного источника, и большинство программ Linux разработаны в рамках проекта GNU из Free Software Foundation в Cambridge, Massachusetts. Но в него внесли лепту также программисты всего мира.

Первоначально Linux создавался Линусом Торвальдсом как хобби. Его вдохновила операционная система Minix - маленькая UNIX-система, созданная Andy Tanenbaum, и впервые Linux обсуждался по компьютерной сети в рамках USENET newsgroup comp.os.minix. В этих обсуждениях прежде всего принимали участие пользователи Minix из учебных и научных заведений, которым хотелось чего-то большего, чем Minix.

Раннее развитие Linux прежде всего было связано с проблемой переключения задач в защищенном режиме для 80386. Все писалось на ассемблере. Линус вспоминает:

"После этого началось спокойное плавание: по-прежнему беспросветное кодирование, но у меня были различные подсобные программы и отладка была облегчена. На этом этапе я стал использовать Си и это существенно ускорило дело. В это же время я стал серьезно обдумывать маниакальную идею, как сделать Minix лучше себя самого. Я надеялся в один прекрасный день перекомпилировать gcc под Linux..." "Два месяца ушло на написание самых базовых программ, а затем чуть больше времени на драйвер винчестера (с большим количеством ошибок, но все-таки работавшим на моей машине) и простую файловую систему. В результате я подготовил версию 0.01 (примерно конец августа 1991 г.). Она была не слишком изящной, в ней не было драйвера гибких дисков и она многое не могла делать. Но я уже не смог остановиться, пока не создал свой Minix."

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

5-го октября 1991 года Линус об'явил первую "официальную" версию Linux, версия 0.02. В это время Linux уже мог выполнять bash (the GNU Bourne Again Shell) и gcc (the GNU C compiler), но мало еще что работало. Вновь это рассматривалось как создание некой хакерской системы. Основное внимание - создание ядра. Никакие вопросы поддержки работы с пользователем, документирования, тиражирования и т. п. даже не обсуждались. Кажется, что и сегодня сообщество Linux-истов считает эти вопросы вторичными по сравнению с "настоящим программированием" - развитием ядра.

Линус писал в comp.os.minix:

"Грустите ли вы по тем прекрасным временам Minix-1.1, когда мужчины были настоящими мужчинами и писали свои собственные драйверы на все устройства? У вас сейчас нет под рукой настоящего проекта и вы вымираете от невозможности вонзить свои зубы в какую-то ОС, которую бы можно было модифицировать под свои желания? Не находите ли вы деморализующей ситуацию, когда все в Minix работает? Нет больше бессонных ночей, которые позволяли заставить хитрые программы работать правильно? Тогда это место для вас." "Как я уже говорил месяц назад, сейчас я работаю над некоммерческой Minix-подобной ОС для 386-го компьютера. Она уже доведена до такого состояния, когда ею даже можно пользоваться (хотя может быть там не то, что бы вы хотели), и я хочу выложить исходные тексты для широкого распространения. Это версия 0.02, но в ней уже успешно работают bash, gcc, gnu-make, gnu-sed, compress и т.д."

После версии 0.03 Линус скачком перешел в нумерации к версии 0.10, так как над проектом стало работать много народу. После нескольких последовавших пересмотров версий, Линус присвоил очередной версии номер 0.95, чтобы тем самым отразить свое впечатление о том, что скоро возможна уже "официальная" версия. (Обычно программам не дают номер версии 1.0 до того, как она теоретически завершена и отлажена). Это было в марте 1992 г. Примерно через полтора года - в декабре 1993 версия ядра все еще была Linux 0.99.pl14 - асимптотически приближаясь к 1.0. Во время написания книги текущая версия ядра 1.1 patchlevel 52, и на подходе версия 1.2.

Сегодня Linux - это полноценная ОС семейства UNIX, способная работать с X Windows, TCP/IP, Emacs, UUCP, mail и USENET. Практически все важнейшие программные пакеты были поставлены и на Linux, т.е. для Linux теперь доступны и коммерческие пакеты. Все большее разнообразие оборудования поддерживается по сравнению с первоначальным ядром. Многие тестировали Linux на 486-ом и установили, что он вполне сравним с рабочими станциями Sun Microsystems и Digital Equipment Corporation. Кто мог предположить, что этот "маленький UNIX" вырастет настолько, что сможет делать все в мире компьютеров.

1.3 Системные характеристики

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

Linux - это полная многозадачная многопользовательская операционная система (точно также как и другие версии UNIX). Это означает, что одновременно много пользователей могут работать на одной машине, одновременно выполнять много программ.

Linux достаточно хорошо совместим с рядом стандартов для UNIX (насколько можно говорить о стандартизации UNIX) на уровне исходных текстов, включая IEEE POSIX.1, System V и BSD. Он создавался имея в виду такую совместимость. Поэтому, скорее всего, вы найдете в Linux черты, присущие многим UNIX-системам. Большинство свободно распространяемых по сети Internet программ для UNIX может быть откомпилировано для LINUX практически без особых изменений. Кроме того, все исходные тексты для Linux, включая ядро, драйверы устройств, библиотеки, пользовательские программы и инструментальные средства распространяются свободно.

Другие специфические внутренние черты Linux включают контроль работ по стандарту POSIX (используемый оболочками, такими как csh и bash), псевдотерминалы (pty), поддержку национальных и стандартных клавиатур динамически загружаемыми драйверами клавиатур.

Linux также поддерживает виртуальные консоли (virtual consoles), которые позволяют "переключать экраны" на консоли в текстовом режиме. Те, кто пользовался программой "screen", найдут подобное в реализации виртуальной клавиатуры Linux.

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

Linux поддерживает различные типы файловых систем для хранения данных. Некоторые файловые системы, такие как файловая система ext2fs, были созданы специально для Linux. Поддерживаются также другие типы файловых систем, такие как Minix-1 и Xenix. Реализована также файловая система MS-DOS, позволяющая прямо обращаться к файлам MS-DOS на жестком диске. Поддерживается также файловая система ISO 9660 CD-ROM для работы с дисками CD-ROM. Подробнее о файловых системах говорится в Главах 2 и 4.

Linux обеспечивает полный набор протоколов TCP/IP для сетевой работы. Это включает драйверы устройств для многих популярных карт Ethernet, SLIP (Serial Line Internet Protocol, обеспечивающие вам доступ по TCP/IP при последовательном соединении), PLIP (Parallel Line Internet Protocol), PPP (Point-to-Point Protocol), NFS (Network File System), и так далее. Поддерживается весь спектр клиентов и услуг TCP/IP, таких как FTP, telnet, NNTP и SMTP. О сетевых проблемах мы будем говорить в Главе 5.

Ядро Linux сразу создано с учетом специального защищенного режима для процессоров Intel 80386 и 80486. В частности, Linux использует парадигму описания памяти в защищенном режиме и другие новые свойства процессоров. Любой знакомый с защищенным режимом процессора 80386 знает, что этот чип проектировался для многозадачных систем вроде UNIX (или Mulics). Linux использует эти свойства.

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

Для увеличения об'ема доступной памяти Linux осуществляет также разбиение диска на страницы: то есть на диске может быть выделено до 256 Мбайт "пространства для свопинга" (swap space). (Swap space не совсем подходящее имя, в Linux в область своппинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости). Когда системе нужно больше физической памяти, то она с помощью свопинга выводит неактивные страницы на диск. Это позволяет выполнять более об'емные программы и обслуживать одновременно больше пользователей. Однако свопинг не исключает наращивания физической памяти, поскольку он снижает быстродействие, увеличивает время доступа.

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

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

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

1.4 Программные характеристики

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

Базовые команды и утилиты

Практически любая утилита, которую вы ожидаете найти в стандартных реализациях UNIX, имеется и в Linux. Сюда включены и базовые команды, такие как ls, awk, tr, sed, bc, more и т.д. Назовите любую - она есть в Linux. Поэтому вы в праве ожидать знакомой рабочей UNIX-среды. В Linux есть все стандартные команды и утилиты. (Новички могут посмотреть Главу 3 для начального знакомства с базовыми командами UNIX).

В Linux имеются многие текстовые редакторы, включая vi, ex, pico, jove, также как GNU Emacs и его вариации, вроде Lucid Emacs (который содержит расширение для использования под X Windows) и joe. Скорее всего, любой текстовый редактор, к которому вы привыкли, перенесен в Linux.

Выбор редактора - явление любопытное. Многие пользователи UNIX до сих пор используют "простые" редакторы вроде vi (кстати, автор писал эту книгу в Linux, используя редактор vi) (кстати, переводчик переводил эту книгу в Linux, используя редактор red).

Но vi имеет много ограничений по причине своего преклонного возраста, сейчас завоевывают популярность более современные и сложные редакторы вроде Emacs. Emacs поддерживает базирующийся на LISP макроязык и интерпретатор, мощный командный синтаксис и другие расширения. Существуют макропакеты Emacs, позволяющие читать электронную почту и новости, редактировать содержимое каталогов и даже проводить сеансы психотерапии с использованием искусственного интеллекта (неоценимая возможность для измотанных Linux-ом хакеров).

Интересное замечание - большинство утилит Linux имеют статус GNU. Эти утилиты часто поддерживают наиболее современные черты, не содержащиеся в стандартных версиях BSD или AT&T. Например, версия GNU редактора vi - elvis, содержит структурный макроязык, который отличается от исходной реализации AT&T. Но тем не менее, утилиты GNU сохраняют совместимость с их тезками из BSD и System V. Многие считают, что GNU версии лучше исходных программ.

Многие пользователи самой важной утилитой считают shell. shell - это программа, которая читает и выполняет команды пользователя. Кроме того, многие оболочки (shells) имеют такие возможности, как контроль выполнения> (job control) (позволяя пользователю управлять несколькими параллельными процессами), перенаправление входа-выхода и командный язык для написания командных файлов (shell scripts). Командный файл - это программа на языке оболочки, аналогичная "batch file" в MS-DOS.

В Linux много типов оболочек. Наиболее важное различие между ними - используемый командный язык. Например, C Shell (csh) использует командный язык, чем-то напоминающий язык программирования Си. Классический <Баурновский shell (Bourne Shell) использует иной командный язык. Обычно выбор оболочки обусловлен выбором соответствующего командного языка. Выбранная оболочка в какой-то мере определяет вашу рабочую среду.

Не важно, к какой оболочке вы привыкли, та или иная ее версия есть в Linux. Наиболее популярная оболочка - это GNU Bourne Again Shell (bash), т.е. вариант Bourne shell, включающий много современных свойств и возможностей, таких как управление работами, командную историю, дописывание имен команд и имен файлов, Emacs-подобный интерфейс редактирования командной строки и мощное расширение стандартной оболочки (Bourne shell).

Другая популярная оболочка - tcsh, версия C Shell с более современными функциями по сравнению с bash. Другие оболочки: zsh - небольшая баурно-подобная оболочка; ksh - оболочка Корна; ash - оболочка BSD и rc -оболочка проекта Plan 9.

Что особенно важно сказать относительно этих оболочек? Linux дает вам уникальную возможность кроить систему под ваши личные нужды. Например, если вы единственный пользуетесь этой системой и вы предпочитаете редактор vi и bash в качестве оболочки, то нет необходимости иметь прочие редакторы и оболочки. "Сделай сам, как тебе нравится" - это позиция хакеров и пользователей Linux.

Обработка текстов и слов

Почти все пользователи нуждаются в какой-либо системе подготовки документов. (Много ли вы знаете энтузиастов компьютерной обработки, которые все еще пользуются ручкой и бумагой? Мы догадываемся, что очень немного). В мире персональных компьютеров обработка слов (word processing) - норма: она включает редактирование и манипуляции с текстом (часто в стиле WYSIWYG - "What-You-See-Is-What-You-Get" - "Что-Вы-Видите-ЕстьТо- Что-Вы-Имеете" - ЧВВЕТЧВИ) и получение печатных копий, содержащих рисунки, таблицы и другой гарнир.

В мире UNIX обработка текстов (text processing)- вещь более естественная, чем классическая концепция обработки слов. Вместо того, чтобы вызывать специальные средства обработки слов, исходный текст можно модифицировать любым текстовым редактором, таким как vi или Emacs. После подготовки текста пользователь форматирует текст специальными программами, преобразующими его к нужному для печати виду. Это в чем-то аналогично программированию на языке вроде Си, и "компилированию" текста в пригодную для печати форму.

В Linux много текстовых процессоров. Один из них groff - GNU версия классического форматера текстов nroff, первоначально созданного в Bell Labs и до сих пор используемого во многих UNIX. Другой современный текстовый процессор - TeX, создан знаменитым в компьютерном мире Дональдом Кнутом (Donald Knuth). Доступны диалекты TeX, такие как LaTeX.

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

Например, некоторые люди считают groff несколько заумным, поэтому они используют TeX, который более понятен для хомо сапиенс. Между тем, groff может давать ясный ASCII выход, легко читаемый на терминале, в то время как TeX прежде всего предназначен для вывода на печать. Но существуют многочисленные программы, позволяющие получить читаемый текст из отформатированных с помощью TeX документов или конвертирующих TeX, например, в groff.

Другой текстовый процессор texinfo - расширение TeX, используемое для подготовки программной документации в Free Software Foundation. texinfo может формировать печатный документ или гипертекст "Info" для просмотра на экране на основе одного исходного файла. Файлы Info - это основной формат для документирования, используемый в GNU, в частности в Emacs.

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

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

В качестве примера возьмем следующий текст:

    Mr.  Torvalds:

    We are  very  upset  with  your  current  plans  to  implement
    post-hypnotic suggestion in  the Linux  terminal driver  code.
    We feel this way for three reasons:


    1.  Planting subliminal messages in the terminal driver is not
      only immoral, it is a waste of time;

    2.  It has been proven that ``post-hypnotic  suggestions'' are
      ineffective when used upon unsuspecting UNIX hackers;

    3.  We have already implemented high-voltage electric  shocks,
      as a security measure, in the code for login.


    We hope you will reconsider.

Этот текст на языке форматирования LaTeX будет выглядеть следующим образом:

    \begin{quote}
    Mr. Torvalds:

    We are very upset with your current plans to  implement {\em post-
    hypnotic
    suggestion\/}      in      the       {\bf      Linux}       termi-
    nal driver code. We feel this
    way for three reasons:
    \begin{enumerate}
    \item    Planting    subliminal     messages    in    the     ker-
    nel driver is not only
        immoral, it is a waste of time;
    \item  It   has   been   proven   that   ``post-hypnotic   sugges-
    tions'' are ineffective
        when used upon unsuspecting UNIX hackers;
    \item   We   have    already   implemented   high-voltage    elec-
    tric shocks, as a
        security measure, in the code for {\tt login}.
    \end{enumerate}
    We hope you will reconsider.
    \end{quote}

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

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

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

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

Есть программы, которые позволяют посмотреть на графическом дисплее вид отформатированного документа перед его печатью. Например, программа xdvi отображает "независимый от устройства" файл, сгенерированный TeX под X Window. Другое приложение - xfig, обеспечивает графический интерфейс WYSIWYG для рисунков и диаграмм, который в последующем конвертируется в команды текстового процессора, включаемые в документ.

Следует напомнить, что текстовые процессоры, вроде nroff, появились задолго до процессоров слов. Многие предпочитают использовать текстовые процессоры из-за их гибкости и независимости от графической среды. В любом случае, в Linux имеется процессор слов idoc, а также скоро ожидается появление коммерческих процессоров слов. Но если вы не хотите расставаться с процессором слов, к которому вы привыкли в MS-DOS, вы всегда можете использовать MS-DOS или другую операционную систему в дополнение к Linux.

Существует и много других утилит текстовых процессоров. Мощная система METAFONT используется для проектирования фонтов в TeX. Другие программы включают ispell - интерактивный контролер правописания, makeindex - используется для генерации индексов в документах, подготовленных в LaTeX. Существует много макропакетов для groff и TeX для форматирования документов различных типов и математических текстов, а также тьма конверторов, транслирующих TeX или groff во многие другие форматы.

Языки программирования и утилиты

Linux обеспечивает полную UNIX-среду программирования, включая все стандартные библиотеки, программный инструментарий, компиляторы, отладчики, которые вы встречаете и в других UNIX-системах. В мире UNIX большинство приложений и системных программ делаются на Си или Си++. Стандартным компилятором для Си и Си++ в Linux служит GNU gcc, который является современным компилятором, поддерживающим много опций. Он способен компилировать Си++ (включая особенности AT&T 3.0 features) также, как Objective-C, другие об'ектно-ориентированные диалекты Си.

Кроме Си и Си++ многие другие компиляторы и интерпретаторы были перенесены в Linux, такие как Smalltalk, FORTRAN, Pascal, LISP, Scheme и Ada (если вы настолько мазохист, чтобы программировать на Аде - мы не будем вам препятствовать). В дополнение, существуют различные ассемблеры для написания кодов для защищенного режима 80386, а также любимые хакерами языки, вроде Perl (язык сценариев, как окончательный тупик или вершина для всех языков такого типа) и Tcl/Tk (shell-подобный командный язык, включающий поддержку разработки простейших приложений в X Window).

В Linux был перенесен продвинутый отладчик gdb, позволяюший пошагово выполнять программы в поисках ошибок или анализировать крах программ с помощью дампов памяти. gprof - утилита профилирования, показывающая, где ваша программа при выполнении тратит больше времени. Текстовый редактор Emacs позволяет осуществлять интерактивное редактирование. Другие инструменты, включая GNU make и imake используются для управления компиляцией больших программ; RCS - система для защиты и сопровождения исходных текстов.

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

Linux идеален для создания UNIX-приложений. Он обеспечивает современное программное окружение со всеми дополнительными погремушками. Поддерживаются различные стандарты вроде POSIX.1, позволяющие легко переносить программы, написанные для Linux, на другие системы. Профессиональные UNIX-программисты и системные администраторы могут использовать Linux для домашних компьютеров, а с них переносить написанные программы на компьютеры своей фирмы. Это может не только сэкономить много времени и денег, но и обеспечить комфортабельную работу на домашнем компьютере. (Автор использует дома Linux для разработки и тестирования X Window приложений, которые могут прямо транслироваться на любых рабочих станциях). Студенты, изучающие компьютерные науки, могут использовать Linux для обучения программированию в UNIX и изучения таких аспектов, как архитектура ядра.

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

Система X Window

Система X Window (или кратко просто Х) - стандартный графический интерфейс для UNIX-машин. Это мощная среда, поддерживающая много приложений. Используя X Window, пользователь может одновременно иметь на экране несколько окон, при этом каждое имеет независимый login. Часто используется мышь, хотя она необязательна.

Было написано много специфических Х-приложений, таких как игры, графические утилиты, инструментарий для программирования и документирования и т.д. С Linux и X ваш компьютер - замечательная рабочая станция. Используя протоколы TCP/IP, вы можете смотреть у себя X-приложения, выполняемые на других машинах.

Система X Window была первоначально создана в MIT и свободно распространялась. Существует много и коммерческих приложений, расширяющих возможности X Window. Для Linux есть система X Window, известная как XFree86; версия X11R5 свободно распространяется для UNIX-систем типа Linux. XFree86 поддерживает широкий спектр видео устройств, включая VGA, Super VGA, различные видео адаптеры с ускорителями. Это полный комплект X Window, содержащий сам сервер, много прикладных программ и утилит, программные библиотеки и документацию.

Стандартные Х-приложения включают xterm (эмулятор терминала, используемый в большинстве текстовых приложений в X Window); xdm (X-менеджер, обслуживающий login); xclock (представление простых часов); xman (X-ориентированное руководство по Linux) и т.д. Трудно перечислить все приложения X, доступные в Linux, но базовый комплект XFree86 включает "стандартные" приложения, содержащиеся в исходной версии MIT. Но доступно и многое другое, теоретически, все написанное для X Window должно прямо компилироваться и для Linux.

Интерфейс X Window в большой степени контролируется менеджером окон (window manager). Эта программа отвечает за размещение окон, изменение их размеров, размещение иконок, перемещение окон, вид оконных рамок и т.д. Стандартный дистрибутив XFree86 включает twm, классический оконный менеджер MIT, но также имеются и более современные менеджеры, такие как Open Look Virtual Window Manager (olvwm). Среди пользователей Linux популярен fvwm. Это небольшой менеджер окон, требующий в два с лишним раза меньше памяти, чем twm. Он обеспечивает трехмерное представление обрамления окон и виртуальный рабочий стол (desktop) - если пользователь подвигает мышь к краю экрана, все изображение смещается, будто дисплей имеет большие размеры, чем на самом деле. fvwm более традиционен и позволяет реализовать все функции доступа как с клавиатуры, так и от мыши. Многие дистрибутивы Linux содержат fvwm, как стандартный менеджер окон.

Дистрибутив XFree86 содержит программные библиотеки и включает файлы для тех программистов, кто желает создавать приложения в X. Поддерживаются различные множества widget (графических представлений), такие как Athena, Open Look и Xaw3D. Включены все стандартные фонты, битмэпы и документация. Поддерживается также PEX (программный интерфейс для трехмерной графики).

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

Главные ограничения использования X Window происходят от требований к аппаратуре. Минимально необходим 386 процессор с 4 Мбайт RAM. Но для более комфортного режима желательно не менее 8 Мбайт. Желательно и процессор побыстрее, но прежде всего необходима память. Для действительно хорошего результата лучше иметь карту с акселератором (как например S3-chipset). На Linux с XFree86 был достигнут рейтинг выполнения, превосходящий 140000 xstones. На приличном компьютере вы можете убедиться, что X под Linux работает не хуже, или даже быстрее, чем на других UNIX.

В Главе 5 мы обсудим вопросы инсталляции и использования X.

Работа в сети

Интересует ли вас связь с миром? Да? Нет? Может быть? Linux поддерживает два базовых сетевых протокола UNIX: TCP/IP и UUCP. TCP/IP (Transmission Control Protocol/Internet Protocol) есть множество сетевых парадигм, позволяющих системам по всему миру связываться по единой сети, известной как Internet. С помощью Linux, TCP/IP и подключения к сети вы можете общаться с пользователями и машинами всего Internet через электронную почту, новости USENET, передачу файлов FTP и т.п. В Internet много машин под Linux.

Большинство сетей TCP/IP используют Ethernet, как физическое транспортное средство. Linux поддерживает многие популярные карты Ethernet и интерфейсы.

Однако, поскольку не у всех есть дома плата Ethernet, Linux также поддерживает SLIP (Serial Line Internet Protocol), позволяющий связываться с Internet через модем. Для использования SLIP вы должны иметь доступ к SLIP-серверу, машине связанной с сетью и обеспечивающей вам вход в Internet. Многие фирмы и университеты предоставляют SLIP-сервис. Если ваш Linux имеет Ethernet и модем, вы можете сконфигурировать систему как SLIP-сервер для других хостов.

NFS (Network File System) позволяет вам использовать файлы совместно с другими машинами сети. FTP (File Transfer Protocol) позволяет передавать файлы между машинами. Другие приложения включают sendmail - систему передачи и получения электронной почты с использованием протокола SMTP; базирующуюся на протоколе NNTP, системе электронных новостей типа C-News и INN; telnet, rlogin и rsh - позволяют войти и выполнить команды на других машинах сети; finger - позволяет получать информацию о других пользователях Internet. Фигурально выражаясь - существуют тонны различных приложений для протокола TCP/IP.

Полный спектр различных программ для чтения почты и новостей существует в Linux, это, например, elm, pine, rn, nn и tin.

Если у вас есть опыт работы с приложениями TCP/IP на других UNIX-системах, Linux не будет для вас чем-то новым. Система обеспечивает стандартный программный интерфейс, поэтому любая программа, использующая TCP/IP, может быть легко перенесена на Linux. X-сервер Linux также поддерживает TCP/IP, позволяя отображать выполняемые на других машинах прикладные программы на вашем дисплее.

В Главе 5 мы обсудим конфигурацию и установку для Linux TCP/IP, включая SLIP.

UUCP (UNIX-to-UNIX Copy) - старейший механизм передачи файлов, электронной почты и электронных новостей между UNIX-машинами. Классически, UUCP-машины связываются друг с другом по телефонным линиям через модем, но UUCP может использовать в качестве транспортного средства и связь по TCP/IP. Если у вас нет доступа по TCP/IP или SLIP-сервера, вы можете сконфигурировать свою систему так, чтобы посылать и получать файлы и электронную почту с использованием UUCP. Подробнее смотрите в Главе 5.

Телекоммуникации и BBS

Если у вас есть модем, вы можете связываться с другими машинами, используя телекоммуникационные пакеты, имеющиеся в Linux. Многие используют программы телекоммуникации для связи с BBS (Bulletin Board Systems), а также и с коммерческими он-лайновыми системами, вроде Prodigy, CompuServe и America On-Line. Другие через модемы связываются с UNIX-системой в школе или на работе. Вы можете использовать модем и Linux для посылки и приема факсов. Телекоммуникационные пакеты Linux очень похожи на имеющиеся в MS-DOS или других операционных системах.

Один из наиболее популярных телекоммуникационных пакетов в Linux - Seyon - X-приложение, предоставляющее традиционный эргономичный интерфейс со встроенной поддержкой различных протоколов передачи файлов, таких как Kermit, ZModem и т.п. Есть также телекоммуникационные программы C-Kermit, pcomm и minicom. Это напоминает наборы телекоммуникационных программ в других системах.

Если у вас нет доступа к SLIP-серверу, вы можете использовать term для мультиплексирования вашей последовательной линии. term обеспечит вам множественный доступ через модем на удаленную машину. term также позволит перенаправлять X-клиента на локальный X-сервер через последовательную линию, давая возможность отобразить удаленное X-приложение на вашей Linux-системе. Другой пакет - KA9Q - обеспечивает интерфейс, похожий на SLIP.

BBS - это сегодня хобби многих программистов. Linux поддерживает большое разнообразие программ для BBS, большинство из которых более мощные, чем в других операционных системах. С телефонной линией, модемом и Linux вы можете превратить ваш компьютер в BBS, обеспечив dial-in доступ к своей системе для пользователей с Земного шара. Программное обеспечение BBS для Linux включает XBBS и пакеты UniBoard BBS.

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

Если у вас нет возможностей использовать TCP/IP или UUCP, Linux позволяет также связываться с рядом BBS, таких как FidoNet по телефонным линиям и обмениваться новостями и почтой. Дополнительную информацию можно найти в Главе 5.

Интерфейс с MS-DOS

Существуют различные утилиты для связи с миром MS-DOS. Наиболее известен Linux MS-DOS Emulator, позволяющий выполнять многие MS-DOS программы прямо на Linux. Несмотря на то, что Linux и MS-DOS абсолютно различные операционные системы, среда защищенного режима для 80386 позволяет некоторым задачам вести себя так, как это делают прикладные программы MS-DOS.

Эмулятор MS-DOS все еще в стадии совершенствования, но многие популярные пакеты в нем уже выполняются. Понятно, что некоторые приложения MS-DOS, использующие специфические или скрытые свойства системы, никогда не будут выполняться, поскольку эмулятор не знает, как их эмулировать. Например, вы не сможете без шероховатостей выполнять программы, использующие свойства защищенного режима 80386, такие как Microsoft Windows (в расширенном режиме 386-го). Приложения, которые успешно работают под Linux MS-DOS Emulator включают: 4DOS (интерпретатор команд), Foxpro 2.0, Harvard Graphics, MathCad, Stacker 3.1, Turbo Assembler, Turbo C/C++, Turbo Pascal, Microsoft Windows 3.0 (в реальном режиме) и WordPerfect 5.1. Стандартные команды и утилиты MS-DOS (такие как PKZIP и т.п.) также работают с эмулятором.

Эмулятор MS-DOS прежде всего предназначается для тех, кому MS-DOS нужен только для выполнения нескольких приложений, но в основном используется Linux. Эмулятор, это не полное повторение MS-DOS. Разумеется, если эмулятор не удовлетворяет вашим потребностям, вы можете использовать MS-DOS непосредственно, как и Linux, на одной и той же машине. При использовании загрузчика LILO можно во время загрузки указать, какую загрузить операционную систему. Linux может сосуществовать с другими операционными системами, с той же OS/2.

Linux обеспечивает "гладкий" интерфейс для обмена файлами между Linux и MS-DOS. Вы можете примонтировать раздел MS-DOS или гибкий диск под Linux и иметь прямой доступ к файлам MS-DOS, как и к "родным".

В настоящее время находится в работе проект, известный как WINE - эмулятор Microsoft Windows для X Window System под Linux. По завершению WINE, пользователи будут иметь возможность выполнять MS-Windows приложения прямо из Linux. Это похоже на эмулятор Windows от Sun Microsystems. В момент написания этих строк WINE все-еще на ранней стадии создания, но имеет хорошие перспективы. В Главе 5 мы поговорим об инструментарии MS-DOS, доступном из Linux.

Другие приложения

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

В Linux доступно несколько реляционных баз, включая Postgres, Ingres, и Mbase. Это полномасштабные профессиональные системы управления базами данных типа клиент-сервер, похожие на имеющиеся на других платформах UNIX. Имеется также коммерческая база /rdb.

Прикладные научные пакеты включают FELT (Finite Element Analysis Tool); gnuplot (анализ данных и черчение); Octave (пакет символических вычислений, похожий на MATLAB); xspread ( калькулятор типа spreadsheet); xfractint (X-вариант популярного рекурсивного генератора Fractint); xlispstat (пакет статистики) и многое другое. Другие приложения содержат Spice (проектирование и анализ цепей) и Khoros (аналого/цифровая обработка сигналов и визуализация).

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

Как и другие операционные системы, Linux не стоит в стороне от компьютерных игр. Это и классические текстовые "подземельные" игры, вроде Nethack и Moria; игры типа MUDs (Multi-User Dungeons, которые позволяют взаимодействовать многим пользователям), вроде DikuMUD и TinyMUD; а также тьма игр в X, таких как xtetris, netrek и Xboard (X11-версия gnuchess). Популярная игра типа перестреляй-их-всех-в-лабиринтах - Doom также перенесена в Linux.

Для меломанов Linux поддерживает различные саунд-карты, вроде CDplayer (программа, которая может управлять драйвером CD-ROM, как традиционным CD-плейером), MIDI последовательности и редакторы (позволяющие создавать музыку на синтезаторе или другом, управляемом MIDI инструменте) и саунд-редакторы цифровой записи.

Вы не можете найти нужную прикладную программу? Карта программ Linux, приведенная в приложении А имеет большой список пакетов, которые были написаны для Linux или перенесены в него. Список далеко не полный, хотя и перечисляет большое количество пакетов. Другой способ поиска приложений в Linux, это просматривать файлы INDEX на FTP серверах под Linux, если вы имеете доступ в Internet. Оглянитесь вокруг и вы найдете много того, с чем интересно повозиться.

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

1.5 Относительно Copyright для Linux

Общедоступная Лицензия GNU (the GNU General Public License) или кратко GPL. GPL была разработана для проекта GNU ассоциацией Free Software Foundataion. Она устанавливает некоторые положения относительно распространения и модификации "свободнораспространяемых программ". В данном случае "свобода" относится именно к Свободе, а не к стоимости. GPL всегда был источником недопонимания и мы надеемся, что этот обзор поможет вам понять цели и задачи GPL и его влияние на Linux. Полная копия GPL включена в Приложение E.

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

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

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

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

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

Сначала это может звучать как противоречие. Как это так, продавать с выгодой для себя программы, когда GPL позволяет любому иметь их бесплатно? Например, предположим, что какая-то компания решила собрать большое число свободнораспространяемых программ на CD-ROM и занятся их распространением. Эта компания должна вернуть деньги для покрытия расходов на производство и дистрибуцию CD-ROM, компания может также решить сделать на этих продажах прибыль. Это разрешается в соответсвии с GPL.

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

Позволить компаниям распространять и продавать свободнораспространяемые программы - вещь очень хорошая. Не всякий имеет доступ к Internet, чтобы скачать программы, вроде Linux, бесплатно. (прим. переводчика: Правда, сама IP-связь для многих в нашей стране очень и очень даже не бесплатно - во много раз дороже, чем это обходится "среднему американцу". О качестве связи и говорить не хочется). GPL позволяет компаниям продавать и распространять программы среди тех, кто не имеет свободного доступа к программам. Например, многие организации продают Linux на дискетах, лентах или CD-ROM по почтовым заказам и делают на этом свою прибыль. Разработчики Linux могут никогда не увидеть какую-либо прибыль для себя от этих продаж. Вот каким образом регулируются отношения между разработчиками и дистрибуторами, когда программы находятся под лицензией GPL. Другими словами, Линус не спутайте автора с названием ОС Linux знал, что компании могут захотеть продавать Linux, и что он может не увидеть и пенни от этих продаж.

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

1.6 Проектирование и философия Linux

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

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

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

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

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

Linux первоначально создавался группой энтузиастов в Internet со всего мира. Любой, в Internet и за его пределами, имеющий достаточные знания и навыки, имеет возможность принять участие в совершенствовании и отладке ядра, переносе в Linux новых программ, написании документации, помощи новичкам. Нет определенной организации, отвечающей за развитие системы. Большей частью Linux-сообщество общается через группы по интересам USENET. Существует ряд соглашений для принимающих участие в разработках: например, любой, желающий, чтобы его код был включен в "официальное" ядро, должен написать Линусу Торвальдсy, который проведет тестирование и включит код в ядро (если предлагаемый код вписывается в систему и не противоречит ее принципам - скорее всего он будет включен).

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

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

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

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

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

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

Обычно программная система Linux распространяется в виде дистрибутива (distribution), содержащего средства инсталляции и раскрутки системы. Большинству пользователей трудно самим собрать систему из разрозненных частей. Но не существует некоего стандартного дистрибутива - их много, каждый со своими преимуществами и недостатками. О различных дистрибутивах Linux речь пойдет в Разделе 2.1.

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

Замечания для новичков в UNIX

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

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

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

Замечания для UNIX-гуру

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

Возможно, более важной является функциональность. Во многих случаях новый код добавляется в ядро, даже если содержит ошибки и функционально не полон. Существует предположение, что важнее выпустить код, который пользователи могут тестировать и использовать, чем делать его недоступным. Например, WINE (Microsoft Windows Emulator for Linux) имел "официальную" альфа версию до того, как был полностью оттестирован. Linux-сообщество имеет большой шанс поработать с кодом, протестировать его и помочь в его совершенствовании, пока те, кто считают альфа-версию достаточно хорошей для своих нужд, могут ее использовать. Поставщики коммерческих UNIX редко распространяют их таким образом.

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

Учитывая такую динамику, как удержаться на плаву в мире Linux? Для большинства лучше всего делать частичные усовершенствования, то есть менять только те части, которые, на ваш взгляд действительно нуждаются в обновлении. Например, если вы не используете Emacs, нет смысла регулярно менять его версии на вашем компьютере. Более того, даже если вы приверженец Emacs, не нужно менять версию, если только в новой версии не появились те возможности, которые вам действительно необходимы. Совсем не обязательно всегда иметь самую последнюю версию всего.

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

1.7 Различия между Linux и другими операционными системами

Важно понимать различия между Linux и другими операционными системами, такими как MS-DOS, OS/2, а также другими реализациями UNIX для персональных компьютеров. Прежде всего, должно быть ясно, что Linux может счастливо сосуществовать с другими операционными системами на той же машине. Как мы увидим, существуют даже способы взаимодействия операционных систем.

Почему Linux?

Почему стоит использовать Linux вместо хорошо известных, хорошо оттестированных, хорошо документированных коммерческих операционных систем? Мы можем привести тысячи причин. Одна из наиболее важных - то что Linux - отличный выбор для персональных вычислений в среде UNIX. Если вы разработчик программ в UNIX, зачем дома использовать MS-DOS? Linux позволит вам создавать и тестировать программы для UNIX на вашем персональном компьютере, включая базы данных и приложения для X Window. Если вы студент, то высока вероятность, что университетская компьютерная система работает под UNIX. Linux позволяет вам иметь свой собственный UNIX и перекраивать его по своему вкусу. Инсталляция и использование Linux - также прекрасный путь изучения UNIX, если у вас нет доступа к другим UNIX-машинам.

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

Следующий раздел покажет наиболее важные различия между Linux и другими операционными системами. Мы надеемся, что Linux может удовлетворить все ваши вычислительные потребности или (в крайнем случае) значительно расширит возможности вашей вычислительной среды. Имейте в виду, что лучший способ узнать вкус Linux - это на нем поработать. Вам не обязательно даже инсталлировать полную систему, чтобы почувствовать его. Это мы покажем в Главе 2.

Linux против MS-DOS

Не является чем-то экзотическим одновременно держать на компьютере Linux и MS-DOS. Многие пользователи Linux работают с прикладными пакетами MS-DOS, вроде различных редакторов.

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

Как вы, очевидно, знаете, MS-DOS не использует полностью функциональные возможности 80386 и 80486 процессоров. С другой стороны, Linux полностью работает в защищенном режиме процессора и реализует все возможности процессора. Вы можете иметь прямой доступ ко всей имеющейся в распоряжении памяти (и сверх того - используя виртуальную RAM). Linux обеспечивает полный UNIX-интерфейс, отсутствующий в MS-DOS. На Linux вы можете просто писать и отлаживать прикладные программы для UNIX, в то время, как это несложно делать под MS-DOS.

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

Вы можете сами составить свое впечатление от сравнения Linux и MS-DOS, основываясь на том, насколько они отвечают вашим ожиданиям. Linux - это не для всякого. Если вам всегда хотелось иметь полномасштабный UNIX дома, не совершая больших затрат, Linux может быть как раз то, что вам надо.

Существует инструментарий, позволяющий взаимодействовать Linux и MS-DOS. Например, просто получить доступ к файлам MS-DOS из Linux. Есть также эмулятор MS-DOS, позволяющий выполнять многие популярные прикладные пакеты MS-DOS. Эмулятор Microsoft Windows находится на этапе создания.

Linux против прочих

Ряд других продвинутых операционных систем всходит на горизонте мира персональных компьютеров. В частности, OS/2 фирмы IBM и Windows NT фирмы Microsoft становятся все более популярны по мере ухода пользователей из MS-DOS.

Обе OS/2 и Windows NT являются полными многозадачными операционными системами, как и Linux. Чисто технически, OS/2, Windows NT и Linux очень похожи: они имеют похожие интерфейсы с пользователем, систему защиты и т.п. Но главное действительное отличие состоит в том, что Linux есть разновидность UNIX, а отсюда все преимущества принадлежности к UNIX-сообществу.

Что делает UNIX столь важным? Это не только самая популярная операционная система для многопользовательских машин, это также база для большей части свободно распространяемых в мире программ. Если у вас есть доступ к Internet, почти все программы, свободно доступные там, написаны именно для UNIX. (Сам Internet в большой степени стоит на UNIX).

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

OS/2 и Windows NT принадлежат частным компаниям. Поэтому интерфейс и проектные решения контролируются конкретными фирмами и только эти фирмы могут совершенствовать свои продукты. (Не надейтесь увидеть когда-нибудь в обозримом будущем бесплатную версию OS/2). В некотором смысле такая организация дела имеет преимущества: она обеспечивает жесткую стандартизацию программного и пользовательского интерфейсов. OS/2 есть OS/2, где бы вы ее не обнаружили, то же самое с Windows NT.

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

Другие реализации UNIX

Существует ряд других реализаций UNIX для 80386 и 80486. Архитектура 80386 сама подталкивает к проектированию UNIX, поэтому многие разработчики воспользовались этим преимуществом. Другие реализации UNIX, учитывавшие особенности архитектуры процессора весьма похожи на Linux. Вы можете убедиться, что почти все коммерческие версии UNIX поддерживают практически одинаковую программную среду и сетевые характеристики. Однако имеются и значительные отличия между Linux и коммерческими UNIX.

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

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

Коль скоро речь идет о стабильности и надежности, многие пользователи отмечают, что Linux по крайней мере не менее надежен, чем коммерческие UNIX. Linux все еще находится в стадии развития, и некоторые вещи (вроде TCP/IP) недостаточно стабильны, но постоянно совершенствуются.

Наиболее важным фактором для многих является цена. Linux распространяется свободно, если вы имеете доступ в Internet (или другую компьютерную сеть) и можете его скачать. Если у вас нет выхода в такую сеть, то вы можете купить его на дискетах или CD-ROM (смотрите Приложение B). Разумеется, вы можете скопировать Linux у друга или разделить с кем-то стоимость его покупки. Если вы планируете инсталлировать Linux на большом количестве машин, вам достаточно купить всего одну копию. На тиражирование нет лицензионных ограничений.

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

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

Существуют и другие бесплатные или недорогие реализации UNIX для 386 и 486. Одна из наиболее известных реализаций 386BSD. 386BSD совместима с Linux во многих аспектах, но какая из них "лучше" зависит от ваших личных желаний и ожиданий. Мы можем указать одно существенное отличие: Linux создавался открыто (когда каждый доброволец мог внести свой вклад в процесс создания), а 386BSD создан замкнутой группой программистов, которые и поддерживают систему. Поэтому существует заметное различие в философии и разработке между этими двумя проектами. Цели двух проектов существенно различны: цель Linux - создать полную UNIX-систему от начала (и получить большое удовольствие от этого процесса); а цель 386BSD частично состоит в модификации существующего кода BSD, применительно к 386.

NetBSD - это другая версия BSD NET/2 для нескольких машин, включая 386. NetBSD имеет слегка более открытую концепцию разработки и сравнима с 386BSD по многим аспектам.

Другой проект HURD - попытка Free Software Foundation создать и распространять свободную версию UNIX для многих платформ. За дополнительной информацией об этом проекте обращайтесь в Free Software Foundation (адрес дан в Приложении А). В момент написания книги проект HURD все еще на начальной стадии.

Существуют также другие недорогие версии UNIX, например Coherent (приблизительно $99) и Minix (академический, но полезный UNIX, на котором первоначально базировался Linux). Некоторые из этих реализаций представляют преимущественно академический интерес, в то время, как другие - нормальные полномасштабные системы. Нет смысла говорить о том, как много индивидуальных пользователей UNIX двигаются в сторону Linux.

1.8 Требования к оборудованию

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

Имейте в виду, что Linux был создан самими пользователями. Это означает, что большая часть поддерживаемого Linux оборудования - это то, что пользователи реально у себя имеют. Как в результате оказалось - большая часть популярной периферии для 80386/80486 поддерживается (действительно, Linux поддерживает оборудование, которое в ряде случаев не поддерживают некоторые коммерческие UNIX). Хотя некоторые достаточно экзотические устройства пока не поддерживаются. Если какое-то из облюбованных вами устройств пока не поддерживается в Linux, есть смысл надеяться, что оно скоро будет поддерживаться.

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

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

В следующем разделе мы попытаемся дать резюме технических требований Linux. Linux Hardware HOWTO (смотрите Раздел 1.9) содержит более полный перечень оборудования, поддерживаемого Linux.

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

Требования к материнской плате и процессору

В настоящее время Linux поддерживает системы на Intel 80386, 80486 или Pentium CPU. Это включает все вариации этих процессоров, такие как 386SX, 486SX, 486DX и 486DX2. С Linux могут работать также "неинтеловские" клоны процессоров, вроде AMD и Cyrix.

Если у вас 80386 или 80486SX, вы можете также иметь сопроцессор, хотя это и не обязательно, (ядро Linux может эмулировать FPU). Поддерживаются все стандартные сочетания FPU, такие сопроцессоры как IIT, Cyrix FasMath и Intel.

Материнская плата должна использовать шину ISA или EISA. Это определяет, как система взаимодействует с периферией и другими компонентами главной шины. Большинство продаваемых сегодня систем имеют ISA или EISA. Шина MicroChannel (MCA) фирмы IBM, используемая на машинах типа IBM PS/2, пока не поддерживается.

Поддерживаются системы с локальными шинами, ускоряющими доступ к видео и дискам. Предполагается, что у вас стандартная локальная шина, вроде VESA Local Bus (VLB).

Требования к памяти

Linux требует совсем немного памяти в сравнении с другими развитыми операционными системами. Вы должны иметь как минимум 2Мбайт RAM; хотя настоятельно рекомендуется иметь не менее 4 Мбайт. Чем больше памяти - тем быстрее работает система.

Linux может поддерживать все 32-битовое адресное пространство процессоров 386/486; другими словами, он автоматически использует всю память.

Linux может успешно работать на 4 Мбайтах RAM, включая всяческие свистульки и погремушки, вроде X Window, Emacs и т.п. Хотя, иметь побольше памяти не менее важно, чем иметь помощнее процессор. 8 Мбайт более подходит для индивидуального использования; 16 Мбайт или более - если вы предполагаете более серьезную загрузку системы.

Большинство пользователей Linux выделяют часть жесткого диска для области своппинга, которая используется как виртуальная RAM. Если даже вы имеете много реальной физической памяти, RAM, вы можете пожелать иметь область своппинга. Хотя область своппинга не заменяет действительной физической памяти, она может позволить выполнять на вашей системе более об'емные приложения, удаляя неактивную часть программы на диск. Размер области своппинга, которую вы должны выделить, зависит от нескольких факторов; мы вернемся к этому в Разделе 2.2.3.

Требования к драйверам жесткого диска

Вам не обязательно иметь драйвер жесткого диска для работы в Linux. Вы можете работать с минимальной системой с гибкого диска. Но это медленно и имеет много ограничений, да и большинство пользователей имеет доступ к памяти на жестких дисках. У вас должен быть 16-ти битный контроллер в стандарте AT. В ядре есть поддержка 8-ми битного XT-стандарта; хотя разумеется, большинство контроллеров использует сегодня AT-стандарт. Linux может поддерживать все MFM, RLL и IDE контроллеры. Поддерживается большинство (но не все) ESDI контроллеры - только те, которые обеспечивают эмуляцию ST506.

Общее правило для не-SCSI драйверов жестких дисков состоит в том, что если вы можете иметь доступ к этим устройствам из MS-DOS или другой ОС, значит вы можете работать с ними и в Linux.

Linux может также поддерживать многие популярные SCSI контроллеры, хотя поддержка SCSI ограничена из-за большого разнообразия существующих стандартов таких интерфейсов. Поддержка SCSI контроллеров включает Adaptec AHA1542B, AHA1542C, AHA1742A (BIOS version 1.34), AHA1522, AHA1740, AHA1740 (SCSI-2 controller, BIOS 1.34 in Enhanced mode); Future Domain 1680, TMC-850, TMC-950; Seagate ST-02; UltraStor SCSI; Western Digital WD7000FASST. Также должны работать клоны, базирующиеся на этих картах.

Требования к дисковому пространству

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

Размер необходимого пространства зависит в большой степени от ваших потребностей и программ, которые вы инсталлируете. Linux сравнительно компактный UNIX; вы можете для всей системы занять 10 - 20 Мбайт. Между тем, если вы хотите иметь место для расширения и для больших пакетов, вроде X Window, вам потребуется больше места. Если вы планируете множественный доступ, вам потребуется иметь место и для файлов других пользователей.

Кроме того, даже если вы имеете большое количество физической RAM (16 Мбайт или более), скорее всего вы захотите иметь область своппинга, используемую виртуальной памятью. Детали мы обсудим в Разделе 2.2.3.

Каждый дистрибутив Linux обычно сопровождается какой-то литературой, которая может помочь вам определиться с об'емом необходимой памяти в зависимости от того, какое программное обеспечение вы планируете поставить. Минимальную систему вы можете эксплуатировать менее, чем на 20 Мбайтах. Полная система со всеми свистульками и погремушками потребует до 80 Мбайт. Очень большие системы для многих пользователей, где зарезервировано место для последующих расширений, потребует 100 - 150 Мбайт. Но это лишь грубые прикидки, которые вы уточните исходя из своих потребностей.

Требования к монитору и видеоадаптеру

Linux поддерживает все стандарты Hercules, CGA, EGA, VGA, IBM monochrome, and Super VGA видео карт и текстовые мониторы. В общем случае, если видеокарта и монитор работают под другими ОС вроде MS-DOS, они будут работать и под Linux. Оригинальные карты IBM CGA дают в Linux "снег", так что их неприятно использовать.

Графическое окружение вроде X Window имеет свои требования к видеооборудованию. Вместо перечисления этих требований мы перенесем обсуждение в Раздел 5.1.1. А кратко, для работы с X Window System на вашем Linux, вам требуется одна из видеокарт, перечисленных в этом разделе.

Прочее оборудование

У большинства пользователей есть "специфическое" оборудование, вроде стриммера, памяти на CD-ROM, саунд карты и т.д., поэтому они интересуются, поддерживается ли оно в Linux. Читайте дальше.

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

Большей частью мышь вы будете использовать в графическом окружении, таком как X Window System. Но некоторые приложения Linux, не ассоциируемые с графической средой, также используют мышь.

Linux поддерживает все стандарты последовательно подключенной мыши, включая Logitech, серию MM, Mouseman, Microsoft (2-кнопки) и Mouse Systems (3-кнопки). Linux также поддерживает мышь, подключенную на шину: Microsoft, Logitech и ATIXL. Поддерживается также интерфейс мыши PS/2.

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

Память на CD-ROM

Почти все драйверы CD-ROM используют интерфейс SCSI. Если у вас есть SCSI-адаптер, поддерживаемый Linux, то ваш CD-ROM должен работать. Проверена работоспособность ряда драйверов для СD-ROM под Linux, включая NEC CDR-74, Sony CDU-541 и Texel DM-3024. Linux поддерживает также драйверы Sony internal CDU-31a и Mistsumi CD-ROM.

Linux поддерживает также стандарт ISO-9660 файловой системы для CD-ROM.

Драйверы стриммеров

Сейчас на рынке имеется ряд стриммеров. Большинство из них используют SCSI-интерфейс и практически все поддерживаются Linux. Среди проверенных устройств Sankyo CP150SE; Tandberg 3600; Wangtek 5525ES, 5150ES и 5099EN с адаптером PC36. Другие QIC-02 устройства также должны поддерживаться.

Идет постоянная разработка драйверов для различных новых устройств, таких как Colorado, который вешается на контроллер гибкого диска.

Принтеры

Linux поддерживает весь спектр параллельных принтеров. Если вы можете подключить ваш принтер на параллельный порт в MS-DOS или в другой операционной системе, то он может работать и в Linux.

Программная поддержка принтера в Linux состоит из стандартных для UNIX программ lp и lpr. Эти программы позволяют также организовать удаленную печать через сеть.

Модемы

Как и с поддержкой принтеров, Linux поддерживает полный спектр последовательных модемов, как внешних, так и внутренних. В Linux много программ телекоммуникации, включая Kermit, pcomm, minicom и Seyon. Если ваш модем может работать с другой операционной системой, вы сможете с ним работать и в Linux без каких-либо проблем.

Карты Ethernet

Многие популярные карты Ethernet и LAN-адаптеры поддерживаются в Linux. Они включают:

Есть сведения о работе следующих клонов:

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

1.9 Источники информации по Linux

Как вы, возможно, догадались, существует много источников информации по Linux помимо этой книги. В частности, есть ряд книг, не конкретно по Linux, а скорее по UNIX вообще, которые могут очень помочь, особенно тем, кто не имеет предварительного опыта в UNIX. Если вы не знакомы с миром UNIX, мы настоятельно советуем вам уделить время одной из таких книг, прежде чем храбро ринуться в джунгли Linux. В качестве хорошего начала может быть использована книга Grace Todino и John Learning the UNIX Operating System.

Многие из нижеупомянутых источников доступны он-лайн в электронном виде. То есть для того, чтобы ими воспользоваться, вы должны иметь доступ к Internet, USENET или Fidonet. Если у вас нет он-лайн доступа к этим материалам, то следует найти добряка, который сделает вам твердую копию.

Документация, доступная по он-лайн

Если у вас есть доступ к Internet, вы можете найти много документации по Linux через anonymous FTP из архивов, расположенных по всему миру. Если же вы не имеете прямого доступа к Internet, эту документацию все-таки можно достать: много дистрибутивов Linux, содержащих документы, упомянутые здесь, продается на CD-ROM. Они также распространяются по многим другим сетям, вроде Fidonet и CompuServe. Если вы в состоянии послать почту в Internet, значит вы можете достать и эти файлы, используя один из ftpmail-серверов, которые пошлют вам документы или файлы электронной почтой из FTP-архивов. Смотри в Приложении C дополнительную информацию по использованию ftpmail.

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

Приложение A содержит список документации на Linux, доступной через anonymous FTP. Имена файлов будут различаться на разных серверах. Большинство серверов хранит документацию на Linux в подкаталоге docs Linux-овского архивного подпространства. Например, на FTP сервере sunsite.unc.edu файлы Linux помещены в каталог /pub/Linux , а документация по Linux - в /pub/Linux/docs.

Примеры доступной документации - это Linux FAQ (Frequently Asked Questions), собрания часто задаваемых вопросов (в данном случае) по Linux; документация Linux HOWTO, описывающая специфические аспекты системы, включая Installation HOWTO, Printing HOWTO, Ethernet HOWTO и Linux META-FAQ - перечень других источников информации по Linux в Internet.

Большинство этих документов регулярно посылается в несколько относящихся к Linux групп USENET; смотрите Раздел 1.9.4.

Linux И WWW (World Wide Web)

Начальная страница (Home Page) Документации на Linux доступна на WWW по адресу

    http://sunsite.unc.edu/mdw/linux.html

Эта страница содержит много HOWTO и других документов в формате HTML, а также ссылки на другие сервера, интересные для пользователей Linux.

Книги и другие публикации

В настоящее время существует всего несколько публикаций специально посвященных Linux. Большей частью это книги из Linux Documentation Project (LDP) - проекта, реализуемого в Internet по написанию и распространению "руководств" по Linux. Эти руководства аналогичны документации, поставляемой с коммерческими версиями UNIX: они покрывают все - от инсталляции Linux до его использования, программирования, работы в сети, разработки ядра и т.д.

Руководства LDP доступны через FTP-серверы Internet, а также по обычной электронной почте из нескольких источников (см. Приложение А).

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

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

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

Новости USENET

USENET - это мировые электронные новости и одновременно клубы по интересам - так называемые ``newsgroups''( у нас принято говорить - "телеконференции"). Многое по развитию Linux делается через Internet и USENET, так что не удивляет существование ряда телеконференций USENET, посвященных Linux.

Первоначально была создана телеконференция alt.os.linux, чтобы вынести дискуссии по Linux из comp.os.minix. Но скоро трафик alt.os.linux вырос настолько, что в феврале 1992 года было проведено голосование о включении конференции в иерархию "comp" и создана телеконференция comp.os.linux.

comp.os.linux быстро стала одной из наиболее популярных (и шумных) телеконференций USENET, более популярной, чем другие группы иерархии comp.os. В декабре 1992, в результате голосования группа была разбита, чтобы уменьшить об'емы трафика, но только comp.os.linux.announce прошла тогда по голосованию. В июле 1993 , наконец-то группа была разбита на иерархию групп. За это проголосовало около 2000 человек - одно из самых больших голосований в истории USENET.

Если у вас нет прямого доступа к USENET, но имеется возможность посылать и получать письма по e-mail, то в Internet существуют шлюзы, через которые можно получать телеконференции:

comp.os.linux.announce

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

Любое сообщение в этой группе должно быть одобрено модераторами Matt Welsh и Lars Wirzenius. Если вы хотите выставить свое сообщение в этой группе, вы обычным порядком посылаете его в телеконференцию. Оно автоматически будет направлено для одобрения модератору. Но если ваша система новостей не настроена, можно направить статью электронной почтой по адресу linux-announce@tc.cornell.edu. Все остальные телеконференции этой иерархии linux, перечисленные ниже - немодерируемые.

comp.os.linux.help

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

comp.os.linux.admin

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

comp.os.linux.development

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

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

comp.os.linux.misc

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

Следует заметить, что телеконференция comp.os.linux была заменена иерархией телеконференций. Если у вас есть доступ к comp.os.linux и нет доступа к другим телеконференциям этой иерархии, вдохновите администратора их завести.

Списки рассылки Internet

Если у вас есть доступ к электронной почте Internet, вы можете включиться в списки рассылки, даже если вы не имеете доступа к USENET. Даже если вы не можете работать непосредственно в Internet, но можете обмениваться с ней почтой (например, UUCP, FidoNET, CompuServe и другие сети имеют почтовую связь с Internet), вы можете подключиться к какому-то списку рассылки. Список рассылки ``Linux Activists'' предназначен для разработчиков Linux и людей, заинтересованных в содействии процессу разработки. Это "многоканальная" рассылка; можно подключиться к разным ее ветвям: NORMAL - общие вопросы Linux; KERNEL - разработка ядра; GCC - разработка gcc-компилятора и библиотек; NET - протоколы TCP/IP; DOC - документация по Linux; и другие.

За дополнительной информацией о списках рассылки, связанных с Linux, пишите:

    linux-activists@niksula.hut.fi

Вы сможете получить действующий перечень тем рассылки, включая информацию о том, как включиться в список рассылки и как отписаться.

Существует несколько списков рассылки для Linux. Лучше всего для ориентации посмотреть об'явления в телеконференциях Linux USENET, а также просмотреть списки тем рассылки, периодически публикуемые в USENET group news.answers.

1.10 Получение помощи

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

Первоочередной источник помощи - списки рассылки и телеконференции USENET обсуждались в Разделе 1.9. Если у вас нет к ним онлайнового доступа, вы можете поискать доступ к такой информации на локальных BBS, в CompuServe и т.д.

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

Но сначала ищите ответы во всей доступной вам документации! Прежде всего в источниках, перечисленных в Разделе 1.9 и Приложении A. Эти документы тщательно написаны для людей вроде вас, которые нуждаются в помощи при работе с Linux. Даже книги, написанные про UNIX вообще, применимы к Linux и вы должны извлекать из них пользу для себя, и как правило, найдете ответы на интересующие вас вопросы.

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

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

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

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

След. Глава, Пред. Глава

Содержимое этой главы, Главное оглавление

Начало документа, Начало этой главы