Инсталляция Linux.

перевод Балуева А. Н.

Оглавление

  • ГЛАВА 4. СИСТЕМНОЕ АДМИНИСТРИРОВАНИЕ

    ГЛАВА 4. СИСТЕМНОЕ АДМИНИСТРИРОВАНИЕ

    В начало страницы

    В этой главе расматриваются наиболее важные вещи, которые вам необходимо знать о системной администрации в Linux и существенные детали для комфортного использования системы. Для большей понятности в ней описываются только базисные свойства и обходятся многие важные детали. Реководство Linux System Administrator's Guide, автор Lars Wirzenius (см. приложение A) содержит значительно больше сведений по вопросам системной администрации. Оно поможет вам лучше понимать, как система работаетr. По крайней мере полистайте его, чтобы знать его содержание и то, какую помощь можно ожидать от него.

    4.1 Корневые учетные записи.

    В начало страницы

    Linux учитывает различия между пользователями . Система регулирует их взаимоотношения. Допуски к файлам организованы так, что обычные пользователи не могут уничтожать или модифицировать файлы в таких каталогах как /bin и /usr/bin. Большинство пользователей защищают свои собственные файлы соответствующими допусками, так что другие пользователи не имеют к ним доступа или не могут модифицировать их (никому не хочется давать читать посторонним свои любовные письма). Каждому пользователю придается его учетная запись, содержащая его имя и начальный каталог. Кроме того, имеются специальные, определяемые системой учетные записи, доступ к которым требует привилегий. Наиболее важной из них является корневая учетная запись (root account), используемая системным администратором. По соглашению, системный администратор есть пользователь с именем root. Для него не существует никаких ограничений. Он или она могут читать, изменять или удалять любые файлы в системе, менять допуски и принадлежности любого файла и выполнять специалные программы, такие как программы разделения жесткого диска или создания файловых систем. Основная идея состоит в том, что лицо, которое ведет системную администрацию, регистрируется как root для выполнения действий, которые не должен совершать обычный польователь. Поскольку root может делать что угодно, ему легко сделать ошибку, которая может привести к катастрофическим последствиям. Если обычный пользователь по невнимательности попытается уничтожить все фалы в каталоге /etc, система не позволит ему сделать это. А если то же самое попытается сделать root, система позволит ему это. В режиме root очень легко разрушить всю систему Linux. Чтобы избежать этого, нужно:

    *** Подумать несколько раз, прежде чем нажать Enter для выполнения команды, действие которой нельзя отменить. Если вы собираетесь очищать какой-то каталог, перечитайте команду, чтобы убедиться в ее правильности,

    ***ffl Используйте другое прглашение к действиям в режиме root. Корневые файлы .bashrc или .login должны устанавливать приглашение оболочки, отличное от стандартного приглашения. Многие резервируют символ "#" в приглашениях для root и используют "$" в обычных приглашениях.

    *** ffl Регистрируйтесь как root только если это абсолютно необходимо. А когда кончаете работу как root, выходите из системы (log out). Чем меньше вы пользуетесь режимом root, тем меньше вероятность причинить ущерб системе. И меньше вероятность того, что перепутаете привилегии root с возможностями нормального пользователя. Картинка корневого доступа, подобно специальной магической шляпе, дает вам силу, с которой вы мановением руки можете разрушать целые города. И поэому надо быть осторожным при осуществлении того, что вы можете сделать своими руками. Потому что, если вам легко размахивать руками, круша все кругом, не стоит носить магическую шляпу, когда в этом нет необходимости, хотя это и вызывает приятные чувства. Подробнее мы поговорим об обязанностях системного адиминистратора на стр. 201.

    4.2 Загрузка системы.

    В начало страницы

    Многие загружают Linux с дискеты, которая содержит копию ядра Linux. Это ядро имеет закодированный в нем корневой раздел Linuxи и знает поэтому, где искать корневую файловую систему. Например, дискета такого типа создается в Slackware во время инсталляции.

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

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

    rdev kernel-name root-device

    Здесь kernel-name есть имя образа ядра, а root-device есть имя корневого раздела Linux. Например, чтобы установить корневое устройство в ядре /vmlinuz на /dev/hda2, воспользуйтесь командой

    # rdev /vmlinuz /dev/hda2

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

    # rdev -h

    печатает сообщение help на экране. После установки root device просто скопируйте образ ядра на дискету. Перед копированием данных на любую дискету хорошо использовать MS-DOS FORMAT.COM или программу fdformat из Linux для форматирования дискеты. Они определяют информацию о секторах и дорожках, соответствующую возможностям дискеты.

    Форматы дискет и сответствующих им файлов драйверов устройств обсуждаются далее на стр. 211.

    Файлы драйверов устройств, как говорилось выше, располагаются в каталоге /dev . Для копирования из файла /etc/Image на дискету в /dev/fd0 используйте команду

    # cp /vmlinuz /dev/fd0

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

    4.2.1 Использование LILO.

    В начало страницы

    LILO есть отдельный корневой загрузчик, который расположен на вашем жестком диске. Он исполняется, когда система загружается с жесткого диска, и может автоматически загружать Linux из расположенного там же образа ядра. LILO может также использоваться как корневой загрузчик первой стадии (first-stage boot loader) для некоторых операционных систем. Он позволяет вам выбирать загружаемые операционные системы, такие как Linux или MS-DOS. LILO загружает операционную систему, указанную по умолчанию, если вы не нажмете Shift на время загрузчной последовательности или если приглашающая директива не указана в файле lilo.conf . В каждом случае вам обеспечивается прилашение к загрузке, в котором вы печатаете имя операционной системы для загрузки (такое как "linux" или "msdos"). Если вы нажмете Tab при прилашении к загрузке, появится список операционных систем, известных LILO.

    Простой способ установки LILO состоит в редактировании конфигурационного файла /etc/lilo.conf. Команда

    # /sbin/lilo

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

    Файл конфигурации LILO содержит по "строфе" для каждой операционной системы, которые вы хотите загружать. Лучше всего продемонстрировать это на примере. Файл lilo.conf file, испальзуемый в примере ниже, предназначен для системы, которая имеет корневой раздел Linux на /dev/hda1 и раздел MS-DOS на /dev/hda2.

    
    # Прикажите  LILO модифицироватm загрузочную запись на /dev/hda (первый
    # не-SCSI жсткий диск). Если вы загружаетесь с дисковода, отличного от
    # /dev/hda, измените следующую строку.
    boot = /dev/hda
    # установите нужный видеорежим
    vga = normal
    # Установите задержку в миллисекундах. Это время, за которое вы длжны
    # нажать клавишу  'SHIFT' для вызова  приглащения LILO, если вы
    # не указали директивы  'prompt'.
    delay = 60
    # Назовите  корневой загрузчик. Нет причин модифицировать его, если вы не
    # предпринимаете серьезных попыток изменить LILO.
    install = /boot/boot.b
    # Это принуждает  LILO спросить вас, какую  OS вы хотите загрузить.
    # КлавишA 'TAB' по LILO: prompt выдаст список операционны систем
    # доступных для загрузки в соответствии с именами, указанными в  'label='
    # список директив.
     prompt
    # LILO осуществляет некоторую оптимизацию.
    compact # Строфа для корневого раздела  Linux на  /dev/hda1.
    image = /vmlinuz # место расположения  ядра
    
    
    label = linux # Имя  OS (для загрузочного меню LILO)
    root = /dev/hda1 # расположение корневого раздела только для чтения
    # смонтируйте только для чтения
    # Строфа для раздела MSDOS на /dev/hda2.
    other = /dev/hda2 # место раздела
    table = /dev/hda # Место таблицы разделов для  /dev/hda2
    label = msdos # Имя  OS (для меню загрузкиu)
    

    Строфа первой операционной системы определяет систему, которую LILO загружает по умолчанию. Заметим также, что если вы использовали выше строку "root =" , нет причин использовать rdev для установки корневого раздела в образе ядра. LILO устанавливает это во время загрузки.

    Установщик Microsoft Windows '95 перезапишет загрузочного менеджера LILO. Если вы собираетесь установить на вашей системе Windows '95 после инсталляции LILO, создайте сначала загрузочную дискету (см. раздел 4.2). Имея ее, вы сможете загрузить Linux и переинсталлировать LILO после завершения инсталляции Windows '95. Это делается просто печатью в режиме root команды /sbin/lilo, как и в шаге выше. Разделы с Windows '95 могут быть сконфигурированы для загрузки с LILO с помощью тех же самых частей lilo.conf, которые используются для загрзки раздела MS-DOS.

    Linux FAQ (см. приложение A) содржит больше информации о LILO, включая использование для загрузки LILO программу OS/2 Boot Manager.

    4.3 Закрытие.

    В начало страницы

    Закрытие системы Linux может быть хитрым. Никогда не нужно это делать простым выключением питания или нажимом переключателя reset. Ядро следит за чтением и записью данных на диск через буфера памяти. Если вы перезагрузите систему, не дав ядру возможности записать буфера на диск, вы можете нанести вред файловым системам. И другие предосторожности должны быть предприняты при закрытии. Всем процессам нужно послать сигнал для благополучного завершения (например, для записи и закрытия всех файлов). Для безопасности следует размонтировать все файловые системы. Если хотите, система может предупредить всех пользователей о закрытии, чтобы дать им возможность для log off. Самый простой путь закрытия состоит в выполнении команды shutdown. Ее формат таков:

    shutdown time warning-message

    Аргумент time есть время закрытия системы (в формате hh:mm:ss), warning-message содержит сообщение, выдаваемое на все пользовательские терминалы перед закрытием. Альтернативно, время можно указать как "now", чтобы закрыться не медля. Параметр -r можно указать для закрытия с целью перезагрузки после него.

    Например, для закрытия и перезагрузки системы в 8:00 pm используйте команду

    # shutdown -r 20:00

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

    The system is halted

    Очень важно закрывать систему "чисто", командами shutdown или halt. На некоторых системах нажим Ctrl - Alt - Del перехватывается и выдается shutdown. На других системах использование "Vulcan nerve pinch" немедленно перезагружает систему и может привести к неприятностям.

    4.3.1 Файл /etc/inittab.

    В начало страницы

    Сразу после того как Linux загрузится и ядро смонтирует корневую файловую систему, первой программой, исполняемой в системе, будет программа init. Эта программа отвечает за запуск стартового сценария системы и модифицирует действия системы от ее начального загрузочного состояния в обычное мультипользовательское состояние. init также порождает начало сеансов оболочек (login: shells) для все телеуправляемых (tty) устройств системы и определяет разные стартовые и закрывающие процедуры. После запуска, init остается в состоянии ожидания на заднем плане, управляя и модифицируя при необходимости рабочее состояние системы. Имеется много задач, которые обеспечивает программа inite. Эти задачи определены в файле /etc/inittab file. Пример файла /etc/inittab приводится ниже.

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

    # # inittab. Этот файл описывает, как нужно устанавливать процесс INIT
    # в системе на определенном уровне исполнения (run-level).
    # # Версия: @(#)inittab 2.04 17/05/93 MvS 
    # 2.10 02/10/95 PV
    # # Автор: Miquel van Smoorenburg, 
    # Изменения внес: Patrick J. Volkerding, 
    # Небольшие изменения сделал: 
    # Robert Kiesling, 
    # # Уровень исполнения по умолчанию. id:3:initdefault:
    # Инициализация сист. (исполняется при загрузке). 
      si:S:sysinit:/etc/rc.d/rc.S
    # Сценарий исполнения при единственном пользователе
    #(runlevel 1). 
      su:1S:wait:/etc/rc.d/rc.K
    # Сценарий исполнения при многих пользователях. 
      rc:23456:wait:/etc/rc.d/rc.M
    # Что делать по  Ctrl-Alt-Del 
      ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now
    # Runlevel 0 останавливает (halts) систему. 
      l0:0:wait:/etc/rc.d/rc.0
    # Runlevel 6 перезагружает систему. 
      l6:6:wait:/etc/rc.d/rc.6
    # Что делать при отказе питания(shutdown до единственного пользователя).
      pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING"
    # Если питание восстановилось до shutdown, отмениь текущее shutdown.
      pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK"
    # Если питание восстановилось в режиме единств. пользователя,
      вернуться в режим многих пользователей.
      ps:S:powerokwait:/sbin/init 5
    
    # The getties в режиме многих пользователей 
    # на консолях последовательн. строк.
    # # NOTE NOTE NOTE присоедините это к вашему  getty или вы не сможете
    # зарегистрироваться  (to login) !!
    # # Замечание: для  'agetty' используйте  linespeed, line.
    # для  'getty_ps' используйте line, linespeed, а также  'gettydefs'
    c1:1235:respawn:/sbin/agetty 38400 tty1 linux 
    c2:1235:respawn:/sbin/agetty
    38400 tty2 linux 
    c3:1235:respawn:/sbin/agetty 38400 tty3 linux
    
    c4:1235:respawn:/sbin/agetty 38400 tty4 linux 
    c5:1235:respawn:/sbin/agetty
    38400 tty5 linux 
    c6:12345:respawn:/sbin/agetty 38400 tty6 linux
    # Serial lines
    # s1:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100
    s2:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
    # Dialup lines 
    d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200
    ttyS0 vt100 
    #d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200
    ttyS1 vt100
    # Runlevel 4 должен использоваться только 
    # для системы X-window, пока мы не
    # заметим, что init зациклилась, что задержит ваше 
    # load avg по кр. мере 1 раз
    # за все время. Таким образом, не будет ни одной getty, 
    # открытой на tty6.
    # Может быть, никто и не заметит ;^)
    # Не плохо иметь хотя бы одну текстовую консоль на случай, 
    # если что-нибудь
    # случится с  X. x1:4:wait:/etc/rc.d/rc.4
    # End of /etc/inittab
    
    Файл в оригинале /etc/inittab
    	#
    	# inittab
    	#This file describes how the INIT process should set up
    	# the system in a certain run-level.
    	#The /etc/inittab File 193
    	#
    	# Version: @(#)inittab 2.04 17/05/93 MvS
    	# 2.10 02/10/95 PV
    	#
    	# Author:
    	#Miquel van Smoorenburg, 
    	#
    	#Modifiedby:PatrickJ.Volkerding,
    	# Minor modifications by:
    	# Robert Kiesling, 
    	#
    	# Default runlevel.
    	id:3:initdefault:
    	# System initialization (runs when system boots).
    	si:S:sysinit:/etc/rc.d/rc.S
    	#Scripttorunwhengoingsingleuser(runlevel1).
        su:1S:wait:/etc/rc.d/rc.K
    	# Script to run when going multi user.
    	rc:23456:wait:/etc/rc.d/rc.M
    	# What to do at Ctrl-Alt-Del
    	ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now
    	# Runlevel 0 halts the system.
    	l0:0:wait:/etc/rc.d/rc.0
    	# Runlevel 6 reboots the system.
    	l6:6:wait:/etc/rc.d/rc.6
    	# What to do when power fails (shutdown to single user).
        pf::powerfail:
        /sbin/shutdown -f +5 "THE POWER IS FAILING"
        # If power is back before shutdown, 
        #cancel the runningshutdown.
        pg:0123456:powerokwait: 
        /sbin/shutdown -c "THE POWER IS BACK"
        # If power comes back in single user mode, 
        #return to multi user mode.
    	ps:S:powerokwait:/sbin/init 5
    	194 System Administration
    	# The getties in multi user mode on consoles an serial lines.
    	#
        # NOTE NOTE NOTE adjust this to your getty or you will not be
    	# able to login !!
    	#
    	# Note: for ТagettyТ you use linespeed, line.
    	# for Тgetty_psТ you use line, 
    	# linespeed and also use ТgettydefsТ
    	c1:1235:respawn:/sbin/agetty 38400 tty1 linux
    	c2:1235:respawn:/sbin/agetty 38400 tty2 linux
    	c3:1235:respawn:/sbin/agetty 38400 tty3 linux
    	c4:1235:respawn:/sbin/agetty 38400 tty4 linux
    	c5:1235:respawn:/sbin/agetty 38400 tty5 linux
    	c6:12345:respawn:/sbin/agetty 38400 tty6 linux
    	# Serial lines
    	# s1:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100
    	s2:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100
    	# Dialup lines
    	d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,
        2400,1200 ttyS0 vt100
    	#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,
         9600,2400,1200 ttyS1 vt100
    	# Runlevel 4 used to be for an X-window only system, 
    	# until we discovered
    	# that it throws init into a loop that keeps 
    	# your load avg at least 1 all
    	# the time. Thus, there is now one getty opened on tty6. 
    	# Hopefully no one
    	# will notice. ;И)
    	# It might not be bad to have one text console anyway, 
    	# in case something
    	# happens to X.
    	x1:4:wait:/etc/rc.d/rc.4
    	# End of /etc/inittab
    
    

    При запуске этот файл /etc/inittab запускает шесть виртуальных консолей запускает шесть виртуальных консолей, login: prompt на модеме присоединенном к /dev/ttyS0 и login: prompt на символьном терминале, соединенном через последовательную линию RS-232 serial с /dev/ttyS1. Короче, init проходит через последовательность уровней исполнения, которая соответствует разлчным оперативным состояниям системы. Уровень исполнения 1 наступает немедленно после загрузки системы, уровни исполнения 2 и 3 представляют нормальные многопольовательские режимы, уровень 4 запускает систему X Window через X display manager xdm, а уровень исполнения 6 перезагружает систему. Уровни исполнения, связанные с каждой командой, составляют второй объект (item) в каждой строке файла /etc/inittab.

    Например, строка

    s2:12345:respawn:/sbin/agetty -L 9600 ttyS1 vt100

    будет обслуживать login prompt на серийном терминале для уровней исполнения 1-5. "s2" перед первой колонкой есть символический идентификатор, используемый программой init внутренним образом. respawn есть ключевое слово для init, которое часто используется в конъюнкции с последовательными терминалами. Если, по истечении некоторого промежутка времени программа agetty, которая порождает терминальные login: prompt, не получает ввода с терминала, программа приостанавливается и прекращает работу. "respawn" побуждает init снова выполнять agetty, обеспечивая постоянно login: prompt на терминале, безотносительно к тому, регистрировался кто-нибудь или нет. Остальные параметры передаются непосредственно в agetty и инструктируют ее определять оболочку login, скорость данных на последовательной линии, последовательном устройстве и терминальный тип, как это определено в /etc/termcap или /etc/terminfo.

    Программа /sbin/agetty обслуживает многие особенности, относящиеся к терминалам ввода/вывода в системе. Имеется несколько различных версий, обычно используемых в система Linux. Сюда входят mgetty, psgetty или просто getty.

    В случае строки /etc/inittab вида

    d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100

    которая позволяет пользователям регистрацию через модем, связанный с последовательной линией /dev/ttyS0, то параметры /sbin/agetty "-mt60" позволяют системе проходить через все скорости модема, которые могут использовать вызывающие устройства системы и закрывать /sbin/agetty, если связь отсутствует более 60 секунд. Это носит название договорной связи (negotiating a connection). Поддерживаемые модемами скорости пронумерованы в линиях для команд, также как используемые в последовательной линии, и типы терминалов. Конечно, и модемы и терминалы должны поддерживать скорость передачи, согласованную обеими машинами.

    Многие важные детали в этм разделе пропущены. Задачи, которые обслуживает /etc/inittab, могут заполнить целую отдельную книгу. Дальнейшую информацию см. в manual pages для прогамм init и agetty, в Linux Documentation Project's Serial HOWTO, доступных из источников, перечисленных в приложении A.

    4.4 Управление файловыми системами.

    В начало страницы

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

    4.4.1 Монтирование файловых систем.

    В начало страницы

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

    То же самое относится к файловым системам на жестком диске. Система автоматически монтирует файловые системы на вашем жестком диске во время загрузки. Так называемая "корневая файловая система" монтируетс в каталоге /. Если вы имеете отдельную файловую систему для /usr, она монтируется на /usr. Если вы имеете только корневую файловую систему, все файлы (включая те, что в /usr), существуют только в этой файловой системе.

    Команды mount и umount (не unmount!) используются для монтирования и размонтирования файловых систем. Команда mount -av выполняется автоматически файлом /etc/rc во время загрузки, или файлом /etc/rc.d/boot (см. стр. 225) на всяких системах Linux. Файл /etc/fstab обеспечивает информацию о файловых системах и точках монтирования. Примером файла /etc/fstab может служить

    
    # device   directory  type   options
    
    /dev/hda2     /       ext2   defaults
    /dev/hda3  /usr       ext2   defaults
    /dev/hda4   none      swap   sw
    /proc      /proc      proc   none
    

    Первое поле, device, есть имя раздела для монтирования. Второе поле есть точка монтирования. Третье поле есть тип файловой системы, подобный ext2 (для ext2fs) или minix (для файловых систем Minix). В таблице 4.1 неречислены типы различных файловых систем, монтируемых под Linux. [1*] Не все из этих систем можно использовать на вашей системе, потому что ядро дожно получить поддержку для них во время компиляции ядра. См. стр 216 относительно информации о построении ядра.

     ------------------------------------------
    [1*] Эта таблица соответствует ядрам версии 2.0.33.
    
    
    ------------------------------------------------------------------------------
    Тип файловой системы          Имя                  Комментарий
    -----------------------------------------------------------------------------
    Second Extended File system   ext2        Обычная файловая система в Linux.
    Extended File system          ext         Вытесняется системой ext2.
    Minix File system            minix  	  Оригинальная система Minix; редко использ.
    Xia File system              xia          Подобна ext2, используется редко.
    UM SDOS File system         umsdos        Исп. для установки Linux на разделе
                                              NS-DOS,
    
    MS-DOS File system           msdos        Исп. для доступа к файлам MS-DOS.
    /proc File system            proc         Обеспечивает информацию для  ps, и т.п.
    ISO 9660 File system       iso9660        Форматы, исп. в большинстве  CD-ROMs.
    Xenix File system            xenix        Исп. для доступа к файлам из Xenix.
    System V File system         sysv         Исп. для доступа к файлам из System V,
                                              варианты для x86.
    
    Coherent File system         coherent    Исп.для доступа к файлам из Coherent.
    HPFS File system              hpfs       Доступ для чтения разделов HPFS
                                             (DoubleSpace).
    ------------------------------------------------------------------------------
    
    Таблица 4.1: Типы файловых систем в Linux
    
    

    Последнее поле в файле fstab содержит параметры монтирования. Обычно оно устанавливается по умолчанию. Разделы Swap включаются в файл /etc/fstab. В них указана монтируемый каталог или пусто и тип swap. Команда swapon -a, которая выполняется из /etc/rc или /etc/init.d/boot, используется для обеспечения своппинга на все устройства swap, которые перечислены в /etc/fstab.

    Файл /etc/fstab содержит одно специальное поле для файловой системы /proc. Как это описано на стр. 166, файловая система /proc используется для хранения информации о системных процессах, доступной памяти и пр. Если /proc не смонтирована, команды типа ps не работают. Команда mount может работать только в режиме root. Это обеспечивает защиту для системы. Никто не хочет разрешать обычным пользователям монтировать и размонтировать системы по их прихоти. Вместе с тем имеются несколько программных пакетов, которые позволяют некорневым пользователям монтировать и размонтировать файловые системы, особенно дискетные, без нарушения системной защиты.

    Команда mount -av фактически монтирует все файловые системы, отличные от корневой (/dev/hda2 в приведенной выше таблице). Корневая файловая система автоматически монтируется при загрузке ядра. Вместо использования команды mount -av, файловую систему можно смонтировать вручную. Команда

    # mount -t ext2 /dev/hda3 /usr

    эквивалентна монтированию файловой системы с входом /dev/hda3 в примере для файла /etc/fstab, приведенном выше.

    4.4.2 Имена драйверов устройств.

    В начало страницы

    В дополнение к именам разделов, перечисленных в файле /etc/fstab file, Linux распознает некоторое количество фиксированных и съемных media-устройств. Они классифицируются по типу, интерфейсу и порядку, в котором установлены. Например, первый жесткий диск в вашей системе, если он есть IDE или более старый жесткий диск MFM, управляется драйвером, указанным в /dev/hda. Первый раздел жесткого диска есть /dev/hda1, второй раздел есть /dev/hda2, третий раздел есть /dev/hda3, и т.д. Первый раздел второго дисковода IDE часто есть /dev/hdb1, второй раздел есть /dev/hdb2, и т.д. Схема наименования для наиболее часто устанвливаемых дисководов IDE при Intel-architecture, в ISA и PCI bus машинах, приведена в таблице 4.2.

    Device driver Drive
    /dev/hda Master IDE drive, primary IDE bus.
    /dev/hdb Slave IDE drive, primary IDE bus.
    /dev/hdc Master IDE drive, secondary IDE bus.
    /dev/hdd Slave IDE drive, secondary IDE bus.
    
    
    Таблица 4.2: Имена дисководов устройств IDE .
    

    CD-ROM и лентопротяжки, которые используют усовершенствованные IDE/ATAPI интерфейсные драйверы, также используют эти имена ecnhjqcnd.

    Однако, многие машины, включая сложные (high-end) персональные компютерные станции и машины на основе Digital Equipment Corporation's Alpha processor, используют Small Computer System Interface (сокращенно SCSI). Соглашения по наименованию устройств SCSI отличны от приведенных выше, благодаря большей гибкости адресации SCSI. Первый жесткий дисковод в системе есть /dev/sda, второй дисковод SCSI есть /dev/sdb, и т.д. Список обычных устройств SCSI приведен в таблице 4.3.

    Заметьте, что SCSI CD-ROM и ленточные приводы именуются не так, как жесткие дисководы SCSI. Сменные средства SCSI, такие как привод Iomega Zip, следуют соглашениям по наименованию для несъемных устройств SCSI. Использование привода Zip дяля запасных копий описывается начиная со стр. 213.

    Приводы бегущей ленты (Streaming tape drives), подобно тем, которые читают и пишут на магнитной ленте в формате QIC-02, QIC-40 и QIC80, имеют собсвенное множество имен, описанное на стр. 214.

    Device driver                   Drive
    
    /dev/sda                  First SCSI hard drive.
    /dev/sdb                  Second SCSI hard drive.
    /dev/st0                  First SCSI tape drive.
    /dev/st1                  Second SCSI tape drive.
    /dev/scd0                 First SCSI CD-ROM drive.
    /dev/scd1                 Second SCSI CD-ROM drive.
    
                 Таблица 4.3: Драйверы устройств SCSI
    
     Дискетные приводы также имеют свою схему наименований, 
     				описанную на стр. 211.
     				
     

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

    В начало страницы

    Нужно периодически проверять ваши файловые системы на предмет их сохранности от случайной или намеренной порчи. Некоторые системы автоматически проверяют их файловые системы во время загрузки( с помощью соответствующих команд в /etc/rc или /etc/init.d/boot). Команды, используемые для проверки файловой системы, зависят от типа файловой системы. Для ext2fs (наиболее распространенный тип), это команда e2fsck. Например, команда

    # e2fsck -av /dev/hda2

    проверяет файловую систему ext2fs на /dev/hda2 и автоматически корректирует всякие ошибки. Хорошим стилем является размонтирование файловой системы перед ее проверкой. Оно необходимо, если e2fsck должна произвести какой-то ремонт файловой системы. Команда

    # umount /dev/hda2

    размонтирует систему на /dev/hda2. Но корневую файловую систему размонтировать нельзя. Для того, чтобы проверить корневую файловую систему, когда она не смонтрована, нужно воспользоваться поддерживающей дискетой boot/root (см. стр. 227). Также нельзя размонтировать файловую систему, если какой-нибудь из ее файлов "занят", т.е. используется в работающем процессе. Например, вы не можете размонтировать файловую систему, если текущий рабочий каталог какого-нибудь пользователя пересекается (is on) с этой файловой системой. В этом случае вы получите сообщение об ошибке: "Device busy". Файловые системы разных типов используют разные формы команды e2fsck, такие как efsck или xfsck. На некоторых системах вы можете просто использовать команду fsck, которая автоматически определяет тип файловой системы и выполняет соответствующую ей команду.

    Если e2fsck сообщает, что она производит ремонт на смонтированной файловой системе, вы должны немедленно перезагрузить систему. Для этого нужно выдать команду shutdown -r , производящую презагрузку. Это позволит системе пересинхронизировать информацию о файловой системе после того как e2fsck модифицирует ее. Файловая система /proc никогда не нуждается в проверке такого рода. /proc есть файловая система в памяти и управляется непосредственно ядром.

    4.5 Использование файла swap.

    В начало страницы

    Вместо резервирования отдельного раздела для swap-пространства, можно использовать файл swap. Но в таком случае вам нужно сначала инсталлировать Linux и запустить его в работу, а уж потом создавать файл swap. При установленном Linux для создания файла swap нужно использовать следующие команды. Эти команды создают swap-файл размером в 8208 блоков (около 8 Mb).

    # dd if=/dev/zero of=/swap bs=1024 count=8208

    Эта команда создает swap-файл, /swap. Параметр "count=" определяет размер файла в блоках.

    # mkswap /swap 8208

    Эта команда инициализирует файл swap. Она заменяет имя и размер файла swap подходящими значениями.

    # sync # swapon /swap

    Теперь система может производить своппинг на файле /swap. Команда sync обеспечивает запись файла на диск.

    Главный недостаток использования swap-файла состоит в том, что доступ к нему происхолит через файловую систему. Это значит, что блоки, составляющие file, могут быть не смежными. Производительность получается хуже чем с разделом swap, где блоки всегда смежны и запросы на I/O идут непосредственно к диску.

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

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

    
    
    # swapoff /swap
    Теперь файл можно удалить:
    # rm /swap
    
    

    Каждый файл или раздел swap может иметь размер до 16 мегабайт, но вы можете использовать в вашей системе до 8 swap-файлов или разделов.

    4.6 Управление пользователями.

    В начало страницы

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

    4.6.1 Понятия управления пользователями.

    В начало страницы

    Система учитывает следующую информацию о каждом пользователе:

    Имя пользователя.

    Это уникальный идентификатор каждого пользователя. Примеры таких имен: larry, karl и mdw. Можно использовать буквы и цифры, так же как " " и "." (точки). Они обычно не длиннее 8 стмволов.

    ID пользователя.

    Это номер, сокращенно UID, свой для каждого пользователя. Система обычно следит за пользователями по их UID, не по именам.

    Групповой ID, сокращенно GID,

    есть номер группы пользователей. В разделе 3.10 мы говорили о груповых разрешениях. Каждый пользователь входит в одну или более групп согласно определению сетевого администратора.

    Пароль.

    Это секретный пароль пользователя. Команда passwd используется для установки и изменения пароля пользователя.

    Полное имя.

    Пользовательское "real name" или "full name" хранится вместе с его именем. Например, пользователь schmoj может быть в реальной жизни "Joe Schmo".

    Начальный каталог.

    Это каталог, в который помещается пользователь при первой регистрации и где хранятся его или ее личные файлы. Этот каталог обычно начинается в /home.

    Регистрационная оболочка (login shell).

    Оболочка, которая запускается для пользователя при начале сеанса. Примерами могут быть /bin/bash и /bin/tcsh. Онисанная выше информация хранится в файле /etc/passwd. Каждая строка этого файла имеет формат:

    user name:encrypted password:UID:GID:full name:home directory:login shell

    Вот пример конкретной строки:

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

    В этом примере первое поле, "kiwi," есть имя пользователя. Следующее поле, "Xv8Q981g71oKK", есть зашифрованный пароль. Пароли не хранятся в системе в системе в читаемом для человека виде. Пароль зашифрован с использованием себя как секретного ключа. Другими словами, нужно знать пароль, чтобы его расшифровать. Такая форма шифровки достаточно безопасна. Некоторые системы используют "теневые пароли", в которых парольная информация хранится в файле /etc/shadow. В то время как /etc/passwd может прочесть почти каждый, файл /etc/shadow обеспечивает дополнительную степень секретности, потому что доступ к нему гораздо более ограничен. Теневые пароли имеют и дополнитльные возможности, такие как срок действия пароля.

    Третье поле, "102", есть UID. Он должен быть уникалным в множестве пользователей. Четвертое поле, "100", есть GID, т.е. этот пользователь входит в группу номер 100. Информация о группах хранится в файле /etc/group. См. раздел 4.6.5 по этомуповоду.

    Пятое поле есть полное имя пользователя, "Laura Poole". Два последних поля содержат начальный каталог пользователя (/home/kiwi), и регистрационную оболочку (/bin/bash). Не обязательно давать пользовательскому начальному каталогу то же самое имя, что и у пользователя. Это просто помогает идентифицировать каталог.

    4.6.2 Добавление пользователей.

    В начало страницы

    Для добавления пользователей нужно предпринять несколько шагов. Прежде всего, нужно приготовить место в /etc/passwd, с уникальным именем пользователя и UID. Там надо указать GID, полное имя и другую информацию.

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

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

    Команда adduser берет для себя информацию из файла /etc/adduser.conf, который определяет стандартную по умолчанию конфигурацию для всех новых пользователей. Типичный файл /etc/adduser.conf приведен ниже.

    # /etc/adduser.conf: `adduser' configuration.
    
    # См.adduser(8) и adduser.conf(5) с подробной документацией.
    # Переменная DSHELL определяет по умолчанию  login shell в вашей системе.
    DSHELL=/bin/bash
    # Переменная DHOME указывает каталог, содержащий пользовательские начальные
    # каталоги. DHOME=/home
    # Если  GROUPHOMES есть "yes", то начальные каталоги будут создаваться как
    # /home/groupname/user. GROUPHOMES=no
    # Если LETTERHOMES есть "yes", то создаваемые начальные каталоги будут иметь
    # дополнительный каталог - первую букву имени пользователя. например:
    # /home/u/user. LETTERHOMES=no
    # Переменная SKEL указывает каталог, содержащий  "скелетные" пользовательские
    # файлы; другими словами, такие как пример файла  .profile, который будет
    # скопирован в начальный каталог нового пользователя при его создании.
       SKEL=/etc/skel
    # Диапазон от FIRST_SYSTEM_UID до LAST_SYSTEM_UID включительно отводтся для
    # UID в динамически создаваемых административных и системных записях.
    
    
        FIRST_SYSTEM_UID=100 LAST_SYSTEM_UID=999
    #Диапазон от FIRST_UID до LAST_UID включительно отводится для UID в динамически
    # создаваемых пользовательских учетных записях. FIRST_UID=1000 LAST_UID=29999
    # Переменная USERGROUPS может быть или "yes" или "no". Если  "yes", то
    # каждому новому пользователю будет присвоена его собственная группа  и
    # их начальные каталоги будут  g+s. Если  "no", каждый новый пользователь
    #  будет отнесен к группе, у которой  gid есть USERS_GID (см. ниже).
           USERGROUPS=yes
    # Если USERGROUPS есть "no", то  USERS_GID должен быть  GID группы
    # `users' (или эквивалентной группы) вашей системы. USERS_GID=100
    # Если  QUOTAUSER установлена, то по умолчанию квота должна устанавливаться от
    # пользователя,у которого `edquota -p QUOTAUSER newuser' QUOTAUSER=""
    
    
    

    В дополнение к предварительно установленным переменным, которые использует команда adduser, /etc/adduser.conf также указывает, где расположены используемые по умолчанию для каждого пользователя системные конфигурационные файлы. В этом примере они располагаются в каталоге /etc/skel, как это определено выше строкой SKEL= . Файлы, помещенные в этом каталоге, такие как system-wide, default .profile, .tcshrc или .bashrc, будут автоматически инсталлированы в начальном каталоге нового пользователя командой adduser.

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

    В начало страницы

    Удаление пользователей происходит по командам userdel или deluser, в зависмости от инсталляции в вашей системе.

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

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

    вы запретите ему вход в систему.

    4.6.4 Установка атрибутов пользвателя.

    В начало страницы

    После создания рользователя может понадобиться изменить атрибуты этого пользователя, такие как начальный каталог или пароль. Самый простой путь для этого -- изменить значения непосредственно в /etc/passwd. Для установки пароля используйте команду passwd. Команда

    # passwd larry

    заменит пароль пользователя larry. Только root может менять таким образом пароли других пользователей. Однако, сам пользователь может сменить свой пароль.

    На некоторых системах команды chfn и chsh позволяют пользователю установить их собственное полное имя и атрибуты login. Если нет, то это может сделать для них системный администратор.

    4.6.5 Группы.

    В начало страницы

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

    Имеется несколько определяемых системой групп, таких как bin, mail и sys. Пользователи не могут входить ни в одну из этих групп; они используются для допуска к системным файлам. Вместо этого, пользователи должны принадлежать к разным группам пользователей. Вы можете относиться к нескольким группам, таким как студенты, сотрудники или факультеты. Файл /etc/group содержит информацию о группах. Формат каждой строки есть:

    group name:password:GID:другие члены. Примером может служить:

    root:*:0: users:*:100:mdw,larry guest:*:200: other:*:250:kiwi

    Первая группа, root, есть специалльная системная группа, зарезервированная для корневой учетной записи. Следующая группа, users, отведена для регулярных пользователей. Она имеет GID 100. Пользователи mdw и larry имеют доступ в эту группу. Помните, что в /etc/passwd каждому пользователю дается

    GID по умолчанию. Но пользователи могут быть отнесены к нескольким группам посредством добавления мх имен к строкам других групп в /etc/group. Команда groups перечисляет группы, доступ в которые вы имеете. Третья группа, guest, отведена для гостевых пользователей, а other служит для "прочих" пользователей. Пользователь kiwi тоже имеет доступ в эту группу.

    Поле "password" в /etc/group иногда используется для установки пароля группового доступа. Это необходимо довольно редко. Чтобы воспрепятствовать переходу пользователей в привилегированные группы (по команде newgroup), установите поле password field на "*".

    Команды addgroup или groupadd можно использовать для добавления групп в вашей системе. Но обычно проще добавить строку в /etc/group самому, так как при этом не нужно вносить никаких других изменений. Для удаления группы просто удалите ее строку в /etc/group.

    4.6.6 Обязанности системного администратора.

    В начало страницы

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

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

    4.6.7 Работа с пользователями.

    В начало страницы

    Системные администраторы могут занимать одну из двух позиций в отношениях с нахальными (abusive) пользователями: они могут быть либо резкими (paranoid) либо доверительными (trusting). Резкий системный администратор обычно причиняет вреда больше, чем предотвращает. Одна из моих любимых пословиц гласит: "Никогда не относите к злонамеренности то, что может расцениваться как глупость". Другими словами, большинство пользователей не имеют достаточной квалификации или знаний для нанесения действительного вреда системе.

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

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

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

    4.6.8 Установка правил.

    В начало страницы

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

    4.6.9 Что все это означает.

    В начало страницы

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

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

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

    Быть системным администратором не есть великое дело. Не имеет знчения, что ваша система есть маленькая 386 или суперкомпьютер Cray. Управление системой то же самое. Знание корневого пароля не прибавляет вам ни славы ни денег. Оно позволяет вам поддерживать систему в рабочем состоянии и ничего больше.

    4.7 Архивация и сжатие файлов.

    В начало страницы

    Прежде, чем мы начнем разговор о дублировании (backups), мы должны рассмотреть средства для архивации файлов в системах UNIX.

    4.7.1 Использование tar.

    В начало страницы

    Команда tar используется для архивирования файлов наиболее часто. Синтаксис этой команды есть

    tar options files

    где options означает список команд и параметров для tar, а files есть список файлов, которые надо добавить или извлечь из архива. Например, команда

    # tar cvf backup.tar /etc

    упаковывает все файлы из /etc в архив tar backup.tar. Первый аргумент в tar, "cvf", есть "команда" для tar. c приказывает tar создать новый архивный файл. v побуждает tar использовать подробный режим, печатая имя каждого файла, который архивируется. Параметр "f" сообщает tar, что следующий аргумент, backup.tar, есть имя создаваемого архива. Остальные аргументы для tar есть имена файлов и каталогов для добавления к архиву.

    Команда

    # tar xvf backup.tar

    извлечет tar-файл backup.tar в текущий каталог. Старые файлы с тем же самым именем уничтожаются (are overwritten) при извлечении файлов в существующий каталог. Перед извлечением tar-файлов важно знать, где файлы должны быть распакованы. Пусть вы архивируете следующие файлы: /etc/hosts, /etc/group и /etc/passwd. Если вы воспользуетесь командой:

    # tar cvf backup.tar /etc/hosts /etc/group /etc/passwd

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

    # cd / # tar xvf backup.tar

    так как файлы извлекаются с путевым именем, запомненном в архивном файле. Но если вы архивируете файлы командой

    # cd /etc # tar cvf hosts group passwd

    то имя каталога не запоминается в архивном файле. Поэтому вам нужно выполнить "cd /etc" перед извлечением файлов. Как видите, то, как создаются tar файлы, приводит к большой разнице в том, куда они извлекутся. Команда

    # tar tvf backup.tar

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

    4.7.2 gzip и сompress.

    В начало страницы

    В отличие от архивирующих программ для MS-DOS, tar не сжимает автоматически файлы при их архивации. Если вы архивируете два файла по 1 мегабайту каждый, результирующий tar-файл имеет размер 2 мегабайта. Команда gzip сжимает файл (он не обязан быть tar-фйлом). Команда

    # gzip -9 backup.tar

    сжимает backup.tar, оставляя вас с backup.tar.gz, сжатой версией файла. Преключатель -9 побуждает gzip использовать наибольший коеффициент сжатия.

    Команда gunzip может использоваться для распаковки сжатого файла. Эквивалентная команда есть "gzip -d". gzip есть относительно новое средство в сообществе UNIX. В течение многих лет вмесо нее использовалась команда compress. Однако, в силу ряда причин, включая патентный диспут против алгорифма сжатия compress и тот факт, что gzip много более эффективна, compress выходит постепенно из употребления. Файлы, которые обработаны посредством compress, имеют в конце ".Z". [2*] backup.tar.Z есть compress-версия backup.tar, в то время как backup.tar.gz is есть версия, полученная по команде gzip. Команда uncompress используется для распаковки сжатого по compress файла. Она эквивалентна команде "compress -d." Команда gunzip также знает, как обращаться с файлами, сжатыми по команде compress.

    4.7.3 Как положить их вместе.

    В начало страницы

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

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

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

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

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

    # tar cvf - /etc j gzip -9c ? backup.tar.gz

    Здесь вы посылаете tar-филе в "-", что означает стандартный выход tar. Он передается по конвейеру (is piped) к gzip, которая сжимает входящий tar-файл. Результат сохраняется в backup.tar.gz. Параметр -c приказывает gzip послать ее результат в стандартный выход, который перенаправляется в backup.tar.gz. Единственной командой для распаковки этого архива будет команда

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

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

    ------------------------------------------ [2*] В течение некоторого времени расширение .z (маленькое "z") использовалось для файлов, сжатых по gzip. Теперь их расширение имени означается как .gz.

    К счастью, команда tar также включат параметр z для автоматической упаковки/распаковки файлов по fly с использованием алгорифма сжатия 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 manual pages.

    4.8 Использование дискет и приготовление запасных копий (backups).

    В начало страницы

    Дискеты часто используются для хранения запасных копий. Если вы не имеете магнитной ленты, связанной с вашей системой, можно использовать дискеты (хотя они медленнее и менеее надежны). Как говорилось выше, дискеты можно форматировать по MS-DOS FORMAT.COM или по программе Linux fdformat. Это обеспечивает запись информации о секторах и дорожках, соответствующей их возможностям. Имена устройств и форматов дискет, доступных в Linux, приведены в таблице 4.4.

    Устройства, имя которых начинается с fd0, относятся к первому дисководу, который в MS-DOS имеет имя А. Имена драйверов второго дисковода для дискет начинаются с fd1. Вообще ядро Linux может различать форматы отформатированных дискет-- вы можете просто использовать /dev/fd0 и предоставить системе определить формат. Но когда вы используете новую, не форматироваанную дискету, вам нужно использовать спецификацию драйвера, если система не может определить тип дискеты.

    Полный список устройств Linux и имен их драйверов приведен в "Linux Allocated Devices", автор H. Peter Anvin (см. приложение A).

    
    Floppy device driver                 Format
    -----------------------------------------------------
    /dev/fd0d360            Double density, 360 Kb, 5.25 inch.
    /dev/fd0h1200           High density, 1.2 MB, 5.25 inch.
    /dev/fd0h1440           High density, 1.44 MB, 3.5 inch.
    -------------------------------------------------------
    
             Таблица  4.4: Форматы дискет в Linux.
    
    

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

    4.8.1 Использование дискет для запасных копий.

    В начало страницы

    Простейший путь для запасных копий на дискетах есть команда tar. Команда

    # tar cvfzM /dev/fd0 /

    приготовит полную копию вашей системы, используя дисковод /dev/fd0. Параметр "M" для tar позволяет использовать много томов; то-есть, когда наполняется одна дискета, tar просит вставить следующую. Команда

    # tar xvfzM /dev/fd0

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

    Приготовление полной копии системы на дискетах может потребовать много времени и ресурсов. Многие системные администраторы используют накопительную (incremental) политику копирования. Каждый месяц производится полная копия, а каждую неделю копируются только те файлы, которые модифицировались в последнюю неделю. В этом случае, если вы разрушите (trash) вашу систему в середине месяца, вы можете просто восстановить ее состояние за прошлый месяц, а затем использовать последние еженедельные копии, если это нужно. Команда find полезна для поиска файлов, которые были модифицированы после определенной даты. Несколько сценариев для управления накопительными запасными копиями можно найти в sunsite.unc.edu.

    4.8.2 Запасные копии на дисководе Zip.

    В начало страницы

    Приготовление запасных копий на дисководе Zip подобно приготовлению копий на дискетах, но потому что диски Zip имеют обЪем 98 Kb, обычно достаточно использовать единственный смонтированный диск Zip для копирования архива.

    Имеются дисководы Zip с тремя различными аппаратными интерфейсами: интерфейс SCSI, IDE интерфейс и параллельный интерфейс через порт PPA. Zip drive support не входит в предварительно компилированные средства Linux, но он может быть специфицирован при построении настраиваемого ядра для вашей системы. На стр. 219 описана инсталляция Iomega Zip device driver.

    SCSI и PPA interface Zip drives используют интерфейс SCSI и следуют соглашению о наименованиях для других устройств SCSI, которые описаны на стр. 198. Диски Zip обычно предварительно форматируются в файловой системе MS-DOS. Вы можете использовать либо существующую файловую систему MS-DOS, которую поддерживает ваше ядро Linux, или использовать mke2fs или подобные программы для записи файловой системы Linux на диск. Диск Zip, смонтированный как первое устройство SCSI, есть /dev/sda4:

    # mount /dev/sda4 /mnt

    Часто удобно обеспечить отдельную точку монтирования для файловых систем Zip, например, /zip. Следующие шаги, которые должны выполняться в режиме root, создадут точку монтирования:

    # mkdir /zip # chmod 0755 /zip

    Теперь можно использовать /zip для монтирования файловой системы Zip. Запись архивов на диски Zip подобна архивированию на дискетах. Чтобы архивировать и сжать каталог /etc на смонтированный дисковод Zip, нужно воспользоваться командой

    # tar zcvf /zip/etc.tgz /etc

    Эта команда может исполняться из любого каталога, так как она указывает абсолютные путевые имена. Имя арива etc.tgz необходимо, если дисковод Zip содержит файловую систему MS-DOS, так как любой файл, записываемый на диск, должен иметь имя в соответствии с соглашением по наименованию в MS-DOS 8+3. В противном случае имена будут укорочены. Подобным же образом извлечение архивов требует команд

    # cd / # tar zxvf /zip/etc.tgz

    Например, для создания файловой системы ext2 на дисководе Zip вы должны выдать команду ( для размонтированного диска Zip)

    # mke2fs /dev/sda4

    Когда дисковод Zip таким образом смонтирован и имеет файловую систему ext2, можно скопировать всю файловую систему одной командой:

    # tar zcvf /zip/local.tar.gz /usr/local

    Заметим, что копирование по tar во многих случаях предпочтительнее простому приготовлению архивной копии по команде cp -a , потому что tar сохраняет времена модификации исходных файлов.

    4.8.3 Приготовление копий на ленточых устройствах.

    В начало страницы

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

    Tape device driver                          Format
    --------------------------------------------------------------------
    /dev/rft0                    QIC-117 tape, перемотка по завершении.
    /dev/nrft0 Q                 IC-117 tape, без перемотки по завершении.
    /dev/tpqic11                 QIC-11 tape, перемотка по завершении.
    /dev/ntpqic11                QIC-11 tape, без перемотки по завершении.
    /dev/qft0                    Floppy tape drive, перемотка по завершении.
    /dev/nqft0                   Floppy tape drive, без перемотки по завершении.
    
    -----------------------------------------------------------------------
    
                      Таблица 4.5: Драйверы ленточных устройств.
    
    

    Floppy tape drives используют интерфейс контроллеров floppy drive и управляются драйверами устройств ftape, описанными ниже. Инсталляция модуля ftape device driver описана на стр. 221. Ленточные устройства SCSI перечислены в таблице 4.3.

    Для архивирования каталога /etc на ленточном устройстве с помощью tar используйте команду

    # tar cvf /dev/qft0 /etc

    Аналогично, для извлечения файлов с ленты, используйте команды

    # cd / # tar xvf /dev/qft0

    Эти ленты, подобно дискетам, должны быть отформатированы перед использованием. Драйвер ftape может форматировать ленты для Linux. Чтобы форматировать ленту формата QIC-40, используйте команду

    # ftformat --format-parameter qic40-205ft --mode-auto --omit-erase --discard-header

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

    Прежде чем вынимать ленту из устройства, ее нужно перемотать и записать на нее содержимое буферов I/O. Это аналогично размонтированию дискеты перед ее извлечением, потому что ленточный драйвер также использует кэш. Стандартная команда UNIX для управления ленточными операциями есть mt. Ваша система может не знать этой команды в зависимости от того, имеет ли она средства для управления лентой. ftape driver имеет подобную команду, ftmt, используемую для управления операциями с лентой. Чтобы перемотать ленту перед ее извлечением, используйте команду

    # ftmt -f /dev/qft0 rewoffl

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

    # ftmt -f /dev/qft0 retension

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

    # ftmt -f /dev/qft0 status

    4.8.4 Использование дискет в качестве файловых систем.

    В начало страницы

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

    # mke2fs /dev/fd0 1440

    создает файловую систему на дискетах в /dev/fd0. Размер системы должен соответствовать размеру дискеты. Дискеты High-density 3.5" имеют объем 1.44 мегабайт, или 1440 блоков. Дискеты High-density 5.25" имеют 1200 блоков. Необходимо указывать размер файловой системы в блоках, если система не может автоматически определить объем дискеты. Для получения доступа к дискете нужно смонтировать файловую систему, содержащуюся на ней. Команда

    # mount /dev/fd0 /mnt

    смонтирует дискету на /dev/fd0 в каталоге /mnt. Теперь все файлы на дискете появятся в каталоге /mnt на вашем дисководе. Точка монтирования, каталог, в котором вы монтируете файловую систему, должен существовать в то время, когда вы выдаете команду mount. Если его нет, создайте его командой mkdir, как описано на стр. 213. См. стр. 196. по поводу файловых систем, их монтирования и точек монтировки. Заметим, что всякий I/O на дискеты буферизуется так же, как в случае I/O для жесткого диска. Если вы меняете данные на дискете, вы можете не увидеть подсветки на дисководе, пока ядро не освободит его I/O буфера. Нельзя вынимать дискету до того, как вы ее размонтируете командой

    # umount /dev/fd0

    Не переставляйте просто дискеты, как вы это делаете на системах MS-DOS. При замене дискет размонтируйте первую дискету и смонтируйте следующую.

    4.9 Модернизация и установка нового программного обеспечения.

    В начало страницы

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

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

    Лучший путь для модернизации вашей системы зависит от той дистрибуции, которую вы имеете. Debian, S.u.S.E., Caldera и Red Hat Linux -- все имеют intelligent package management software, которое можно легко модернизировать установкой нового пакета. Например, компилятор C, gcc, приходит в предварительно построенном двоичном пакете. При его установке все файлы старой версии переписяваются или удаляются.

    В большинстве случаев бессмысленно модернизировать систему, "чтобы быть не хуже других". Это не MS-DOS или Microsoft Windows. Нет важных причин для установки новейшей версии программного обеспечения. Если вы находите, что вам понадобятся свойства, которыми обладает новая версия, тогда проводите модернизацию. А если нет, то не модернизируйте. Другими словами, модернизируйте только то, что необходимо модернизировать. Этим вы избегнете пустой траты времени и усилий.

    4.9.1 Модернизация ядра.

    В начало страницы

    Модернизация ядра сводится к получению его исходного кода и компиляции его. Обычно это безболезненная процедура, но вы можете столкнуться с проблемами, если пытаетесь модернизировать разрабатываемое ядро или переходите к его новой версии. Версия ядра имеет две части: сама версия и заплатки к ней. Во время написания этой книги последней устойчивой версии ядра была версия 2.0.33. 2.0 есть сама версия, а 33 была версия заплат к ней. Версии с нечетными номерами, такими как 2.1 есть развивающиеся ядра (development kernels). Держитесь подальше от развивающихся ядер, если не хотите подвергать свою жизнь опасности! Как правило, вы сможете легко провести модернизацию к следующему заплаточному уровню, но модернизация к новой версии ядра требует модернизации системных средств, которые тесно взаимодействуют с ядром.

    Исходный код ядра Linux можно выгрузить с Linux FTP сайтов (см. стр. 310 с их списком). Например, на sunsite.unc.edu исходный код ядра находится в /pub/Linux/kernel, разбитом на подкаталоги по номерам версий. Источники ядра организованы в tar-файлы, упакованные по gzip. Например, файл, содержащий источник ядра 2.0.33, есть linux-2.0.33.tar.gz.

    Источники ядра распакованы в каталоге /usr/src, образуя каталог /usr/src/linux. Это обычная практика для /usr/src/linux представлять мягкую связь (soft link) к другому каталогу, который содержит номер версии, подобно /usr/src/linux-2.0.33. Этим способом вы можете инсталлировать новые исходные коды ядра и проверить их перед тем, как удалите старые. Команды для создания связи для каталога ядра таковы:

    # cd /usr/src 
    # mkdir linux-2.0.33 
    # rm -r linux 
    # ln -s linux-2.0.33 linux
    # tar xzf linux-2.0.33.tar.gz
    

    При модернизации к новейшему patchlevel ("уровню заплат") для той же самой версии ядра, его patch-файлы могут съэкономить время передачи файлов, так как источник ядра в сжатом по gzip виде занимает примерно 7MB. Для модернизации от ядра 2.0.31 к ядру 2.0.33 вы должны выгрузить patch-файлы patch-2.0.32.gz и patch-2.0.33.gz, которые можно найти на том же сайте FTP, что и источник ядра. После того, как вы поместите эти patch-файлы в каталог /usr/src, примените их последовательно к ядру для модернизации исходных кодов. Один из возможных путей сделать это такой:

    # cd /usr/src 
    # gzip -cd patch-2.0.32.gz j patch -p0
    # gzip -cd patch-2.0.33.gz j patch -p0
    

    После того как источники распакованы и все patch-файлы применены, вам нужно удостовериться, что три символические связи в /usr/include справедливы для (аre correct for) вашей дистрибуции ядра. Для создания этих связей используйте команды:

    # cd /usr/include 
    # rm -rf asm linux scsi
    # ln -s /usr/src/linux/include/asm-i386 asm
    # ln -s /usr/src/linux/include/linux linux
    # ln -s /usr/src/linux/include/scsi scsi
    

    После тога, как вы сзодадите эти связи, нет нужды создавать их снова, когда вы установите следующую заплату на ядро (next kernel patch) или более новую версию ядра. (См. раздел 3.11, чтобы узнать больше о символических связях).

    Чтобы компилировать ядро, вы должны иметь gcc, C-компилятор, инсталлированный в вашей системе. gcc версии 2.6.3 или более свежей необходим для компиляции ядра 2.0.

    Сначало по cd перейдите в /usr/src/linux. Команда make config подскажет вам несколько конфигурационных параметров. На этом шаге вы должны выбрать оборудование, которое будет поддерживать ваше ядро. Большой ошибкой будет не указать при этом оборудование для поддержки контроллера вашего жесткого диска. Без правильной поддержки ядром вашего диска система не будет даже загружаться. Если вы не уверены в значениях параметров ядра, их короткое описание можно получить, нажав ? и Enter.

    Затем выдайте команду make dep, чтобы обновить все исходные зависимости. Это -- важный шаг. make clean удаляет все старые двоичные файлы из дерева исходного ядра.

    Команда make zImage компилирует ядро и записывает его в /usr/src/linux/arch/i386/boot/zImage. Ядра Linux на системах Intel всегда сжаты. Иногда ядро, которое вы хотите компилировать, оказывается слишком велико, чтобы его могла сжать программа сжатия, которую использует make zImage. Ядро, которое слишком велико для сжатия, вызовет выход из компиляции с сообщением об ошибке: Kernel Image Too Large. Если это произойдет, попробуйте команду make bzImage, которая использует систему сжатия для больших ядер. Ядро записывается в /usr/src/linux/arch/i386/boot/bzImage. Когда ядро компилировано, его нужно или скопировать на дискету (командой, подобной "cp zImage /dev/fd0") или инсталлировать образ так, чтобы LILO загружало его с вашего жесткого диска. См. подробности на стр. 189.

    4.9.2 Добавление к ядру драйверов устройств.

    В начало страницы

    На стр. 213 описан способ использования дисковода Iomega Zip для приготовления запасных копий. Поддержка для дисковода Iomega Zip, как и для многих других устройств, не компилируется в составе дистрибуций ядер Linux -- их ассортимент слишком велик, чтобы охватить их всех в используемом ядре. Однако исходный код для Zip parallel port device driver включен как часть дистрибуции исходного кода ядра. В этом разделе описывается, как добавить поддержку для Iomega Zip parallel port drive и обеспечить его совместную работу с принтером, связанным с другим параллельным портом.

    Вы должны инсталлировать и успешно построить настроенное ядро Linux, как это описано в предыдущем разделе. Отбор устройства Zip drive ppa в качестве варианта для ядра требует, чтобы вы ответили Y на соответствующие вопросы на шаге make config, когда вы определяете конфигурацию настроенного ядра. В частности, устройство ppa требует ответа "Y" в трех случаях:

    SCSI support? [Y/n/m] Y
    SCSI disk support? [Y/n/m] Y
    IOMEGA Parallel Port Zip Drive SCSI support? [Y/n/m] Y
    

    После того как вы успешно проделали make config с выбором всех поддержек, которые хотите включить в ядро, выполнили make dep, make clean и make zImage для построения ядра, вы должны сообщить ядру, как устанавливать драйвер. Это делается обращением из командной строки к LILO boot loader. Как описано в разделе 4.2.1, конфигурационный файл LILO, /etc/lilo.conf, имеет строфы ("stanzas") для каждой операционной системы, о которой он знает, а также директивы для представления этих опций пользователю во время загрузки.

    Другая директива, которую распознает LILO, есть "append=". Она дает вам возможность добавлять во время загрузки в командную строку информацию, требующуюся драйверам различных устройств. В нашем случае драйвер Iomega Zip ppa требует неиспользованное прерывание и адрес порта I/O. Это в точности аналогично спецификации отдельных печатающих устройств типа LPT1: и LPT2: в MS-DOS.

    Например, если ваш принтер использует шестнадцатиричный адрес порта 0x378 (см. инсталляционное руководство по вашей параллельной карте порта, если вы не знаете, что этот адрес означает) и является опрашиваемым (polled) (то-есть, он не требует линии IRQ, обычной для конфигурации Linux), то вы должны поместить следующую строку в файл вашей системы /etc/lilo.conf:

    append="lp=0x378,0"

    Это бесполезно, если Linux автоматически распознает во время загрузки один порт /dev/lp. Но если указываются настроечные конфигурации портов, инструкции во время загрузки необходимы. "0" после адреса порта предписывает ядру не использовать линию IRQ (interrupt request) для принтера. Это приемлемо в общем случае, потому что принтеры много медленне чем CPUs, так что метод медленного доступа к устройствам I/O, известный как метод опроса (polling), когда ядро само периодически проверяет состояние принтера, позволяет компьютеру управлять принтером. Но устройства, работающие с большей скоростью, такие как последовательные линии и диски, каждое требует линию IRQ (т.е., запросы на прерывания). Это -- аппаратные сигналы, посылаемые устройством к процессору всякий раз, когда устройство требует внимания от процесора; например, если устройство имеет данные, ждущие передачи к процессору. Процессор приостанавливает то, что он делал в этот момент, и обрабатывает запрос от устройства. Устройства Zip drive ppa требуют свободного прерывания, которое должно соответствовать прерыванию, которое предусмотрено на карте принтера, к которой вы присоединяете также и Zip drive. Во время написания настоящего руководства Linux ppa device driver не поддерживал сцепления ("chaining") устройств с параллельными портами, и отдельные параллельные порты должны были использоваться для устройств Zip ppa и каждого принтера.

    Чтобы определить, какие прерывания уже используются в вашей системе, команда

    # cat /proc/interrupt

    выдает список устройств и используемых ими линий IRQ. Вместе с тем, вам также нужно быть осторожным и не использовать автоматически конфигурируемых прерываний для последовательных портов, которые могут быть не перечислены в файле /proc/interrupt. Linux Documentation Project's Serial HOWTO, доступный из источников, перечисленных в приложении A, в деталях описывает конфигурацию последовательных портов.

    Вы должны проверять также аппаратные установки различных интерфейсных карт на вашей машине открытием, если нужно, машинных коробок и визуальной проверкой установок, чтобы убедиться, что вы не задеваете (not co-opting) линии IRQ, которая уже используется другим устройством. Кратные устройства, борющиеся за линии прерывания, есть обычная причина отказов систем Linux. Типичный файл /proc/interrupt выглядит подобно

    0: 6091646 timer
    1: 40691 keyboard
    2: 0 cascade 4: 284686 + serial
    13: 1 math error
    14: 192560 + ide0
    

    Здесь представляет интерес первый столбец. Это -- номера линий IRQ, которые используются в системе. Для драйвера ppa мы должны выбрать линию, которая не упомянута. IRQ 7 есть обычно хороший выбор, так как она редко используется в конфигурациях по умолчанию. Мы должны также указать адрес порта, который будет использовать устройство ppa. Этот адрес должен быть физически конфигурирован на интерфейсной карте. Параллельным I/O портам присваиваются специальные адреса, поэтому вам нужно прочесть документацию по вашим картам параллельных портов. В этом примере мы используем адрес I/O-порта 0x278, который соответствует LPT2: порт печати в MS-DOS. Добавив и линию IRQ и адрес порта к нашей командной строке при загрузке, которая приведена выше, получим слеyющий оператор, который должен появиться в соответствующей строфе (stanza) файла /etc/lilo.conf file:

    append="lp=0x378,0 ppa=0x278,7"

    Эти операторы добавляются в конец стартовых параметров ядра при загрузке. Они обеспечат для каждого принтера, присоединенного к системе, независимость от операций дисковода Zip. Конечно, если ваша система не имеет принтера, директива "lp=" может, и должна быть, опущена. После того, как вы установите само настроенное ядро, как это описано в разделе 4.2.1, перед загрузкой системы не забудьте выполнить команду

    # /sbin/lilo

    для установки новой конфигурации LILO на загрузочном секторе жесткого диска.

    4.9.3 Инсталляция модуля драйвера устройства.

    В начало страницы

    На стр. 214 описывается приготовление запасных копий файлов на магнитной ленте. Linux обеспечивает поддержку для устройств с интерфейсами IDE, SCSI и с другими патентованными интерфейсами. Другие обычные типы лентопротяжных устройств связаны непосредственнос с контроллерами для дискет. Linux обеспечивает драйвер для лентопротяжного устройства в виде модуля.

    Когда писалась книга, самой последней версией ленты была 3.04d. Вы можете получить пакет из архива sunsite.unc.edu FTP (см. приложение B по поводу инструкций). Ленточный архив прмещается в /pub/Linux/kernel/tapes. Постарайтесь получить самую последнюю версию. Во время написания этого она была ftape-3.04d.tar.gz.

    После распаковки ленточного архива в каталог /usr/src выполните из верхнего уровня каталога ftape команду make install для компиляции модулей драйвера и, если нуно, его утилит, и инсталлируйте их. Если возникнут какие-то проблемы совместимости между исполнительными файлами дистрибуции и ядром вашей системы или ее библиотеками, то команды make clean и make install обеспечат компиляцию модулей в вашей системе.

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

    Команда make install также инсталлирует модули драйвера усройства в нужные каталоги. На стадартных системах Linux модули помещаются в каталог /lib/modules/kernel-version. Если ваша версия ядра есть 2.0.30, то модули в вашей системе помещаютсч в /lib/modules/2.0.30. Шаг make install также обеспечивает этим модулям размещение добавлением сооответствующих операторов к файлу modules.dep, помещенному на верхнем уровне каталога для файлов-модулей, в нашем случае это /lib/modules/2.0.30. Инсталляция ftape добавляет следующие модули к вашей системе (использующей ядро версии 2.0.30 в этом примере):

    /lib/modules/2.0.30/misc/ftape.o
    /lib/modules/2.0.30/misc/zft-compressor.o
    /lib/modules/2.0.30/misc/zftape.o
    

    Инструкции для загрузки модулей также должны быть добавлены к общесистемному файлу конфигурации модулей. На многих системах это файл /etc/conf.modules. Для автоматической загрузки модулей ftape по требованию добавьте к файлу /etc/conf.modules следующие строки:

    alias char-major-27 zftape
    pre-install ftape /sbin/swapout 5
    

    Первый оператор загружает все относящиеся к ftape необходимые модули, когда устройство с главным номером 27 (устройство ftape) вызывается ядром. Так как поддержка для модуля zftape (который обеспечивает автоматическое сжатие данных для ленточных устройств) требует поддержки других модулей ftape, они все загружаются по требованию ядра. Вторая строка указывает параметры времени загрузки для модулей. В нашем случае утилита /sbin/swapout из пакета ftape обеспечивает доступность достаточного количества памяти DMA для функционирования драйвера ftape. Перед доступом к устройству ftape вы должны сначала поместить в него отформатированную ленту. Инструкции по форматированию и операциям с ленторолтяжным устройством приведены в разделе 4.8.3.

    4.9.4 Модернизция библиотек.

    В начало страницы

    Как говорилось выше, большинство программ системы компилируется для использования совместных библиотек, содержащих общие подпрограммы для использования их различными программами. Если вы увидите при попытке исполнения программы сообщение: Incompatible library version, вам нужно модернизировать версии библиотек, которые требует программа. Библиотеки обратно совместимы. Программа, скомпилированная для использования старой версии библиотеки, будет работать и с ее новыми, установленными позже версиями. Но обратное не имеет места. Новейшие версии библиотек можно найти на Linux FTP сайтах. На sunsite.unc.edu они расположены в /pub/Linux/GCC. Файлы "release" должны объяснять, какие файлы вам нужно выгружать и как их инсталлировать. Коротко говоря, вы должны получить файлы image-version.tar.gz и inc-version.tar.gz, где version есть версия устанавливаемой библиотеки, например, 4.4.1. Это файлы tar, сжатые по gzip. Файлы image содержат образы библиотек для инсталляции в /lib и /usr/lib. Файлы inc содержат файлы include для установки в /usr/include.

    Файлы release-version.tar.gz должны пояснять процедуру инсталляции в деталях, (точные инструкции меняются с каждым выпуском). В общем, вам нужно установить библиотечные файлы .a и .sa в /usr/lib. Это есть библиотеки, используемые во время компиляции.

    В добавление, файлы образов, libc.so.version, установлены в /lib. Это есть образы совместных библиотек, загружаемых во время исполнения программами, использующими библиотеки. Каждая библиотека имеет символьную связь, использующую главный номер версии библиотеки в /lib. Библиотека libc версии 4.4.1 имеет главный номер версии 4. Файл, содержащий библиотеку, есть libc.so.4.4.1. Символьная связь имени libc.so.4 помещена также в /lib, указывая на библиотеку. Вы должны изменить эту символьную связь при модернизации библиотек. Например, модернизируя от libc.so.4.4 к libc.so.4.4.1, вы должны изменить символьную связь на указание к новой версии.

    Вы должны изменить символьную связь в один шаг, как это написано ниже. Если вы вычеркнете символьную связь libc.so.4, то программы, которые зависят от связи (включая базисные утилиты, такие как ls и cat) прекратят работу. Чтобы перередактировать символическую связь libc.so.4 для указания на файл libc.so.4.4.1, нужно воспользоваться командой:

    # ln -sf /lib/libc.so.4.4.1 /lib/libc.so.4

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

    Детали можно уяснить из library release notes. (См. стр. 164 по поводу дополнительной информации о символических связях.)

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

    В начало страницы

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

    4.9.6 Модернизация прочего программного обеспечения.

    В начало страницы

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

    Чтение Usenet newsgroup comp.os.linux.announce с объявлениями о новых выпусках программ есть самый простой путь ознакомиться с новыми программами. Когда бы вы ни заглядывали на сайт FTP, выгружайте с него ls-lR index file и используйте grep для поиска нужных файлов. Это самый простой способ поиска нужны вам программ. Если вы имеете доступ в архивы, это также может вам помочь. Имеются и другие ресурсы Internet, посвященные специально Linux. См. по этому поводу приложение А.

    4.10 Разные задачи.

    В начало страницы

    Имеются у системного администратора и такие обязанности, которые нельзя отнести ни к одной из главных категорий. Если вы не имеете архива, вы можете обратиться по telnet в сервер архива, такой как archie.rutgers.edu, войти в него под именем "archie" и воспользоваться командой "help".

    4.10.1 Файлы запуска системы.

    В начало страницы

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

    Во время загрузки ядро запускает процесс /etc/init. Init есть программа, которая читает ее конфигурационный файл, /etc/inittab, и порождает другие процессы, основывающиеся на содержании этого файла. Один из важных процессов, стартующих по inittab, есть процесс /etc/getty, запускающийся на каждой виртуальной консоли. Процесс getty захватывает VC и запускает на ней процесс login. Это позволяет входить в систему с каждой VC. Если /etc/inittab не содержит процесса getty для некоторой VC, вы будете не в состоянии зарегистрироваться с этой VC.

    Другой процесс, исполняемый с /etc/inittab, есть /etc/rc, главный системный инициализирующий файл. Этот файл есть простой сценарий оболочки, который выполняет все инициализационные команды, необходимые во время загрузки, такие как монтирование файловых систем (см. стр. 196) и инициализацию пространства swap. На некоторых системах init исполняет файл /etc/init.d/rc.

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

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

    В начало страницы

    В сетевом окружении имя хоста используется для однозначной идентификации конкретной машины. На автономной машине имя хоста просто придает ей индивидуальность. Это подобно наименованию вашего любимца: вы можете отзываться о нем как о "собаке", но горздо интереснее присвоить ей имя, такое как 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, обратному (loopback) адресу 127.0.0.1. Интерфейс loopback присутствует, связана машина с сетью или нет. The localhost всегда присвоен этому адресу. Если вы входите в сеть TCP/IP, ваш фактический IP-адрес и имя хоста должны стоять в /etc/hosts. Например, если ваше имя хоста есть goober.norelco.com, а ваш IP-адрес есть 128.253.154.32, добавьте следующую строку в /etc/hosts:

    128.253.154.32 goober.norelco.com

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

    # hostname -S goober.norelco.com

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

    4.11 Что делать в случае аварии.

    В начало страницы

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

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

    4.11.1 Восстановление с помощью дискеты поддержки.

    В начало страницы

    Одно из необходимых средств системного администратора есть так называемая "загрузочная/корневая дискета", дискета, которую можно использовать для загрузки полной системы Linux независимо от вашего жеского диска. Дискеты Boot/root в сущности очень просты--вы создаете корневую файловую систему на дискете, помещаете на нее все необходимые утилиты, устанавливаете LILO и загружаемое ядро. Другая техника состоит в использовании одной дискеты для ядра и другой для корневой файловой системы. В любом случае результат тот же самый: вы запускаете систему Linux полностью с дискет. Классическим примером дискет boot/root могут служить загрулочные дискеты Slackware. Эти дискеты содержат загружаемое ядро и корневую файловую систему, все на дискетах. Они предназначены для использования при инсталляции дистрибуции Slackware, но годятся и для обслуживания системы.

    Дискета H.J Lu boot/root disk, доступная из /pub/Linux/GCC/rootdisk на sunsite.unc.edu, представляет другой пример дискеты поддержки. Если вы имеете амбиции, вы можете приготовить свою собственную дискету. Однако, в большинстве случаев гораздо проще использовать готовую boot/root-дискету, которая, наверное будет и более полной. Использование boot/root очень просто. Загрузите ее на вашей системе и войдите с именем root (обычно без пароля). Чтобы получить доступ к файлам на жестком диске, вам нужно смонтировать файловые системы вручную. Например, команда

    # mount -t ext2 /dev/hda2 /mnt will

    монтирует файловую систему ext2fs на /dev/hda2 под /mnt. Помните, что / теперь находится на самой дискете boot/root; вам нужно монтировать ваши файловые системы жесткого диска в каком-то каталоге, чтобы получить к ним доступ. Поэтому, /etc/passwd на вашем жестком диске будет теперь /mnt/etc/passwd, если вы смонтировали вашу корневую файловую систему на /mnt.

    4.11.2 Фиксация корневого пароля.

    В начало страницы

    Если вы забыли ваш корневой пароль, нет ничего страшного. Загрузите дискету, смонтируйте корневую файловую систему на /mnt и очистите поле пароля в /mnt/etc/passwd, как в примере:

    root::0:0:root:/:/bin/sh

    Теперь не нужно пароля для root. Когда вы перезагрузитесь с жесткого диска, вы сможете зарегистрироваться как root и переставить пароль командой passwd.

    Хорошо, что вы научились использовать vi, не правда ли? На вашей дискете boot/root редкторов типа Emacs вероятно нет, но vi должен быть.

    4.11.3 Разрушение файловой системы.

    В начало страницы

    Если вы как-то затрете (trash) файловую систему, вы можете запустить e2fsck или другую форму fsck в соответствии с типом файловой системы. (См. стр. 199.) In most cases, it is safest to correct any damaged data on the hard drive file systems from floppy.

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

    К счастью, файловые системы типа ext2fs сохраняют копии суперблока в границах "block group" на дисководе, обычно для каждых 8K блоков. Чтобы приказать e2fsck использовать копию суперблока, используйте команду вида

    # e2fsck -b 8193 partition

    где partition есть раздел, в котором располагается файловая система. Параметр -b 8193 предисывает e2fsck использовать копию суперблока, расположенную при блоке 8193 в файловой системе.

    4.11.4 Восстановление потерянных файлов.

    В начало страницы

    Если вы случайно уничтожили нужный файл в вашей системе, нет путей "undelete" его. Но вы можете копировать нужные файлы с дискеты на ваш жесткий диск. Если вы, например, стерли /bin/login, который обеспечивает вашу регистрацию, просто загрузите boot/root-дискету, смонтируйте корневую файловую систему на /mnt и используйте команду

    # cp -a /bin/login /mnt/bin/login

    Параметр -a предписывает cp сохранить допуск к заменяемым файлам. Конечно, если стертые файлы не являются существенными для системы и имеющими дубликаты на дискете boot/root , вам не повезло. Но если вы делаете запасные копии, вы всегда сможете их восстановить.

    4.11.5 Испорченные библиотеки.

    В начало страницы

    Если вы случайно испортили ваши библиотеки или символические связи в /lib, более чем вероятно, что команды, которые зависят от библиотек, не будут больше работать (см. стр. 223). Простейшее решение состоит в загрузке вашего boot/root floppy, монтировании вашей файловой системы и исправлении библиотек в /mnt/lib. На стр. 223 описана инсталляция библиотек времени исполнения и их символических связей.


<<< Оглавление Страница: 4  5 >>>