Загрузка ОС, режимы работы, службы
Первый сектор диска (MBR, загрузочный сектор) и первый сектор каждого раздела (boot-сектор) содержат загрузочную информацию. При запуске компьютера BIOS загружает в память программу-загрузчик из MBR, которая считывает таблицу разделов диска, определяет активный раздел диска и загружает программу-загрузчик из первого сектора этого раздела. Загрузчик считывает в память ядро операционной системы и начинается процесс загрузки.
Настройки загрузчика GRUB (GRand Unified Bootloader) находятся в файле /boot/grub/grub.conf и содержат набор директив.
Директива | Описание |
default=номер_пункта | номер пункта меню загрузчика, выполняющийся по умолчанию. Пункты меню нумеруются начиная с нуля |
timeout=число_секунд | число секунд перед началом автоматической загрузки |
splashimage=(hd0,0)/grub/имя_файла.xpm.gz | файл с фоном загрузчика |
password незашифрованный_пароль | незашифрованный пароль |
password —md5 зашифрованный_пароль | зашифрованный пароль длинной 30 символов |
title название пункта меню | название пункта меню загрузчика |
lock | использовать пароль при выборе пункта меню |
root (hd0,0) | активный раздел диска, где находится образ ядра системы |
файл с образом ядра системы | |
содержит необходимые модули ядра |
Директива password , указанная в начале файла (до первой директивы title ) задает пароль для перехода GRUB в режим ввода команд.
Если сразу после директивы title указана директива lock , то при выборе пользователем данного пункта меню появится сообщение с запросом пароля, указанного директивой password в начале конфигурационного файла. Если необходимо установить отдельный пароль к данному пункту меню необходимо вместо директивы lock использовать директиву password .
Для задания фона загрузчика GRUB необходимо указать следующую дериктиву в файле настроек:
splashimage=(hd0,0)/grub/имя_файла.xpm.gz
Здесь предполагается, что каталог /boot/ является точкой монтирования первого раздела первого диска.
В каталоге /boot/grub/ нужно поместить файл с изображением имя_файла.xpm.gz Образцы файлов с фоном можно найти в сети Интернет (см. ссылки ниже) или создать свое собственное изображение. Для этого необходимо с помощью какого-либо графического редактора создать изображение размером 640×480 в формате xpm , то есть имя_файла.xpm . Затем необходимо сжать изображение архиватором gzip с помощью команды:
В результате, получится файл имя_файла.xpm.gz
Если средства графического редактора не позволяют создавать изображения в формате xpm , то можно преобразовать изображение из исходного формата в формат xpm с помощью команды:
convert имя_файла.png -colors 14 -resize 640x480 имя_файла.xpm
Команда convert входит в пакет imagemagick , наличие которого можно проверить командой:
и при отсутствии установить командой:
Восстановление загрузочной записи в MBR
Для восстановления загрузочной записи необходимо загрузить систему с Live-CD. Затем запустить консоль GRUB командой:
В строке консоли GRUB выполнить команды:
grub> root (hd0,0) grub> setup (hd0) grub> quit
Первая команда указывает на boot-раздел, где находится образ ядра системы, в данном примере это первый раздел первого диска. Вторая команда устанавливает GRUB в MBR, в данном примере первого диска. Третья команда осуществляет выход из консоли GRUB.
Перезагрузить систему.
Основные параметры ядра
Параметры ядра указаны в файле /lib/modules/`uname -r`/build/.config . Файл представляет собой список параметров ядра с указанием способа их включения в ядро: встроенные ( y ) или подключаемый модуль ( m ). Для того, чтобы пересобрать ядро необходимо сначало отредактировать этот файл либо в текстовом редакторе, либо с помощью команды make menuconfig (текстовое меню) или make config (вопрос-ответ).
Управление драйверами (модулями ядра)
Управление аппаратными устройствами компьютера осуществляет ядро операционной системы Linux. Часть ядра, управляющая конкретным устройством называется драйвером устройства. Выделяют два типа драйверов:
- 1) Драйверы являются частью программного кода ядра (встроены в ядро). Для добавления нового драйвера необходимо перекомпилировать ядро.
- 2) Драйверы являются модулями ядра. Модули ядра хранятся в подкаталогах каталога в файлах с расширением *.ko .
Список всех загруженных в ядро модулей можно получить командой:
Информацию о конкретном модуле:
Для загрузки модуля и всех зависимых модулей:
Для удаления модуля и всех неиспользуемых зависимых модулей:
Для доступа к драйверам служат файлы устройств ( /dev/hda , /dev/eth0 и т.д.). Таким образом, общую схему взаимодействия пользователей с аппаратными устройствами можно представить в виде:
Устройство init , который читает данные из файла /etc/inittab и запускает указанные в нем процессы. Формат файла /etc/inittab следующий.
Первая строка файла имеет вид:
id:уровень_исполнения_по_умолчанию:initdefault:
идентификатор:уровни_исполнения:действие:запускаемый_процесс
Предусмотрены семь уровней выполнения:
Уровень | Описание |
0 | выключение системы |
1 | однопользовательский режим (уровень S) |
2 | многопользовательский режим без поддержки сети |
3 | многопользовательский режим |
4 | не используется |
5 | графический режим |
6 | перезагрузка |
Возможные действия над процессами:
Действие | Описание |
respawn | при завершении процесс будет перезапущен |
wait | процесс будет запущен при переключении на любой из указанных уровней и процесс загрузки остальных процессов продолжится только после завершения данного процесса |
once | процесс будет запущен только один раз |
boot | процесс будет запущен во время начальной загрузки независимо от указанных уровней исполнения |
bootwait | процесс будет запущен во время начальной загрузки и процесс загрузки продолжится только когда завершится данный процесс |
off | не выполняется никаких действий |
ondemand | запускается при переходе на уровни A, B, C |
initdefault | уровень выполнения по умолчанию |
sysinit | процесс запускается во время загрузки до процессов boot и bootwait |
powerwait | процесс будет запущен при исчезновении электропитания |
powerfail | процесс будет запущен при исчезновении электропитания |
powerokwait | процесс будет запущен при появлении электропитания |
powerfailnow | процесс будет запущен при низком заряде батарей источника бесперебойного питания |
ctrlaltdel | процесс будет запущен при нажатии комбинации клавиш |
kbrequest | процесс будет запущен при нажатии «специальной» комбинации клавиш |
Независимо от выбранного уровня выполнения сначало запускаются процессы отмеченнные как sysinit , затем boot и bootwait .
По-этому первым запускается сценарий /etc/rc.sysinit , который выполняется только один раз при загрузке системы.
А затем, запускается процесс /etc/rc , который запускает все процессы в соответствии с выбранным уровнем выполнения. При переходе на заданный уровень исполнения выполняются все скрипты из специального каталога, соответствующего данному уровню исполнения:
Каталог | Описание |
/etc/rc0.d/ | выключение системы |
/etc/rc1.d/ | однопользовательский режим |
/etc/rc2.d/ | многопользовательский режим без поддержки сети |
/etc/rc3.d/ | многопользовательский режим |
/etc/rc4.d/ | не используется |
/etc/rc5.d/ | графический режим |
/etc/rc6.d/ | перезагрузка системы |
В этих каталогах находятся ссылки на скрипты сервисов из каталога /etc/init.d/ . Имена ссылок имеют вид:
Здесь S означает запустить (start) сервис, а K означает остановить (stop) сервис. Символы xx — это двузначный порядковый номер скрипта. Запускаются и останавливаютя сервисы от малых номеров к большим.
После загрузки всех сервисов процесс init продолжает запуск оставшихся процессов.
Для перехода на другой уровень испольнения непосредственно из консоли служит команда:
Управление службами (сервисами)
В каталоге /etc/init.d/ расположены скрипты запуска и остановки сервисов. Стандартный вид такого скрипта следующий:
#!/bin/sh # # chkconfig: 345 85 15 # description: Start and stop myservice # processname: myservice start() < daemon /путь_к_файлу/myservice touch /var/lock/subsys/myservice >stop() < killproc myservice rm -f /var/lock/subsys/myservice rm -f /var/run/myservice.pid >case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: myservice" exit 1 esac exit 0
Сервисы могут быть запущены «вручную» командой:
Также могут быть остановлены командой:
Получить информацию о том, на каких уровнях выполнения автоматически запускается данный сервис можно воспользоваться командой:
chkconfig —list имя_сервиса
Для добавления автоматического запуска сервиса используется команда:
chkconfig —level 345 имя_сервиса on
Для запрещения автоматического запуска сервиса используется команда:
chkconfig —level 345 имя_сервиса off
При добавлении автоматического запуска сервиса создаются ссылки в соответствующих каталогах (например, /etc/rc3.d/ , /etc/rc4.d/ , /etc/rc5.d/ ) на скрипт запуска сервиса из каталога /etc/init.d/ . При отключенни автоматического запуска эти ссылки удаляются.
Режимы работы систем unix
Любая система UNIX, и Solaris в том числе, может работать в нескольких режимах. Это, как минимум, однопользовательский и многопользовательский режимы. В однопользовательском режиме систему загружают только в экстренном случае – для какой-то серьезной модификации или ремонта. В этом режиме загружается только ядро и командный процессор – сетевые службы не задействуются. Многопользовательский режим – это обычный режим работы системы, который включается после загрузки по умолчанию. В ряде систем (например, в Linux) существует большее количество режимов работы (часто – семь, с номерами от 0 до 6, в Solaris к ним еще добавляется режим s ). Среди этих режимов выделяют режим выключения системы, однопользовательский режим и несколько многопользовательских, которые отличаются друг от друга тем, какие именно сетевые службы запускаются при старте системы.
Для обычной работы система загружается в многопользовательском режиме. В нем пользователи могут одновременно входить в систему локально или через сеть, посылать программам, работающим в системе, запросы различного характера по сети. В этом режиме множество пользователей одновременно могут работать в системе. Их количество ограничивается размером таблиц ядра. Ограничение числа одновременно работающих пользователей связано не с числом одновременно запущенных командных процессоров или сеансов связи, а с количеством запущенных процессов и потребляемых ими ресурсов. Поэтому в каждый момент времени максимальное число пользователей, имеющих возможность работать с системой, индивидуально.
Для загрузки системы в однопользовательском режиме, следует при загрузке дать команду
Для перехода из многопользовательского режима в однопользовательский дайте команду
Тот же эффект даст выполнение shutdown без параметров.
Для того, чтобы перевести систему из однопользовательского режима в многопользовательский, нужно перезагрузить компьютер или выйти из командного процессора однопользовательского режима ( exit или Ctrl-D, работает в большинстве случаев). Также можно запустить программу init с параметром-названием режима работы, например
Cуществует несколько режимов работы (runlevels) операционной системы. Режим с номером 1 соответствует однопользовательскому режиму, а 3 – многопользовательскому. Режим номер 0 – это остановка (на этот уровень систему переводит команда shutdown ).
О режимах работы системы можно узнать больше из руководства по системе:
В Solaris 10 введено новое понятие «этап» (milestone), которое чем-то похоже на «режим работы». Этап – это определенное состояние системы, в котором запущены характерные для него службы. Этап, по сути, – это определенный набор служб. Например, для того, чтобы оставить работать только те службы, которые характерны для однопользовательского режима работы, следует дать команду
svcadm milestone -d milestone/single-user:default
Этап, указываемый команде svcadm milestone, может быть ключевым словом «single-user», «multi-user» или «multi-user-server». Кроме этого, есть специальные этапы «all» (запуск всех служб, которые должны быть запущены при старте системы) and «none» (временный запрет всех служб, кроме svc:/system/svc/restarter:default ). При выдаче этой команды в указанной форме этап становится этапом по умолчанию и сохраняется таковым при перезагрузке системы.
Для перевода системы в другой режим работы следует использовать вызов init напрямую, – переход к другому этапу не вызывает перехода к новому режиму работы. Из соображений совместимости в Solaris 10 режимы работы контролируются процессом init, как и в других системах семейства System V.
Термин «файловая система» в литературе используется для обозначения трех разных понятий.
- Во-первых, файловая система – это набор правил и конструкций, описывающих то, как сохраняются файлы на диске. В этом смысле мы употребляем, например, выражение «файловая система FAT32», и «файловая система» здесь тождественна понятию «тип файловой системы».
- Во-вторых, файловая система – это совокупность всех файлов, хранимых в компьютере.
- В-третьих, и это значение термина характерно именно для UNIX-систем, файловая система – это совокупность всех файлов на разделе диска или устройстве, или, что точнее, файловая система – это логическая единица монтирования (то, что можно смонтировать командой mount в отдельный каталог дерева каталогов).