Основы работы в ОС Linux

         

Ное соответствие стандарту POSIX 1003.1. Частичная поддержка возможностей System V и BSD


POSIX 1003.1 (Portable Operating System Interface - интерфейс мобильной операционной системы) задаeт стандартный интерфейс Unix-систем, который описывается набором процедур языка Си. Сейчас он поддерживается всеми новыми ОС. Microsoft Windows NT также поддерживает POSIX 1003.1. Linux 100%-но соответствует POSIX. Дополнительно поддерживаются некоторые возможности System V и BSD для увеличения совместимости.



Динамическое кеширование диска


Кеширование диска - это использование части оперативной памяти для хранения часто используемых данных с диска, что существенно ускоряет доступ к часто используемым программам и задачам. Пользователи MS-DOS работают со SmartDrive, который резервирует фиксированные области системной памяти для кеширования диска. Linux использует более динамичную систему кеширования: память, зарезервированная под кеш, увеличивается, когда память не используется, и уменьшается, если системе или процессу пользователя требуется больше памяти.



Дистрибутивы Linux


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

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

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

Тем не менее, в мире существует уже более сотни различных дистрибутивов Linux, и все время появляются новые. Более-менее полный список их можно найти на сервере http://www.linuxhq.com, где даны краткие характеристики каждому дистрибутиву (упоминаются и некоторые локализованные версии). Кроме того, там же есть ссылки на другие списки дистрибутивов, так что при желании можно найти все, что вообще существует в мире (правда, все это на английском языке, и русских локализаций там маловато упомянуто).

А. Федорчук в статье [П3.8] предпринял попытку классификации дистрибутивов, положив в основу следующие критерии:

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


Хотя А. Федорчук и приходит к выводу, что различия между дистрибутивами несущественны и все более стираются, из его статьи все же следует, что на сегодняшний день выделяются по крайней мере 3 группы дистрибутивов, наиболее типичными представителями, которых являются Red Hat, Slackware и Debian.

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

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

Одна из команд сформировалась в Институте Логики (http://www.iplabs.ru). Эта команда некоторое время занималась русификацией дистрибутива Linux Mandrake Russian Edition, а в марте 2001 г. организовала фирму "ALTLinux" (http://www.altlinux.ru) и выпустила собственный дистрибутив ALTLinux (который, впрочем, очень похож на Linux Mandrake Russian Edition).

Вторая команда представлена фирмой "ASPLinux" (http://www.asplinux.ru, http://www.asp-linux.com, http://www.asp-linux.com.sg, http://www.asp-linux.co.kr), которая тоже выпустила собственный дистрибутив ASPLinux. В состав этой команды вошли Л. Кантер и А. Каневский, которые раньше выпускали известный дистрибутив Black Cat Linux.

Третья команда, насколько я могу судить, представлена Санкт-Петербургской фирмой "Linux Ink". (http://www.linux-ink.ru), которая выпускает Red Hat Linux Cyrillic Edition.

Конечно, имеются и другие русифицированные дистрибутивы. В 2000 году появились дистрибутивы Best Linux (http://bestlinux.net), поддерживаемый фирмой SOT из Финляндии, и RosLinux. Описание нескольких русифицированных дистрибутивов Linux дано в книге А. Федорчука [П1.6]. Но, на мой взгляд, если говорить о выборе дистрибутива, то на сегодняшний день заслуживают внимания только три дистрибутива: Red Hat Linux Cyrillic Edition, Linux Mandrake Russian Edition (и его потомок ALTLinux) и ASPLinux. Я могу привести следующие доводы в пользу такого выбора:

Эти дистрибутивы принадлежат к семейству дистрибутивов, строящихся на основе Red Hat Linux, выпускаемого одноименной американской фирмой, а судя по материалам Интернета, Red Hat - это самый распространенный в мире дистрибутив.Эти дистрибутивы изначально русифицированы.В каждом из них имеется достаточно отлаженная процедура установки, автоматически распознающая большинство компонент аппаратного обеспечения, что очень облегчает процедуру инсталляции системы.Легко устанавливается (добавляется) дополнительное программное обеспечение, поскольку оно поставляется в RPM-пакетах (это такая технология распространения ПО, вроде программы setup под Windows).Эти дистрибутивы поддерживаются сформировавшимися командами разработчиков и постоянно обновляются, поэтому можно рассчитывать на то, что Вы будете иметь возможность работать с последними версиями Linux.



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

Версии ядра Linux принято обозначать тремя числами, разделенными точкой. Например, дистрибутив Black Cat версии 5.2 был построен на основе ядра версии 2.0.36, т. е. это был Linux версии 2.0.36. Версии ядра с нечетным значением второй цифры обычно не используются для создания дистрибутивов, потому что являются экспериментальными (отладочными). Они распространяются, в основном, для того, чтобы энтузиасты могли их протестировать с целью выявления всех недостатков. Естественно, что такая версия может работать неустойчиво. Версии с четной второй цифрой являются (считаются) устойчиво работающими. Вы, конечно, можете установить любую версию, но для новичков все же обычно рекомендуют выбирать версию ядра с четной второй цифрой в номере версии. Конечно, если Вы устанавливаете полный дистрибутив, то выбор ядра за вас сделали его разработчики, но о нумерации версий вам надо знать, если Вы когда-нибудь задумаетесь об обновлении ядра.


Где взять Linux?


И, в заключение первой лекции, краткий ответ на вопрос, сформулированный в заголовке раздела.

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

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

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


  3)

  В настоящее время эти трудности преодолены и Linux успешно работает на всех процессорах от Intel.

  4)

  Можно отметить, что с каждой новой версией ядра требования к аппаратной конфигурации все возрастают. Приведенные в таблице 1.1 данные относятся к дистрибутиву Black Cat Linux 5.2. Как показывают мои эксперименты по установке Red Hat Linux 9 в минимальной конфигурации (см. страничку моих статей и переводов) для современных дистрибутивов требуется уже не менее 600 МБ на диске и 64 МБ памяти.

© 2003-2007 INTUIT.ru. Все права защищены.

Многопользовательский доступ


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



Немного истории


Вот текст сообщения, которое Торвальдс отправил в группу новостей comp.os.minix 25 августа 1991 года:

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)

Newsgroups: comp.os.minix

Subject: What would you like to see most in minix?

Summary: small poll for my new operating system

Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>

Date: 25 Aug 91 20:57:08 GMT

Organization: University of Helsinki

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.

This implies that I'll get something practical within a few months, and I'd like to know what features most people would want. Any suggestions are welcome, but I won't promise I'll implement them :-)

Linus (torvalds@kruuna.helsinki.fi)

PS. Yes - it's free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that's all I have :-(.

В этом сообщении Линус пишет, что он работает над (свободной) операционной системой для 386-х (486-х) компьютеров, и просит всех заинтересованных лиц сообщить, какие компоненты системы пользователи хотят видеть в первую очередь. Но, как видно из текста послания, оболочка bash и компилятор gcc у него уже работали. Работали они под управлением операционной системы Minix, которая была разработана профессором Э.Таненбаумом (Andy Tanenbaum) как учебное пособие для студентов-программистов. Minix работала на компьютерах с 286-ым процессором и послужила для Торвальдса прообразом новой ОС.

Файлы первого варианта Linux (версия 0.01) были опубликованы в Интернете 17 сентября 1991 года. Как пишет сам Торвальдс: "As I already mentioned, 0.01 didn't actually come with any binaries: it was just source code for people interested in what linux looked like. Note the lack of announcement for 0.01: I wasn't too proud of it, so I think I only sent a note to everybody who had shown interest1)."

Затем, 5 октября 1991 г. была выпущена версия 0.02, которая уже работала. Впрочем, подробное изложение истории Linux не входит в задачи данной книги, поэтому продолжать данную тему я не буду, отсылая заинтересованных читателей к http://www.li.org/linuxhistory.php.

Л. Торвальдс не стал патентовать или иным образом ограничивать распространение новой ОС. С самого начала2) Linux распространяется на условиях, определяемых лицензией General Public License (GPL), принятой для программного обеспечения, разрабатываемого в рамках движения Open Source и проекта GNU (см. http://linux.perm.ru/doc/misc/gpl.html). На Linux-сленге эту лицензию иногда называют Copyleft. Об этой лицензии, движении Open Source и проекте GNU необходимо поговорить особо.

В 1984 году американский ученый Ричард Столлман (Richard Stallman) основал Фонд Свободного Программного Обеспечения (Free Software Foundation). Целью этого фонда было устранение всех запретов и ограничений по распространению, копированию, модификации и изучению программного обеспечения. Ведь до тех пор коммерческие компании тщательно оберегали разработанное ими программное обеспечение, ограждали его патентами и знаками защиты авторских прав, держали в строжайшем секрете исходные коды программ, написанных на языках высокого уровня (типа С++). Столлман считал, что это наносит огромный вред развитию ПО, приводит к снижению качества программ и наличию в них огромного количества невыявленных ошибок. И, что хуже всего, это приводит к замедлению процесса обмена идеями в области программирования, тормозит создание нового ПО в силу того, что каждому программисту приходится полностью заново писать каждую программу, вместо того, чтобы заимствовать уже готовые куски исходного кода из готовых программ.



Общие библиотеки


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



Основные характеристики ОС Linux


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



Поддержка различных форматов файловых систем


Linux поддерживает большое число форматов файловых систем, включая файловые системы DOS и OS/2, а также современные журналируемые файловые системы. При этом и собственная файловая система Linux, которая называется Second Extended File System (ext2fs), позволяет эффективно использовать дисковое пространство.



Работа на разных аппаратных платформах


Хотя ОС Linux первоначально была разработана для ПК на базе Intel 386/486, сейчас она может работать на всех версиях Intel-овских микропроцессоров, начиная с 386 и кончая многопроцессорными системами на Pentium III (с Pentium IV возникли определенные трудности, но, судя по сообщениям в Интернете, они были вызваны ошибками в реализации процессора)1). Так же успешно Linux работает на различных клонах Intel от других производителей; в Интернете встречаются сообщения о том, что на процессорах Athlon и Duron от AMD Linux работает даже лучше, чем на Intel. Кроме того, разработаны версии для других типов процессоров - ARM, DEC Alpha, SUN Sparc, M68000 (Atari и Amiga), MIPS, PowerPC и других (отметим, что в настоящей книге рассматривается только вариант для IBM-совместимых компьютеров).



Реальная многозадачность


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



Семейство ОС типа UNIX


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

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

На сегодняшний день наиболее известными операционными системами для компьютеров являются семейства операционных систем Microsoft Windows и UNIX. Первые ведут свою родословную от операционной системы MS-DOS, которой оснащались первые персональные компьютеры фирмы IBM. Операционная система UNIX была разработана группой сотрудников Bell Labs под руководством Денниса Ричи, Кена Томпсона и Брайана Кернигана (Dennis Ritchie, Ken Thompson, Brian Kernighan) в 1969 году. Но в наши дни, когда говорят об операционной системе UNIX, чаще всего имеют в виду не конкретную ОС, а скорее целое семейство UNIX-подобных операционных систем. Само же слово UNIX (заглавными буквами) стало зарегистрированной торговой маркой корпорации AT&T.

В конце 70-х годов (теперь уже прошлого столетия) сотрудники Калифорнийского университета в Беркли внесли ряд усовершенствований в исходные коды UNIX, включая работу с протоколами семейства TCP/IP. Их разработка стала известна под именем BSD ("Berkeley Systems Distribution"). Она распространялась под лицензией, которая позволяла дорабатывать и усовершенствовать продукт, и передавать результат третьим лицам (с исходными кодами или без них) при условии, что будет указано, какая часть кода разработана в Беркли.

Операционные системы типа UNIX, в том числе и BSD, изначально разрабатывались для работы на больших многопользовательских компьютерах - мейнфреймах. Но персональные компьютеры постепенно наращивали мощь своего аппаратного обеспечения, и в наши дни они уже превосходят по возможностям те мейнфреймы, для которых в 70-х годах разрабатывалась ОС UNIX. И вот, в начале 90-х годов студент хельсинкского университета Линус Торвальдс (Linus Torvalds) приступил к разработке UNIX-подобной ОС для IBM-совместимых персональных компьютеров.



Сетевые возможности


Linux можно интегрировать в любую локальную сеть. Поддерживаются все службы Unix, включая Networked File System (NFS), удалeнный доступ (telnet, rlogin), работа в TCP/IP сетях, dial-up-доступ по протоколам SLIP и PPP, и т. д.. Также поддерживается включение Linux-машины как сервера или клиента для другой сети, в частности, работает общее использование (sharing) файлов и удаленная печать в Macintosh, NetWare и Windows.



Совместное использование исполняемых программ


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



Страничная организация памяти


Системная память Linux организована в виде страниц объемом 4K. Если оперативная память полностью исчерпана, ОС будет искать давно не использованные страницы памяти для их перемещения из памяти на жесткий диск. Если какие-либо из этих страниц становятся нужны, Linux восстанавливает их с диска. Некоторые старые Unix-системы и некоторые современные платформы (включая Microsoft Windows) переносят на диск все содержимое ОП, относящееся к неработающему в данный момент приложению, (т. е. ВСЕ страницы памяти, относящиеся к приложению, сохраняются на диске при нехватке памяти) что менее эффективно.



Свопирование оперативной памяти на диск


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



System V IPC


Linux использует технологию IPC (InterProcess Communication) для обмена сообщениями между процессами, использования семафоров и общей памяти.



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


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

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

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

Таблица 1.1. Требования к аппаратуре

Пожелания пользователяТребования к памятиТребования к объему жесткого диска
Минимальные требования: работа в текстовом режиме из командной строки shell4 Мбайт10 Мбайт
Работа в текстовом режиме через Midnight Commander4 Мбайт40 Мбайт
Для запуска графического интерфейса X Window8 Мбайт, но будет работать очень медленно, 16 Мбайт - более-менее приемлемо
Для работы с графическим интерфейсом X Window (запуск оконного менеджера)16 Мбайт300 Мбайт
Для запуска интегрированной графической среды KDE32 Мбайт500 Мбайт
Для запуска каждого отдельного большого приложения (типа GIMP, текстового процессора, базы данных или электронной таблицы)+2 Мбайт+50-100 Мбайт
Для работы с интегрированным офисным пакетом StarOffice64 Мбайт+250 Мбайт

Из этой таблицы можно заключить, что минимально приемлемой конфигурацией для освоения Linux является компьютер на 486-ом процессоре с 16 Мбайт ОЗУ и жестким диском объемом 300 Мбайт1). Далее надо заботиться только о наращивании оперативной памяти и объема жесткого диска, тут лишнего никогда не будет.

Снова сошлюсь на книгу А. Федорчука [П1.6], в которой большая глава посвящена выбору аппаратной платформы для Linux. В ней автор подробно рассматривает, как Linux относится к каждому компоненту компьютерной аппаратуры, начиная с чипсета и системной платы и кончая периферийными устройствами и источниками бесперебойного питания. Однако, на мой взгляд, на практике выбор компьютера определяется не операционной системой, а, в первую очередь, материальными возможностями владельца. И надо отнести к достоинствам ОС ее способность управлять не только самыми последними и "навороченными" моделями, но и уже "вышедшими из моды" или "морально устаревшими" экземплярами. Ведь так называемое "моральное устаревание" как раз и вызвано тем, что новые версии ПО от самых известных производителей заставляют списать в утиль вполне работоспособное оборудование. В этом смысле Linux имеет огромное преимущество, заключающееся в том, что она способна работать даже на тех компьютерах, где альтернативой ей может быть только MS DOS. Конечно, в таких случаях мы получим только режим командной строки, но, судя по различным источникам в Интернете, это не мешает использовать старые компьютеры для выполнения различных вспомогательных задач, например, в качестве маршрутизаторов.

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



Возможность запуска исполняемых файлов других ОС


Linux не является первой в истории операционной системой. Для ранее разработанных ОС, включая DOS, Windows 95, FreeBSD или OS/2, разработана масса различного, в том числе очень полезного и очень неплохого программного обеспечения. Для запуска таких программ под Linux разработаны эмуляторы DOS, Windows 3.1 и Windows 95. Более того, фирмой Vmware разработана система "виртуальных машин", представляющая собой эмулятор компьютера, в котором можно запустить любую операционную систему. Имеются аналогичные разработки и у других фирм. ОС Linux способна также выполнять бинарные файлы других Intel-ориентированных Unix-платформ, соответствующих стандарту iBCS2 (intel Binary Compatibility).



Загрузка выполняемых модулей "по требованию"


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



Что такое "геометрия диска"?


Как вы знаете, жесткие диски представляют собой несколько пластин с магнитным покрытием, расположенных на одной оси и вращающихся с большой скоростью. Считывание/запись информации осуществляется с помощью головок диска, расположенных одна под другой между пластинами и перемещающихся от центра к краям пластин. Окружность на магнитной пластине, которую описывает головка при вращении пластин, называется дорожкой, а совокупность таких дорожек, расположенных одна под другой (определяемая каждым фиксированным положением головок), называется цилиндром. Каждая дорожка разбита на сектора, и в сектор можно записать 512 байт полезной информации. Поэтому диски часто характеризуются совокупностью трех цифр: числом цилиндров/числом дорожек в цилиндре/числом секторов на дорожке или C/H/S (от первых букв соответствующих английских терминов: Cylinder/Head/Sector, т. е. цилиндр/головка/сектор). Эти три цифры называют "геометрией диска". Диск с геометрией C/H/S имеет объем C*H*S*512 байт.

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



Другие загрузчики ОС


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

Если у вас до установки Linux уже стояла ОС Windows NT, то вторым доступным для вас загрузчиком является OS Loader от NT. По сравнению с LILO загрузчик OS Loader имеет, по крайней мере, два преимущества. Во-первых, сохраняется вся старая конфигурация (у меня уже была возможность загружать по выбору Windows NT или Windows 95), и, во-вторых, можно установить Linux на диск, который не может быть загрузочным в Linux, например, второй диск на втором контроллере (Secondary Slave).Если у вас была установлена только ОС Windows 95 или Windows 98 и не было Windows NT или Windows 2000, то OS Loader у вас не установлен, и если вы почему-либо не хотите ставить LILO, можно воспользоваться программой-загрузчиком loadlin.exe (обычно поставляется вместе с дистрибутивом Linux).В состав некоторых дистрибутивов Linux в последнее время включается программа-загрузчик GRUB.В составе дистрибутива OS/2 фирмы IBM имеется программа-загрузчик, которая называется Boot Manager. Во многих руководствах ее рекомендуют использовать для организации многовариантной загрузки.В разных источниках упоминается также программа System Commander, которая тоже является многовариантным загрузчиком.Еще один многовариантный загрузчик входит в состав пакета PartitionMagic фирмы Power Quest, о котором мы будем говорить в следующем подразделе.

Кроме перечисленных я встречал упоминания еще о ряде загрузчиков (часть из которых можно найти в каталоге /public/ftp/pub/Linux/system/boot/loaders на сайте ftp://metalab.unc.edu). Но, поскольку я этими программами не пользовался, то рассказать о них подробнее не могу, и все мои последующие рекомендации будут основаны на использовании загрузчиков LILO, NT Loader и loadlin.exe. Если вы хотите установить другую программу-загрузчик, то вы должны почитать руководство по ее установке и использованию.



Перенос каталога /boot в DOS-раздел


Последние версии ядра Linux поддерживают возможность размещения файлов, необходимых на этапе загрузки, в файловой системе MS-DOS (или UMSDOS). Поскольку в большинстве случаев разделы DOS занимают как раз те области диска, где связанные с BIOS ограничения не действуют, это позволяет решить многие проблемы больших дисков, возникающие в тех случаях, когда раздел, отведенный для Linux, не может быть использован для размещения в нем каталога /boot.

Для того, чтобы реализовать такой вариант загрузки, DOS-раздел монтируется в режиме чтение/запись, создается каталог (например, /dos/linux), в который перемещаются все файлы из каталога /boot и образы ядер Linux, каталог /boot заменяется символической ссылкой на каталог /dos/linux, новое местоположение каталога /boot указывается в файле /etc/lilo.conf, и, наконец, запускается /sbin/lilo.



Подготовка к инсталляции


Устанавливать Linux можно одним из следующих способов:

с локального CD-ROM;с жесткого диска, на который скопирован дистрибутив Linux;с файл-сервера локальной сети по NFS;с другого компьютера в локальной сети через SMB;с удаленного компьютера (в том числе из Интернета) по протоколу FTP;с одного из WWW-серверов Интернета по протоколу HTTP.

На мой взгляд, наиболее удобен и практичен вариант установки Linux с CD-ROM, тем более, что купить нужный компакт-диск теперь не проблема.

Прежде чем приступить к инсталляции, соберите (запишите на листе бумаги) всю необходимую информацию о конфигурации вашего компьютера. Если ваш компьютер пока что работает под ОС Windows 95/98, то многое можно найти, щелкнув правой кнопкой мыши по значку My Computer (Мой компьютер), а затем выбрав команду Properties (Свойства). Там можно найти почти всю необходимую информацию. Если чего-то не найдете, придется искать другими способами, вплоть до того, что открыть компьютер и прочитать надписи на самих устройствах.

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

BIOS: фирма-производитель;версия.Контроллеры жестких дисков: тип (IDE или SCSI) и объем ваших жестких дисков (если у вас IDE диски, вы должны проверить, что BIOS вашего компьютера обеспечивает доступ к ним в режиме LBA): hda (Master на 1 контроллере или Primary Master);hdb (Slave на 1 контроллере или Primary Slave);hdc (Master на 2 контроллере или Secondary Master);hdd (Slave на 2 контроллере или Secondary Slave).фирма-производитель и номер модели SCSI адаптера (если имеется).Объем оперативной памяти (в килобайтах).CD-ROM: тип интерфейса (IDE, SCSI, или иной);для не-IDE, не-SCSI CD-ROM - фирма-производитель и номер модели.Мышь: тип (serial, PS/2, или bus mouse);протокол (Microsoft, Logitech, MouseMan, и т. д.);число кнопок;для мыши на последовательном порту также номер порта, к которому она подсоединена.Адаптер дисплея: фирма-производитель;номер модели (или чипсет, который использован);количество видео-памяти;Монитор: фирма-производитель;номер модели;граничные значения (min, max) частоты вертикальной и горизонтальной развертки (эти данные вы можете найти только в документации на монитор, их Windows не выдает, а между тем они очень важны при настройке графического интерфейса).Если вы собираетесь работать в сети (а UNIX вообще в первую очередь - сетевая ОС), то запишите следующие данные: фирма-производитель и номер модели сетевой карты;ваш IP адрес;сетевое имя вашего компьютера;маска подсети;IP адрес шлюза (gateway IP address);IP адреса серверов (основного и резервных) доменных имен (DNS server);IP адреса серверов WINS (Windows Internet Name Service);имя домена вашей организации.Тип и производитель звуковой карты и игровых контроллеров (если таковые имеются).



Предостережения и рекомендации


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

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

И еще одна важная рекомендация: если что-то пошло не так, не паникуйте. Могу поделиться своим печальным опытом: когда я первый раз устанавливал Linux на компьютере, на котором стояла Windows NT, я быстро потерял возможность ее загружать, и, не разобравшись в ситуации, посчитал, что ничего другого не остается, как отформатировать диск и установить все заново. Теперь я понимаю, что мог бы все восстановить, если бы не принял поспешного решения. Поэтому могу сказать, что Вернер Альмесбергер прав, когда в своем руководстве по загрузчику LILO дает следующие советы оказавшимся в затруднительной ситуации.

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

Можно добавить еще один общеизвестный совет.

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

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

Во-первых, не спешите и внимательно читайте те сообщения, которые появляются на экране, а также вдумывайтесь в то, какие варианты вы выбираете из числа предлагаемых вам на появляющихся экранных формах. В подтверждение этого совета могу рассказать, что когда я ставил Red Hat 7.1, то автоматически давил на кнопку Next, считая, что предлагаемый по умолчанию вариант вполне приемлем. В результате, после завершения инсталляции, я не смог достучаться до компьютера ни по одному из сетевых протоколов (telnet, ftp, NFS, Samba), хотя вроде бы задавал работу компьютера в сети. Оказалось, что в варианте, предлагаемом по умолчанию, устанавливается firewall, который закрывает доступ из сети. Чтобы такой доступ открыть, надо в ходе инсталляции явно задать, какие сервисы оставить открытыми. Но мы же так спешим!

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

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



Проблемы с большими дисками


В MS-DOS и первых версиях Windows доступ к дискам был организован через прерывание 13 (Int 13h) BIOS (в том числе на этапе начальной загрузки ОС). При этом использовалась адресация секторов на диске на основе указания номеров цилиндра, головки и сектора на дорожке (C/H/S). Точнее:

AH - выбор операции;CH - младшие 8 бит номера цилиндра;CL - 7-6 биты соответствуют старшим битам номера цилиндра, 5-0 биты соответствуют номеру сектора;DH - номер считывающей головки;DL - номер диска (80h или 81h).

(Заметим в скобках, что нумерацию физических цилиндров и дорожек принято начинать с 0, а сектора на дорожке нумеруют, начиная с 1). Однако практически головок было не более 16-ти, а число секторов на дорожке - не более 63, и хотя для указания цилиндра использовалось 10 бит, все равно BIOS не мог работать с дисками объемом более 1024*63*16*512 = 528 Мбайт.

Для преодоления этого ограничения стали применять разные хитрые приемы (подробнее об этом вы можете узнать из [П4.2]). Например, Extended CHS (ECHS) или "Large disk support" (иногда обозначается просто как "Large") использует еще три незанятых бита номера головки для увеличения числа адресуемых цилиндров. Это позволило использовать "фальшивую геометрию диска" в 1024 цилиндра, 128 считывающих головок и 63 сектора/дорожку. Трансляцию Extended CHS в реальный CHS-адрес (который может иметь до 8192 цилиндров) осуществляет BIOS. Это позволяет работать с дисками, объемом до 8192*16*63*512 = 4 227 858 432 байт или 4,2 Гбайт.

Но разработчики все увеличивали плотность записи на диск, число пластин и дорожек, изобретали другие способы увеличения объема дисков. В частности, число секторов на дорожках стало разным (на более длинных дорожках, расположенных ближе к краю пластин, число секторов стали увеличивать). В результате три числа C/H/S уже перестали правильно отражать "геометрию диска", а старые версии BIOS перестали обеспечивать доступ ко всему дисковому пространству.

Тогда придумали другой прием для работы с большими дисками через Int 13h - линейную адресацию блоков ("Linear Block Addressing" или LBA). Если не вдаваться в подробности, то можно сказать, что все сектора на диске нумеруются последовательно, начиная с первого сектора на нулевой дорожке нулевого цилиндра. Вместо CHS-адреса каждый сектор получает логический адрес - просто его порядковый номер в общем массиве секторов. Нумерация логических секторов начинается с нуля, причем нулевой сектор содержит главную загрузочную запись (MBR). В Setup BIOS поддержка преобразования линейного номера в CHS-адрес обозначается как "поддержка LBA". Таким образом, в новых версиях BIOS обычно имеется выбор из трех вариантов: "Large", "LBA" и "Normal" (последнее означает, что трансляция адресов не производится).

Но и в режиме LBA обращение к физическому диску все равно осуществляется через функции Int 13h, которые используют 3D нотацию (C,H,S). В силу этого возникает ограничение на возможный объем диска: BIOS, и, следовательно, MS-DOS и ранние версии Windows, не могли адресовать диски объемом более 8,4 Гбайт.

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

Еще раз хочется отметить, что все перечисленные ограничения существенны только на этапе загрузки ОС, поскольку сама Linux и последние версии Windows при работе с дисками уже не используют прерывание 13 BIOS, а используют собственные драйвера для работы с дисками. Но, прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS. Это и вызывает ограничения на размещение многих систем за пределами 8 Гбайт, они не могут оттуда загружаться, хотя после успешной загрузки могут работать с дисками гораздо большего объема. Для того, чтобы понять, как можно обойти эти ограничения, нам потребуются некоторые знания о том, как происходит загрузка ОС Linux.



Процесс загрузки ОС фирмы Microsoft


Какую бы операционную систему мы ни рассматривали, для того, чтобы ОС могла начать управлять компьютером, ее необходимо загрузить в оперативную память. Поэтому давайте кратко рассмотрим, как происходит процесс загрузки разных ОС. Поскольку нас интересует только загрузка с жестких дисков, то мы не будем рассматривать особенности загрузки с дискеты, CD-ROM и по сети. Начнем с доброй старой MS-DOS и MS Windows (не забывайте, что разработка и совершенствование персональных компьютеров шло параллельно с развитием ОС от Microsoft и решения, использованные в этих ОС, оказывали сильное влияние на те решения, которые принимались разработчиками аппаратуры).

Как вы знаете, при включении компьютера вначале запускается программа POST (Power On Self Test). Она определяет количество доступной памяти, тестирует ее, определяет наличие других компонент (клавиатура, винчестер...), инициализирует карты адаптеров. На экране обычно появляются сообщения о количестве памяти, о ее тестировании, перечень обнаруженных устройств (гибкие и жесткие диски, процессор, COM-порты и т. д.).

После завершения тестирования POST вызывает Int 19h, которое пытается найти загрузочное устройство. Поиск производится в том порядке, который определен в Setup BIOS, и осуществляется путем опроса нулевых секторов соответствующих устройств. Если диск является загрузочным, то в его нулевом секторе находится главная загрузочная запись - Master Boot Record (MBR). Последние два байта MBR - это "магическое число", которое является признаком того, что данный сектор есть MBR, а, следовательно, диск является загрузочным. Кроме "магического числа" MBR содержит таблицу разделов диска, о которой уже было сказано выше, и маленькую программу - первичный загрузчик, объемом всего 446 (0x1BE) байт.

В табл. 2.1 представлена структура главного загрузочного сектора, создаваемого при инсталляции Windows.

Таблица 2.1. Структура главного загрузочного сектора

СмещениеСодержание
0x000Код первичного загрузчика
0x1BEТаблица разбиения диска
0x1FE"Магическое число" (0xAA55)


MS-DOS, Windows95 и NT записывают DOS MBR при инсталляции. Стандартное для MS содержимое MBR можно также записать командой fdisk /mbr.

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

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

В разделе, отформатированном под файловую систему FAT, вторичный загрузчик занимает один сектор (512 байт). В разделе, отформатированном под файловую систему NTFS, вторичный загрузчик занимает уже несколько секторов.

Вторичный загрузчик загружает первый слой программ, необходимых для запуска операционной системы. В случае MS DOS программа-загрузчик загружает IO.SYS по адресу 700h, затем MSDOS.SYS и передает управление разделу SYSINIT модуля IO.SYS.

Если по каким-либо причинам на диске не найден активный раздел, процесс загрузки продолжается обработкой прерывания 18h. Эта ветвь реально используется очень редко, но такая возможность может быть очень полезна в некоторых ситуациях. При удаленной загрузке, когда операционная система загружается с сервера, это прерывание перенаправляется программой POST на ROM сетевой карты.

Для других ОС от Microsoft процесс загрузки происходит аналогично

Windows95 загружается так же, как и DOS, но заменяет IO.SYS и MSDOS.SYS своими файлами. DOS-овские сохраняются в файлах IO.DOS и MSDOS.DOS соответственно. Когда вы выбираете загрузку сохраненного DOS, Windows95 переименовывает свои файлы в файлы с расширением w40 и восстанавливает первоначальные имена DOS-овских системных файлов. Процесс продолжается с загрузки DOS-овского IO.SYS. Таким образом, загрузочные сектора DOS и Windows95 одинаковые.Windows NT4 использует MBR DOS, но заменяет загрузочную запись активного раздела таким образом, что вместо IO.SYS загружается NTLDR. Это уже мощная программа, которая многое может сделать. В частности, она находит файл boot.ini и, если параметр timeout > 0, предлагает меню загрузки.



Каждая строка секции [operating systems] файла boot. ini определяет один из вариантов загрузки и строится по следующему шаблону

адрес_вторичного_загрузчика="название_варианта"

Адресом вторичного загрузчика может являться указание на конкретный раздел диска или на файл загрузчика. Вот пример файла boot.ini:

[operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 RUS" multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 RUS [VGA mode]" /basevideo /sos C:\="Microsoft Windows" C:\BOOTSECT.LNX="Linux"

Если пользователь выбирает NT, то выполняется загрузка по адресу раздела, указанному в первой строке раздела. В строке, соответствующей Microsoft Windows, указан просто диск "C:\", так как имя загрузочного файла берется по умолчанию: bootsect.dos. Файл грузится в память и загрузка продолжается так, как если бы загрузочная запись раздела была загружена программным кодом из MBR.

Для загрузки других систем можно воспользоваться таким же приемом. Для этого в boot.ini нужно добавить строки, содержащие ссылки на другие загрузочные файлы. При выборе такой строки будет загружаться соответствующая ОС. В приведенном выше примере этим способом обеспечивается загрузка Linux. Для этого в файле C:\BOOTSECT.LNX должно быть предварительно записано содержимое загрузочной записи, создаваемой Linux (точнее - LILO, стандартным загрузчиком Linux).


Программы для разбиения диска


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

В составе дистрибутивов Red Hat и BlackCat ( вероятно, и в других тоже) имеется программа fips, которая служит для переразбиения диска. Однако отзывы, которые я слышал, не воодушевили меня на использование этой программы. Поэтому мой вам совет - если хотите переразбить диск без потери информации, найдите программу Partition Magic фирмы Power Quest (www.powerquest.com) и воспользуйтесь ею.

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

Во-вторых, эта программа (даже в варианте для DOS) предоставляет вам удобный графический интерфейс, так что все осуществляемые действия вы видите наглядно. Никакого сравнения с интерфейсом командной строки программы fdisk. Я пользовался 5-ой версией этой программы. Она отказывается работать под Windows 2000 и Windows NT, однако в ее дистрибутиве имеется возможность изготовить две дискеты, которые служат для загрузки компьютера в режиме DOS (вариант Caldera DR-DOS) и последующего запуска программы. Эти дискеты прекрасно позволяют переразбить и диск, на котором установлена Windows NT или 2000.

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

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



Разделы диска и таблица разбиения диска


Физические диски в Intel-системах принято разбивать на разделы. Повелось это, кажется, из-за того, что первые версии MS-DOS не могли обеспечить доступ к большим дискам (а объемы дисков росли быстрее, чем возможности DOS). Тогда придумали разбиение дисков на разделы. Для этого в нулевой сектор диска (нулевой сектор первой дорожки на нулевом цилиндре) стали записывать так называемую таблицу разбиения диска на разделы (partition table). Каждый раздел может трактоваться как отдельный физический диск. В частности, в разные разделы могут быть установлены разные операционные системы.

Таблица разделов содержит 4 записи по 16 байт для 4 разделов, которые называют первичными. Каждая запись имеет следующую структуру:

struct partition { char active; /* 0x80: раздел активный (загрузочный), 0: не активный char begin[3]; /* CHS первого сектора, 24 бита char type; /* тип раздела (например, 83 - LINUX_NATIVE, 82 LINUX_SWAP, 85 - LINUX_EXTENDED) char end[3]; /* CHS последнего сектора, 24 бита int start; /* номер начального сектора (32-бита, счет начинается с 0) int length; /* число секторов в разделе (32 бита) };

Таблица разделов диска создается обычно с помощью программы fdisk. В ОС Linux имеется как стандартная программа fdisk (которая, впрочем, существенно отличается от программы fdisk в MS-DOS и Windows), так и еще две программы для работы с разделами диска: cfdisk и sfdisk. Программа cfdisk, как и fdisk, предназначена для работы с таблицей разделов диска: она не обращает никакого внимания на информацию, которая уже имеется на диске. Отличается она только несколько более удобным интерфейсом, предоставляющим пользователю не просто подсказку по командам, а систему меню. Программа sfdisk обладает несколько более широкими возможностями, в частности, она позволяет произвести некоторые операции над существующими разделами диска.

DOS использует поля begin и end таблицы разбиения диска и функции прерывания 13 BIOS (Int 13h) для доступа к диску, и поэтому не может использовать диски объемом более 8,4 Гбайт, даже с новым BIOS (об этом будет рассказано ниже), а разделы не могут быть более 2,1 Гбайт (но это уже из-за ограничений файловой системы FAT16).

Linux использует только поля start и length таблицы разбиения диска и поддерживает разделы, содержащие до 232 секторов, т. е. размер раздела может достигать 2 Тбайт.

Поскольку в таблице разбиения отведено только 4 строки для задания разделов, число первичных разделов на диске с самого начала ограничено: их может быть не более 4. Когда стало ясно, что и 4-х разделов мало, были изобретены логические разделы. Для этого один из первичных разделов объявляется "расширенным" (тип раздела - 5, или F, или 85 в шестнадцатеричной системе), и в нем создаются "логические разделы". Расширенные разделы сами по себе не используются, они могут лишь хранить логические разделы. Первый сектор расширенного раздела хранит таблицу разделов с четырьмя входами: один используется для логического раздела, другой для еще одного расширенного раздела, а два не используются. Каждый расширенный раздел имеет свою таблицу разбиения, в которой, как и в первичном расширенном разделе, используются только две строки, задающие один логический и один расширенный раздел. Таким образом, получается цепочка из таблиц разделов, где первая описывает три основных раздела, а каждая следующая - один логический раздел и положение следующей таблицы.

Программа sfdisk в Linux показывает всю цепочку:

[root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0


Device Boot Start End #cyls #blocks Id System /dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16 /dev/ hda2 190 783 594 4771305 5 Extended /dev/hda3 0 - 0 0 0 Empty /dev/hda4 0 - 0 0 0 Empty

/dev/hda5 190+ 380 191- 1534176 6 FAT16 - 381 783 403 3237097+ 5 Extended - 190 189 0 0 0 Empty - 190 189 0 0 0 Empty

/dev/hda6 381+ 783 403- 3237066 7 HPFS/NTFS - 381 380 0 0 0 Empty - 381 380 0 0 0 Empty - 381 380 0 0 0 Empty

Число логических разделов в принципе не ограничено, потому что каждый логический раздел может содержать таблицу разделов и вложенные логические разделы. Однако реально ограничения все же существуют, например, Linux может работать не более чем с 15 разделами на SCSI-дисках и не более чем с 63-мя разделами на IDE-дисках.

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

В Linux диск в целом (т. е. физический диск) доступен по имени устройства /dev/hda, /dev/hdb, /dev/sda, и т.п. Первичные разделы обозначаются дополнительной цифрой в имени устройства: /dev/hda1, /dev/hda2, /dev/hda3, /dev/hda4, а логические разделы в Linux доступны по именам /dev/hda5, /dev/hda6 ... (начиная с номера 5). Из сказанного выше должно быть ясно, почему могут быть пропущены имена /dev/hda3 и /dev/hda4 (третий и четвертый первичные разделы просто не были созданы) и сразу после /dev/hda2 вы увидите /dev/hda5 (логический раздел в расширенном разделе /dev/hda2), а далее нумерация идет последовательно.

В Windows логические разделы получают однобуквенные имена, начиная с последнего задействованного имени первичного раздела. Если, например, имеется один жесткий диск с двумя простыми первичными разделами (C: и D:) и одним расширенным разделом, в котором созданы два логических раздела, то эти логические разделы именуются E: и F:. Впрочем, в Windows NT и 2000 с помощью администратора дисков разделам могут быть присвоены другие буквенные имена.


Рекомендации по созданию разделов


Рекомендации тут давать довольно сложно, так как во многом это зависит от воли и потребностей хозяина диска. Но все же попробую сформулировать некоторые предложения. При этом диски и разделы буду именовать так, как это принято в Linux, т. е. /dev/hda, /dev/hdb и т. д. для дисков, и /dev/hda1, /dev/hda2 и т. д. - для разделов на диске.

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

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

Таблица 2.2. Требования ОС к дисковому пространству

Операционная системаТребует
Windows 95100 Мбайт
Windows 98200 Мбайт
Windows NT200 Мбайт
Windows 2000700 Мбайт
Linux Red Hat 6.2 (в режиме рабочей станции с KDE)700 Мбайт

Однако помните, что надо учесть не только объем файлов самой операционной системы, но и того программного обеспечения, которое вы планируете в ней запускать, а также оставить существенный резерв для того программного обеспечения, которое вы захотите установить в последующем (это неизбежно!). Учтите, что те 700 Мегабайт, которые указаны для Linux в приведенной выше таблице, включают место для всего ПО, которое устанавливается вместе с Linux по умолчанию, в том числе, например, мощный текстовый процессор Lyx. Оценки же, которые даны для Windows, касаются только самой ОС. Если, например, вместе с Windows 2000 установить MS Office 2000 в стандартной конфигурации, то места на диске потребуется много более гигабайта.

Судя по моему опыту, для нормальной работы с Windows 95/98, Windows NT и Linux вполне достаточно выделить разделы объемом 800-1000 Мбайт (конечно, если вы не ставите громоздких программных пакетов, вроде Corel Draw) , а вот для Windows 2000 требуется уже побольше.

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

В Linux RAM и пространство swap складываются, образуя общую виртуальную память. Например, если у вас 8 Мбайт ОЗУ (RAM) и 12 Мбайт swap-пространства, вы имеете 20 Мбайт виртуальной памяти.Для работы Linux надо иметь, по крайней мере, 16 Мбайт виртуальной памяти, так что при 4 Мбайт ОЗУ вы должны выделить под swap не менее 12 Мбайт.В Linux размер одного swap-раздела не может превышать 128 Мбайт. То есть раздел под swap вы можете выделить произвольного размера, но Linux не сможет использовать более 128 Мбайт. Если вы хотите иметь виртуальной памяти больше, надо создавать два swap-раздела или использовать файл подкачки.Рассчитывая размер пространства свопинга, имейте в виду, что слишком большое количество этого пространства может оказаться вовсе бесполезным. На компьютере с 16 Мбайт ОЗУ при стандартной конфигурации Linux и стандартном наборе ПО вполне достаточно иметь 48 Мбайт пространства свопинга, а для минимальной конфигурации Linux можно обойтись вообще без swap-пространства. Конечно, точное значение этого параметра существенно зависит от того набора приложений, которое будет у вас установлено.


В общем, долгие размышления по поводу объема swap-раздела нужны только в том случае, когда у вас маленький диск и мало ОП. В противном случае для начала задайте размер swap-раздела таким образом, чтобы объем виртуальной памяти был не менее 128 Мбайт. А если у вас больше 128 Мбайт оперативной памяти, то этот раздел вообще может оказаться ненужным.

Все остальные части Linux и работающее под ней программное обеспечение, в принципе, могут размещаться в одном разделе. Однако имеет смысл подумать о том, чтобы разместить файловую систему Linux в нескольких отдельных разделах. А. Федорчук, например, рекомендует выделить для файловой системы Linux три раздела. Первый из них (на мой взгляд, под него достаточно отвести раздел размером в один гигабайт) будет содержать корневую файловую систему (/). Второй раздел отводим для каталога /home. И третий раздел монтируется как каталог /usr. Такое разбиение обосновывается следующими соображениями. Как бы ни была устойчива и надежна ОС Linux, иногда возникает необходимость переустановить ее. Например, вы решили обновить версию дистрибутива, или по неопытности разрушили жизненно важные для системы файлы. Если все установлено в один раздел, вы при переустановке теряете все, что наработали и хранили в своем домашнем каталоге. Кроме того, потеряны будут и установки программных пакетов, которые вы компилировали из исходных кодов, или другим способом устанавливали уже после установки системы. Большая часть таких пакетов по умолчанию инсталлируется в каталог /usr. Если же отвести для этих каталогов отдельные разделы на диске и при переустановке системы не форматировать эти разделы, все наработанное можно будет (может быть после небольших дополнительных настроек) сохранить и использовать после переустановки самой ОС. В разрабатываемом сейчас стандарте на файловую систему Linux (подробнее об этом будет рассказано в лекции 4) тоже имеется рекомендация о размещении каталога /usr в отдельном разделе диска.

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

Из того, что было сказано в предыдущих разделах, следует, что программы-загрузчики должны располагаться в пределах первых 1024 цилиндров. Между прочим, NT Loader может располагаться не обязательно в NTFS-разделе, как и вообще не в том разделе, где расположены остальные файлы ОС. Как сказано выше, для Linux тоже можно расположить корневой каталог вместе с подкаталогом /boot в "нижних" цилиндрах, а остальное - где угодно.

Поэтому в этом случае мои предложения сводятся к следующему:

загрузочные части всех систем от Microsoft поместить в первый первичный раздел диска, который отформатировать в системе FAT16 (в DOS);следующий первичный раздел выделить для корневого каталога Linux (/), размер которого сделать равным примерно 1 Гбайту;выделить swap-раздел для Linux (рекомендации о его размерах даны выше);все остальное дисковое пространство сделать расширенным разделом;в расширенном разделе создать логические разделы для каждой из устанавливаемых ОС: Windows 98, Windows NT или 2000, а также для файловых систем /home и /usr ОС Linux (в /home будут располагаться личные файлы пользователей, а в /usr устанавливаются все приложения).



Конечно, если у вас стоит только Windows 95 c FAT16, то можете оставить ее в первом разделе. Если же у вас была установлена Windows NT или FAT32, то наличие небольшого раздела с FAT16 будет не лишним. Во-первых, даже в случае любого краха системы вы всегда сможете загрузиться с DOS-овской загрузочной дискеты и хотя бы увидеть, что жесткий диск работоспособен (в принципе). А во-вторых, файловая система FAT16 видна из-под любой ОС, в том числе Linux, так что этот раздел может служить для обмена файлами между разными системами. Но делать этот раздел большим не стоит - FAT16 очень нерационально использует дисковое пространство. Поэтому отведите под него, скажем, 256 или 512 Мбайт.

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


Установка других операционных систем после Linux


При инсталляции MS-DOS и Windows 95/98 ее стандартный загрузчик независимо от вашего желания записывается в Master Boot Record (MBR), а признак активности в таблице разделов ставится на раздел MS-DOS (Windows 95/98). А стандартный загрузчик MS-DOS и Windows 95/98 умеет только передавать управление на первый сектор активного раздела. Поэтому, если вы вначале установите Linux, а потом будете ставить Windows 95/98 или MS-DOS, то Linux перестанет загружаться. Говорят, что Windows NT и 2000 загрузчик из MBR не трогают (но сам я этот факт не проверял). Восстановить загрузку LILO можно либо путем перезапуска /sbin/lilo (если LILO установлен в MBR), либо сделав активным раздел LILO (если он установлен в первичный раздел).

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



Установка и настройка загрузчика LILO


Как уже было сказано в разделе о выборе загрузчика, если у вас была установлена Windows 98 с файловой системой FAT16, то наиболее логичным и доступным выбором является использование программы, которая входит в состав всех дистрибутивов ОС Linux, и называется LILO (LInux LOader)..

Так же, как в случае с Windows NT, приведем пошаговые инструкции того, как в этом случае настроить процесс загрузки.

До начала каких-либо действий по инсталляции Linux изготовьте загрузочную дискету Windows.С помощью программы Partition Magic освободите часть дискового пространства и создайте на свободном месте раздел типа ext2 (файловая система Linux) и swap-раздел. О том, как это сделать, рассказано выше. Если объем вашего жесткого диска превышает 8,4 Гбайта, особенно внимательно прочитайте разд. 2.3-2.5.Проведите процедуру инсталляции Linux, следуя рекомендациям, прилагаемым к имеющемуся у вас дистрибутиву. Учтите, что если вы вознамерились использовать загрузчик LILO, вам необходимо при инсталляции системы установить LILO в основную загрузочную запись (Master Boot Record). Изготавливать в процессе установки загрузочную дискету, в принципе, не обязательно, но я очень рекомендую вам это сделать.

Примечание

Загрузчик LILO не обязательно устанавливать в главную загрузочную запись диска, он может располагаться в загрузочной записи первичного активного Linux-раздела или даже логического раздела в расширенном разделе. В таком случае в MBR должно быть нечто, способное его загрузить, например, стандартный загрузчик MS-DOS или Windows. Но необходимости применения такого варианта я не вижу (раз уж вы используете LILO в качестве основного загрузчика), поэтому здесь его рассматривать не будем.

На следующем шаге нужно заставить LILO загружать ОС по выбору. LILO конфигурируется с помощью файла /etc/lilo.conf и команды /etc/lilo. Эта команда устанавливает (или переустанавливает) LILO.

Рассмотрим небольшой пример файла конфигурации LILO. Для примера будем считать, что устройство /dev/hda1 является разделом с DOS/Windows, а раздел /dev/hda2 содержит Linux. В таком случае файл /etc/lilo.conf может иметь примерно такой вид:


boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.2.11-4bc label = linux read-only other = /dev/hda1 table = /dev/hda label = dos

Дадим некоторые пояснения к этому примеру.

Строка boot указывает загрузочное устройство.

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

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

Начиная со строки image, идут секции конфигурационного файла, соответствующие разным операционным системам, которые должны загружаться по выбору пользователя. В каждой такой секции имеется строка label. В этой строке записывается имя, которое вводится в ответ на приглашение LILO или является командой меню и служит для выбора пользователем загружаемой ОС. Если имя не введено по истечении времени, заданного строкой delay (задается в десятых долях секунды), будет загружена ОС, выбираемая по умолчанию. В данном случае по умолчанию будет загружаться Linux, поскольку соответствующая ей секция стоит первой в файле. Можно указать загружаемую по умолчанию систему с помощью строки вида default=dos (т. е., используя метку из соответствующей строки label).

Строка table=<device> содержит указание на устройство, на котором находится таблица разбиения диска. LILO не передает информацию о разбиении загружаемой операционной системе, если эта переменная не задана. (Некоторые операционные системы имеют другие средства для определения того, из какого раздела они загружены.) Не забывайте, что необходимо выполнить команду /sbin/lilo, если вы изменили ссылку на таблицу разбиения, задаваемую переменной table.

Если вы задали строку (лучше сказать, секцию) other = /dev/hda1 в файле /etc/lilo.conf, то в корневом каталоге диска /dev/hda1 (диска C: в терминологии Microsoft) должен находиться вторичный загрузчик. У меня, например, на одном из компьютеров с многовариантной загрузкой там находится NT Loader (поскольку Windows NT была установлена до Linux), и LILO успешно загружает Windows NT. Только надо установить в файле boot.ini задержку времени равной нулю, чтобы не получать собственного меню загрузки NT Loader. Впрочем, если вы хотите по каким-то причинам видеть это меню, то значение timeout в файле boot.ini надо задать отличным от нуля (задается в секундах). Это может понадобиться, например, для обеспечения возможности загружать Windows 98 как еще один вариант ОС.



Если вы хотите грузить Windows непосредственно из LILO, то добавьте в /etc/lilo.conf еще одну секцию:

other = /boot/bootsect.dos label = win,

где файл bootsect.dos берется из корневого каталога того диска, на котором стоит NT Loader.

После того, как вы откорректировали файл /etc/lilo.conf, необходимо выполнить команду /etc/lilo, чтобы изменения вступили в силу. Эта команда (которая в руководстве называется map-installer) устанавливает вторичный загрузчик системы, который будет активизирован во время следующей загрузки машины. Прежде, чем запускать /etc/lilo для модификации загрузочных процедур, выполните эту команду с параметром -t. При этом будет выполнена вся процедура инсталляции загрузчика, кроме изменения map-файла, записи модифицированного загрузочного сектора и изменения таблицы разбиения диска, то есть выполнен тест нового варианта. Если добавить еще опцию -v, вы получите более подробную информацию о том, что будет делать команда /etc/lilo.

Когда /sbin/lilo перезаписывает загрузочный сектор, старое содержимое этого сектора автоматически сохраняется в файле. По умолчанию это файл /boot/boot.NNNN, где NNNN соответствует номеру устройства, например, 0300 - это /dev/hda, 0800 - это /dev/sda и т. д. Если такой файл уже существует, он не перезаписывается. Но можно задать альтернативный файл для сохранения загрузочного сектора.

Файл /boot/boot.NNNN можно использовать для восстановления старого содержимого загрузочного сектора, если более простой метод его восстановления недоступен. Соответствующие команды имеют вид:

[root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

или

[root:~#] dd if=/boot/boot.0800 of=/dev/sda bs=446 count=1

(bs=446 потому что восстанавливаем только программу-загрузчик, и не трогаем таблицу разбиения диска).

Копию загрузочного сектора лучше сохранить на дискете. В случае, если неприятности произойдут, вы сможете восстановить старую загрузочную запись MBR, выполнив команду (предполагается, что дискета смонтирована в каталог /mnt):



[root:~#] dd if=/mnt/MBR of=/dev/hda bs=446 count=1

Восстановить старый MBR при необходимости можно также командой /sbin/lilo с опцией -u. Только надо иметь в виду, что эта команда отрабатывает корректно при условии, что каталог LILO (а именно, /boot) не изменялся со времени инсталляции.

Стандартный MBR от MS-DOS может быть восстановлен также, если воспользоваться загрузочной дискетой системы DOS, восстановив MBR командой fdisk /mbr. Она изменяет только код программы-загрузчика в MBR, не изменяя таблицу разбиения диска.

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

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

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

Ничего не выведено - никакая часть LILO не была загружена. Либо LILO не был установлен, либо раздел, на котором он находится, не является активным.L [код ошибки] - первичный загрузчик загрузился и стартовал (на него передано управление), но он не сумел загрузить вторичный загрузчик. Двухзначный код ошибки указывает на конкретную причину проблемы (расшифровку кодов надо искать в технической документации на LILO). Обычно это связано с дефектами носителя или неправильно заданной геометрией диска. Если только LILO не остановился на этом этапе, выдавая бесконечную последовательность кодов ошибки, проблема обычно легко решаема.LI - первичный загрузчик сумел загрузить вторичный загрузчик, но не сумел запустить его на выполнение. Это может быть вызвано ошибкой в задании геометрии диска или тем, что файл /boot/boot.b был перемещен без перезапуска /sbin/lilo.LIL - вторичный загрузчик запустился, но не смог загрузить таблицу дескрипторов из map-файла. Причина обычно состоит в наличии дефектов на диске или неправильно заданной геометрией диска.LIL? - вторичный загрузчик был загружен по неправильному адресу. Обычно вызвано ошибкой в задании геометрии диска или тем, что файл /boot/boot.b был перемещен без перезапуска /sbin/lilo.LIL- - таблица дескрипторов разрушена. Обычно вызвано ошибкой в задании геометрии диска или тем, файл /boot/boot.b был перемещен без перезапуска /sbin/lilo.LILO - все части LILO успешно загружены.


Варианты загрузки


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

Если у вас установлена Windows NT или Windows 2000, то используйте NT Loader.Если у вас стоит Windows 95 или Windows 98 на FAT16, и вы не хотите ставить программу-загрузчик из другой ОС или от независимого разработчика, то можете либо использовать LILO, либо сначала запускать ДОС, а затем загружать Linux с помощью loadlin.exe (или другой аналогичной программы, их существует несколько, но другие мы рассматривать не будем).Если у вас установлена Windows 95 OSR2 или Windows 98 на FAT32, и вы не хотите ставить программу-загрузчик из другой ОС или от независимого разработчика, то вы должны будете использовать loadlin.exe. Многие HOWTO утверждают, что не нужно использовать LILO, если активный раздел у вас форматирован в системе FAT32, хотя причины этого мне неизвестны. Но моя собственная попытка загружать Linux через NT Loader, установленный в FAT32-разделе, окончилась неудачей. Так что мне тоже пришлось в этом случае воспользоваться программой loadlin.exe, которая с успехом справилась с задачей, и при этом вообще произвела на меня самое благоприятное впечатление, так что я рекомендую вам применять ее для загрузки Linux.

В следующих разделах я расскажу о том, как установить Linux, используя все три варианта загрузки: через загрузчик NT Loader, загрузчик LILO и загрузчик loadlin.exe. Но до установки загрузчика надо подготовить разделы на диске (или, по крайней мере, продумать, как их организовать).



Выбор загрузчика


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



Windows NT и Linux : загрузка через OS Loader от NT


В этом разделе, говоря о Windows NT, я все время буду иметь в виду и Windows 2000, так как в части установки Linux между ними различий нет. Будем предполагать, что Windows NT установлена в разделе /dev/hda2 (как вы помните, /dev/hda1 предлагалось отвести под FAT16-раздел). Раз ОС Windows NT на вашем компьютере уже установлена, значит и загрузчик OS Loader тоже уже установлен, а, следовательно, вполне логично использовать его и для загрузки Linux. Я надеюсь, что вы сделали резервную копию всей ценной для вас информации с жесткого диска(ов). После этого можно перейти к установке Linux. Этапы установки можно описать следующим образом.

Если вы не сделали этого ранее, то до начала каких-либо действий по инсталляции Linux изготовьте загрузочные дискеты для загрузки и восстановления Windows NT. Для создания загрузочной дискеты достаточно скопировать на отформатированную дискету файлы ntldr, ntdetect.com и boot.ini из корневого каталога загрузочного диска. Программу создания дискеты аварийного восстановления для Windows 2000 можно запустить из панели управления (команда Архивация данных), а в Windows NT 4.0 я ее сумел найти только с помощью поиска в справочной системе (ищите "Создание диска аварийного восстановления").С помощью программы Partition Magic освободите часть дискового пространства и создайте на свободном месте раздел типа ext2 (файловая система Linux) и swap-раздел. О том, что надо при этом учесть, было рассказано выше.Проведите процедуру инсталляции Linux, следуя рекомендациям, прилагаемым к имеющемуся у вас дистрибутиву. В ходе процедуры инсталляции учтите следующее: во-первых, в процессе установки надо обязательно изготовить загрузочную дискету, для чего при запросе о создании загрузочного диска выбрать команду Yes, make a BOOT DISK (Создать загрузочный диск). Этот диск понадобится вам на одном из следующих этапов. Кроме того, в последующем можно будет просто использовать эту дискету для загрузки Linux. Это тоже вариант загрузки, тем более что, в отличие от загрузочной дискеты ДОС, после загрузки система уже о дискете не вспоминает, ее можно убрать из дисковода (даже размонтировать не требуется) и использовать дисковод для работы с обычными дискетами. Однако этот метод все же не совсем удобен, так что я не предлагаю вам использовать его постоянно. Только как запасной! Но это потом, а при настройке многовариантной загрузки он будет просто необходим!во-вторых, при установке Linux надо установить LILO не в главный загрузочный сектор диска (Master Boot Record), а в первый сектор того раздела, который вы отвели для корневого раздела Linux. Для определенности предположим, что Linux устанавливается в первый сектор раздела /dev/hda3.


В принципе, если вы установите LILO в MBR, то и это не смертельно, конечный результат (загрузка через NT Loader) может быть достигнут и в этом случае, но потребуется больше усилий. Дело в том, что формат MBR, создаваемого LILO и Windows (DOS), различен. Поэтому если вы поставите LILO в MBR, вам придется потом восстановить MBR от Windows. На всякий случай я позже расскажу, как это делается, но лучше будет, если вы сразу поставите LILO в первый сектор его собственного раздела.

После завершения инсталляции загрузите Linux с помощью загрузочной дискеты (если вы установили LILO в раздел Linux и не трогали MBR, то другой возможности загрузить Linux у вас пока нет).Скопируйте загрузочный сектор Linux в файл; он понадобится для того, чтобы загрузчик Windows NT/2000 мог запускать Linux. Для этого надо смонтировать чистую дискету, например, так: [root]# mount -t vfat /dev/fda1 /mnt/floppy перейти в каталог /mnt/floppy [root]# cd /mnt/floppy

и выполнить команду

[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1

которая позволяет записать содержимое загрузочного сектора диска /dev/hda3 в файл /mnt/floppy/bootsect.lnx.



Примечание

Хочу заметить, что если диск C: (/dev/hda1) отформатирован в системе FAT, то можно сразу создать файл bootsect.lnx в корневом каталоге диска C:. Отмечу, что я не знаю (не пробовал) можно ли будет загружаться без дискеты, если первый раздел загрузочного диска отформатирован в NTFS. Но думаю, что проблем и здесь не будет, кроме необходимости переноса boot-сектора через дискету, поскольку пока что поставляемые в дистрибутиве варианты ядра не поддерживают NTFS.
Далее необходимо перезагрузиться, чтобы запустить Windows NT, для чего даем в Linux команду: [root]# shutdown -h now

Поскольку главная загрузочная запись не была изменена, должна загрузиться Windows NT. После завершения загрузки необходимо перенести файл /mnt/floppy/bootsect.lnx в корневой каталог диска C:, точнее - в корневой каталог того раздела, с которого загружается Windows NT. В зависимости от того, как вы устанавливали Windows NT, это может быть как FAT16-раздел, так и NTFS-раздел. Признаком нужного раздела является наличие в нем файлов ntldr и boot.ini (эти файлы могут быть скрытыми!). Файлу bootsect.lnx можно присвоить атрибут read-only.

После завершения загрузки NT найдите файл boot.ini в корневом каталоге и добавьте в него следующую строчку: C:\bootsect.lnx="LINUX"



(естественно, что в кавычках вы можете поставить все, что вам угодно).

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

Теперь отдельно рассмотрим случай, когда вы (по ошибке или намеренно) установили LILO в главную загрузочную запись диска (Master Boot Record, MBR). В этом случае загрузочная запись Windows NT (или 2000) будет затерта, и загрузить Windows NT (см. шаг 6 выше) уже будет невозможно. Если вы все еще намерены пользоваться загрузчиком OS Loader от NT, а не LILO, последовательность действий несколько изменяется: вместо шага 6 необходимо проделать следующее.

Загрузите Windows NT с загрузочных дискет (см. шаг 1). При этом необходимо выбрать в меню загрузчика команду Recover, а затем - режим Command mode. При запросе следует зарегистрироваться с учетной записью администратора системы (Administrator).Восстановите главную загрузочную запись диска. Для этого можно дать команду fdisk /mbr. У меня получалось, хотя в некоторых статьях утверждается, что восстановить таким образом MBR удается не всегда. В Windows 2000 имеются специальные команды fixboot и fixmbr (они запускаются из консоли восстановления, см. справку). Выполните их обе в указанном порядке. Теперь Windows 2000 снова будет загружаться нормально.Перезапустите компьютер с загрузочной дискеты Linux и зарегистрируйтесь в системе с полномочиями администратора (root).Введите команду cd /etc и откройте файл lilo.conf. В начале этого файла есть ссылка на загрузочный раздел по умолчанию, например, /dev/hda.С помощью любого редактора, например, CoolEdit из Midnight Commander, следует заменить это значение указанием на диск и раздел, куда была установлена Linux (точнее, указанием на тот диск и раздел, который монтируется как корневой в Linux). Если Linux установлена в раздел /dev/hdc1, то именно это и следует записать, т. е. поменять /dev/hda на /dev/hdc1. Если вы не помните, куда именно установлена Linux, найдите последнюю переменную файла /etc/lilo.conf - переменную image. В ней хранится нужное значение.Выполнить команду /etc/lilo для записи загрузчика в раздел /dev/hdc1 (команду lilo нужно выполнить без аргументов). Будет выдано предупреждение о том, что раздел не является первым на диске. Именно это нам и нужно, чтобы загрузочная запись Windows 2000 осталась в целости и сохранности.Выполнить шаги 6-8 приведенного выше алгоритма.

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

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


Загрузчик LILO из дистрибутива ОС Linux


Загрузчик LILO создан Вернером Альмесбергером (Werner Almesberger). LILO может загружать ядро Linux как с дискеты, так и с жесткого диска, а также может загружать другие операционные системы: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT, 386BSD, SCO UNIX, Unixware и т. д. Может быть задан выбор до 16 разных операционных систем на этапе загрузки.

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

программа /sbin/lilo, которая запускается из-под Linux, служит для того, чтобы записать всю информацию, необходимую на этапе загрузки, в соответствующие места. Ее необходимо перезапускать каждый раз после внесения изменений в ядро или в конфигурационный файл LILO;различные служебные файлы, которые нужны LILO во время загрузки. Эти файлы обычно располагаются в каталоге /boot. Самые важные из них - это собственно загрузчик (смотри ниже) и map-файл (/boot/map), в котором указывается местоположение ядра. Еще один важный файл - это файл конфигурации LILO, который обычно имеет имя /etc/lilo.conf;собственно загрузчик - это та часть LILO, которая первой загружается в память через прерывание BIOS, и которая загружает ядро Linux или загрузочный сектор другой операционной системы. Загрузчик тоже состоит из двух частей. Первая часть записывается в загрузочный сектор и служит для загрузки второй части, которая значительно больше по размеру. Обе части обычно хранятся на диске в файле /boot/boot.b.

Надо иметь в виду, что формат загрузочного сектора, создаваемого LILO, отличается от формата DOS MBR, так что если записать загрузочный сектор LILO в MBR, то ранее установленные системы от Microsoft перестанут загружаться (если не принять дополнительных мер).

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

Загрузочный сектор LILO при инсталляции системы можно разместить в следующих местах:

загрузочный сектор дискеты в формате Linux (/dev/fd0, ...);MBR первого жесткого диска (/dev/hda, /dev/sda, ...);загрузочный сектор первичного раздела файловой системы Linux на первом жестком диске (/dev/hda1, /dev/hda2, ...);загрузочный сектор логического раздела в расширенном разделе первого жесткого диска (/dev/hda5, ...). Правда большинство программ типа fdisk не предполагают, что можно загружаться из расширенного раздела и отказываются объявлять его активным. Поэтому в состав LILO включена специальная программа (activate), которая позволяет обойти это ограничение. Но программа fdisk из дистрибутива Linux поддерживает возможность активизации расширенного раздела. Для этого надо использовать либо опцию -b, либо переменную BOOT.


Загрузочный сектор LILO не может быть размещен в следующих местах:

загрузочный сектор дискеты или первичного раздела, отформатированных в других файловых системах;в swap-разделе Linux;на втором жестком диске.

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

/boot/boot.b;/boot/map (создается при запуске /sbin/lilo);все загружаемые версии ядра (если вы выбираете версию ядра на этапе загрузки);загрузочные сектора других операционных систем, которые будут загружаться через LILO;выдаваемые при загрузке сообщения (если таковые определены).

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

Начиная с версии 21, LILO выводит на экран меню выбора загружаемой системы (раньше надо было для вызова меню нажимать клавишу табуляции).


Загрузка Linux из MS-DOS с помощью loadlin.exe


Не только загрузочные файлы и образы ядра могут располагаться в DOS-разделе, но и вообще вся загрузка Linux может быть организована из DOS. Для этого используется специальная программа loadlin.exe, разработанная Хансом Лерменом (Hans Lermen, lermen@elserv.ffm.fgan.de). Эта программа используется в таких дистрибутивах, как Red Hat, для организации процедур установки Linux с CD-ROM. Поэтому она имеется на дистрибутивном диске, а, следовательно, всегда имеется в вашем распоряжении.

Loadlin.exe предоставляет вам самый безопасный способ загрузки Linux с жесткого диска, если вы имеете на нем загрузочный (активный) DOS- или Windows-раздел. Этот вариант организации загрузки Linux можно особенно порекомендовать начинающим пользователям Linux. Большинство новичков, устанавливающих Linux, слишком нетерпеливы для того, чтобы читать очень хорошее, но очень длинное описание загрузчика LILO, прилагаемое к этой программе (да еще по-английски!). Поэтому они часто используют его некорректно, в результате чего теряют возможность вообще загрузить какую-нибудь операционную систему (я тоже попадал в такую ситуацию). Для таких пользователей гораздо удобнее начать освоение Linux, используя для загрузки loadlin.exe.

Программа loadlin.exe не требует какой-либо установки, надо только разместить саму программу и образы ядра на одном из дисков, доступных в DOS. С помощью этой программы можно загрузить Linux с CD или сетевого диска, не используя загрузочной дискеты. Это делает loadlin.exe великолепным инструментом на те случаи, когда необходимо загрузить Linux после какого-то сбоя в работе загрузчика LILO.

Версия 1.6 loadlin.exe работает практически при любых конфигурациях DOS и имеет очень мало ограничений. Она может использовать расширенную память и может загружать большие ядра (bzImages) и образы виртуальных дисков (initrd) непосредственно в верхние области ОП.

Применение loadlin.exe не означает, что Linux работает под DOS, так как эта программа обеспечивает "логическую перезагрузку" вашего компьютера, после чего DOS полностью заменяется на Linux. Если вы хотите вернуться в DOS, вы должны перезагрузить компьютер, например, с помощью команды reboot.

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

На вашем компьютере (конечно, с процессором 386 или выше) должна быть установлена DOS или WINDOWS 95.Нужно иметь сжатые образы ядра (zImage, bzImage).

Примечание

zImage - это старый бинарный формат ядра, bzImage - это более новый формат (номер ядра версии больше 1.3.73), который может иметь размер до 1 Мбайта, следовательно, разархивированное ядро может иметь размер до 2 Мбайт. Далее будем говорить только о файлах zImage, хотя вы можете всюду заменить zImage на bzImage.

<
/li>Саму программу loadlin.exe, которую вы можете найти на дистрибутивном диске как в разархивированном виде, так и в пакете LODLIN16.TGZ, который содержит, кроме того, руководство по ее использованию DOC\MANUAL.TXT, пример файла задания параметров DOC\TEST.PAR, и руководство по заданию параметров DOC\PARAMS.DOC (не забывайте, что все это файлы DОS).

Если вы запустите команду loadlin без параметров:

C:\LOADLIN> loadlin

то получите подсказку по использованию программы. Удобнее может оказаться запустить ту же программу с параметром more (в стиле Linux):

C:\LOADLIN> loadlin | more

Теперь мы можем рассмотреть последовательность действий по установке Linux в том варианте, когда загружаться она будет с помощью loadlin.exe.

Выделите раздел для Linux.Установите Linux в выделенный раздел. При этом LILO установите в первый сектор Linux-раздела, чтобы не перезаписать MBR и не потерять возможность загружаться в Windows.После завершения процедур установки загрузите Linux (если не получается по-другому, то используйте загрузочную дискету). Смонтируйте DOS-раздел (будем считать, что в Linux DOS-раздел именуется как /dev/hda1, а Linux-раздел - как /dev/hda3): root]# mount -t vfat /dev/hda1 /mnt/C

Создайте каталог /mnt/C/loadlin и разархивируйте в него содержимое файла LODLIN16.TGZ с дистрибутивного CD-диска Linux. Кроме того, поместите туда же файл с образом ядра из каталога /boot. Найти нужный файл образа ядра можно с помощью файла /etc/lilo.conf: найдите в нем строку "image=..." и вы увидите нужное имя справа от знака равенства. У меня, например, полное имя этого файла - vmlinuz-2.2.16-3bc, но я при копировании в каталог /mnt/C/loadlin переименовал его в vmlinuz; это имя и буду использовать далее в примерах.

Теперь перезагрузите компьютер в DOS. Если у вас есть возможность загрузить непосредственно DOS, то делайте это сразу, а если нет, то загружайте Windows, при появлении сообщения "Загрузка Windows 95" нажимайте клавишу <F8> и выбирайте вариант Command prompt only. Если вы не успели нажать на клавишу <F8>, то можно дождаться завершения загрузки Windows 95, после чего воспользоваться кнопкой Пуск, выбрать команду Завершение работы и далее - команду Перезагрузить компьютер в режиме эмуляции DOS.



После выхода в режим DOS перейдите в каталог C:\LOADLIN (CD \LOADLIN) и выполните команду

C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask

или, если вы хотите загрузить ядро с установкой RAM-диска:

C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage

Можно также записать все аргументы команды loadlin.exe в файл (например, с именем param) и вызвать ту же команду следующим образом:

C:\LOADLIN> LOADLIN @params

Такая возможность особенно полезна для тех случаев, когда вы задаете много аргументов командной строки, и ее длина становится больше 127 символов. Полное описание всех возможных аргументов (параметров) команды loadlin.exe вы сможете найти в файле PARAMS.DOC или в Интернете на сайтах http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html и http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html.

Теперь вы можете пользоваться этим способом загрузки Linux. Единственное, что остается, это избавиться от необходимости каждый раз при загрузке вводить команду loadlin со всеми параметрами. Для облегчения можно прописать вызов loadlin в файл autoexec.bat или создать командный файл (например, linux.bat), с помощью которого просто запускать Linux, предварительно загрузившись в режиме DOS. Я думаю, что приведенных выше данных вполне достаточно для создания необходимого bat-файла. Если же у вас что-то не получится, загляните в статью А. Московских [П4.13], где этот вопрос рассмотрен более подробно. Там, в частности, отмечается, что если на машине установлены Windows 95 и Linux, то нельзя пытаться загружать Linux из графической оболочки и требуется отключить некоторые опции в скрытом файле C:\MSDOS.SYS (это простой текстовый файл), а именно, добавить в него две строки:

BootGUI=0 Logo=0

Первая строка отключает загрузку графической оболочки, и выбор команды меню W95 будет вызывать переход к обычной командной строке ДОС. (Чтобы загрузить графическую оболочку, вы должны будете ввести команду C:> win).

Logo=0 отключает вывод логотипа Windows. Дело в том, что для некоторых графических адаптеров Linux может выдавать после загрузки "пустой" экран, если перед его загрузкой отображался логотип Windows.

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


Документация, поставляемая с дистрибутивом и пакетами ПО


Если в процессе установки системы вы не отказались от установки документации, то после завершения процедур инсталляции в каталоге /usr/doc/ (или /usr/share/doc) вы найдете подкаталоги HOWTO, FAQ, HTML и LDP, содержащие обширнейшую документацию по системе Linux в целом и отдельных аспектах ее применения. Большая часть этой документации представляет собой обычные текстовые ASCII-файлы, которые можно просматривать по командам more filename или less filename, а также с помощью встроенной программы просмотра, включенной в оболочку Midnight Commander. Просмотр этих файлов был для меня основным источником получения информации при освоении Linux (а, значит, и при подготовке данной книги). Начните с Red Hat Reference Guide (/doc/ref-guide на компакт-диске). Особенно стоит обратить внимание на главы Package Management with RPM и System Administration. Также полезно прочесть cодержимое /usr/doc/initscripts-x.xx. К сожалению, большая часть этой документации написана на английском языке, но я надеюсь, что со временем с русифицированными дистрибутивами эта документация будет поставляться на русском.

Большинство пакетов программного обеспечения поставляются разработчиками с обширной документацией по установке и использованию этих пакетов. Если пакет представлен в формате rpm (а дистрибутивы Red Hat Linux и его клонов типа Black Cat поставляются в этом формате), то эта документация будет развернута в соответствующих подкаталогах каталога /usr/doc. Имена этих подкаталогов соответствуют названию пакета и версии ПО. Например, для графической оболочки KDE версии 1.1.1 создается подкаталог KDE-1.1.1.

Иногда в поиске нужного файла документации может помочь команда locate. Команда locate в некотором смысле аналогична командам whatis и apropos. По этой команде производится поиск всех файлов, имена которых содержат заданный шаблон. Например, по команде locate net будет найдена масса имен файлов, в названиях которых встречается подстрока "net". В шаблоне могут применяться метасимволы *, ? , []. Однако команда locate производит поиск не по каталогам файловой системы, а в специально созданной базе имен файлов, которую надо вначале создать (и иногда обновлять) командой updatedb.

В некоторых дистрибутивах (например, в ALTLinux) вместо locate имеется команда slocate, которая сама создает для себя базу имен файлов (после запуска с соответствующим параметром).



Источники справочной информации


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

страницы интерактивного руководства man;гипертекстовое руководство info;документация, прилагаемая к пакетам ПО;текстовые файлы HOWTO и FAQ проекта Linux Documentation Project;команда locate.

Необходимо сразу сказать, что большую часть информации из этих источников вы будете получать на английском языке. Только для русифицированных дистрибутивов часть страниц интерактивного руководства man выдается на русском языке. Можно дополнительно скачать из Интернета имеющиеся там страницы руководства man, переведенные на русский язык http://alexm.here.ru/manpages-ru/index.html, и разместить их в соответствующих каталогах. Но все равно, на русский переведено далеко не все. Учитывая это замечание, рассмотрим каждый из перечисленных выше источников информации подробнее.



Книги и Интернет


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

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

Используйте возможности электронной почты. Полезно подписаться на некоторые списки рассылки (эхо-конференции). Например, чтобы подписаться на список рассылки по дистрибутиву Black Cat Linux надо отправить письмо, содержащее "subscribe blackcat-list", по адресу majordomo@geon.donetsk.ua. Правда, чтение всех писем требует очень большого времени, так как придется читать множество вопросов начинающих пользователей (например, "Что такое консоль?"), а также многочисленные ответы на них от тех кто хоть что-то знает. Поэтому можно просто просматривать с помощью браузера архив списка рассылки: может быть, кто-то уже задавал тот вопрос, ответ на который вы ищете. Весьма вероятно, что ваша проблема уже обсуждалась - если это так, то вы получите более быстрый и полный ответ, вовсе не написав письмо в конференцию.

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

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



Команда help


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



Команда helptool


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



Команда info


Команда info является некоторой альтернативой команде man. Для получения информации по отдельной команде надо задать в командной строке info с параметром, являющимся именем интересующей вас команды, например,

[user]$ info man

Информация, которую вы увидите, в большинстве случаев несколько отличается от той, которую дает команда man, причем, по моему мнению, в лучшую сторону. Но самое существенное отличие заключается в том, что выдаваемая info информация представлена в гипертекстовом формате. В силу этого вы получаете возможность просматривать различные разделы помощи, не выходя из оболочки, предоставляемой командой info. Работая в текстовом режиме, вы можете запустить info в одной из альтернативных консолей (помните: <Ctrl>+<Alt>+<F2>, <Ctrl>+<Alt>+<F3> и т. д.), и переключаться за помощью в случае необходимости. В тех случаях, когда вы не знаете, где именно найти нужную информацию, может оказаться полезным побродить по разным разделам текста с помощью гипертекстовых ссылок, предоставляемых командой info. Эти ссылки обозначены символом звездочки (*), что несколько отличается от способа обозначения гипертекстовых ссылок в широко распространенных браузерах типа Internet Explorer или Netscape Navigator, но от этого не становится менее удобным. Перемещаться по ссылкам можно также с помощью клавиши <Tab>. Достигнув названия нужной темы, нажмите клавишу <Enter>. Нажатие клавиши <P> возвращает вас к предыдущей странице, <N> вызывает переход на следующую страницу, а <U> переводит на один уровень вверх по иерархической структуре страниц документации.

Кроме того, можно вызвать переход по ссылке другим способом, аналогичным системе меню. Для этого надо нажать клавишу <M> и набрать в появившейся внизу экрана строке ввода некоторое число начальных символов названия нужного вам раздела помощи (из числа названий, представленных на отображаемой в данный момент на экране странице, причем даже если не вся страница помещается на экране). Число символов должно быть достаточным для однозначного определения раздела помощи (если недостаточно, то программа попросит дополнить название). Выход из программы - по клавише <Q>.



Команда Xman


В 6-ой версии дистрибутива Red Hat Linux была включена программа, которая позволяет просмотреть страницы руководства man при работе в графическом режиме. Поиск и вывод на экран страниц руководства вызывается посредством щелчков по кнопкам и меню. В остальном (по выдаваемой информации) Xman аналогична команде man.



Консоль, виртуальные терминалы и оболочка


Итак, вы приобрели первый опыт работы в текстовом, или "консольном", режиме системы Linux. Понятия "терминала" и "консоли", которые встретятся нам еще не раз, требуется, вероятно, дополнительно пояснить.

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

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

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

Но, кроме консоли, Linux позволяет подключать к компьютеру и удаленные терминалы и, более того, обеспечивает возможность работы с несколькими виртуальными терминалами с одной консоли. Нажмите комбинацию клавиш <Ctrl>+<Alt>+<F2>. Вы снова увидите приглашение login:. Однако это не возврат к началу работы с системой - вы просто переключились в другой виртуальный терминал. Здесь вы можете зарегистрироваться под другим именем. Попробуйте войти в систему под именем только что заведенного пользователя. После этого нажмите комбинацию клавиш <Ctrl>+<Alt>+<F1>. Вы вернетесь к первому экрану. По умолчанию Red Hat Linux открывает при запуске 6 параллельных сеансов работы (виртуальных терминалов), и этим иногда очень удобно пользоваться. Для переключения между виртуальными терминалами используются комбинации <Ctrl>+<Alt>+<F1> - <Ctrl>+<Alt>+<F6>. (Заметим, что при работе в текстовом режиме тот же результат можно получить, используя комбинации <Alt>+<F1> - <Alt>+<F6>, однако в графическом режиме без клавиши <Ctrl> не обойтись, так что лучше сразу привыкать к комбинациям из 3 клавиш). Кстати, если в процессе работы вы забыли, в каком терминале находитесь в данный момент, воспользуйтесь командой tty, которая выводит имя терминала в следующем формате: /dev/tty2.

Сразу же скажем, что, если вы хотите завершить сеанс работы с системой в одном из терминалов, вы можете сделать это нажатием комбинации клавиш <Ctrl>+<D>. Это не приведет ни к остановке работы компьютера, ни к перезагрузке системы. Не забывайте, что Linux - многозадачная и многопользовательская система. Завершение работы одного пользователя не означает, что надо выключать компьютер. Просто завершается сеанс работы одного из пользователей, и система снова выводит в данном терминале приглашение, которое вы уже видели. Можно завершить сеанс работы и введя одну из команд logout или exit.



Помощь по работе с Linux


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



Редактирование командной строки. История команд


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

Примечание

Приводимые ниже описания команд относятся к оболочке GNU bash версии 1.14.7(1). Думается, что они будут верны и для последующих версий этой оболочки.

Таблица 3.2. Клавиши редактирования командной строки

КлавишаОписание реакции системы
<Стрелка вправо> или <Ctrl>+<F>Перемещение вправо по командной строке в пределах уже набранной цепочки символов плюс один символ справа (место для ввода следующего символа)
<Стрелка влево> или <Ctrl>+<B>Перемещение на один символ влево
<Esc>+<F>Перемещение на одно слово вправо
<Esc>+<B>Перемещение на одно слово влево
<Home> или <Ctrl>+<A>Перемещение в начало набранной цепочки символов
<End> или <Ctrl>+<E>Перемещение в начало/конец набранной цепочки символов
<Del> или <Ctrl>+<D>Удаление символа, на который показывает курсор
<Backspase>Удаление символа в позиции, предшествующей курсору
<Ctrl>+<K>Удалить правую часть строки, начиная с символа, на который указывает курсор
<Ctrl>+<U>Удалить левую часть строки, включая символ, который находится слева от курсора
<Enter> или <Ctrl>+<M>Запуск на выполнение команды, определяемой набранной цепочкой символов
<Ctrl>+<L>Очистить экран и поместить текущую команду в верхней строке экрана
<Ctrl>+<T>Поменять местами два символа: символ, на который показывает курсор, и символ слева от курсора, затем, курсор переместить на один символ вправо
<Esc>+<T>Поменять местами два слова: слово, на которое указывает курсор и слово слева от первого
<Ctrl>+<K>Вырезать часть строки от текущей позиции курсора до конца строки (вырезанная часть строки сохраняется в буфере, ее можно вставить в другое место строки)
<Esc>+<D>Вырезать часть строки от текущей позиции курсора до конца текущего слова (если курсор указывает на пробел между словами, то вырезается все слово справа от курсора)
<Esc>+<Del>Вырезать часть строки от текущей позиции курсора до начала текущего слова (если курсор указывает на пробел между словами, то вырезается все слово слева от курсора)
<Ctrl>+<W>Вырезать часть строки от текущей позиции курсора до предыдущего пробела
<Ctrl>+<Y>Вставить последний вырезанный текст в позицию курсора
<Esc>+<C>Символ, на который указывает курсор, заменить на тот же, но заглавный, а курсор переместить на первый пробел справа от текущего слова
<Esc>+<U>Сделать символы данного слова заглавными, начиная с символа, на который указывает курсор, а курсор установить на пробел справа от слова
<Esc>+<L>Превратить символы, начиная с символа, на который указывает курсор, до конца данного слова в прописные (маленькие) буквы, а курсор установить на пробел справа от слова

<Shift>+<PgUp>

<Shift>+<PgDown>

Эти команды позволяют просмотреть несколько страниц экранного вывода (количество зависит от размера видеопамяти); полезны в тех случаях, когда та или иная команда выводит на экран очень много информации, быстро пробегающей по экрану и как бы исчезающей для пользователя; как видите, эта информация не пропадает
<Ctrl>+<C>Прервать выполнение запущенной команды
<Ctrl>+<D>Выход из оболочки bash

Примечание

Если вы работаете не просто в оболочке bash, а запустили программу Midnight Commander, то такие клавиши как <Стрелка вправо>, <Стрелка влево>, <Home>, <End>, <Del> не могут использоваться так, как указано в приведенной таблице, поскольку они используются для перемещения подсветки в текущей панели. Но указанные выше в скобках комбинации символьных клавиш с клавишами <Ctrl> и <Esc> по-прежнему действуют для редактирования командной строки.




Примечание

Если вы работаете не просто в оболочке bash, а запустили программу Midnight Commander, то такие клавиши как <Стрелка вправо>, <Стрелка влево>, <Home>, <End>, <Del> не могут использоваться так, как указано в приведенной таблице, поскольку они используются для перемещения подсветки в текущей панели. Но указанные выше в скобках комбинации символьных клавиш с клавишами <Ctrl> и <Esc> по-прежнему действуют для редактирования командной строки.
Список возможных команд не ограничивается только приведенными в табл. 3.2, но из-за ограниченности объема книги невозможно привести здесь полный перечень клавиатурных команд. Для получения дополнительной информации воспользуйтесь командой info bash.

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

Если вы попробуете ввести символ табуляции в пустой командной строке, то после первого ввода вы получите только звуковой сигнал, а после второго - примерно следующее сообщение: "There are 1217 possibilities. Do you really wish to see them all? (y or n)" ("Возможны 1217 вариантов завершения. Вы действительно хотите увидеть их все?").

Если ввести символ табуляции после того, как введена одна из команд и пробел, оболочка предполагает, что вы ищете имя файла, который должен вводиться как параметр команды, и выдает в качестве подсказки список файлов текущего каталога. Если же достаточная часть имени файла введена, то заканчивается ввод этого имени в командную строку. Аналогичным образом можно пытаться угадывать окончания переменных окружения, если вместо клавиши <Tab> воспользоваться комбинацией <Esc>+<$>.

Для практической работы с оболочкой также полезно знать, что оболочка запоминает некоторое число введенных команд (по умолчанию 1000, это значение задается в переменной HISTSIZE; см. лекции 5) и позволяет вызывать их путем выбора из списка - так называемой истории команд. Историю команд можно просмотреть, введя в командной строке history (здесь вы сможете воспользоваться комбинациями клавиш <Shift>+<PgUp> и <Shift>+<PgDown>, чтобы просмотреть то, что выдаст эта команда). История команд сохраняется в файле, определяемом переменной HISTFILE (обычно $HOME/.bash_history). Для работы с историей команд в оболочке bash используются следующие комбинации клавиш.

Таблица 3.3. Клавиши для управления историей командКлавишаОписание реакции системы
<?> или <Ctrl>+<P>Переход к предыдущей команде в списке (движение назад по списку)
<?> или <Ctrl>+<n>Переход к следующей команде в списке (движение вперед по списку)
<PgUp>Переход к (вызов в командную строку) самой первой команде, сохраненной в истории команд
<!>, <N>Выполняется (без нажатия клавиши <Enter>) n-ная команда из списка истории команд
<!>, <->, <N>Выполняется n-ая от конца списка команда
<!>, строка символовВыполняется команда, имя которой начинается на строку символов (поиск нужной команды осуществляется движением в обратном порядке от конца файла истории и выполняется первая попавшаяся команда, которая начинается на строку символов)
<Ctrl>+<O>То же что нажатие клавиши <Enter>, затем отображается очередная команда из файла истории

Страницы интерактивного руководства man


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

Таблица 3.4. Основные секции интерактивного руководства man

СекцияСодержание
1Команды пользователя
8Системные команды
2Системные вызовы
3Библиотечные вызовы (подпрограммы)
4Устройства
5Форматы файлов
6Игры
7Разное
9Ядро (kernel internals)
nTcl/Tk commands

Порядок перечисления секций в этой таблице не случаен. Дело в том, что файлы с информацией расположены в подкаталогах каталога /usr/man и команда man ищет нужную информацию, просматривая эти подкаталоги именно в том порядке, который приведен табл. 3.4. Если вы, например, дадите команду

[user]$ man swapon

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

[user]$ man 2 swapon

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

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

Таблица 3.5. Клавиатурные команды, используемые при просмотре man-страниц

КлавишаНазначение
<Q>Выход из программы
<Enter>Просмотр строка за строкой
<Space>Вывод следующего экрана информации
<B>Вернуться к предыдущему экрану
</> за которой следует строка символов и <Enter>Поиск введенной строки символов
<N>Повторение предыдущего поиска

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

[user]$ man имя_команды | lpr

или, если у вас postscript-принтер,

[user]$ man -t имя_команды | lpr


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

[user]$ man -k net

Необходимо, однако, предупредить, что для того, чтобы команды man -k, whatis и apropos работали, необходимо вначале создать базу данных о системных командах, для чего надо запустить команду makewhatis. В противном случае вы можете на любой запрос получить сообщение "nothing appropriate". Правом запустить команду makewhatis обладает только пользователь root. Если вы не выключаете компьютер на ночь, то лучше всего запускать эту команду как задание для процесса cron.

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


Вход в систему


Как вы понимаете, в ответ на это приглашение необходимо ввести имя пользователя, а потом, по запросу, и пароль для входа в систему. Если это первый вход в систему после ее установки, то входить надо под именем ''root''. Это единственный пользователь, для которого обязательно заводится счет или учетная запись (account) во время инсталляции. Этот пользователь является полным хозяином системы (как сейчас, так и в последующем), то есть имеет неограниченный доступ к ее ресурсам, может заводить и удалять других пользователей, останавливать систему и т. д. Неосторожное поведение пользователя с такими правами легко может привести к печальным последствиям, вплоть до полного краха системы. Поэтому обычно под этим именем входят в систему только для выполнения административных задач. Но у нас сейчас как раз такой случай, так что в ответ на приглашение login: вводим "root" и нажимаем клавишу <Enter> (или <Return>). Система выдаст запрос на ввод пароля:

Password:

Очевидно, что в ответ надо вводить пароль того пользователя, имя которого было введено ранее. При первой загрузке надо ввести тот пароль, которой был задан для пользователя root в процессе инсталляции, и нажать <Enter>. Заметим, что если после ввода имени очень долго не вводить пароль, то система снова вернется к запросу имени пользователя. После ввода пароля вы увидите примерно такую надпись:

[root@localhost /root]#

Такая строка называется приглашением. Появление приглашения означает, что система готова воспринять и выполнить вашу команду. Сейчас это свидетельствует о том, что вы успешно вошли в систему. Вы видите черный экран и приглашение системы к вводу команды - то, что в MS-DOS или Windows принято называть режимом командной строки. Мы будем называть этот режим текстовым (в отличие от графического режима, предоставляемого системой X Window).

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

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


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

[root]# passwd jim

Появится строка

New UNIX password:

Вводите пароль. После того, как вы завершите ввод нажатием клавиши <Enter>, система попросит ввести его повторно:

Retype new UNIX password:

Если вы не ошиблись при вводе (пароль приходится вводить "вслепую", поскольку он не отображается на экране), появится сообщение:

passwd: all authentication tokens updated successfully

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

Таким образом, вы познакомились с первыми двумя командами системы Linux: useradd и passwd. Следующая команда, о которой нужно знать каждому пользователю любой UNIX-системы - это команда man. Команда man - это система встроенной помощи системы Linux. Вводить ее надо с параметром - именем другой команды или ключевым словом, например,

[root]# man passwd

В ответ вы получите описание соответствующей команды или информацию по теме, обозначенной ключевым словом. Поскольку информация обычно не помещается на одном экране, при просмотре можно пользоваться клавишами <PageUp> и <PageDown>, а также клавишей пробела. Нажатие клавиши <Q> в любой момент приводит к выходу из режима просмотра и возврату в режим ввода команд. Попробуйте просмотреть информацию по рассмотренным уже командам login и passwd. Заметим, что точно также можно получить информацию по самой команде man. Введите

[root]# man man

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

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

Таблица 3.1. Простейшие команды LinuxКомандаКраткое описание
whoamiСообщает имя, с которым вы вошли в систему в данном сеансе работы
w или whoСообщает, какие пользователи работают в данный момент в системе
pwdСообщает имя текущего каталога
ls -lВыдает список файлов и подкаталогов текущего каталога
cd <имя_каталога>Осуществляет смену текущего каталога
ps axВыдает список выполняющихся процессов
Просмотрите описания этих команд с помощью команды man.

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


Загрузка ОС Linux


Итак, инсталляция Linux завершена, и вы перезапускаете компьютер. Если Linux - единственная операционная система, установленная на вашем компьютере (а, значит, загрузчик LILO размещается в главной загрузочной записи - MBR), то после обычного тестирования аппаратуры, выполняемого BIOS, ненадолго появится надпись

LILO boot:

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

Linux Version 2.0.36, Compiled #1 Tue Dec 29 13:11:11 EST 1998 One Intel 486 DX/2-WB Processor, 16M RAM, 33.28 Bogomips Total localhost.localdomain Black Cat Linux release 5.2 (Fulcrun) Kernel 2.0.36 on an i486 localhost login:

Я привел здесь то сообщение, которое появлялось у меня при одном из вариантов установки, когда я ставил Black Cat версии 5.2; у вас, конечно, сообщение будет отличаться в некоторых деталях. Если у вас хватит терпения дочитать эту книгу, то вы узнаете, что выдаваемое при загрузке сообщение при желании можно изменить, так что будет выдаваться что-нибудь вроде "Привет, дружище! Сегодня 11 ноября 2001 года. Сейчас 19 часов 22 минуты. Введи, пожалуйста, свое имя и пароль". Однако пока рано говорить о том, как это делается.

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

Если Linux не единственная ОС на вашем компьютере, и вы используете LILO для организации многовариантной загрузки, то в тот момент, когда на экране появится надпись LILO boot: вы должны нажать клавишу <Tab> или <?>. Тогда LILO выдаст вам список меток, которые сопоставлены разным ОС. В версии 21 LILO уже автоматически выводит этот список на экран в виде меню. Необходимо выбрать из меню или ввести (набрать на клавиатуре) одну из этих меток и нажать клавишу <Enter>. Если вы выберете метку, соответствующую Linux, то в конце концов вы все равно должны увидеть слово login:, которое в данном случае служит приглашением к вводу вашего пользовательского имени



Завершение работы системы Linux


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

[root]# ps ax

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

Команда shutdown может быть выполнена только пользователем root, так что вы либо должны были войти в систему под этим именем, либо должны предварительно выполнить команду su, чтобы приобрести соответствующие права.

Команда shutdown имеет следующий синтаксис:

[root]# shutdown <options> <time> <warning-massage>

Замечание

Существует некоторая вероятность того, что запустив команду, вы получите ответ "command not found". Это значит, что оболочка не знает, где находится файл программы. В таком случае вам необходимо ввести команду с указанием полного пути, в данном случае в виде /sbin/shutdown -h, поскольку для команды shutdown файл программы лежит в каталоге /sbin.

Из опций программы shutdown наиболее часто используются две:

-h - полная остановка системы (компьютер будет выключен);-r - перезагрузить систему.

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

[root]# shutdown -r +5

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

[root]# shutdown -h 0

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

shutdown -h 0

является команда halt. При нажатии известной <Ctrl>+<Alt>+<Del> в Red Hat Linux выполняются действия, аналогичные команде

shutdown -r 0

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