
Тема 7 МОС 2 Загрузка и останов Linux.ppt
- Количество слайдов: 27
Материал к курсу «Многопользовательские операционные системы»
Загрузка и останов Linux Использованные ресурсы: http: //www. linuxcenter. ru/lib/books/kostromin/gl_08_02. phtml http: //younglinux. info/bootprocess http: //www. linuxcenter. ru/lib/books/kostromin/gl_08_02. phtml
До загрузки Выполняются такие действия: 1. Тестирование компьютера. 2. Определение устройства содержащего Операционную Систему. 3. Передача управления программе управляющей загрузкой.
Варианты загрузки Linux 1. Используя специальную программу загрузчик, например Li. Lo (LInux LOader), GRUB (GRand Unified Bootloader), Asp. Loader (в лабораторных работах). 2. Используя загрузочный сектор активизирующий непосредственно ядро Linux. 3. Используя программы, загружающие Linux из другой ОС.
Главная задача, которая стоит перед загрузчиком любой операционной системы, заключается в том, чтобы перенести в память ядро операционной системы и передать ему управление дальнейшим функционированием компьютера [3]. При этом современные загрузчики позволяют выбрать ядро из нескольких возможных вариантов как одной и той же операционной системы, так и загрузить ядра разных ОС [3].
Замечание о файле ядра Ядро системы как правило хранится в каталоге /boot. Имя файла может быть vmlinuz-x. y. z-a, где x. y. z — номер версии ядра, а вместо символа a часто стоит указание на какие-то конкретные модификации ядра. На лабораторных работах использовался файл ядра vmlinuz-2. 6. 26. 3 -29. 0. 140 asp. i 686.
Параметры начальной загрузки Задаются 2 способами: 1) В строке вызова (приоритет выше). 2) В файле конфигурации. Три группы: 1. обрабатываемые самим загрузчиком; 2. передаваемые ядру; 3. передаваемые процессу init.
После загрузки ядра [1] Сразу после загрузки ядро монтирует корневую файловую систему и запускает процесс init. Процесс init — это программа, которая ответственна за продолжение процедуры загрузки, и перевод системы от начального состояния, возникающего после загрузки ядра, в стандартное состояние обработки запросов многих пользователей. init выполняет еще массу различных операций, необходимых для дальнейшей работы системы: проверку и монтирование файловых систем, запуск различных служб (демонов), запуск процедур логирования, оболочек пользователей на различных терминалах и т. д.
Процесс init Это процесс запускается одноименной программой расположенной в /sbin. Он имеет номер 1 и является «прородителем» всех остальных процессов. Точный список выполняемых init операций зависит от так называемого уровня выполнения (run level). Этот процесс обслуживает переключение системы между run level.
В ОС Linux существует 8 основных уровней выполнения [1]: 0 — останов системы; 1 — однопользовательский режим для администрирования root; 2 — многопользовательский режим без NFS (то же, что и уровень 3, если компьютер не работает с сетью); 3 — полный многопользовательский режим; 4 — использование не регламентировано; 5 — обычно используется для запуска системы в графическом режиме; 6 — перезагрузка системы; S (или s) — примерно то же, что и однопользовательский режим, но S и s используются в основном в скриптах.
Процесс init считывает свой конфигурационный файл /etc/inittab, состоящий из строк по 4 поля: 1) id; 2) runlevels; 3) action; 4) process. (разделитель символ «: » двоеточие).
Расшифруем поля initnab [3] 1. id — идентификатор строки. Это произвольная комбинация, содержащая от 1 до 4 символов. В файле inittab не может быть двух строк с одинаковыми идентификаторами; 2. runlevels — уровни выполнения, на которых эта строка будет задействована. Уровни задаются цифрами или буквами без разделителей, например, 345; 3. process — процесс, который должен запускаться на указанных уровнях (имя программы, вызываемой при переходе на указанные уровни выполнения); 4. action — действие.
Примеры значений action [3] 1) once — выполнить процесс только один раз при переходе на указанный уровень; 2) wait — процесс будет запущен один раз при переходе на указанный уровень и init будет ожидать завершения работы этого процесса, прежде, чем продолжать работу: 3) bootwait — процесс будет запущен на этапе загрузки системы независимо от уровня выполнения, и init будет дожидаться его завершения. Подробнее см. man-страницы init (8), inittab (5) и getty (8).
Первым делом init находит строку, которая определяет, какой уровень выполнения запускается по умолчанию: id: 3: initdefault: Это и будет тот уровень, в котором запустится и будет работать система после загрузки [1]. Далее init выполняет команды, указанные в строке с ключевым словом sysinit. В стандартной конфигурации здесь выполняется скрипт rc. sysinit из каталога /etc/rc. d [1].
После того, как для вашей системы определяется уровень выполнения по умолчанию, init запускает все фоновые процессы, необходимые для запуска системы, просматривая соответствующую для данного уровня выполнения директорию rc. [2, p. 2 -3]
Фрагменты inittab (asplinux) 1. Уровень выполнения по умолчанию id: 5: initdefaulte 2. Системная инициализация si: : ? ? ? /etc/rc. d/rc. sysinit 3. Уровень главного системного администратора ~~: S: wait: /sbin/sulogin 4. Выполнение системных действий для каждого уровня выполнения. 10: 0: wait: /etc/rc. d/rc 0 11: 0: wait: /etc/rc. d/rc 1 и так до уровня 6.
Еще действия init [1] Процесс init помимо запуска процессов getty выполняет 2 основных действия: • запускает скрипт rc. sysinit из каталога /etc/rc. d; • запускает скрипт rc из того же каталога /etc/rc. d с опцией, равной уровню выполнения (обычно rc. 3).
Каталог /etc/rc. d Содержит подкаталоги rc. Х. d (где Х=0, 1, …, 6) и init. d. В нем файлы-ссылки на скрипты, имеющие KXXname или SXXname. Первая группа связана с останавливаемыми (kill), а вторая со стартующими (start) сценариями. Двухзначный номер ХХ определяет порядок запуска.
В файле rc. sysinit содержатся команды инициализации системы, в том числе команды установки системных переменных, загрузки таблиц раскладки клавиатуры (командой loadkeys) и системного шрифта (команда consolechars), монтирования и проверки файловых систем, загрузки модулей, задания предпочитаемой графической оболочки и т. д. «… кратко, перечень действий, выполняемых скриптом rc. sysinit, выглядит …» - далее более 30 пунктов
Пример rc. sysinit (asp. Linux) PATH=“/sbin; /usr/sbin; /usr/X 11 R 6/bin“ EXPORT PATH cmod 755 / HOSTNAME=“asplinuxlive“ HOSTTYPE=`uname –r` EXPORT HOSTNAME HOSTTYPE
Одна из последних ссылок вида SXXname, используемых скриптом rc на уровнях 2– 5, является ссылка на скрипт /etc/rc. d/rc. local. Как сказано в самом этом файле, этот скрипт выполняется после всех других скриптов в процессе инициализации системы, поэтому если вы хотите, чтобы в процессе загрузки были выполнены какието дополнительные команды или ваши персональные настройки, то их целесообразно поместить именно сюда.
Другие общесистемные конфигурационные файлы расположенные в каталоге /etc и его подкаталогах. • /etc/lilo. conf — файл, определяющий конфигурацию загрузчика lilo (о структуре этого файла было сказано несколько слов в гл. 2); • /etc/modules. conf (или /etc/conf. modules) — файл, определяющий конфигурацию загружаемых модулей ядра (см. man-страницу по modules. conf); • /etc/fstab — содержит информацию, необходимую для автоматического монтирования файловых систем;
• /etc/passwd — различная регистрационная информация, включая пароли; /etc/profile — глобальный файл профилей — устанавливает переменную $PATH и другие важнейшие переменные; заглянув в него, вы увидите, что в нем вызываются все файлы из подкаталога /etc/profile. d, в частности, файл, задающий параметры локализации системы; • /etc/bashrc — глобальный файл конфигурации bash, устанавливает синонимы (алиасы) и функции, и т. п. ; • /etc/motd — устанавливает сообщение, выдаваемое пользователю после входа в систему (после правильного ввода пароля);
• /etc/issue — содержит сообщение, выдаваемое на терминал перед входом в систему (перед запросом имени и пароля); однако редактировать этот файл с целью изменения текста сообщения не стоит, потому что сам он формируется инициализационным скриптом /etc/rc. d/rc. local; • /etc/redhat-release — содержит название и номер версии дистрибутива, используется скриптом rc. local.
Примеры (asp. Linux 14) /etc/ bashrc if [ “`id –gn`” = “`id –un`” –a `id –u` -gt 99 ]; then umask 002 else umask 022 fi
Существуют сценарии, расположенные в домашнем каталоге пользователя и выполняемые при регистрации его сеанса. К таким сценариям относятся:
Примеры (asp. Linux 14) bash_profile (root) if [ -f ~/. bashrc ]; then. ~/. bashrc fi PATH=$ PATH: $HOME/bin USERNAME=“root“ EXPORT PATH USERNAME