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 дома для программирования, решения своих прикладных задач и всевозможного хакерства.
1.1 Об этой книге
Linux прост в инсталляции и использовании. Но, как и во всякой реализации UNIX, в нем присутствуют элементы «черной магии», которые необходимы при обеспечении его корректной работы. Мы надеемся, что эта книга будет вам хорошим путеводителем по Linux и покажет, насколько простой может выглядеть эта операционная система.
В этой книге мы рассматриваем следующие вопросы:
Эта книга для пользователей персональных компьютеров, желающих начать работать с Linux. Мы не предполагаем предварительного опыта работы с UNIX, но надеемся, что новички будут обращаться по ходу дела к дополнительной литературе. Для незнакомых с UNIX в Приложении А приведен список полезных источников. В общем случае предполагается чтение этой книги совместно с какой-либо книгой по общим концепциям ОС UNIX.
1.2 Краткая история Linux
Существуют версии UNIX для многих систем, начиная от персонального компьютера, до суперкомпьютеров, таких как Cray Y-MP. Большинство версий UNIX для персональных компьютеров достаточно дороги и сложны. К моменту написания этой книги одномашинная версия AT&T’s System V для 386 стоила US$1500.
Раннее развитие Linux прежде всего было связано с проблемой переключения задач в защищенном режиме для 80386. Все писалось на ассемблере. Линус вспоминает:
«После этого началось спокойное плавание: по-прежнему беспросветное кодирование, но у меня были различные подсобные программы и отладка была облегчена. На этом этапе я стал использовать Си и это существенно ускорило дело. В это же время я стал серьезно обдумывать маниакальную идею, как сделать Minix лучше себя самого. Я надеялся в один прекрасный день перекомпилировать gcc под Linux. » «Два месяца ушло на написание самых базовых программ, а затем чуть больше времени на драйвер винчестера (с большим количеством ошибок, но все-таки работавшим на моей машине) и простую файловую систему. В результате я подготовил версию 0.01 (примерно конец августа 1991 г.). Она была не слишком изящной, в ней не было драйвера гибких дисков и она многое не могла делать. Но я уже не смог остановиться, пока не создал свой Minix.»
Относительно появления Linux версии 0.01 никогда не делалось никаких официальных заявлений. Исходные тексты 0.01 не давали даже нормального выполняемого кода: они фактически состояли лишь из набора заготовок для ядра и молчаливо предполагали, что вы имеете доступ к Minix-машине, чтобы иметь возможность компилировать их и совершенствовать.
Линус писал в comp.os.minix :
1.3 Системные характеристики
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 сразу создано с учетом специального защищенного режима для процессоров Intel 80386 и 80486. В частности, Linux использует парадигму описания памяти в защищенном режиме и другие новые свойства процессоров. Любой знакомый с защищенным режимом процессора 80386 знает, что этот чип проектировался для многозадачных систем вроде UNIX (или Mulics). Linux использует эти свойства.
Ядро Linux поддерживает загрузку только нужных страниц. То есть с диска в память загружаются те сегменты программы, которые действительно используются. Возможно использование одной страницы, физически один раз загруженной в память, несколькими выполняемыми программами.
Для увеличения объема доступной памяти Linux осуществляет также разбиение диска на страницы: то есть на диске может быть выделено до 256 Мбайт «пространства для свопинга» (swap space). (Swap space не совсем подходящее имя, в Linux в область своппинга выгружается не весь процесс, а только отдельные его части, в которых нет необходимости). Когда системе нужно больше физической памяти, то она с помощью свопинга выводит неактивные страницы на диск. Это позволяет выполнять более объемные программы и обслуживать одновременно больше пользователей. Однако свопинг не исключает наращивания физической памяти, поскольку он снижает быстродействие, увеличивает время доступа.
Ядро также поддерживает универсальный пул памяти для пользовательских программ и дискового кэша. При этом для кэша может использоваться вся память, и наоборот, кэш уменьшается при работе больших программ.
Выполняемые программы используют динамически связываемые библиотеки, т.е. выполняемые программы могут совместно использовать библиотечную программу, представленную одним физическим файлом на диске (иначе, чем это реализовано в механизме разделяемых библиотек SunOS). Это позволяет выполняемым файлам занимать меньше места на диске, особенно тем, которые многократно используют библиотечные функции. Есть также статические связываемые библиотеки для тех, кто желает пользоваться отладкой на уровне объектных кодов или иметь «полные» выполняемые программы, которые не нуждаются в разделяемых библиотеках. В Linux разделяемые библиотеки динамически связываются во время выполнения, позволяя программисту заменять библиотечные модули своими собственными.
Для обеспечения отладки ядро Linux выдает дампы памяти для «посмертного» анализа. Использование дампа и динамических отладчиков позволяет определить причины краха программы.
1.4 Программные характеристики
1.4.1 Базовые команды и утилиты
Но vi имеет много ограничений по причине своего преклонного возраста, сейчас завоевывают популярность более современные и сложные редакторы вроде Emacs. Emacs поддерживает базирующийся на LISP макроязык и интерпретатор, мощный командный синтаксис и другие расширения. Существуют макропакеты Emacs, позволяющие читать электронную почту и новости, редактировать содержимое каталогов и даже проводить сеансы психотерапии с использованием искусственного интеллекта (неоценимая возможность для измотанных Linux-ом хакеров).
1.4.2 Обработка текстов и слов
В мире UNIX обработка текстов (text processing)- вещь более естественная, чем классическая концепция обработки слов. Вместо того, чтобы вызывать специальные средства обработки слов, исходный текст можно модифицировать любым текстовым редактором, таким как vi или Emacs. После подготовки текста пользователь форматирует текст специальными программами, преобразующими его к нужному для печати виду. Это в чем-то аналогично программированию на языке вроде Си, и «компилированию» текста в пригодную для печати форму.
Текстовые процессоры, такие как TeX и groff значительно различаются по синтаксису языков форматирования. Предпочтение той или иной системы форматирования в значительной мере базируется на том, какие имеются вспомогательные утилиты и насколько система вам по вкусу.
Текстовые процессоры широко используются в компьютерном мире для подготовки статей, диссертаций, статей для журналов и книг (типографский вариант этой книги был подготовлен с использованием LaTeX). Возможность обрабатывать исходный язык как текстовый файл открывает двери.
Как выглядит язык форматирования? В общем случае он содержит сам текст с «управляющими кодами» для производства заказанных действий, таких как изменение фонтов, установление полей, формирование страниц и т.д.
В качестве примера возьмем следующий текст:
Этот текст на языке форматирования LaTeX будет выглядеть следующим образом:
Автор входит в «исходный» текст, приведенный выше, используя любой текстовый редактор, и генерирует форматированный выход, обрабатывая текст с помощью LaTeX. На первый взгляд такой язык может показаться достаточно заумным, но в действительности он очень прост в освоении. Использование текстового процессора обеспечивает поддержку типографских стандартов. Например, все перечисленные в рамках документа страницы будут выглядеть одинаково. Пишущий может сосредоточиться на тексте, а не на том, как это следует оформлять с точки зрения типографских требований.
Процессоры слов типа WYSIWYG привлекательны по многим причинам: они обеспечивают мощный (а иногда и сложный) визуальный интерфейс для редактирования документов. Но этот интерфейс традиционно ограничен желательными и приемлемыми для пользователя формами выдачи. Так, многие процессоры имеют средства подготовки к печати математических формул.
Преимущество текстовых процессоров состоит в том, что они позволяют описывать именно то, что вы хотите. Они позволяют также редактировать исходный текст любым текстовым редактором и затем конвертировать в различные форматы. Платой за такую гибкость является отсутствие тех качеств интерфейса, которые есть у WYSIWYG.
Многие пользователи процессоров слов привыкли видеть отредактированный текст сразу в процессе редактирования. С другой стороны, при использовании текстового процессора пишущий не заботится о том, как будет выглядеть уже отформатированный текст. Пишущий лишь должен иметь представление о том, какие действия произведут вставляемые им команды форматирования.
1.4.3 Языки программирования и утилиты
Linux идеален для создания UNIX-приложений. Он обеспечивает современное программное окружение со всеми дополнительными погремушками. Поддерживаются различные стандарты вроде POSIX.1, позволяющие легко переносить программы, написанные для Linux, на другие системы. Профессиональные UNIX-программисты и системные администраторы могут использовать Linux для домашних компьютеров, а с них переносить написанные программы на компьютеры своей фирмы. Это может не только сэкономить много времени и денег, но и обеспечить комфортабельную работу на домашнем компьютере. (Автор использует дома Linux для разработки и тестирования X Window приложений, которые могут прямо транслироваться на любых рабочих станциях). Студенты, изучающие компьютерные науки, могут использовать Linux для обучения программированию в UNIX и изучения таких аспектов, как архитектура ядра.
Через Linux вы не только имеете доступ к полному набору библиотек и утилит, но также к исходным текстам ядра и библиотек.
1.4.4 Система X Window
Система 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.
Дистрибутив 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.
1.4.5 Работа в сети
Интересует ли вас связь с миром? Да? Нет? Может быть? 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-сервер для других хостов.
Если у вас есть опыт работы с приложениями TCP/IP на других UNIX-системах, Linux не будет для вас чем-то новым. Система обеспечивает стандартный программный интерфейс, поэтому любая программа, использующая TCP/IP, может быть легко перенесена на Linux. X-сервер Linux также поддерживает TCP/IP, позволяя отображать выполняемые на других машинах прикладные программы на вашем дисплее.
В Главе 5 мы обсудим конфигурацию и установку для Linux TCP/IP, включая SLIP.
1.4.6 Телекоммуникации и BBS
Если у вас есть модем, вы можете связываться с другими машинами, используя телекоммуникационные пакеты, имеющиеся в Linux. Многие используют программы телекоммуникации для связи с BBS (Bulletin Board Systems), а также и с коммерческими он-лайновыми системами, вроде Prodigy, CompuServe и America On-Line. Другие через модемы связываются с UNIX-системой в школе или на работе. Вы можете использовать модем и Linux для посылки и приема факсов. Телекоммуникационные пакеты Linux очень похожи на имеющиеся в MS-DOS или других операционных системах.
Большинство программ BBS ограничивают пользователя меню-системой, где имеется некоторый фиксированный набор функций. Альтернативой доступу в BBS служит полный спектр возможностей доступа UNIX, который позволяет вам работать с удаленной машиной на правах обычного пользователя.
Если у вас нет возможностей использовать TCP/IP или UUCP, Linux позволяет также связываться с рядом BBS, таких как FidoNet по телефонным линиям и обмениваться новостями и почтой. Дополнительную информацию можно найти в Главе 5.
1.4.7 Интерфейс с 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, как и к «родным».
1.4.8 Другие приложения
В Linux огромное количество всевозможных приложений, что и следует ожидать от такой «разносторонней» операционной системы. Основная ориентация Linux была на персональные UNIX-вычисления, но она быстро меняется. Все больше его используют в бизнесе и обучении, все больше появляется на рынке всевозможных коммерческих приложений.
Прикладные научные пакеты включают FELT (Finite Element Analysis Tool); gnuplot (анализ данных и черчение); Octave (пакет символических вычислений, похожий на MATLAB); xspread ( калькулятор типа spreadsheet); xfractint (X-вариант популярного рекурсивного генератора Fractint); xlispstat (пакет статистики) и многое другое. Другие приложения содержат Spice (проектирование и анализ цепей) и Khoros (аналого/цифровая обработка сигналов и визуализация).
Разумеется, есть еще много приложений, которые были или будут перенесены на Linux. Linux обеспечивает полный программный UNIX-интерфейс, удобный в качестве исходной базы для любых приложений в любой научной области.
Для меломанов 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 не являются также 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, модифицировать их.
1.6 Проектирование и философия Linux
В фирмах, разрабатывающих коммерческие UNIX, вся система создается под жестким контролем качества, существует система управления написанием программ, внесением изменений, документированием, информированием о выявленных ошибках и их устранением. Разработчикам запрещено по собственному желанию добавлять какие-то свойства или менять критически важные коды по своему желанию. Они могут вносить изменения только, как реакцию на выявленные ошибки, документировать вносимые изменения так, чтобы можно было систему при необходимости «вернуть назад». Каждый разработчик закреплен за одной или несколькими частями системного кода, и только этот разработчик имеет право исправлять замеченные ошибки.
Внутри фирм департаменты контроля качества осуществляют жесткое тестирование всякой новой версии операционной системы. Разработчики обязаны под контролем устранять выявленные ошибки. Существует сложная система статистического анализа, определяющая, сколько ошибок должно быть устранено, чтобы об’явить переход к новой версии.
Сама по себе система проектируется по открытому принципу. Хотя число вносимых радикальных изменений в систему уменьшается, общая тенденция выдачи новой версии ядра через несколько месяцев (а иногда и чаще) сохраняется. Разумеется, это приблизительная характеристика, она зависит от многих факторов, включая число обнаруженных ошибок, число замечаний пользователей, и то, сколько часов Линус спал в этом месяце.
Естественно, не все ошибки выявляются и не все проблемы решаются между выпусками версий. Но когда создается впечатление, что существенные и часто проявляющиеся ошибки устранены и система ведет себя достаточно «стабильно», выпускается новая версия. Это не попытка выпустить безошибочную версию, а желание выпустить версию UNIX, с которой можно работать. Linux прежде всего ориентирован на разработчиков.
Все, у кого есть новые программы, которые они хотели бы добавить в систему, обычно делают их доступными для других на «альфа» стадии, т.е. на стадии тестирования теми отважными или еще не уставшими пользователями, которые хотят сокрушать возникающие проблемы первоначального кода. Поскольку Linux-сообщество в большой степени кучкуется вокруг Internet, альфа-программы выкладываются на один или более Linux FTP-сервера (смотрите Приложение C) и посылается письмо в одну из Linux-групп USENET, о том как можно получить и тестировать представленный код. Пользователи, которые скачивают и тестируют эти альфа-программы, могут по почте сообщать результаты, указывать ошибки, задавать вопросы автору.
После решения начальных проблем с альфа-кодом, код приобретает статус «бета», при котором он обычно уже достаточно стабилен, хотя и небезгрешен (он работает, но не все еще его ветви полностью работоспособны). Иначе код попадает в разряд «готового», когда он считается полным и правильным. Относительно новых кодов ядра необходимо просить Линуса включить их в стандартное ядро или добавить как факультативную опцию ядра.
Следует иметь в виду, что это лишь соглашения, а не правила. Некоторые люди так уверены в своих программах, что не считают нужным публиковать альфа-версию. Так что от разработчика зависит в известной мере и процедура.
Вас может несколько удивить столь неупорядоченная система привлечения добровольцев, программирования и отладки UNIX. Может ли она дать вообще положительный результат? Как оказывается, это один из самых эффективных и успешных проектов, когда-либо существовавших. Полностью все ядро было написано без привлечения каких либо частей ранее существовавшего кода. Большая работа была проделана добровольцами по переносу свободно распространяемых программ в Linux. Были написаны библиотеки, создана файловая система, драйверы для многих популярных устройств.
1.6.1 Замечания для новичков в UNIX
Никто не сможет превратиться из новичка в ОС UNIX за одну ночь в системного администратора UNIX. Вы должны быть готовы к длительному путешествию, которое вам предстоит.
1.6.2 Замечания для UNIX-гуру
Возможно, более важной является функциональность. Во многих случаях новый код добавляется в ядро, даже если содержит ошибки и функционально не полон. Существует предположение, что важнее выпустить код, который пользователи могут тестировать и использовать, чем делать его недоступным. Например, WINE (Microsoft Windows Emulator for Linux) имел «официальную» альфа версию до того, как был полностью оттестирован. Linux-сообщество имеет большой шанс поработать с кодом, протестировать его и помочь в его совершенствовании, пока те, кто считают альфа-версию достаточно хорошей для своих нужд, могут ее использовать. Поставщики коммерческих UNIX редко распространяют их таким образом.
Учитывая такую динамику, как удержаться на плаву в мире Linux? Для большинства лучше всего делать частичные усовершенствования, то есть менять только те части, которые, на ваш взгляд действительно нуждаются в обновлении. Например, если вы не используете Emacs, нет смысла регулярно менять его версии на вашем компьютере. Более того, даже если вы приверженец Emacs, не нужно менять версию, если только в новой версии не появились те возможности, которые вам действительно необходимы. Совсем не обязательно всегда иметь самую последнюю версию всего.
Мы надеемся, что Linux оправдает или даже превзойдет ваши ожидания, связанные с «доморощенной» UNIX-системой. В самой основе Linux дух свободного программирования, постоянного развития и совершенствования. Linux-сообщество предпочитает экспансию стабильности, и эту концепцию трудно проглотить многим, особенно тем, кто стоит высоко в мире коммерческого UNIX. Нельзя считать Linux совершенством, как и ничто в мире свободно распространяемых программ. Но мы верим, что Linux полон и работоспособен, как и любая другая реализация UNIX.
1.7 Различия между Linux и другими операционными системами
Важно понимать различия между Linux и другими операционными системами, такими как MS-DOS, OS/2, а также другими реализациями UNIX для персональных компьютеров. Прежде всего, должно быть ясно, что Linux может счастливо сосуществовать с другими операционными системами на той же машине. Как мы увидим, существуют даже способы взаимодействия операционных систем.
1.7.1 Почему Linux?
Но не будем зарываться. Linux не для отдельных скромных любителей UNIX на персоналках. Это большая и достаточно сложная система для решения сложных задач и организации распределенных вычислений. Многие фирмы, особенно небольшие, двигаются в сторону Linux, предпочитая его другим UNIX. Университеты считают Linux отлично подходящим для обучения операционным системам. Крупные поставщики программ начинают понимать, какие выгоды сулит свободное распространение операционных систем.
1.7.2 Linux против MS-DOS
Не является чем-то экзотическим одновременно держать на компьютере Linux и MS-DOS. Многие пользователи Linux работают с прикладными пакетами MS-DOS, вроде различных редакторов.
Хотя Linux имеет собственные аналоги для таких приложений (например, TeX), существуют разнообразные причины, по которым конкретный человек будет использовать MS-DOS наряду с Linux. Если вся ваша диссертация написана с использованием WordPerfect в MS-DOS, возможно вы не сможете конвертировать его в TeX или какой-то другой формат. Существует много коммерческих приложений для MS-DOS, которых нет в Linux, поэтому, если есть смысл, почему не использовать обе операционные системы.
Существует инструментарий, позволяющий взаимодействовать Linux и MS-DOS. Например, просто получить доступ к файлам MS-DOS из Linux. Есть также эмулятор MS-DOS, позволяющий выполнять многие популярные прикладные пакеты MS-DOS. Эмулятор Microsoft Windows находится на этапе создания.
1.7.3 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).
OS/2 и Windows NT принадлежат частным компаниям. Поэтому интерфейс и проектные решения контролируются конкретными фирмами и только эти фирмы могут совершенствовать свои продукты. (Не надейтесь увидеть когда-нибудь в обозримом будущем бесплатную версию OS/2). В некотором смысле такая организация дела имеет преимущества: она обеспечивает жесткую стандартизацию программного и пользовательского интерфейсов. OS/2 есть OS/2, где бы вы ее не обнаружили, то же самое с Windows NT.
А интерфейс UNIX постоянно совершенствуется и меняется. Несколько организаций пытаются выработать стандарт программной модели, но эта задача очень сложная. Linux наилучшим образом соответствует стандарту POSIX.1 для программного интерфейса UNIX. Предполагалось, что Linux примкнет еще к ряду движений по стандартизации, но это не стало пока в число главных задач Linux-сообщества.
1.7.4 Другие реализации 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.
1.8 Требования к оборудованию
Вы должны быть убеждены, что Linux прекрасен и что вы пополните его грандиозными вещами. Но это потом, а до того, как броситесь его инсталлировать, вы должны сориентироваться в требованиях к аппаратуре, которые диктует Linux.
Многие компании лицензируют интерфейс устройств, поэтому добровольные разработчики Linux просто не могут написать эти драйверы. Иначе это будет нарушением авторских прав соответствующей компании.
Мало что можно изменить в этой ситуации. Иногда хакеры пишут драйверы, основываясь на своих представлениях о конкретном интерфейсе. В других случаях разработчики с разной степенью успеха пытаются работать с соответствующими компаниями, пытаясь получить информацию об интерфейсе.
В следующем разделе мы попытаемся дать резюме технических требований Linux. Linux Hardware HOWTO (смотрите Раздел 1.9) содержит более полный перечень оборудования, поддерживаемого Linux.
Большая часть драйверов Linux в настоящее время находится в стадии разработки. Различные дистрибутивы могут содержать разные наборы драйверов. Здесь прежде всего перечисляются те драйверы, которые уже поддерживаются определенное время и зарекомендовали себя как достаточно стабильные. (Дополнительную информацию по дистрибутивам смотрите в Разделе 2.1).
1.8.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).
1.8.2 Требования к памяти
Linux может поддерживать все 32-битовое адресное пространство процессоров 386/486; другими словами, он автоматически использует всю память.
Большинство пользователей Linux выделяют часть жесткого диска для области своппинга, которая используется как виртуальная RAM. Если даже вы имеете много реальной физической памяти, RAM, вы можете пожелать иметь область своппинга. Хотя область своппинга не заменяет действительной физической памяти, она может позволить выполнять на вашей системе более объемные приложения, удаляя неактивную часть программы на диск. Размер области своппинга, которую вы должны выделить, зависит от нескольких факторов; мы вернемся к этому в Разделе 2.2.3.
1.8.3 Требования к драйверам жесткого диска
Общее правило для не-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. Также должны работать клоны, базирующиеся на этих картах.
1.8.4 Требования к дисковому пространству
Разумеется, для инсталляции Linux вам необходимо иметь некоторое свободное пространство на жестком диске. Linux поддерживает различные драйверы жестких дисков на одной машине; вы можете выделить место для нескольких устройств, если это необходимо.
Кроме того, даже если вы имеете большое количество физической RAM (16 Мбайт или более), скорее всего вы захотите иметь область своппинга, используемую виртуальной памятью. Детали мы обсудим в Разделе 2.2.3.
1.8.5 Требования к монитору и видеоадаптеру
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, вам требуется одна из видеокарт, перечисленных в этом разделе.
1.8.6 Прочее оборудование
У большинства пользователей есть «специфическое» оборудование, вроде стриммера, памяти на CD-ROM, саунд карты и т.д., поэтому они интересуются, поддерживается ли оно в Linux. Читайте дальше.
1.8.6.1 Мышь и другие устройства, подключаемые к портам
Большей частью мышь вы будете использовать в графическом окружении, таком как X Window System. Но некоторые приложения Linux, не ассоциируемые с графической средой, также используют мышь.
Linux поддерживает все стандарты последовательно подключенной мыши, включая Logitech, серию MM, Mouseman, Microsoft (2-кнопки) и Mouse Systems (3-кнопки). Linux также поддерживает мышь, подключенную на шину: Microsoft, Logitech и ATIXL. Поддерживается также интерфейс мыши PS/2.
Все прочие подключаемые таким же образом устройства, которые эмулируют вышеперечисленных мышей, тоже должны работать.
1.8.6.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.
1.8.6.3 Драйверы стриммеров
Сейчас на рынке имеется ряд стриммеров. Большинство из них используют SCSI-интерфейс и практически все поддерживаются Linux. Среди проверенных устройств Sankyo CP150SE; Tandberg 3600; Wangtek 5525ES, 5150ES и 5099EN с адаптером PC36. Другие QIC-02 устройства также должны поддерживаться.
Идет постоянная разработка драйверов для различных новых устройств, таких как Colorado, который вешается на контроллер гибкого диска.
1.8.6.4 Принтеры
Linux поддерживает весь спектр параллельных принтеров. Если вы можете подключить ваш принтер на параллельный порт в MS-DOS или в другой операционной системе, то он может работать и в Linux.
Программная поддержка принтера в Linux состоит из стандартных для UNIX программ lp и lpr. Эти программы позволяют также организовать удаленную печать через сеть.
1.8.6.5 Модемы
Как и с поддержкой принтеров, Linux поддерживает полный спектр последовательных модемов, как внешних, так и внутренних. В Linux много программ телекоммуникации, включая Kermit, pcomm, minicom и Seyon. Если ваш модем может работать с другой операционной системой, вы сможете с ним работать и в Linux без каких-либо проблем.
1.8.6.6 Карты Ethernet
Многие популярные карты Ethernet и LAN-адаптеры поддерживаются в Linux. Они включают:
Должны также работать и любые другие клоны, совместимые с перечисленными выше.
1.9 Источники информации по Linux
Как вы, возможно, догадались, существует много источников информации по Linux помимо этой книги. В частности, есть ряд книг, не конкретно по Linux, а скорее по UNIX вообще, которые могут очень помочь, особенно тем, кто не имеет предварительного опыта в UNIX. Если вы не знакомы с миром UNIX, мы настоятельно советуем вам уделить время одной из таких книг, прежде чем храбро ринуться в джунгли Linux. В качестве хорошего начала может быть использована книга Grace Todino и John Learning the UNIX Operating System.
Многие из нижеупомянутых источников доступны он-лайн в электронном виде. То есть для того, чтобы ими воспользоваться, вы должны иметь доступ к Internet, USENET или Fidonet. Если у вас нет он-лайн доступа к этим материалам, то следует найти добряка, который сделает вам твердую копию.
1.9.1 Документация, доступная по он-лайн
Существует большое число FTP-архивов, содержащих тексты программ Linux и соответствующую документацию. Список известных архивов Linux дан в Приложении C. Для того, чтобы минимизировать сетевой трафик, всегда следует использовать FTP-сервер, находящийся в географической близости.
Большинство этих документов регулярно посылается в несколько относящихся к Linux групп USENET; смотрите Раздел 1.9.4.
1.9.2 Linux И WWW (World Wide Web)
Начальная страница (Home Page) Документации на Linux доступна на WWW по адресу
Эта страница содержит много HOWTO и других документов в формате HTML, а также ссылки на другие сервера, интересные для пользователей Linux.
1.9.3 Книги и другие публикации
Руководства LDP доступны через FTP-серверы Internet, а также по обычной электронной почте из нескольких источников (см. Приложение А).
И хотя собственно по Linux книг немного, тем не менее есть большое число книг по UNIX вообще, которые, без сомнения, могут использоваться применительно к Linux, поскольку Linux не имеет значительных отличий от других реализаций UNIX. Короче, все, что вы хотите узнать о программировании на Linux, может быть найдено в этих книгах, предназначенных для широкой аудитории пользователей UNIX. А здесь мы представляем наиболее важные специфические детали Linux и надеемся, что вы также будете обращаться за деталями и к другим источникам.
Есть также ежемесячный журнал по Linux, под названием Linux Journal. Он распространяется по всему миру и представляет хорошую возможность быть в курсе происходящего в Linux- сообществе, особенно, если вы не имеете доступа к новостям USENET (см. ниже). Относительно подписки на Linux Journal см. Приложение А.
1.9.4 Новости USENET
Если у вас нет прямого доступа к USENET, но имеется возможность посылать и получать письма по e-mail, то в Internet существуют шлюзы, через которые можно получать телеконференции:
Здесь обсуждаются вопросы эксплуатации Linux (обычно в многопользовательском режиме) Обсуждается работа администратора системы Linux (например, сохранение системы, работа с пользователями и т.п.).
Следует заметить, что эта телеконференция для обсуждения проблем разработки собственно Linux. Прикладное программирование в Linux обсуждается в других телеконференциях.
Эта телеконференция для обсуждения проблем, не подходящих для других групп. Особенно для «защитников» Linux (для статей типа «Linux против Windows NT»). Всякие нетехнические окололинуксовские споры могут происходить здесь.
Следует заметить, что телеконференция comp.os.linux была заменена иерархией телеконференций. Если у вас есть доступ к comp.os.linux и нет доступа к другим телеконференциям этой иерархии, вдохновите администратора их завести.
1.9.5 Списки рассылки Internet
За дополнительной информацией о списках рассылки, связанных с Linux, пишите:
Вы сможете получить действующий перечень тем рассылки, включая информацию о том, как включиться в список рассылки и как отписаться.
1.10 Получение помощи
Без сомнения, вам понадобится какая-то помощь во время ваших приключений в мире Linux. Даже самые крутые из крутых юниксистов временами спотыкаются о какие-то закорючки Linux, поэтому важно знать, где и как искать помощи, когда потребуется.
Ряд фирм предлагают коммерческую поддержку Linux. Вы можете платить за «подписку», что позволит вам созваниваться с консультантами по поводу возникающих проблем с Linux. Но при наличии доступа к USENET и почте Internet вы можете найти и бесплатное сопровождение.
Но сначала ищите ответы во всей доступной вам документации! Прежде всего в источниках, перечисленных в Разделе 1.9 и Приложении A. Эти документы тщательно написаны для людей вроде вас, которые нуждаются в помощи при работе с Linux. Даже книги, написанные про UNIX вообще, применимы к Linux и вы должны извлекать из них пользу для себя, и как правило, найдете ответы на интересующие вас вопросы.
Приучайтесь к самостоятельности. В большинстве случаев предпочтительно самостоятельно исследовать проблему насколько возможно, прежде чем обращаться за помощью. Прежде всего обращайтесь за помощью к самому Linux. Помните, что Linux некоммерческая ОС и никогда не пыталась таковой выглядеть. Вы не умрете, если сами займетесь хакерством. Это приучит вас самостоятельно решать проблемы, может через некоторое время вы сами почувствуете себя в Linux гуру.
Сохраняйте спокойствие. Ни в коем случае не приходите в отчаяние в результате общения с системой. Вы ничего не добьетесь от системы с помощью топора или, того лучше, с помощью мощного электромагнита. Linux взрослеет и мужает, становится надежнее, так что мы надеемся, что число проблем будет уменьшаться. Кстати, всяких фокусов можно ожидать и от коммерческих UNIX-ов.
Воздерживайтесь от скоропалительных решений. Многие люди бросаются рассылать письма по конференциям до того, как спокойно подумают. Часто решение находят через пять минут после того, как закончили взывать о помощи к мировому сообществу.
Если вы решили послать просьбу о помощи, постарайтесь это сделать наилучшим образом. Постарайтесь оформить просьбу максимально вежливо и предельно информативно. Не забывайте, что помощь в сети оказывается добровольно.
