Вы находитесь на странице: 1из 59

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

Администрирование ASPLinux. Блок 2.

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

Оглавление

Система инициализации

3

Программа init

5

Первоначальная загрузка

10

Настройка загрузки

13

Файл /etc/rc.d/rc

14

Программа

17

Запуск и останов служб

19

Конфигурационные файлы в каталоге

21

Лабораторная работа А. Использование программы

22

Восстановление пароля пользователя

24

Лабораторная работа Б. Изменение пароля пользователя

26

27

Работа с устройствами в

28

Файлы

29

Загрузка модулей ядром

31

Конфигурация программы modprobe

32

Вопросы

35

Настройка IDE

36

Программа

37

Конфигурационные файлы в каталоге /etc/sysconfig

41

Лабораторная работа В. Настройка IDE контроллера

43

45

Настройка login

46

Порядок инициализации консоли

47

Конфигурация программы

49

Настройка ограничений на использование пользователем ресурсов системы

55

Лабораторная работа Г. Наложение ограничений на использование пользователем ресурсов системы

58

59

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

Система инициализации ASPLinux.

Система инициализации это набор скриптов, выполняющихся при старте системы.

Существует две разновидности системы инициализации:

- System V

- BSD

Первый процесс системы - init

Система инициализации это набор скриптов, выполняющихся при старте системы.

Исторически так сложилось, что в мире UNIX существуют две системы инициализации:

System V

BSD

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

В Linux наибольшее распространение получила система инициализации System V. Она используется в большинстве популярных дистрибутивов, в том числе и в ASPLinux.

При запуске PC совместимого компьютера происходит следующая последовательность действий:

выполняется BIOS компьютера,

запускается загрузчик операционной системы – LILO, grub,

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

ASPLoader или любой другой.

загружается ядро Linux,

запускается на выполнение первый процесс в системе – init.

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

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

Программа init.

Программа init предназначена для запуска приложений, в зависимости от уровня выполнения. init [run level] Конфигурационный файл программы init:

/etc/inittab

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

Ядро Linux при старте обязательно монтирует корневую файловую систему (обычно в режиме только для чтения). Поэтому при запуске init может прочитать свой конфигурационный файл - /etc/inittab.

Именно из - за необходимости получения доступа к

Именно из-за необходимости получения доступа к конфигурационному файлу программы init и стартовым скриптам при старте системы, каталог /etc никогда не выполняют в виде

отдельного раздела.

отдельного раздела .

В системе инициализации System V существует понятие уровень выполнения. Уровень выполнения в ASPLinux обозначается числами от 0 до 6 или буквой S (синоним уровня 1).

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

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

Суперпользователь при помощи программы init может изменить текущий уровень выполнения, указав его в качестве параметра программы:

init 3

В таблице приведены уровни выполнения ASPLinux.

Уровень

Описание

0

Выключение системы.

1 или S

Однопользовательский режим. Применяется для выполнения административных задач.

2

Сконфигурирован как уровень 3, но без поддержки NFS.

3

Многопользовательский режим. Обычный режим работы сервера.

4

Не используется.

5

Запуск системы в графическом режиме. Обычно используется на рабочих станциях.

6

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

Как видно из таблицы, суперпользователь может остановить систему, переведя её на нулевой уровень – init 0. Или перегрузить систему – init 6.

Формат файла /etc/inittab.

Файл состоит из строк следующего формата:

id:run_level:action:process

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

id – идентификатор, один или два символа. Это поле никак не влияет на работу программы init.

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

action – определяет особенности выполнения программы. В этом поле можно писать только заранее определенные слова.

process – программа, которая будет выполняться.

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

Поле

Описание

initdefault

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

sysinit

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

wait

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

once

Программа запускается один раз. init не ждет ее завершения.

ctrlaltdel

Определяет программу, которая будет запущена при нажатии на клавиши “Ctrl+Alt+Del”.

powerfail

Определяет программу, которая будет запущена при получении процессом init сигнала сбоя питания.

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

Поле

Описание

powerokwait

Определяет программу, которая будет запущена при получении процессом init сигнала восстановления питания.

respawn

Процесс будет запущен. init не будет ожидать окончания процесса и начнет обрабатывать следующие в списке строки. Если процесс завершит свою работу – init запустит его снова.

Ниже приведено содержание файла /etc/inittab. Для удобства строки в файле пронумерованы. Из файла удалены комментарии и пустые строки.

17

id:3:initdefault:

19

si::sysinit:/etc/rc.d/rc.sysinit

21

~~:S:wait:/sbin/sulogin

22

l0:0:wait:/etc/rc.d/rc 0

23

l1:1:wait:/etc/rc.d/rc 1

24

l2:2:wait:/etc/rc.d/rc 2

25

l3:3:wait:/etc/rc.d/rc 3

26

l4:4:wait:/etc/rc.d/rc 4

27

l5:5:wait:/etc/rc.d/rc 5

28

l6:6:wait:/etc/rc.d/rc 6

30

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

35

pf::powerfail:/sbin/shutdown -f -h +2 "Power

Failure; System Shutting Down"

37 pr:12345:powerokwait:/sbin/shutdown -c "Power

Restored; Shutdown Cancelled"

39

1:2345:respawn:/sbin/mingetty tty1

40

2:2345:respawn:/sbin/mingetty tty2

41

3:2345:respawn:/sbin/mingetty tty3

42

4:2345:respawn:/sbin/mingetty tty4

43

5:2345:respawn:/sbin/mingetty tty5

44

6:2345:respawn:/sbin/mingetty tty6

46

x:5:respawn:/etc/X11/prefdm -nodaemon

При запуске программы init ядром Linux, init читает свой конфигурационный файл. В строке 17 программе указывается, что по умолчанию система стартует на уровне выполнения 3. Это означает, что

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

в дальнейшем init будет выполнять все строки, в которых в поле runlevel находится цифра 3. Все остальные строки будут проигнорированы.

Init обязательно запустит программу /etc/rc.d/rc.sysinit (строка 19), поскольку в поле action стоит ключевое слово sysinit. Init будет ожидать завершения выполнения программы rc.sysinit.

Строки 22, 23, 24, 26, 27 и 28 будут проигнорированы, так как в поле runlevel нет цифры 3.

А вот программа /etc/rc.d/rc 3 (строка 25) будет запущена, так как в поле runlevel присутствует цифра 3. Init будет ожидать завершение программы rc.

Строки 30, 35 и 37 при старте будут проигнорированы, но благодаря им init получает инструкции, какие программы он должен запустить в случае нажатия на комбинацию клавиш “Ctrl+Alt+Del” и в случае возникновения проблем с питанием.

В строках с 39 по 44 запускается программа /sbin/mingetty, которая инициализирует консоль на виртуальных терминалах: tty1 – tty6. Init запускает эти программы и не ожидая их завершения, переходит к следующим строкам конфигурационного файла.

Строка 46 игнорируется, так как в поле runlevel нет цифры 3.

Из конфигурационного файла можно сделать вывод, что при уровне выполнения 3, init запускает следующие файлы:

- /etc/rc.d/rc.sysinit

- /etc/rc.d/rc 3

- /sbin/mingetty для каждой виртуальной консоли.

Первые два файла это программы, написанные на языке shell

script.

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

Первоначальная загрузка системы.

Первоначальная загрузка системы. /etc/rc.d/rc.sysinit Конфигурационные файлы. /etc/sysconfig/* Функции, используемые в стартовых скриптах. /etc/rc.d/init.d/functions

Файл /etc/rc.d/rc.sysinit выполняется самым первым не зависимо от уровня выполнения. Это программа, написана на языке shell script и администратор может самостоятельно вносить изменения в файл.

В файле выполняются следующие действия:

- Если использовалась технология initrd, отключают каталог,

используемый initrd, и освобождается память, отводимая под RAM-

диск.

- Выполняется программа sysctl, конфигурирующая некоторые особенности ядра.

- Устанавливается системное время.

- Устанавливается имя машины.

- Загружаются все модули, необходимые для работы USB и IEEE1394 устройств.

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

- Проверяются файловые системы.

- Подключаются файловые системы.

- Накладываются ограничения на файловые системы (квоты).

- Включается поддержка swap пространства.

- Если в системе поддерживается программный RAID – включается его поддержка.

-

Удаляются некоторые файлы, оставшиеся после перезагрузки

системы.

- Запускается программа hdparm, предназначенная для конфигурации IDE интерфейсов.

А так же некоторые другие действия.

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

Поскольку ASPLinux является прямым потомком RedHat Linux, в нем используются особенности создания стартовых скриптов RedHat – конфигурация загрузки системы происходит при помощи внешних конфигурационных файлов, находящихся в каталоге /etc/sysconfig.

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

Например, имя машины берется из файла /etc/sysconfig/network. В этом файле можно определить переменную HOSTNAME и присвоить ей FQDN имя компьютера. Сам файл network подключается в основном скрипте следующим образом:

if [ -f /etc/sysconfig/network ]; then

. /etc/sysconfig/network

else

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

NETWORKING=no

fi

Как видно из примера, сначала проверяется наличие файла и только если он существует, файл подключается. После подключения в скрипте можно использовать переменные, находящиеся в файле network. Само определение имени хоста происходит путем вызова функции action:

action $”Setting hostname ${HOSTNAME}: ” hostname ${HOSTNAME}

Все функции, которые Вам встретятся в стартовых, скриптах находятся в файле /etc/rc.d/init.d/functions (реальный путь к файлу, без использования символьных ссылок). Этот файл подключается таким же образом, как и файл network.

. /etc/init.d/functions

, как и файл network. . /etc/init.d/functions В стартовых скриптах наличие

В стартовых скриптах наличие файла /etc/rc.d/init.d/functions не проверяется, поскольку этот файл должен ОБЯЗАТЕЛЬНО существовать.

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

Настройка загрузки служб.

Сценарий загрузки /etc/rc.d/* Программа chkconfig. Запуск и остановка служб вручную. Конфигурационные файлы в директории /etc/sysconfig.

Будут рассмотрены:

Сценарии загрузки ASPLinux.

Использование программы chkconfig для управления службами.

Запуск и остановка служб вручную.

Принципы использования конфигурационных файлов в каталоге /etc/sysconfig.

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

Файл /etc/rc.d/rc.

Структура каталога /etc/rc.d. Имена и параметры стартовых скриптов.

Файл /etc/rc.d/rc.sysinit выполняет только первоначальную загрузку системы. В дальнейшем, в зависимости от уровня выполнения, запускается программа rc, которой в качестве параметра передается номер уровня выполнения.

Задача программы rc – остановить (если они были запущены) и запустить программы, которые должны выполняться на указанном уровне выполнения.

Если в системе инициализации BSD может присутствовать скрипт аналогичный rc.sysinit, то аналога файла rc там нет. Именно наличием файла, подобного файлу rc, организации каталога стартовых скриптов и особенности написания стартовых скриптов для запуска служб, определяют систему инициализации System V.

Если посмотреть содержимое каталога /etc/rc.d, где находятся все стартовые скрипты, можно увидеть следующие файлы и каталоги:

init.d/ rc0.d/ rc2.d/ rc4.d/ rc6.d/

rc

rc1.d/ rc3.d/ rc5.d/ rc.local

rc.sysinit

В каталоге присутствует несколько похожих каталогов, начиная с rc0.d и заканчивая rc6.d.

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

Ниже приводится содержимое каталога rc3.d.

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

K05saslauthd K15httpd K20nfs K24irda K34dhcrelay

K35dhcpd K35smb K35vncserver K35winbind K36lisa

K45named K50snmpd K50snmptrapd K50vsftpd K54pxe

K65kadmin K65kprop K65krb524 K65krb5kdc K70aep1000

K70bcm5820 K74ntpd K84bgpd K84ospf6d K84ospfd

K84ripd K84ripngd K85zebra K95firstboot

S05kudzu S08iptables S10network S12syslog S13portmap

S14nfslock S17keytable S20random S24pcmcia S25netfs

S26apmd S28autofs S55sshd S56rawdevices S56xinetd

S80postfix S85gpm S90crond S90cups S90xfs S91dictd

S95anacron S95atd S97rhnsd S99local

Файлы, находящиеся в этой каталоге, имеют некоторые общие свойства:

Их имена начинаются с “K” или “S”.

После первой буквы идет две цифры.

Все файлы это либо символьные ссылки на файлы в каталоге/etc/rc.d/init.d, либо файлы в формате shell script.

Задача программы rc заключается в следующем:

Она переходит в каталог rc<номер уровня выполнения>.d.

Сначала запускает все файлы, начинающиеся на К. Им передается параметр stop.

Затем запускает все файлы, начинающиеся на S. Им передается параметр start.

Все файлы, находящиеся в каталоге /etc/rc.d/init.d – это стартовые скрипты определенных программ. Стартовые скрипты системы инициализации System V обязательно должны поддерживать два параметра: start и stop. По названию этих параметров можно понять, что start – это запуск программы, а stop – это завершение работы программы.

завершение работы программы . В стартовых скриптах могут

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

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

Таким образом видно, что rc сначала пытается завершить выполнения программ, выполняя стартовые скрипты с параметром stop. А затем запускает программы, выполняя соответствующие стартовые скрипты с параметром start.

Цифра в имени файла определяет порядок выполнения

скрипта.

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

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

Программа chkconfig.

chkconfig --list [имя] chkconfig --add имя chkconfig --del имя chkconfig [--level уровни] имя <on|off|reset> chkconfig [--level уровни] имя

В ASPLinux для облегчения работы со стартовыми скриптами поставляется программа chkconfig.

Программа chkconfig позволяет осуществлять следующие действия:

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

позволяет добавлять или удалять службы, которыми может управлять программа chkconfig.

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

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

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

# chkconfig: 2345 20 80

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

Вторая строка это краткое описание программы.

# description: Saves and restore configuration files jf service

Для того, чтобы посмотреть какие скрипты на каком уровне будут выполняться, следует воспользоваться опцией --list, с указанием или без указания имени стартового скрипта:

chkconfig --list

chkconfig --list httpd

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

chkconfig --level 35 httpd on

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

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

С ASPLinux поставляется программа serviceconf. Это графическая оболочка ,

С ASPLinux поставляется программа serviceconf. Это графическая оболочка, позволяющая управлять стартовыми скриптами. Так же управлять стартовыми скриптами можно при помощи веб-

интерфейса и службы webmin.

интерфейса и службы webmin.

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

Запуск и останов служб вручную.

Для ручного управления запуска и остановки сервисов можно использовать:

- стартовые скрипты.

- программу service.

В ASPLinux администратор может вручную запускать и останавливать службы. Для этого можно использовать:

Стандартные стартовые скрипты системы инициализации System V.

Программу service.

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

Например, для запуска поддержки сети в ASPLinux необходимо ввести следующую команду:

/etc/rc.d/init.d/network start

Для останова:

/etc/rc.d/init.d/network stop

Для перезапуска:

/etc/rc.d/init.d/network restart

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

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

Для того, чтобы выполнить все описанные выше действия при помощи программы service, необходимо использовать следующие команды:

service network start

service network stop

service network restart

Программа service вызывает указанный скрипт и передает ему указанный параметр.

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

Конфигурационные файлы в каталоге /etc/sysconfig.

Конфигурационный файлы в директории /etc/sysconfig Документация по конфигурационным файлам /usr/share/doc/initscripts-<версия>

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

В этих файлах определяются различные переменные. Сами файлы подключаются в скрипты при помощи оператора “.”.

Не следует путать конфигурационные файлы программ и

Не следует путать конфигурационные файлы программ и конфигурационные файлы стартовых скриптов. Например: веб- сервера Apache и конфигурационный файл стартового скрипта

/etc/rc.d/init.d/httpd. Первый – /etc/httpd/httpd.conf, предназначен для конфигурации самого веб-сервера. Второй – /etc/sysconfig/httpd, предназначен для указания опций, которые будут передаваться при запуске демона httpd.

Существует документация по файлам, расположенным в каталоге /etc/sysconfig. Она находится в каталоге /usr/share/doc/initscripts-<версия>. В файле sysconfig.txt описаны все возможные переменные и их значения.

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

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

Лабораторная работа А. Использование программы chkconfig.

Цель работы.

Научиться использовать программу chkconfig.

 

Задачи

 

Описание

1.

Просмотр

1.

Убедитесь, что Вы работаете с правами

уровней

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

выполнения и

стартовых

скриптов.

2.

Для просмотра того, на каких уровнях

выполнения какие стартовые скрипты будут

запускаться, выполните программу:

chkconfig --list

3.

Для определения того, на каких уровнях

выполнения будет запускаться стартовый скрипт веб-сервера Apache, выполните программу:

chkconfig --list httpd

2.

Добавление

1.

Для добавления стартового скрипта веб-

скрипта на

сервера Apache на уровнях выполнения 3 и 5, выполните программу:

уровень

выполнения.

 

chkconfig --level 35 httpd on

2.

Посмотрите список уровней выполнения:

chkconfig --list httpd

или посмотрите содержимое каталогов /etc/rc.d/rc3.d и /etc/rc.d/rc5.d.

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

Задачи

 

Описание

3. Отмена

1.

Для отмены выполнения стартового скрипта

выполнения

веб- сервера Apache на уровне выполнения 5,

стартового

выполните программу:

скрипта.

chkconfig --level 5 httpd off

2.

Посмотрите список уровней выполнения:

chkconfig --list httpd

или посмотрите содержимое каталогов

/etc/rc.d/rc5.d.

3.

Отмените выполнение стартового скрипта веб-

сервера Apache на уровне выполнения 3.

4.

Посмотрите список уровней выполнения:

chkconfig --list httpd

или посмотрите содержимое каталога

/etc/rc.d/rc3.d.

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

Восстановление пароля пользователя root.

Загрузка с внешнего носителя. Запуск ядра с опцией:

init=/bin/bash

Иногда возникает ситуация, когда бывает утерян пароль пользователя root. В старых версиях дистрибутивов Linux проблема решалась просто, достаточно было загрузиться в однопользовательском режиме (уровень выполнения 1 или S). В этом случае система предоставляла командную строку с правами суперпользователя без запроса пароля. В дистрибутиве ASPLinux при загрузке в однопользовательском режиме сначала требуется ввести пароль суперпользователя. Поэтому следует воспользоваться другими методами смены пароля пользователя root.

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

Первый способ. Необходимо загрузиться с внешнего носителя:

загрузочная дискета или CD-ROM. Подключить файловую систему, в которой находится каталог /etc. И вручную удалить пароль из файла shadow. Теперь после загрузки системы при входе root-ом его пароль спрашиваться не будет.

пароль спрашиваться не будет . Если система настроена таким

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

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

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

Для изменения стартовой программы ядру необходимо указать опцию init=/путь/к/программе.

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

Для смены пароля пользователя root достаточно вызвать программу passwd.

вызвать программу passwd. Второй способ изменения пароля

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

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

Лабораторная работа Б. Изменение пароля пользователя root.

Цель работы.

Научиться менять пароль пользователя root в случае его

потери.

 

Задачи

 

Описание

1.

Загрузка ядра с

1. Включите компьютер.

заменой стандартной системы

инициализации.

2. В загрузчике выберите строку

соответствующую ядру Linux и добавьте опцию:

init=/bin/bash

Произойдет загрузка ядра и запуск интерпретатора bash.

2.

Изменение

На данный момент Вы имеете: командную строку с правами пользователя root и подключенную корневой каталог с минимальным набором команд.

1. Перемонтируйте корневую файловую систему в режиме rw:

пароля пользователя

root.

mount -o rw,remount /

2.

Поменяйте пароль суперпользователя:

passwd

3.

Сбросьте буфера файловой системы на

диск:

sync

4.

Перегрузите компьютер:

reboot

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

Вопросы.

1. Какова последовательность загрузки операционной системы Linux на PC совместимых компьютерах?

2. Какую программу ядро Linux запускает сразу после своей загрузки?

3. Напишите, какие файлы и каталоги находятся в каталоге /etc/rc.d

4. Какие обязательные параметры должны поддерживать стартовые скрипты в системе инициализации System V?

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

Работа с устройствами в Linux.

Файлы устройств. Загрузка модулей ядром Linux. Конфигурация программы modprobe.

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

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

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

Файлы устройств.

Файлы устройств определяются следующими параметрами:

- тип устройства

- старший номер

- младший номер

Для создания файлов устройств используют программу:

mknod имя <b|c> major minor

Файлы устройств позволяют программам получать доступ к аппаратным средствам компьютера. Программист для работы с файлами устройств может использовать стандартные функции работы системы: open, read, write, close.

работы системы : open, read, write, close. Следует понимать разницу между

Следует понимать разницу между файлами устройств и модулями ядра. Модули это драйвера устройств. Файл устройства это интерфейс доступа к драйверу устройства.

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

brw-rw---- 1 root disk 3, 0 Апр 26 2003 /dev/hda

brw-rw---- 1 root disk 3, 1 Апр 26 2003 /dev/hda1

brw-rw---- 1 root disk 3,10 Апр 26 2003 /dev/hda10

Любой файл устройства характеризуется тремя параметрами:

тип устройства блочное или символьное.

старший (major) номер определяет тип драйвера.

младший (minor) номер определяет конкретное

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

физическое устройство.

В нашем примере показаны три файла: hda, hda1 и hda10. Это блочные устройства, о чем говорит символ “b” в начале строки. Старший номер у этих устройств одинаков – 3. Младший номер у каждого устройства свой.

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

mknod.

mknod имя_файла <b|c> major minor

Если Вы забыли, какое название файла какому устройству должно соответствовать, обратитесь к документации ядра Linux. В файле Documentation/devices.txt находится подробное описание файлов устройств и их атрибутов.

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

Загрузка модулей ядром Linux.

Программа Имя файла устройства b|c major minor Файл устройства ядро
Программа
Имя файла устройства
b|c major minor
Файл устройства
ядро
modprobe
Список драйверов

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

тип устройства.

старший номер.

младший номер.

Именно из-за этой особенности файл устройства может иметь любое имя.

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

Если драйвера устройства нет, то ядро вызывает программу, описанною в файле /proc/sys/kernel/modprobe. По умолчанию в этом файле записан путь к программе modprobe. При вызове программе передаются те параметры, которые получило ядро, а не имя модуля, которое необходимо загрузить. Программа modprobe загружает необходимый модуль. В списке драйверов ядра появляется необходимый драйвер и программа начинает взаимодействовать с ним.

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

Конфигурация программы modprobe.

Конфигурационный файл программы modprobe /etc/modules.conf Опция -c показывает конфигурацию по умолчанию.

Как было сказано в предыдущей главе, ядро для загрузки модулей запускает программу modprobe. В качестве параметра ядро обычно передает тип устройства с указанием старшего и младшего номеров. Например:

char-major-10-144

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

Например, когда для конфигурации сетевой карточки вызывается программа ifconfig, ей в качестве имени устройства передается eth0. В каталоге /dev файла eth0 нет. Поэтому программа ifconfig при обращении к ядру передает имя устройства – eth0. Точно такое же имя передается ядром программе modprobe.

В ASPLinux, в стартовом скрипте /etc/rc.d/rc.sysinit оставлена поддержка

В ASPLinux, в стартовом скрипте /etc/rc.d/rc.sysinit оставлена поддержка файла/etc/rc.modules, который в BSD системах был предназначен для загрузки модулей. Но его дальнейшее

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

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

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

В обоих случаях: когда передаются параметры устройства или

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

Программа modprobe уже имеет конфигурацию по умолчанию. Посмотреть её можно, выполнив программу с опцией “-c”. Но если найти строку, соответствующую устройству eth0, можно увидеть, что для этого устройства не определено имя модуля:

alias eth0 off

Определение или переопределение конфигурации программы modprobe происходит в её конфигурационном файле /etc/modules.conf.

Предположим, что в компьютере установлены три сетевые карточки: две NE2000 совместимые на ISA шине и NE2000 совместимая карточка на PCI шине. Им соответствуют модули ne и ne2k-pci. Для определения устройств сетевых карточек в файл /etc/modules.conf необходимо дописать три строки:

alias eth0 ne

alias eth1 3c59x

alias eth2 ne2k-pci

Т.е. при помощи параметра alias определяется соответствие устройства и модуля, который необходимо будет загрузить.

У сетевых карточек NE2000 на ISA шине есть одна особенность при загрузке модуля необходимо указать порты ввода/вывода, на которые сконфигурированы эти карты. В случае непосредственного вызова программы modprobe, параметры можно указать в командной строке:

modprobe ne io=0x280,0x320

В случае использования файла /etc/modules.conf, придется

дописать еще одну строку:

options ne io=0x280,0x320

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

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

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

Параметр

Описание

pre-install модуль команда

Определяет команду, которая будет выполнена перед загрузкой указанного модуля.

post-install модуль команда

Определяет команду, которая будет выполнена после загрузки указанного модуля.

pre-remove модуль команда

Определяет команду, которая будет выполнена перед удалением модуля.

post-remove модуль команда

Определяет команду, которая будет выполнена после удалениея модуля.

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

Вопросы

1. Для чего в системе необходимо наличие файлов устройств?

2. Вы собираетесь создать файл устройства, соответствующего интерфейсу /dev/hdb. Где в документации искать параметры, которые необходимо передать программе mknod при создании этого файла?

3. Можно ли создать файл устройства с именем /dev/myBigDisk, по своим параметрам (major, minor) соответствующему устройству /dev/hdb?

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

Настройка IDE контроллера.

Программа hdparm Конфигурационные файлы в директории /etc/sysconfig

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

Вы должны понимать , что самостоятельная настройка IDE

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

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

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

Программа hdparm.

hdparm [ параметры ] [ устройство ]

Для тонкойнастройки IDE интерфейсов в Linux используется программа hdparm.

При помощи этой программы можно:

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

Изменить параметры IDE контролера.

Проверить быстродействие устройства.

Ниже приведены некоторые параметры программы hdparm.

Параметр

Описание

-d N

Если N равно 0 – выключает поддержку DMA, если равно 1 – включает поддержку DMA.

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

Параметр

Описание

-c N

Если N равно 0 – включается 16-ти битный режим ввода/вывода, если равно 1 – включается 32-х битный режим ввода/вывода, если равно 3 - включается 32-х битный режим ввода/вывода с поддержкой специальной sync последовательности.

-m N

Если N равно 0 – выключается возможность чтения нескольких секторов за один оборот шпинделя винчестера. Если N равно числу устанавливается возможность одновременного чтения N секторов за один оборот шпинделя.

-E N

Параметр устанавливает скорость CD-ROM.

-f

Сбрасывает данные из буфера на винчестер, очищает буфер.

-g

Показывает геометриювинчестера.

-i

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

-I

Запрашивает информацию об устройстве. Выводит более полную информацию, чем при опции -i.

-T

Предназначен для проверки быстродействия. Показывает скорость чтения из буфера.

-t

Предназначен для проверки быстродействия. Показывает скорость чтения из устройства.

-X

Устанавливает режим DMA.

В первую очередь необходимо получить информацию о

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

контроллере. Это делается при помощи следующей команды:

hdparm /dev/hda

следующей команды : hdparm /dev/hda Если поддержка DMA выключена ,

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

Для получения полной информации об устройстве используйте опцию -I:

hdparm -I /dev/hda

Проверка быстродействия устройства возможна при использовании опций -t и -T:

hdparm -tT /dev/hda

Поскольку устройство в момент проверки быстродействия может

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

средних значений.

После получения информации о поддерживаемых режимах работы, можно установить их максимальные значения для устройства. Особое внимание необходимо уделять режимам DMA, ввода/вывода и поддерживаемому количеству одновременно читаемых секторов (MaxMultSect).

Предположим, что IDE интерфейс поддерживает: 32-х битный режим с поддержкой sync последовательности, UDMA 5 и максимальное количество одновременно