Проверка файловых систем


Бывает полезно почаще проверять вашу файловую систему на наличие поврежденных и испорченных файлов. Некоторые системы автоматически проверяют свои файловые системы во время загрузки (с помощью соответствующих команд из /etc/rc).

Для проверки файловых систем используются команды, зависящие от типа файловой системы. Для файловой системы ext2fs (самый широко используемый тип), такой командой служит e2fsck. Например, команда

# e2fsck -av /dev/hda2

проверит файловую систему ext2fs на /dev/hda2 и автоматически исправит ошибки.

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

ее проверкой. Например команда

# umount /dev/hda2

Размонтирует файловую систему на /dev/hda2, после чего вы можете ее проверить. Есть одно исключение, вы не можете размонтировать корневую файловую систему. Для того, чтобы проверить размонтировнную корневую файловую систему вам следует использовать специальную boot/root дискету (смотрите Раздел 4.11.1). Вы также не можете размонтировать файловую систему, если хотя бы один из ее файлов "занят" (``busy''), т.е. используется действующим процессом. Например, вы не можете размонтировать файловую систему, если хотя бы один из текущих рабочих каталогов пользователя находится на этой файловой системе. Вы получите сообщение ``Device busy'', если вы попытаетесь размонтировать используемую файловую систему.

Другая файловая система использует различные формы команды e2fsck, такие как efsck и xfsck. На некоторых системах вы можете просто использовать команду fsck, которая определит тип файловой системы и выполнит соответствующую команду.

Внимание! Необходимо немедленно перезагрузить операционную систему после проверки монтированной файловой системы, если были внесены какие-то изменения в файловую систему. (Хотя в общем случае проверять неразмонтированную файловую систему). Например, если e2fsck сообщает, что она исправила хотя бы одну ошибку в файловой системе, вам следует немедленно выполнить shutdown -r, чтобы перезагрузить систему. Это позволить системе "ресинхронизировать" информацию о файловой системе, после модификации ее с помощью e2fsck. (прим. переводчика: То есть сново согласовать содержимое буферов памяти с соответствующими фрагментами файловой системы на диске).

Файловая система /proc никогда не нуждается в проверках такого рода. /proc - это файловая система памяти, управляемая непосредственно ядром.



Разглядывание содержимого каталогов


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

/home/larry# ls Mail letters papers /home/larry#

Здесь мы видим, что у Larry три "единицы хранения" в его текущем каталоге: Mail, letters и papers. Но это мало, что говорит: каталоги это или файлы? Можно использовать опцию (прим. переводчика: часто в документации по UNIX используют в этом контексте слово "флаг") -F в команде ls, чтобы получить больше информации.

/home/larry# ls -F Mail/ letters/ papers/ /home/larry#

Приписанные справа к именам файлов / говорят о том, что это (под)каталоги.

Использование ls -F (обратите внимание "-F" пишется без пробела) может дать также ``*'' в конце некоторых имен файлов. Это будет говорить о том, что это выполняемые файлы или программы. Если, при вызове ls -F, ничего справа не приписано к имени, то это "нормальный" файл, т.е. не каталог и не выполняемый файл.

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

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

/home/larry# ls -F papers english-lit history-final masters-thesis notes/ /home/larry#



Или, чтобы было интереснее, давайте посмотрим, что имеется в системном каталоге /etc/.

/home/larry# ls /etc Images ftpusers lpc rc.new shells adm getty magic rc0.d startcons bcheckrc gettydefs motd rc1.d swapoff brc group mount rc2.d swapon brc~ inet mtab rc3.d syslog.conf csh.cshrc init mtools rc4.d syslog.pid csh.login init.d pac rc5.d syslogd.reload default initrunlvl passwd rmt termcap disktab inittab printcap rpc umount fdprm inittab.old profile rpcinfo update fstab issue psdatabase securetty utmp ftpaccess lilo rc services wtmp /home/larry#

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

Давайте поднимемся вверх по дереву (прим. переводчика: так уж сложилось, что в UNIX начальной вершиной дерева является "корень (root)") , используя команду ``cd ..'', а затем спустимся в другой каталог (/usr/bin ).

/home/larry# cd .. /home# cd .. /# cd usr /usr# cd bin /usr/bin#

Вы, разумеется, можете передвигаться по каталогам большими шагами, например, сразу выполнить cd /usr/bin.

Постарайтесь погулять по каталогам, используя команды ls и cd. В некоторых случаях вы можете напороться на раздражающее сообщение ``Permission denied''(обращение запрещено). Это всего лишь сработала система защиты UNIX, чтобы выполнять команды в тех или иных каталогах вы должны иметь на это разрешение. Подробнее об этом поговорим в Разделе 3.9.



Системное администрирование


Название: Essential System Administration Автор: AEleen Frisch Издатель: O'Reilly and Associates, 1991 ISBN: 0-937175-80-3, $29.95

Из каталога O'Reilly and Associates: ``Как любая другая многопользовательская система, UNIX требует определенной заботы и внимания. Essential System Administration и рассказывает как это надо делать. Эта книга развеивает миф и замешательство вокруг этого вопрос; дает краткое информативное введение в задачи, с которыми сталкивается любой, отвечающий за эксплуатацию системы UNIX''. Я лучше этого сформулировать не могу.

Название: TCP/IP Network Administration Автор: Craig Hunt Издатель: O'Reilly and Associates, 1990 ISBN: 0-937175-82-X, $24.95

Полное руководство по установке и эксплуатации TCP/IP. Хотя эта книга не посвящена непосредственно Linux, приблизительно 90% ее применимо к Linux. Совместно с Linux NET-2-HOWTO и Linux Network Administrator's Guide это замечательная книга, обсуждающая соответствующие концепции и детали работы с TCP/IP.

Название: Managing UUCP and Usenet Автор: Tim O'Reilly and Grace Todino Издатель: O'Reilly and Associates, 1991 ISBN: 0-937175-93-5, $24.95

Эта книга рассматривает вопросы, как инсталлировать и настраивать сетевые программы UUCP, включая настройку на работу с новостями USENET. Если вас интересует использование UUCP или доступ к новостям USENET, вам следует прочитать эту книгу.



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


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

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

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

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



Установка хостимени


В сетевой среде хост-имя используется для однозначной идентификации конкретной машины, в то время как отдельно стоящей машине хост-имя придает чувство собственного достоинства и шарма. Это, как дать имя вашей собаке: вы можете обращаться к собаке просто ``The dog'' (прим. переводчика: это просто "собака" (с определенным артиклем - поскольку конкретная) , но значительно интереснее приписать собаке имя, вроде Spot или Woofie (или Шарик и Бобик).

Хост-имя элементарно устанавливается командой hostname. Если вы в сети, ваше хост-имя должно быть полным хост-именем вашей машины, таким как goober.norelco.com. Если вы не в сети, вы можете выбрать произвольные имена для хоста и домена, например loomer.vpizza.com, shoop.nowhere.edu или floof.org.

При установке хост-имени оно должно быть занесено в файл /etc/hosts, который приписывает IP адрес каждому хосту. Даже если ваша машина не в сети, вам следует включить ваше хост-имя в /etc/hosts. Например, если вы не имеете выхода в сеть по TCP/IP и ваше хост-имя floof.org, просто включите следующую запись в /etc/hosts:

127.0.0.1 floof.org localhost

Это припишет ваше хост-имя floof.org к локальному IP-интерфейсу (loopback address) 127.0.0.1 (используемому, даже если вы не в сети). Синоним localhost также приписывается этому адресу.

Если вы подключены к сети по TCP/IP, ваши действительные IP адрес и хост-имя должны появиться в /etc/hosts. Например, если ваше хост-имя goober.norelco.com, и ваш IP адрес 128.253.154.32, добавьте следующую строку в /etc/hosts:

128.253.154.32 goober.norelco.com

Если вашего хост-имени не будет в /etc/hosts, вы не сможете его установить. Для установки хост-имени просто используйте команду hostname. Например, команда

# hostname -S goober.norelco.com

устанавливает хост-имя goober.norelco.com. Во многих случаях команда hostname выполняется из из одного из системных установочных файлов, таких как /etc/rc или /etc/rc.local. Отредактируйте эти два файла и измените находящуюся там команду hostname, установив хост-имя своей машины; после перезагрузки машины хост-имя будет иметь новое значение.



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


При входе вы увидите на экране подсказку, например, такого вида:

mousehouse login:

Введите свое имя и нажмите клавишу Return. Наш герой larry напечатает следующее:

mousehouse login: larry Password:

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

Login incorrect и вам следует попытаться еще раз.

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



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


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

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

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

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

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



Злоупотребление системой


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

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

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



Использование конвейера


Мы уже показали, как использовать команду sort в качестве фильтра. Но эти примеры предполагали, что вы откуда-то получили данные в файл, или ввели данные с клавиатуры своими собственными руками. А что, если данные, которые вы хотите отсортировать, являются выходными данными другой программы, например, такой как ls? Если вы используете при сортировке опцию -r, данные будут расположены в порядке, обратном лексикографическому. Если вы хотите получить перечень файлов вашего каталога в обратном порядке, один из способов сделать это будет:

/home/larry/papers# ls english-list history-final masters-thesis notes /home/larry/papers# ls > file-list /home/larry/papers# sort -r file-list notes masters-thesis history-final english-list /home/larry/papers#

Здесь мы сохранили результат работы команды ls в файле, а затем выполнили sort -r над этим файлом. Но это очень коряво выглядит и требует создания временного файла для хранения результата работы ls.

Выход из положения дает трубопровод (pipeline) (прим. переводчика: в нашей литературе принят термин "конвейер", так далее и будем переводить "pipeline"). Конвейер - это еще одно замечательное свойство shell, которое позволяет связывать последовательность команд в конвейер, где stdout первой команды посылается прямо на stdin второй команды и так далее. Здесь мы хотим послать stdout команды ls на stdin команды sort. Символ ``|'' олицетворяет конвейер:

/home/larry/papers# ls | sort -r notes masters-thesis history-final english-list /home/larry/papers#

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

/home/larry/papers# ls /usr/bin

выдает на дисплей длинный список имен файлов, большинство из которых слишком быстро промелькнет на экране, чтобы вы успели прочитать их. Давайте подключим к просмотру перечня имен файлов каталога /usr/bin команду more.

/home/larry/papers# ls /usr/bin | more

Теперь вы можете постранично листать файл в свое удовольствие.

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

/home/larry/papers# ls | sort -r | head -1 notes /home/larry/papers#

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



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


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

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

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

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

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

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



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


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

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

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

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

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



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


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

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

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

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

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

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



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


Компиляторы gcc C и C++ используются для компиляции программ вашей системы, в первую голову - ядра. Новейшую версию gcc можно найти на FTP-серверах Linux. На sunsite.unc.edu его можно найти в каталоге /pub/Linux/GCC (вместе с библиотеками). Должен существовать файл версии для дистрибуции gcc, детализирующий, какие файлы вы должны переписать и как их инсталлировать.



Можно вместе


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

# tar cvf backup.tar /etc # gzip -9 backup.tar

Результат будет backup.tar.gz. Для распаковки этого файла используйте обратную последовательность команд:

# gunzip backup.tar.gz # tar xvf backup.tar

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

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

# tar cvf - /etc | gzip -9c > backup.tar.gz

Здесь мы посылаем tar-файл, сформированный из /etc, в файл ``-'', который представляет стандартный выход. Результат по конвейеру поступает на вход команды gzip, которая компрессирует этот файл и результат сохраняет в backup.tar.gz. Опция -c команды gzip говорит, что выход команды gzip посылает результат на стандартный выход, который перенаправляется на backup.tar.gz.

Единственная составная команда, используемая для распаковки этого архива, будет:

# gunzip -c backup.tar.gz | tar xvf -

Опять, команда gunzip раскомпрессирует содержимое файла backup.tar.gz и посылает результирующий файл на стандартный выход. Он по конвейеру передается команде tar, которая читает файл ``-'', что в данном случае олицетворяет стандартный выход.

К счастью, команда tar также содержит опцию z, автоматически компрессируя-раскомпрессируя файлы, используя алгоритм компрессии gzip.

Например, команда (прим. переводчика: одна)

# tar cvfz backup.tar.gz /etc

эквивалентна

# tar cvf backup.tar /etc # gzip backup.tar

Как и команда

# tar xvfz backup.tar.Z

может быть использована вместо

# uncompress backup.tar.Z # tar xvf backup.tar

За дополнительной информацией обратитесь к Руководству по tar и gzip.

4.6 Использование дискет и осуществление резервирования

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

Вы можете использовать дискеты также для хранения отдельных файловых систем - в этом случае вы должны монтировать (mount) дискету для получения доступа к ее данным.



Настройка SLIP


SLIP (Serial Line Internet Protocol) позволяет использовать TCP/IP на последовательных линиях, будь то коммутируемая телефонная линия с модемом или выделенная асинхронная линия. Разумеется, для использования SLIP вам необходим доступ к SLIP-серверу. Многие университеты и фирмы за умеренную плату предоставляют SLIP-вход.

Есть две основные программы, использующие SLIP: dip и slattach. Обе эти программы используются для установления SLIP-соединения через последовательные устройства. Необходимо использовать одну из этих программ, чтобы активизировать SLIP, недостаточно просто дозвониться до SLIP-сервера (с помощью коммуникационной программы вроде kermit) и запустить команды ifconfig и route, так как dip и slattach формируют специальный системный вызов ioctl(), чтобы перехватить управление последовательным устройством для реализации SLIP-интерфейса.

Dip может произвести дозвонку до SLIP-сервера, обеспечить соединение (handshaking) и войти на сервер (указав например, имя и пароль), а затем инициировать SLIP-соединение по последовательной линии. slattach же не делает ничего, кроме захвата устройства для использования его SLIP. Это полезно, если вы имеете постоянную линию для SLIP-сервера и нет необходимости в дозвонке и соединении для обеспечения связи. Но большинство пользователей предпочитает использовать dip.

Dip можно также использовать для настройки вашей системы Linux в качестве SLIP-сервера, когда другие машины к вам дозваниваются и выходят в сеть через вторичное соединение по Ethernet на вашей машине. Дополнительную информацию по этой процедуре смотрите в Руководстве на dip.

SLIP весьма отличается от Ethernet, в нем только две машины в "сети" SLIP-хост (это вы) и SLIP-сервер. По этой причине SLIP часто воспринимается как связь ``point-to-point'' (от точки до точки). Обобщение этой идеи, известное как PPP (Point to Point Protocol) также реализовано в Linux.

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

Существенное замечание. Настройка связи по SLIP похожа на настройку loopback или ethernet. Основные отличия обсуждаются ниже. Прочитайте предыдущий раздел про настройку базовых файлов TCP/IP, и выполните изменения, описанные ниже.



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


Если вы хотите инсталлировать Slackware с дискет, вместо жесткого диска, вам нужно по одной чистой дискете, отформатированной в MS-DOS, для каждого диска Slackware, который вы желаете переписать. Дискеты должны быть формата high-density.

Набор диска A (диски A1 - A3) могут быть дискетами как 3.5", так и 5.25". Но остальные наборы дисков должны быть на дискетах 3.5".

Поэтому, если у вас есть только дисковод 5.25", необходимо взять у кого-нибудь на прокат дисковод 3.5", чтобы инсталлировать прочие (кроме A) диски. Или вы можете инсталлировать их с жесткого диска, как это описывалось выше.

Для того, чтобы создать диски, просто скопируйте файлы из каждого Slackware каталога на отформатированные в MS-DOS дискеты, используя команду MS-DOS - COPY:

C:\> COPY A1\*.* A:

Которая скопирует содержимое диска A1 на дискету в дисководе A:. Это следует повторить для всех считываемых дисков.

Нет необходимости каким-либо образом модифицировать или раскомпрессировать файлы диска; вы просто должны скопировать их на дискеты в MS-DOS. Процедура инсталляции Slackware сама заботится о раскомпрессировании файлов.



Получение Linux по почте


Если у вас нет доступа к Internet или BBS, множество дистрибутивов Linux можно получить по почте на дискетах, лентах, лазерных дисках. В Приложении B дан список таких дистрибуторов. Многие из них принимают оплату по кредитным карточкам и платежным поручениям, так что если вы живете даже не в США или Канаде, вы все равно сможете таким образом приобрести дистрибутив Linux.

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



Проблемы инсталляции программ


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

Системные сообщения ``Read error''(ошибка чтения), ``file not found''(не найден файл) или другие ошибки во время попытки инсталлировать программы. Это говорит о проблемах с вашими средствами инсталляции. Если вы инсталлируете с дискеты, имейте в виду, что дискеты очень склонны к такого рода недостаткам. Убедитесь, что вы используете новые исправные и свежеотформатированные дискеты. Если у вас есть на диске разделы MS-DOS, многие дистрибутивы Linux позволят вам инсталлировать с жесткого диска. Это может быть быстрее и более надежно, чем использование дискет.

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

Системные сообщения вроде ``tar: read error'' (tar: ошибка чтения) или ``gzip: not in gzip format''(gzip: не в формате gzip). Часто это связано с испорченными файлами на средствах инсталляции. Другими словами, ваши дискеты могут быть нормальными, но вот данные на них каким-то образом испорчены. Например, вы каким-то образом скачали программы Linux, используя текстовый (а не бинарный) режим, тогда ваши файлы уж точно будут негодными для инсталляции. Системные сообщения об ошибках, такие как ``device full'' (устройство заполнено) в процессе инсталляции. Это верный признак того, что вы вышли за пределы отведенного пространства при инсталляции. Не все дистрибутивы способны с этим разобраться; вы не сможете прервать инсталляцию и вынуждены дождаться, когда система сама остановится.

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

Системные сообщения об ошибках, такие как ``read_intr: 0x10'' при обращении к жесткому диску. Это обычно говорит о наличии плохих блоков на диске. Однако, если вы получили это сообщение во время выполнения mkswap или mke2fs, причиной этого могло быть то, что система имела проблемы с доступом к вашему диску. Это может быть как проблема аппаратуры (см. Раздел 2.5.2), так и результат неправильного описания геометрии. Если вы применяли

hd=<cylinders>,<heads>,<sectors> опцию периода загрузки, чтобы инициировать определение геометрии своего жесткого диска и описали геометрию некорректно, то вы должны будете познакомиться с этой проблемой. Это также может случиться, если геометрия вашего драйвера описана некорректно в CMOS.

Системные сообщения об ошибках , вроде ``file not found'' или ``permission denied''. Это может случиться, если не все необходимые файлы представлены на средствах инсталляции (смотрите следующий раздел) или существует проблема разрешения доступа. Например, про некоторые дистрибутивы Linux известно, что они сами по себе содержат ошибки. Это обычно обнаруживается очень быстро, да и случается не часто. Если вы подозреваете, что программы дистрибутива содержат ошибки и уверены, что вы ничего не сделали неправильно, свяжитесь с сопровождающими дистрибутив и сообщите об ошибке.

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

mget *.*

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

mget *

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

Кроме прочего, если Linux завис при инсталляции, причины могут быть в аппаратуре. Смотрите по этому поводу Раздел 2.5.2.



Создание новых каталогов


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

/home/larry# mkdir foo /home/larry# ls -F Mail/ foo/ letters/ papers/ /home/larry# cd foo /home/larry/foo# ls /home/larry/foo#

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



Создание разделов Linux


Теперь вы готовы создать разделы Linux с помощью команды fdisk. Как описывалось в Разделе 2.2.3, в общем случае вам необходимо создать как минимум один раздел для самого Linux и другой для области своппинга.

После загрузки средств инсталляции выполните команду fdisk, напечатав

fdisk <drive>

где <drive> имя устройства в Linux, которому вы хотите выделить раздел (см. Табл. 2.1). Например, если вы хотите выполнить fdisk для первого SCSI-диска, используйте команду fdisk /dev/sda.

/dev/hda (первый IDE-диск) берется по умолчанию, если вы не описали другого.

Если вы создаете разделы для Linux более, чем на одном диске, выполните fdisk отдельно для каждого диска.

# fdisk /dev/hda Command (m for help):

В этот момент fdisk ждет команды; вы можете ввести "m", чтобы получить перечень опций.

Command (m for help): m Command action a toggle a bootable flag d delete a partition l list known partition types m print this menu n add a new partition p print the partition table q quit without saving changes t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help):

Для создания нового раздела используется команда n. О большинстве других опций вы можете не вспоминать. Выйти из программы fdisk, без сохранения произведенных изменений, можно командой q. Выйти из программы fdisk с записью изменений в таблице разделов можно командой w.

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

Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M Command (m for help):

Это пример, когда у нас один MS-DOS-раздел на /dev/hda1, который имеет 61693 блоков (около 60M - блок в Linux - 1024bytes). Этот раздел начинается на цилиндре N 1 и заканчивается на цилиндре N 203. Всего у нас на диске 683 цилиндров. Так что остается 480 цилиндров для создания раздела Linux.

Для создания нового раздела используйте команду "n". В этом примере мы создадим два новых первичных раздела (/dev/hda2 and /dev/hda3) для Linux.

Command (m for help): n Command action e extended p primary partition (1-4) p

Здесь fdisk спрашивает тип создаваемого раздела: extended (расширенный) или primary (первичный). В нашем примере мы создаем только первичный раздел, так что выбираем p.

Partition number (1-4):

Затем fdisk спросит число создаваемых разделов; поскольку раздел 1 уже использован, наш первый раздел Linux получит номер 2.

Partition number (1-4): 2 First cylinder (204-683):

Теперь введите номер первого цилиндра раздела. Поскольку цилиндры с 204 по 683 не используются, мы используем первый свободный (номер 204). Нет смысла оставлять пустые места между разделами.

First cylinder (204-683): 204 Last cylinder or +size or +sizeM or +sizeK (204-683):

Программа fdisk запрашивает размер создаваемого раздела. Мы можем указать последний номер свободных цилиндров или размер в байтах, килобайтах или мегабайтах. Поскольку мы хотим, чтобы наш раздел был размером в 80M, мы укажем +80M. При указании размера раздела таким способом fdisk округлит действительный размер раздела до ближайшего числа цилиндров.

Last cylinder or +size or +sizeM or +sizeK (204-683): +80M Warning: Linux cannot currently use 33090 sectors of this partition

Если вы увидите предупреждение, вроде этого, его можно проигнорировать. Программа fdisk выдает сообщение, поскольку это старая программа, написанная еще до того, когда в Linux были разрешены разделы более, чем 64M. Теперь мы готовы создать второй раздел для Linux. С целью демонстрации мы создадим его размером в 10M.

Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (474-683): 474 Last cylinder or +size or +sizeM or +sizeK (474-683): +10M

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

Command (m for help): p Disk /dev/hda: 16 heads, 38 sectors, 683 cylinders Units = cylinders of 608 * 512 bytes Device Boot Begin Start End Blocks Id System /dev/hda1 * 1 1 203 61693 6 DOS 16-bit >=32M /dev/hda2 204 204 473 82080 81 Linux/MINIX /dev/hda3 474 474 507 10336 81 Linux/MINIX

Как вы видите, теперь есть /dev/hda2 - раздел размером в 82080 блоков (что соответствует приблизительно 80M), и /dev/hda3 - 10336 блоков (около 10M). прим. переводчика: видимо, у автора здесь слова "сектор" и "блок" - синонимы

Имейте в виду, что много дистрибутивов (вроде того же Slackware) требуют использования команды t в программе fdisk для изменения области своппинга ``Linux swap'', которая обычно имеет номер 82. Вы можете воспользоваться командой L для печати кодов типов известных разделов, а затем использовать t, чтобы установить тип области своппинга, соответствующий ``Linux swap''.

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

В вышеприведенном примере оставшиеся цилиндры диска (номера с 508 по 683) не использованы. Вы можете позже создать дополнительные разделы.

Наконец, мы используем команду w, чтобы записать изменения и выйти из fdisk

Command (m for help): w #

Имейте в виду, что ни одно из сделанных изменений не даст эффекта то тех пор, пока вы не дадите команду w. Так что вы можете играть с различными конфигурациями и сохранить их, когда закончите. Кроме того, если вы захотите выйти из fdisk в любое время без сохранения изменений, используйте команду q. Помните, что программой fdisk для Linux вы можете выделять разделы для Linux и только для Linux.

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

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



The X Window System


Название: The X Window System: A User's Guide Автор: Niall Mansfield Издатель: Addison-Wesley ISBN: 0-201-51341-2, ??

Полное учебное пособие и справочник по использованию X Window System. Если вы инсталлируете X windows на вашем Linux и хотите знать, как извлечь из этого максимум, вам стоит прочитать эту книгу. В отличие от других оконных систем, многие возможности, которые дает X не видны с первого взгляда.



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


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

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

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



Требования Linux к разделам


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

В системах UNIX файлы хранятся в файловой системе, которая прежде всего расположена на диске (или на другом устройстве, вроде CD-ROM или дискеты), отформатированном для хранения файлов. Каждая файловая система ассоциируется с конкретной частью дерева каталогов; например, во многих случаях существует файловая система для всех файлов каталога /usr, другая для /tmp и т.д. Корневая файловая система - первичная файловая система, которой соответствует самый верхний каталог /.

Под Linux каждая файловая система "живет" в отдельном разделе диска. Например, если у вас есть файловая система для / и другая для /usr, вам потребуется два раздела.

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

Но вы можете создать много файловых систем для Linux, если пожелаете. Например, если вы хотите использовать раздельные файловые системы для /usr и /home. Читатели, имеющие опыт работы в качестве администраторов UNIX, знают, как извлекать пользу из раздельных файловых систем. В Главе 4 мы обсудим, как разумно использовать множество файловых систем и разделов.

Зачем использовать больше, чем одну файловую систему? Наиболее очевидная причина - безопасность. Если по какой-то причине одна из ваших файловых систем будет повреждена, то другие, как правило, не пострадают. С другой стороны, если вы поместите все свои файлы в корневую файловую систему, и по какой-то причине она будет испорчена - все разом пропадет. Но это редкие случаи. Если вы регулярно делаете системный backup, то можете чувствовать себя достаточно безопасно. Автор использует одну (200М) файловую систему для всех своих файлов и не имеет проблем (пока).

Другая причина использования множества файловых систем - это использование памяти нескольких дисков. Если у вас есть, скажем, 40M свободного места на одном диске и 50M на другом, вы можете создать корневую файловую систему на одном диске и /usr на 50-ти мегабайтном. В настоящее время невозможно одной файловой системе располагаться сразу на нескольких дисках, поэтому необходимо создавать несколько файловых систем.

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

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

Отдельный файл своппинга или раздел могут быть не более 16M. Если вы желаете использовать для своппинга более 16M, вы можете создать несколько разделов или файлов своппинга (до восьми). Например, если вам нужна область своппинга в 32M, вы можете создать два раздела по 16M.

Создание раздела своппинга обсуждается в Разделе 2.3.4, а создание файла своппинга - в Главе 4.

В общем случае вы создадите для Linux два раздела: один для корневой файловой системы и другой для области своппинга. Разумеется, возможно много вариаций на эту тему, но это минимальная конфигурация. Вы не обязаны иметь область своппинга для Linux, но если у вас менее 16M RAM, то это очень настоятельно рекомендуется.

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

Размер вашей области своппинга (если вам доведется выбирать) зависит от того, какая вам требуется виртуальная память. Хорошее прикидочное правило: область своппинга равняется удвоенной RAM. Например, у вас 4M RAM (физической памяти), для нее хорошо иметь раздел в 8M для области своппинга. Но это несколько абстрактные рассуждения, поскольку область своппинга зависит в значительной степени от эксплуатируемых программ. Если у вас много физической памяти (скажем, 16M и даже более), может быть вам вообще не захочется использовать область своппинга.

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

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



Удаление пользователей


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

Если вы пожелаете временно "отключить" пользователя от системы, (без удаления его account ), вы можете просто приписать звездочку (``*'') в поле пароля в файле пароля /etc/passwd. Например, изменить у kiwi в файле /etc/passwd

kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash

это закроет для kiwi вход в систему.



Установка среды


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

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



Виртуальные консоли


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

Для демонстрации этого войдите в систему (как было показано ранее). Теперь нажмите alt-F2. Вы должны снова увидеть подсказку login: , то есть перед вами вторая виртуальная консоль, а вы вошли через первую. Чтобы переключиться обратно на первую VC, нажмите alt-F1. Оп-ля! Вы снова на первой консоли.

Свежеинсталлированный Linux возможно позволит вам работать с четырьмя первыми VC, используя от alt-F1 до alt-F4. Но возможно обеспечить работу с 12-ю VC - по одной на каждую функциональную клавишу. Как видите, использование VC может быть очень эффективным - вы можете работать на нескольких VC одновременно.

В то время, как использование виртуальных консолей ограничено (кроме прочего, в каждый момент времени вы можете видеть только одну виртуальную консоль) оно дает вам представление о многопользовательских возможностях UNIX. Пока вы работаете на VC #1, вы можете переключиться на VC #2 и начать работу над чем-то другим.



Взаимодействие с пользователями


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

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

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

Если вы убедились, что пользователь действительно пытается ``взломать'' систему или умышленно ей вредит, старайтесь не отвечать угрозами на угрозы. Вместо этого просто предупредите его, но сохраняйте гибкость. Во многих случаях вы можете "схватить его за руку" в процессе свершения вредительства - вот тут и предупредите. Скажите, чтобы он так больше не делал. Но если вы снова его поймаете на вредительстве, то убедитесь, что это действительно намеренно. Я просто не смогу перечислить все случаи, когда оказывалось, что неприятность была либо случайной, либо я сам был виноват.



Заполнение информации о видеокарте


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

Эту информацию вы можете найти и в файлах modeDB.txt, AccelCards и Devices (все эти файлы находятся в каталоге /usr/X11R6/lib/X11/doc). Кроме этого существуют различные файлы README для конкретных микросхем. Вам следует просмотреть эти файлы и используя эту информацию (частоты, тип микросхем и другие режимы) доопределить файл XF86Config. Если какой то информации не хватает, вы можете определить ее путем описанным ниже.

В этом примере мы опишем настройку видеокарты #9 GXE 64, использующую микросхему S3. Эта карта одна из тех, с которыми работает автор, но все описанное ниже справедливо и для другой видеокарты.

Перво-наперво вам надо определить тип микросхемы, используемой видеокартой. Команда SuperProbe (располагающаяся в каталоге /usr/X11R6/bin) сообщит вам эту информацию, но вам необходимо знать под каким именем известна данная микросхема X серверу.

Чтобы определить это запустите команду:

X -showconfig

Сервер сообщит вам имена микросхем, с которыми он работает (руководство на X сервер также содержит эту информацию). Например, сервер XF86_S3 сообщит:

XFree86 Version 3.1 / X Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patchlevel 0) mmio_928, s3_generic

То есть сервер работает с микросхемами mmio_928 и s3_generic. Руководство на сервер XF86_S3 описывает эти микросхемы и видеокарты, использующие их. В нашем случае видеокарта #9 GXE 64 использует микросхему mmio_928.

Если вы не знаете какая микросхема стоит на видеокарте, X сервер может это определить. Запустите:

X -probeonly > /tmp/x.out 2>&1

если вы работаете в оболочке shell. Если вы используете csh запустите:

X -probeonly &> /tmp/x.out

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

Выходная информация в файле /tmp/x.out будет содержать следующие строки:

XFree86 Version 3.1 / X Window System (protocol Version 11, revision 0, vendor release 6000) Operating System: Linux Configured drivers: S3: accelerated server for S3 graphics adaptors (Patch level 0) mmio_928, s3_generic Several lines deleted... (--) S3: card type: 386/486 localbus (--) S3: chipset: 864 rev. 0 (--) S3: chipset driver: mmio_928

Мы видим, что сервер (XF86_S3) может работать с микросхемами mmio_928 и s3_generic. Сервер протестировал видеокарту и опознал микросхему mmio_928. Следовательно, в секцию Device вам следует добавить строку, содержащую имя микросхемы, найденное сервером.

Section "Device" # We already had Identifier here... Identifier "#9 GXE 64" # Add this line: Chipset "mmio_928" EndSection

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

Сначала следует просмотреть справочные файлы (modeDB.txt, и т п) описанные выше и определить, нет ли там описания частот вашей карты. Частоты, как правило представлены списком из 8 или 16-ти значений частот в Мегагерцах. Например в файле modeDB.txt можно найти строку описания видеокарты Cardinal ET4000:

chip ram virtual clocks default-mode flags ET4000 1024 1024 768 25 28 38 36 40 45 32 0 "1024x768"

Как вы видите, данная карта поддерживает частоты: 25, 28, 38, 36, 40, 45, 32, and 0 MHz.

В секции Device файла XF86Config, вам следует добавить строку Clocks со списком частот. В нашем случае мы добавляем строку:

Clocks 25 28 38 36 40 45 32 0

к секции Device, после описания Chipset. Заметьте, что порядок частот важен! Вам не следует дублировать или изменять порядок частот.

Если вы не можете найти список частот для вашей карты, X сервер может также определить и эти значения. После вызова команды X -probeonly, описанного выше, вы увидите строку :

(-- ) S3: clocks: 25.18 28.32 38.02 36.15 40.33 45.32 32.00 00.00

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

Перед запуском X -probeonly, убедитесь что в секции Devices нет строк описания Clocks или они закомментированы. Если эти значения уже есть, X сервер не будет проверять поддерживаемые платой частоты, а возьмет указанные в строке Clocks.

Заметьте, что некоторые видеокарты с акселератором используют микросхему с программируемой частотой (Смотрите руководство XF86_Accel; это в основном относится к картам S3, AGX и XGA-2 boards.) Эти микросхемы позволяют X-серверу сообщать карте какую использовать частоту. В этом случае мы вполне вероятно не сможем найти в вышеперечисленных файлах список частот для карты. Или список частот, выдаваемых командой X -probeonly будет содержать одно два значения с остальными дублированными или нулевыми значениями.

Для видеоплат, использующих микросхему программирования частоты, вам вместо строки Clocks следует использовать строку ClockChip. Эта строка задает имя микросхемы программирования частоты, установленной на карте. Руководства для каждого сервера описывает их имена. Например, в файле README.S3 мы определили, что несколько S3-864 видеокарт используют микросхему ``ICD2061A''. Следовательно, нам следует использовать строку:

ClockChip "icd2061a"

вместо строки Clocks. Так же как и строка Clocks, строка ClockChip должна быть в секции Devices после строки Chipset.

Некоторые карты с акселератором требуют определения в файле XF86Config строки Ramdac, описывающей тип используемой микросхемы RAMDAC. Руководство на сервер XF86_Accel описывает подробно опции этой строки. Как правило, X сервер верно определяет тип используемой микросхемы RAMDAC.

Некоторые видеокарты требуют определения нескольких дополнительных опций в секции Devices. Эти опции описаны как в руководствах на ваш X сервер, так и в справочных файлах (например README.cirrus или README.S3). Эти опции устанавливаются строкой Options. Например, видеокарта #9 GXE 64 требует установку двух опций:

Option "number_nine" Option "dac_8_bit"

Обычно X сервер работает и без этих опций, но с ними X сервер обеспечивает большую производительность. Существует слишком много всевозможных опций, чтобы из все здесь перечислить. Эти опции зависят от типа установленной видеокарты. Если вы вынуждены использовать эти опции - не волнуйтесь, руководства на X сервера и справочные файлы в каталоге /usr/X11R6/lib/X11/doc/ об'яснят вам что они значат.

Итак, когда вы закончите, не забудьте завершить строкой EndSection секцию Device, которая будет выглядеть следующим образом:

Section "Device" # Device section for the #9 GXE 64 only ! Identifier "#9 GXE 64" Chipset "mmio_928" ClockChip "icd2061a" Option "number_nine" Option "dac_8_bit" EndSection

Как уже сказано выше, большинство видеокарт требуют строку Clocks вместо строки ClockChip. Вышеприведенный пример применим только к конкретной видеокарте #9 GXE 64.



Зависимости


Важно заметить, что права доступа, которые имеет файл зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если Larry захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/larry на drwx------. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что Larry может не заботиться об индивидуальной защите своих файлов.

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

Обычно пользователи UNIX весьма открыты всеми своими файлами. Обычно файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам. Но ничего в них не трогать и не записывать.

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



Знакомство с Linux


3.1 Введение 3.2 Базовые концепции UNIX 3.2.1 Регистрация в системе (открытие счета) 3.2.2 Вход в систему 3.2.3 Виртуальные консоли 3.2.4 Shells и команды 3.2.5 Выход из системы 3.2.6 Смена пароля 3.2.7 Файлы и каталоги 3.2.8 Дерево каталогов 3.2.9 Текущий рабочий каталог 3.2.10 Обращение к домашнему каталогу 3.3 Первые шаги в UNIX 3.3.1 Первая прогулка 3.3.2 Разглядывание содержимого каталогов 3.3.3 Создание новых каталогов 3.3.4 Копирование файлов 3.3.5 Перемещение файлов 3.3.6 Удаление файлов и каталогов 3.3.7 Рассматривание файлов 3.3.8 Получение оперативной помощи 3.4 Краткая информация о базовых командах 3.5 Исследование файловой системы 3.6 Типы оболочек 3.7 "Уайлдкард" - "дикая карта" 3.8 Трубопроводы UNIX 3.8.1 Стандартный вход и стандартный выход 3.8.2 Перенаправление входа и выхода 3.8.3 Использование конвейера 3.8.4 Перенаправление с добавлением 3.9 Права доступа к файлам 3.9.1 Концепция прав доступа 3.9.2 Интерпретация прав доступа 3.9.3 Зависимости 3.9.4 Изменение прав доступа 3.10 Управление связями файлов 3.10.1 Жесткие связи 3.10.2 Символические связи 3.11 Управление работами 3.11.1 Работы и процессы 3.11.2 Выполнение работ на переднем плане и в фоне 3.11.3 Работа в фоне и ликвидация работ 3.11.4 Остановка и возобновление работы 3.12 Использование редактора vi 3.12.1 Концепции 3.12.2 Начала vi 3.12.3 Вставка текста 3.12.4 Удаление текста 3.12.5 Изменение текста 3.12.6 Команды перемещения 3.12.7 Сохранение файлов и выход из vi 3.12.8 Редактирование еще одного файла 3.12.9 Включение других файлов 3.12.10 Выполнение команд Shell 3.12.11 Получение помощи 3.13 Установка среды 3.13.1 Сценарии shell 3.13.2 Перемещение shell и среда 3.13.2.1 Переменная среды PATH 3.13.3 Shell-Сценарии инициализации 3.14 Не хотите ли отправиться в самостоятельное плавание

3.1 Введение 3.2 Базовые концепции UNIX 3.2.1 Регистрация в системе (открытие счета) 3.2.2 Вход в систему 3.2.3 Виртуальные консоли 3.2.4 Shells и команды 3.2.5 Выход из системы 3.2.6 Смена пароля 3.2.7 Файлы и каталоги 3.2.8 Дерево каталогов 3.2.9 Текущий рабочий каталог 3.2.10 Обращение к домашнему каталогу 3.3 Первые шаги в UNIX 3.3.1 Первая прогулка 3.3.2 Разглядывание содержимого каталогов 3.3.3 Создание новых каталогов 3.3.4 Копирование файлов 3.3.5 Перемещение файлов 3.3.6 Удаление файлов и каталогов 3.3.7 Рассматривание файлов 3.3.8 Получение оперативной помощи 3.4 Краткая информация о базовых командах 3.5 Исследование файловой системы 3.6 Типы оболочек 3.7 "Уайлдкард" - "дикая карта" 3.8 Трубопроводы UNIX 3.8.1 Стандартный вход и стандартный выход 3.8.2 Перенаправление входа и выхода 3.8.3 Использование конвейера 3.8.4 Перенаправление с добавлением 3.9 Права доступа к файлам 3.9.1 Концепция прав доступа 3.9.2 Интерпретация прав доступа 3.9.3 Зависимости 3.9.4 Изменение прав доступа 3.10 Управление связями файлов 3.10.1 Жесткие связи 3.10.2 Символические связи 3.11 Управление работами 3.11.1 Работы и процессы 3.11. 2 Выполнение работ на переднем плане и в фоне 3.11.3 Работа в фоне и ликвидация работ 3.11.4 Остановка и возобновление работы 3.12 Использование редактора vi 3.12.1 Концепции 3.12.2 Начала vi 3.12.3 Вставка текста 3.12.4 Удаление текста 3.12.5 Изменение текста 3.12.6 Команды перемещения 3.12.7 Сохранение файлов и выход из vi 3.12.8 Редактирование еще одного файла 3.12.9 Включение других файлов 3.12.10 Выполнение команд Shell 3.12.11 Получение помощи 3.13 Установка среды 3.13.1 Сценарии shell 3.13.2 Перемещение shell и среда 3.13.2.1 Переменная среды PATH 3.13.3 Shell-Сценарии инициализации 3.14 Не хотите ли отправиться в самостоятельное плавание

Администрирование


4.1 О корнях власти, волшебной шапке и приятных ощущениях. 4.1.1 Регистрация root 4.1.2 Злоупотребление системой 4.1.3 Взаимодействие с пользователями 4.1.4 Установление правил 4.1.5 Что все это значит 4.2 Загрузка системы 4.2.1 Использование загрузочной дискеты 4.2.2 Использование LILO 4.3 Выключение системы 4.4 Работа с пользователями 4.4.1 Концепция работы с пользователями 4.4.2 Добавление пользователей 4.4.3 Удаление пользователей 4.4.4 Занесение атрибутов пользователя 4.4.5 Группы 4.5 Архивация и компрессирование файлов 4.5.1 Использование tar 4.5.2 gzip и compress 4.5.3 Можно вместе 4.5.4 Использование дискет для резервирования 4.5.5 Использование дискет в качестве файловых систем 4.6 Модернизация и инсталляция программ 4.6.1 Модернизация ядра 4.6.2 Модернизация библиотек 4.6.3 Модернизация gcc 4.6.4 Модернизация других программ 4.7 Управление файловыми системами 4.7.1 Монтирование файловых систем 4.7.2 Проверка файловых систем 4.8 Использование файла своппинга 4.9 Разношерстные задачи 4.9.1 Файлы установки системы 4.9.2 Установка хост-имени 4.10 Что делать при ЧП 4.10.1 Восстановление с использованием дискеты сопровождения 4.10.2 Восстановление пароля для root 4.10.3 Восстановление файловой системы 4.10.4 Восстановление потерянных файлов 4.10.5 Восстановление потерянных библиотек

4.1 О корнях власти, волшебной шапке и приятных ощущениях. 4.1.1 Регистрация root 4.1.2 Злоупотребление системой 4.1.3 Взаимодействие с пользователями 4.1.4 Установление правил 4.1.5 Что все это значит 4.2 Загрузка системы 4.2.1 Использование загрузочной дискеты 4.2.2 Использование LILO 4.3 Выключение системы 4.4 Работа с пользователями 4.4.1 Концепция работы с пользователями 4.4.2 Добавление пользователей 4.4.3 Удаление пользователей 4.4.4 Занесение атрибутов пользователя 4.4.5 Группы 4.5 Архивация и компрессирование файлов 4.5.1 Использование tar 4.5.2 gzip и compress 4.5.3 Можно вместе 4.5.4 Использование дискет для резервирования 4.5.5 Использование дискет в качестве файловых систем 4.6 Модернизация и инсталляция программ 4.6.1 Модернизация ядра 4.6.2 Модернизация библиотек 4.6.3 Модернизация gcc 4.6.4 Модернизация других программ 4.7 Управление файловыми системами 4.7.1 Монтирование файловых систем 4.7.2 Проверка файловых систем 4.8 Использование файла своппинга 4.9 Разношерстные задачи 4.9.1 Файлы установки системы 4.9.2 Установка хост-имени 4.10 Что делать при ЧП 4.10.1 Восстановление с использованием дискеты сопровождения 4.10.2 Восстановление пароля для root 4.10.3 Восстановление файловой системы 4.10.4 Восстановление потерянных файлов 4.10.5 Восстановление потерянных библиотек

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


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

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

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

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

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

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

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

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

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

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

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



Использование dip


dip может упростить процесс соединения со SLIP-сервером, войти и настроить SLIP-устройства. Если только у вас не выделенная линия для SLIP-сервера, dip - это то, что вам надо.

Для использования dip вы должны написать "сценарий болтовни" (``chat script''), который содержит перечень команд, используемых для связи со SLIP-сервером при входе в систему. Эти команды могут автоматически посылать ваши имя/пароль серверу, а также получать информацию о вашем IP адресе с сервера.

Вот пример такого сценария для использования с сервером динамических IP адресов. Для статических серверов вам потребуется в начале сценария установить значения переменных $local и $remote. В соответствии с вашими локальным IP адресом и адресом сервера соответственно. Более детальную информацию можно получить в Руководстве на dip.

main: # Set Maximum Transfer Unit. This is the maximum size of packets # transmitted on the SLIP device. Many SLIP servers use either # 1500 or 1006; check with your network admins when in doubt. get $mtu 1500 # Make the SLIP route the default route on your system. default # Set the desired serial port and speed. port cua03 speed 38400 # Reset the modem and terminal line. If this causes trouble # for you, comment it out. reset # Prepare for dialing. Replace the following with your # modem initialization string. send AT&C1&D2\\N3&Q5%M3%C1N1W1L1S48=7\r wait OK 2 if $errlvl != 0 goto error # Dial the SLIP server dial 2546000 if $errlvl != 0 goto error wait CONNECT 60 if $errlvl != 0 goto error # We are connected. Login to the system. login: sleep 3 send \r\n\r\n # Wait for the login prompt wait login: 10 if $errlvl != 0 goto error # Send your username send USERNAME\n # Wait for password prompt wait ord: 5 if $errlvl != 0 goto error # Send password. send PASSWORD\n # Wait for SLIP server ready prompt wait annex: 30 if $errlvl != 0 goto error # Send commands to SLIP server to initate connection. send slip\n wait Annex 30 # Get the remote IP address from the SLIP server. The # `get...remote' command reads text in the form xxx.xxx.xxx.xxx, # and assigns it to the variable given as the second argument # (here, $remote). get $remote remote if $errlvl != 0 goto error wait Your 30 # Get local IP address from SLIP server, assign to variable # $local. get $local remote if $errlvl != 0 goto error # Fire up the SLIP connection done: print CONNECTED to $remote at $rmtip print GATEWAY address $rmtip print LOCAL address $local mode SLIP goto exit error: print SLIP to $remote failed. exit:

dip автоматически выполняет команды ifconfig и route, базирующиеся на значениях переменных $local и $remote. Здесь этим переменным присваиваются значения с использованием удаленных команд get..., которые получают текст со SLIP-сервера и присваивают его названной переменной.

Если команды ifconfig и route, которые выполняет для вас dip не работают, вы можете либо выполнить правильные команды в сценарии shell после выполнения dip, либо модифицировать исходник для самого dip. Выполнение dip с опцией -v будет выдавать отладочную информацию в процессе установления связи, что должно помочь в определении ошибок в работе. Теперь, для того, чтобы выполнить dip и открыть SLIP-соединение вы можете использовать команду, вроде:

/etc/dip/dip -v /etc/dip/mychat 2>&1

Где различные dip-файлы и сценарий болтовни (mychat.dip) помещены в /etc/dip. Вышеприведенное обсуждение должно быть достаточным для вашего хорошего самочувствия на славном пути в сетевое сообщество через Ethernet или SLIP. И вновь мы настоятельно рекомендуем заглянуть в книгу по TCP/IP, особенно, если ваша сеть имеет специфику в маршрутизации, отличающую ее от рассмотренных здесь.



Использование дискет для резервирования


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

# tar cvfzM /dev/fd0 /

сделает полную копию вашей системы с использованием дисковода /dev/fd0. Опция ``M'' позволяет копировать на несколько дискет (multivolume backup); то есть, когда одна дискета заполнится, tar запросит следующую. Команда

# tar xvfzM /dev/fd0

может быть использована для полного восстановления. Этот метод может быть также использован для лент (/dev/rmt0).

Существует несколько других программ для осуществления многотомного резервирования. Вам могут пригодиться программы "backflops", которые можно взять на tsx-11.mit.edu.

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

Команда find может быть полезна в выискивании файлов, которые изменились после какой-то даты. Несколько сценариев (командных файлов на shell) для инкрементального резервирования можно найти на sunsite.unc.edu.



Изменение прав доступа


Команда chmod используется для установки (изменения) прав доступа файла. Только владелец файла может менять права доступа к нему.

Синтаксис команды имеет вид:

chmod {a,u,g,o}{+,-}{r,w,x} <filenames>

Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (-). И наконец, вы указываете один или несколько режимов: read, write или execute. Несколько примеров допустимых команд:

chmod a+r stuff

Дает всем пользователям право читать файл stuff.

chmod +r stuff

То же самое, что и ранее (a - по умолчанию).

chmod og-x stuff

Лишает права на выполнение всех, кроме владельца.

chmod u+rwx stuff

Разрешает владельцу все (read, write и execute).

chmod o-rwx stuff

Запрещает все (read, write и execute) пользователям категории другие (other).



Копирование файлов


Копирование файлов осуществляется командой cp (CoPy):

/home/larry/foo# cp /etc/termcap . /home/larry/foo# cp /etc/shells . /home/larry/foo# ls -F shells termcap /home/larry/foo# cp shells bells /home/larry/foo# ls -F bells shells termcap /home/larry/foo#

Команда cp копирует файлы, перечисленные в командной строке, в файл или каталог, указанный последним аргументом. (прим. переводчика: несколько файлов одной командой cp можно скопировать только в каталог; в файл можно скопировать только один файл). Обратите внимание на то, как мы используем каталог ``.''для ссылки на текущий каталог.



Модернизация других программ


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

Чтение группы новостей USENET comp.os.linux.announce - простейший путь, чтобы выловить информацию о новых программах. Так что самый простой способ отыскать какие-то программы, это побродить по FTP-серверам, поскачивать с серверов (ls-lR) индексные файлы и, используя grep, найти желаемые файлы. Если вам доступен архив, это также может помочь. Детали смотрите в Приложении А. (Если у вас нет архива, вы можете по telnet выйти на архивный сервер вроде archie.rutgers.edu, войти как ``archie'' и воспользоваться командой ``help''). Детали смотрите в Приложении А.

Один из удобных источников программ Linux - дисковый образ Slackware. Каждый диск содержит ряд файлов .tgz, просто зазипованных tar-файлов. Вместо переписывания диска вы можете переписать желаемые .tgz файлы из каталогов Slackware на FTP-сервере и прямо их инсталлировать. Если вы используете дистрибутив Slackware, команда setup может автоматически загрузить и инсталлировать полный набор дисков.

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



Не хотите ли отправиться в самостоятельное плавание


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

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



Новости USENET


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

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

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

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

comp.os.linux.announce

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

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

comp.os.linux.help

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

comp.os.linux.admin

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

comp.os.linux.development

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

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

comp.os.linux.misc

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

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



Перенаправление с добавлением


Использование ``>'' для перенаправления выхода смертельно для файла, в который происходит перенаправление (если было, что уничтожать), другими словами

/home/larry/papers# ls > file-list

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

/home/larry/papers# ls >> file-list

добавит выходную информацию команды ls в файл file-list.

Имейте в виду, что перенаправления и конвейер, это средства, предоставляемые оболочкой shell, это синтаксис shell и символы ``>'', ``>>'' и ``|'' не имеют никакого отношения к командам, как таковым.



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


Если у вас Slackware на CD-ROM, вы можете инсталлировать систему, как только вы создали дискеты boot и root. Программы будут инсталлироваться прямо с CD.



Получение Slackware


Slackware - популярная дистрибуция Linux, сопровождаемая Patrick Volkerding. С Patrick Volkerding можно связаться по Internet: volkerdi@mhd1.moorhead.msus.edu.

Эта версия легко инсталлируется и достаточно полна. Она может быть получена по Internet, а также на CD-ROM от ряда поставщиков (см. Приложение B).

Дистрибуция Slackware состоит из "наборов дисков" (``disk sets''), каждый из которых содержит конкретный тип программ (например, набор "d" содержит средства разработки development tools, такие как gcc-компилятор, и набор "x", содержащий X Window System). Вы можете выбирать, какие наборы инсталлировать; другие наборы вы можете инсталлировать позже.

Версия Slackware, описанная здесь - это версия 2.0.0, от 25 июня 1994. Инсталляция более поздних версий должна быть во многом аналогична.



Проблемы после инсталляции Linux


Вы потратили целых полдня, инсталлируя Linux. Чтобы выделить под него место, вы стерли свои разделы с MS-DOS и OS/2 и не без утирания слез стерли свои копии "SimCity" и "Wing Commander"... Вы перезагрузили систему, а ничего не произошло. Или еще хуже того, что-то произошло, но не то, что должно было произойти. Ну и что делать?

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



Программирование


Название: The C Programming Language Автор: Brian Kernighan and Dennis Ritchie Издатель: Prentice-Hall, 1988 ISBN: 0-13-110362-8, $25.00

Эту книгу следует иметь обязательно любому, пожелавшему программировать на C в ОС UNIX. (Или в другой системе из этой обоймы). Хотя эта книга не ограничивается лишь UNIX, она вполне применима к программированию на C в UNIX.

Название: The Unix Programming Environment Автор: Brian Kernighan and Bob Pike Издатель: Prentice-Hall, 1984 ISBN: 0-13-937681-X, ??

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

Название: Advanced Programming in the UNIX Environment Автор: W. Richard Stevens Издатель: Addison-Wesley ISBN: 0-201-56317-7, $50.00

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



Разбиение вашего жесткого диска


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

Обычный способ изменить размеры существующего раздела - это удалить его (уничтожив все данные, которые он содержал) и вновь его создать. Перед переразбиением диска сделайте backup системы. А затем восстановите информацию. В MS-DOS существует несколько программ, которые могут переразбить диск без уничтожения информации. Одна из них известна как FIPS, ее можно найти на FTP-серверах Linux.

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

Программа, используемая для разбиения на разделы известна, как fdisk. Каждая операционная система имеет собственный аналог этой программы; например, под MS-DOS она вызывается командой FDISK. Вам следует посмотреть документацию на вашу операционную систему относительно перераспределения разделов. Здесь мы обсудим, как переразбивать на разделы в MS-DOS с использованием FDISK, но эта информация может быть легко распространена на другие операционные системы.

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

Предупреждение. Не модифицируйте и не создавайте вновь раздел для любой другой операционной системы (включая Linux), используя FDISK под MS-DOS. Вы можете производить модификацию только для конкретной операционной системы; например, вы должны создавать разделы для Linux, используя версию fdisk для Linux. Позже, в Разделе 2.3.3 мы опишем, как создавать разделы для Linux. Но сейчас мы обсуждаем изменение размера существующих.

Предположим, что вы имеете один диск, полностью отданный под MS-DOS. Таким образом, ваш диск состоит целиком из одного раздела, обычно известного как ``C:''. Поскольку этот метод портит данные этого раздела, вам необходимо создать загрузочную таблицу MS-DOS ``system disk'', которая хранит все необходимое для выполнения FDISK и последующего backup.

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

FORMAT /s A:

Скопируйте на эту дискету все необходимые утилиты MS-DOS (обычно большинство программ каталога \DOS на вашем диске), а также программы FORMAT.COM и FDISK.EXE. Теперь вы можете загрузиться с этой дискеты и выполнить команду

FDISK C:

Работа FDISK должна сопровождаться объяснениями, но детали следует посмотреть в документации на MS-DOS. Когда вы запустите FDISK, используйте опцию menu для отображения таблицы разделов и спишите приведенную там информацию. Важно сохранить запись о ваших первоначальных установках setup в случае, если вы захотите отказаться от инсталляции Linux.

Для удаления существующего раздела выберите в меню FDISK опцию ``Delete an MS-DOS Partition or Logical DOS Drive''. Опишите тип раздела, который вы желаете удалить (первичный, расширенный или логический) и число разделов. Внимательно отнеситесь ко всем предупреждениям. Ух!

Для создания нового (меньшего) раздела для MS-DOS, выберите опцию FDISK ``Create an MS-DOS Partition or Logical DOS Drive''. Опишите тип раздела (первичный, расширенный или логический) и размер создаваемого раздела (в мегабайтах). FDISK создаст раздел.

После того, как вы закончите работу с FDISK, следует выйти из программы и переформатировать новый раздел. Например, если вы изменяете размер первого DOS раздела на диске (C:), следует выполнить команду

FORMAT /s C:

Теперь можно выполнить backup.



Shells и команды


В большинстве ваших исследований мира UNIX вы будете общаться с ним через оболочку shell. Shell - это просто программа, которая воспринимает введенное пользователем, (т.е. команды, которые вы напечатаете) и транслирует это в команды системе. Это можно сравнить с программой COMMAND.COM под MS-DOS, которая делает нечто похожее. Shell - это лишь один из интерфейсов UNIX. Существует много различных интерфейсов, таких как X Window System, которая позволяет выполнять команды используя мышь и клавиатуру в сочетании.

Как только вы вошли, система запускает shell и вы можете вводить для него команды. Вот короткий пример. Как раз Larry вошел в систему и система вновь выдала подсказку:

mousehouse login: larry Password: larry's password Welcome to Mousehouse! /home/larry#

``/home/larry#'' это подсказка shell, показывающая, что он готов принимать команды. (Подробнее про подсказкy позже). Давайте попросим систему сделать что-нибудь интересьненькое:

/home/larry# make love make: *** No way to make target `love'. Stop. /home/larry#

Хм, как оказалось, "make" - это имя существующей в системе программы и shell пытался выполнить эту команду. (Жаль, но система отнеслась к просьбе недружественно).

Это подводит нас к жгучему вопросу: Что такое команды? Что происходит, когда вы вводите ``make love''? Первое слово командной строки ``make'' это имя команды, которую предполагается выполнить. Все остальное в командной строке воспринимается как аргументы команды.

Примеры:

/home/larry# cp foo bar

Здесь имя команды ``cp'', а аргументы ``foo'' и ``bar''.

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

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

Что случится, если мы введем команду, а shell не сможет найти программу с этой командой? Давайте попробуем:

/home/larry# eat dirt eat: command not found /home/larry#

Все очень просто, если shell не может найти программу с именем данным в командной строке (здесь ``eat''), он выдает сообщение об ошибке, которое объясняет причину невыполнения команды. Вы часто будете видеть это сообщение, если будете вводить имена команд с ошибками. (например, напечатаете ``make love'' вместо ``make love'').



Система X Window


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

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

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

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

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

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

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

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

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



Создание области своппинга


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

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

Дистрибутив Slackware требует создания области своппинга до инсталляции, если вы имеете 4M RAM или меньше. Если у вас нет таких ограничений, инсталляционная процедура Slackware выделит область своппинга автоматически. Если у вас возникают сомнения, то следуйте процедуре, описанной здесь; она не сможет вам навредить.

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

mkswap -c <partition> <size>

где <partition> - имя раздела своппинга, а <size> - размер этого раздела в блоках. size of the partition, in blocks. Еще раз напомним, что в некоторых дистрибутивах область своппинга создается автоматически и блок в Linux занимает 1024 байта.

Например, если ваш раздел своппинга /dev/hda3 и имеет размер в 10336 блоков, используйте команду

# mkswap -c /dev/hda3 10336

Опция -c команды mkswap обеспечивает проверку плохих блоков в разделе при создании области своппинга.

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

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

Команда подготовки области своппинга - swapon имеет вид

swapon <partition>

Для вышеприведенного примера, чтобы подготовить область своппинга на /dev/hda3, необходимо выполнить команду

# swapon /dev/hda3



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


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

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

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

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