- •1 Общие сведения
- •2 Файловая система
- •3 Перенаправление ввода и вывода
- •4 Основы работы с командным интерпретатором
- •5 Переменные окружения
- •6 Основные команды для работы с файлами
- •7 Практическое задание
- •1 Редактор VI
- •1 Описание команд
- •2 Практическое задание
- •1 Процессы
- •1.1 Атрибуты процессов
- •2 Основные сведения о работе с процессами
- •3 Механизмы межпроцессного взаимодействия
- •3.1 Сигналы
- •3.2 Каналы
- •4 Команды для работы с процессами
- •5 Средства оболочки предназначенные для работы с процессами
- •6 Практическое задание
- •1 Файлы инициализации.
- •2 Переменные используемые оболочкой
- •2.1 Переменные настройки локализации
- •2.2 Переменные используемые оболочкой и некоторыми программами
- •2.3 Переменные устанавливаемые оболочкой
- •3 Псевдонимы команд
- •4 Функции
- •1 Монтирование и демонтирование файловых систем
- •2 Создание новой файловой системы
- •3 Получение дополнительной информации о файловых системах
2 Создание новой файловой системы
Для того, чтобы использовать диск, необходимо создать на нём файловую систему, т.е. отформатировать его. Для этой цели используется команда newfs. Данная команда создаёт на диске файловую систему UFS. Как правило достаточно указать имя файла устройства в качестве параметра данной команды, но возможно, также, указывать различные параметры файловой системы.
Для создания файловой системы FAT можно использовать команду newfs_msdos: newfs_msdos [-F FAT][-L метка][-c разм-класт][-f формат] устройство
Параметры имеют следующее значение:
-F определяет тип FAT (12, 16, 32).
-L задаёт метку диска.
-c определяет размер кластера в секторах.
-f определяет формат гибкого диска. Возможные значения: 360, 720, 1200, 1440, 2880.
Для низкоуровнего форматирования гибких дисков используется команда fdformat. Как правило, в качестве параметра достаточно указать имя файла устройства.
3 Получение дополнительной информации о файловых системах
Для того, чтобы получить информацию о свободном и используемом месте на различных дисках можно воспользоваться командой df. Для измененения формата вывода команды можно использовать ключи -h, -k, -m.
Нередко требуется определить размер занимаемый определённым каталогом. В таких случаях используется команда du: du [-I маска][-a|-s][-c][-h|-k][-x] файл...
Параметры имеют следующее значение:
-I игнорировать файлы соответствующие маске.
-a вывести запись для каждого файла в иерархии.
-s вывести записи только для файлов и каталогов заданных в качестве аргументов.
-c вывести общий итог.
-h вывести размер в удобном для человека формате.
-k вывести размер в килобайтах.
-x не выходить за пределы одной файловой системы.
Задание 4: Выведите в файл отчета сведения о степени использования разделов жесткого диска. Выведите в файл отчета сведения о размере Вашего домашнего каталога. Размер должен быть указан в килобайтах или мегабайтах. Выведите, также, сведения о размере корневого каталога, при этом не выходите за пределы файловой системы, на которой находится корневой каталог
Лабораторная работа №7.
Универсальный загрузчик GRUB
Загрузчик GNU GRUB разрабатывался для загрузки ОС, соответствующих стандарту Multiboot. GRUB был разработан так, чтобы уметь загружать: Linux, FreeBSD, OpenBSD, NetBSD и через вызов вторичного загрузчика - MS DOS, MS Windows NT, OS/2.
Особенностью GRUB является понимание форматов нескольких файловых систем (BSD FFS, FAT16, FAT32, Minix fs, ext2fs, ReiserFS, JFS, XFS, VSTa fs и, на всякий случай, номера блоков) и ядер (a.out, различные варианты ELF), что позволяет записывать в конфигурацию загрузчика имена файлов вместо номеров блоков. Позволяет использовать при загрузке меню (читается из конфигурационного файла или встраивается в тело загрузчика) или командный интерфейс. Меню можно редактировать в момент загрузки.
Файлы читаются с флоппи, жёсткого диска или CD средствами BIOS со всеми вытекающими ограничениями и неприятностями типа путаницей со способом трансляции адресов блоков и нумерацией дисков. Однако, может переключать диск в режим LBA, если имеется такая возможность.
Имеется возможность загрузки по сети (TFTP, BOOTP, DHCP, RARP) и использования терминала (RS-232). Ещё он умеет пользоваться Etherboot и PXE ROM, но в комплект обычной поставки (RH) эти компоненты не входят.
Есть средства парольной защиты (команды password и lock), но в наше время загрузочных носителей - это ненадёжная защита.
GRUB состоит из 3 частей:
stage1 - 512 байт, обычно размещается в MBR; ничего про файлы не знает, имеет вшитый адрес первого блока stage1_5 или stage2 (размер и адреса остальных интервалов хранятся в этом первом блоке); в эти же 512 байт умещается таблица разделов, BPB и некоторые константы, так что размер программы невелик
stage1_5 - отдельный модуль для каждого типа файловой системы; ищет и загружает stage2; может находиться в файловой системе или вне её (между MBR и первым разделом или в специально зарезервированном месте FFS или ReiserFS)
stage2 - основной модуль GRUB, обеспечивающий работу с меню и командной строкой; имеет вшитый флажок LBA, имя конфигурационного файла и прямо сюда в момент загрузки может записываться номер выбранной из меню строки
Имена устройств и файлов
Имя устройства заключается в круглые скобки и начинается с указания типа устройства (fd, hd, cd, nd) за которым идёт номер устройства. Устройства нумеруются с нуля, порядок определяется BIOS (в частности, ATA и SCSI диски не различаются). Если устройство разбито на разделы и необходимо указать конкретный раздел вместо всего диска, то далее необходимо после запятой указать номер раздела (нумеруются с нуля, первый расширенный раздел имеет номер 4), например, первый расширенный раздел первого диска:
(hd0,4)
Имя файла записывается сразу после имени устройства (если имя устройства опущено, то подразумевается "корневое" устройство; задаётся командой root), в обычном POSIX синтаксисе, начиная от корневого слеша (/).
Если же GRUB ничего не знает про используемую файловую систему, то расположение файла можно задать с помощью списка через запятую интервалов блоков (512 байт) в виде: смещение+число-блоков. Если смещение первого интервала опущено, то подразумевается число 0. Если имя устройства опущено, то подразумевается "корневое" устройство. Самое распространённое использование - загрузка вторичного загрузчика размером 512 байт:
root (hd0,0)
chainloader +1
Командный интерфейс
GRUB переходит после загрузки в режим командного интерфейса, если не находит конфигурационный файл или если пользователь переводит его явно (команда c в режиме меню). Режим ввода команды напоминает bash, те же клавиши редактирования строки (включая историю команд и авто дополнение команд и имён дисков и файлов), немедленное исполнение после нажатия клавиши "Enter". Команды:
boot (запустить загруженное ядро или вторичный загрузчик)
chainloader [--force] имя-файла (загрузить в память вторичный загрузчик)
help [--all] [шаблон]
hide имя-раздела (устанавливает флаг "hidden" в таблице раздела, чтобы не пугать DOS несколькими первичными разделами)
initrd имя-файла (загрузить initrd - RAM диск для Linux)
kernel [--type=netbsd|freebsd|openbsd|linux|biglinux|multiboot] [--no-mem-option] имя-файла параметр ... (загрузить ядро в память; остальные параметры передаются ядру; --no-mem-option запрещает передавать ядру параметр mem=..., генерированный GRUB)
makeactive (взвести флаг активности для корневого раздела; требуется для DOS)
map в из (позволяет отобразить исходное устройство в результирующее; требуется для работы некоторых вторичных загрузчиков (DOS), умеющих загружаться только с первого диска)
module имя-файла параметр ... (загрузить модуль для ядра стандарта Multiboot)
modulenounzip имя-файла параметр ... (загрузить модуль для ядра стандарта Multiboot без расширения)
partnew имя-раздела тип начальный-сектор число-секторов (создать раздел)
parttype имя-раздела тип (изменить тип раздела)
root имя-устройства-или-раздела (считать указанное устройство "корневым", определить размер раздела)
rootnoverify имя-устройства-или-раздела (считать указанное устройство "корневым", не пытаться работать с разделом)
unhide имя-раздела
uppermem килобайт (принудительно назначить размер верхней памяти)
GRUB может самостоятельно загрузить ядро ОС или загружить вторичный загрузчик и передать ему управление. В первом случае типовой набор команд выглядит так:
root (hd0,0)
kernel /vmlinuz root=/dev/hda1 ...
inird /initrd.img
boot
Во втором так:
rootnoverify (hd0,0)
map ...
hide ...
unhide ...
makeactive ...
chainloader +1
boot
Команды управления интерфейсом и процессом:
color цвет/фон [цвет-выделенного/фон] (имена цветов достались от CGA IMHO ;)
configfile имя-файла (загрузить конфигурационный файл и интерпретировать его)
halt [--no-apm] (остановить компьютер)
pager [on | off] (делать ли паузы между экранами при большом выводе)
pause текст-сообщения (вывести текст и ждать нажатия кнопки Any)
reboot
savedefault (сделанный из меню выбор становится выбором по умолчанию; прописывается в тело stage2; интересно - будет ли работать при загрузке с CD ;)
setkey [в из] (переназначение клавиши)
splashimage имя-файла (используется в качестве фоновой картинки; xpm 640x480, 14 цветов, сжатый gzip)
"Исследовательские" команды:
blocklist имя-файла (выдать список интервалов адресов блоков, занимаемых файлом)
cat имя-файла
cmp имя-файла-1 имя-файла-2
debug (выводить отладочные сообщения)
displayapm (вывести информацию об APM BIOS)
displaymem (вывести карту памяти)
find имя-файла (искать указанное абсолютное имя файла на всех доступных разделах)
fstest (включить отладочную печать о файловых операциях)
geometry имя-устройства [C H S] (посмотреть, что BIOS думает о геометрии диска; при работе в рамках ОС можно установить геометрию для использования в GRUB)
impsprobe (попытаться включить процессоры согласно Intel Multiprocessor Specification 1.1 или 1.4)
ioprobe имя-устройства (вывести адреса портов ввода/вывода данного устройства)
read адрес-памяти
testload имя-файла (файл читается различными способами, чтобы проверить возможность чтения файлов)
testvbe режим (переключить видеокарту в указанный режим и запустить мультфильм)
vbeprobe (вывести список имеющихся видеорежимов VESA BIOS EXTENSION)
Команды для установки GRUB:
device имя-устройства-GRUB имя-устройства-ОС (только при работе в рамках ОС; задаёт соответствие между именем устройства в понимании GRUB и ОС
embed имя-файла устройство-или-раздел (встроить stage1_5 из файла сразу после MBR или область загрузки файловой системы FFS или ReiserFS)
install ... (установка GRUB на диск: модификация содержимого stage1 и stage2 в соответсвии с указанными адресами, именами и пр.)
quit (только при работе в рамках ОС)
setup [--force-lba] [--stage2=имя-файла] [--prefix=каталог-с-источниками] имя-раздела [имя-раздела-с-источниками] (оболочка для install; установка GRUB на диск; по умолчанию источники ищутся на корневом разделе в каталогах /boot/grub и /grub; при установке на диск пытается встроить stage1_5 вне файловой системы)
Команды для загрузки по сети (после определения сетевых параметров можно использовать сетевой диск - (nd) - для загрузки файлов по TFTP; интересно GRUB знает про все на свете сетевые карточки?):
bootp (запрашивает IP адрес компьютера и прочие параметры у BOOTP сервера)
dhcp (запрашивает IP адрес компьютера и прочие параметры у DHCP сервера)
rarp (запрашивает IP адрес компьютера и прочие параметры у RARP сервера)
ifconfig --address=наш-адрес --server=адрес-TFTF-сервера --gateway=адрес-шлюза --mask=сетевая-маска (явное задание сетевых параметров)
Команды для работы с терминалом по RS-232:
serial [--unit=номер-последовательного-порта] [--port=UART-I/O-порт] [--speed=бод] [--word=число-бит-данных] [--stop=число-стоповых-бит] [--parity=no|odd|even] (параметры по умолчанию - 0 (т.е. COM1), 9600, 8, 1, no; вывод на теринал начинается по команде terminal)
terminal [--dumb] [--no-echo] [--no-edit] [--timeout=секунд] [--lines=число-строк] [--silent] [console] [serial] (задаёт тип устройства общения - через PC консоль или последовательный терминал; определяется явно или где первым нажмут кнопку или первое в списке по истечению времени ожидания; под последовательным терминалом подразумевается VT100, если не указано --dumb; --silent запрещает вывод приветствия до первого нажатия кнопки - например, если у вас вообще нет терминала)
terminfo ... (позволяет описать особенности терминала; есть утилита grub-terminfo)
Описание меню
GRUB переходит после загрузки в режим работы с меню, если находит конфигурационный файл. Команды работы с меню описаны на экране (перемещение по меню, выбор текущей секции, переход в командный режим, редактирование меню).
Меню создаётся из конфигурационного файла grub.conf в загрузочном каталоге (/grub или /boot/grub) в момент загрузки. Конфигурационный файл может содержать любые команды командного интерфейса GRUB и некоторые дополнительные. Комментарии начинаются с символа '#'. Файл делится на секции, разделяемые командой title. Секция до первой команды title задаёт общие параметры, в частности секцию по умолчанию и описание интерфейса. Каждая команда title задаёт имя секции, которое будет высвечиваться на экране в момент загрузки. При выборе данной секции выполняются составляющие её команды. Указывать команду boot в конце секции необязательно - она подразумевается.
Команды, задающие общие параметры:
timeout секунд (по истечению указанного времени выполняется секция, указанная в default или секция 0, если default не использована)
default номер-секции (какую секцию выполнять по умолчанию по истечению интервала времени; нумеруются с нуля; можно указать ключевое слово "saved" - выполняется секция, номер которой сохранён командой savedefault)
fallback номер-секции (какую секцию выполнять, если default выполнить не удалось; нумеруются с нуля)
hiddenmenu (не выводить меню на экран; его всё же можно вызвать нажав ESC)
password [-md5] пароль-или-хеш [имя-нового-конфигурационного-файла] (md5 - такой же алгоритм как в /etc/shadow; есть утилита grub-md5-crypt; блокирует интерактивное управление до ввода пароля, если указан новый файл конфигурации, то он загружается и загрузчик начинает с начала)
команды, общие с командным интерфейсом: bootp, color, device, dhcp, hide, ifconfig, pager, partnew, parttype, password, rarp, srial, setkey, splashimage, terminal, terminfo, unhide
Команды, которые могут входить в секцию:
title текст
lock (должна идти сразу за title; блокирует использование секции, пока не будет введён пароль, заданный командой password)
password [-md5] пароль-или-хеш (md5 - такой же алгоритм как в /etc/shadow; определяет пароль для использования секции)
color цвет/фон [цвет-выделенного/фон] (имена цветов достались от CGA IMHO ;)
команды командного интерфейса: blocklist, boot, cat, chainloader, cmp, configfile, debug, displayapm, displaymem, embed, find, fstest, geometry, halt, help, impsprobe, initrd, install, ioprobe, kernel, makeactive, map, md5crypt, module, moduleunzip, pause, quit, reboot, reed, root, rootnoverify, savedefault, setup, testload, testvbe, uppermem, vbeprobe
Установка GRUB
Скорее всего, что GRUB будет установлен в MBR во время установки Linux, но иногда приходится его восстанавливать или перемещать на другое место. Для этого необходимо иметь установленным пакет grub (/boot/grub: stage1, *stage1_5, stage2). stage1 - это 512 байт, помещаемые обычно в MBR. Кроме программы загрузки stage1_5 или stage2 в них помещается таблица разделов и прочая информация. Адрес загрузчика следующего этапа "впечатывается" в тело stage1 в виде адресов блоков, так что о файловых системах он ничего не знает и после смены адреса stage1_5 и stage2 его надо модифицировать и записывать заново.
Установка GRUB на флоппи:
dd if=stage1 of=/dev/fd0 bs=512 count=1
dd if=stage2 of=/dev/fd0 bs=512 seek=1
Установка GRUB на диск после загрузки GRUB с флоппи (этот метод гарантирует правильную нумерацию дисков):
# сделать корневым раздел, содержащий каталог boot
grub > root (hd0,0)
# запись stage1 в MBR
grub > setup (hd0)
Можно установить GRUB на диск без изготовления флоппи непосредственно из текущей ОС с помощью скрипта grub-install, но при этом есть риск ошибиться с номером устройства (файл device.map):
grub-install /dev/hda
Восстановление загрузчика (загрузка с CD-ROM в режиме rescue, корневая файловая система вместе с /boot на /dev/hda1):
mkdir /mnt/hard
mount -t ext3 /dev/hda1 /mnt/hard
chroot /mnt/hard
/sbin/grub --no-floppy
device (hd0) /dev/hda
root (hd0,0)
setup (hd0)
quit
exit
Установка GRUB на CD (создание и запись ISO9660 в Linux, формат El Torito без эмуляции):
mkdir grubiso
mkdir -p grubiso/boot/grub
cp stage2_eltorito grubiso/boot/grub
mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot \
-boot-load-size 4 -boot-info-table -o /tmp/grub.iso grubiso
запись /tmp/grub.iso на CD
После загрузки с этого CD мы попадаем в командный режим GRUB. Файлы, записанные на CD дополнительно доступны с указанием устройства (cd). Этим можно воспользоваться для записи на CD конфигурационного файла, ядра Linux и initrd. Например, создадим конфигурационный файл grubiso/boot/grub/grub.conf:
#boot=/dev/hda
default=4
timeout=5
title chainloader hd0
rootnoverify (hd0)
chainloader +1
title chainloader hd0,0
rootnoverify (hd0,0)
chainloader +1
title CD CentOS 4.0 (2.6.9-5.0.3.EL)
root (cd)
kernel /boot/vmlinuz-2.6.9-5.0.3.EL ro root=/dev/hda3
initrd /boot/initrd-2.6.9-5.0.3.EL.img
title CD Fedora Core 3 original (2.6.9-1.667)
root (cd)
kernel /boot/vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.9-1.667.img
title CD Fedora Core 3 upgrade (2.6.10-1.770_FC3)
root (cd)
kernel /boot/vmlinuz-2.6.10-1.770_FC3 ro root=LABEL=/ rhgb quiet
initrd /boot/initrd-2.6.10-1.770_FC3.img
Все упомянутые файлы необходимо скопировать в grubiso/boot/, создать образ ISO9660 и записать на CD. Получившийся CD (его необходимо дополнить строчками меню для всех вариантов Linux в сети предприятия) можно использовать как "универсальный" аварийный загрузчик. Например, если глючный BIOS компьютера не умеет работать с большими дисками, его приходится загружать с CD.
Приложение.
Последовательность загрузки (x86)
инициализация контроллера RAM
декомпрессия BIOS из флеш в RAM
защита от записи захваченного куска и передача туда управления
обход периферии и установка дополнительных модулей BIOS в ROM (VGA, SCSI)
POST и инициализация поддерживаемых BIOS устройств
проверка устройств, указанных как пригодных для загрузки, на наличие "магического" слова (про загрузку с CD-ROM см. описание спецификации El Torito)
загрузка загрузочного сектора (< 512 байт) в память и передача ему управления; если загрузка с жёсткого диска, то загрузочный сектор лежит в MBR (первом секторе, Master Boot Record) главного (master) жёсткого диска на первой шине ATA
первоначальный загрузчик находит и загружает программу загрузки 2 этапа (stage 2) и передаёт ей управление (GRUB, LILO, SYSLINUX); используется BIOS API; обычное место загрузчика 2 этапа - /boot/
загрузчик 2 этапа выбирает, находит и загружает ядро и RAM диск (initrd) в память; GRUB читает конфигурацию из /boot/grub/grub.conf; конфигурация для LILO хранится в MBR; GRUB и LILO позволяют вывести список возможных загружаемых систем на экран и выбрать нужную с помощью клавиатуры; GRUB позволяет изменить параметры загрузки (корневая файловая система, ядро, RAM диск, параметры ядра) с помощью текстового редактора; используется BIOS API; RAM диск содержит образ файловой системы с модулями (драйверами) устройств, необходимыми для монтирования корневой файловой системы; в случае со встроенным Linux RAM диск содержит всю систему
ядро повторно обходит и инициализирует периферийные устройства, для которых есть встроенные драйвера
ядро монтирует RAM диск (предварительно разжав) и загружает с него необходимые модули, инициализирует соответствующие устройства
если необходимо, то ядро инициализирует LVM и программный RAID
ядро размонтирует RAM диск и освобождает занимаемую им память
ядро монтирует корневую файловую систему в режиме "только чтение"; в процессе дальнейшей работы ядро загружает дополнительные модули с корневой файловой системы
запускается процесс /sbin/init (далее описывается загрузка в стиле System V)
init разбирает конфигурационный файл /etc/inittab для определения дальнейших действий; если при загрузке указан уровень s (или S), то inittab не читается, а система переходит в однопользовательский режим (shell на /dev/console с правами root); строка с действием initdefaultопределяет "уровень выполнения" (run level) по умолчанию, т.е. режим работы системы (однопользовательская, многопользовательская, с доступом в сеть, с графическим окружением и т.д.); строка с действиемsysinit(/etc/rc.d/rc.sysinit) определяет скрипт инициализации;
init выполняет скрипт /etc/rc.d/rc.sysinit (проверка и монтирование остальных файловых систем, swap и т.д.)
в "нормальном" /etc/inittab при переходе на любой уровень запускается скрипт /etc/rc.d/rc с указанием уровня в качестве параметра; данный скрипт запускает скрипты /etc/rcуровень.d/K* (в алфавитном порядке) с параметром stop и скрипты /etc/rcуровень.d/S* с параметром start; в конце запускается /etc/rc.d/rc.local; по традиции скрипты являются символьными ссылками на скрипты в директории /etc/init.d/; вместо /etc/init.d/ может использоваться /etc/rc.d/init.d/; вместо /etc/rcуровень.d/ может использоваться /etc/rc.d/rcуровень.d; реальность несколько сложнее
Загрузчики
В различных дистрибутивах и различных ситуациях могут использоваться следующие загрузчики:
GRUB
LILO
ISOLINUX
LILO и GRUB работают через BIOS, а большинство BIOS позволяют доступ только к первым двум IDE-дискам (считая ATAPI CD-ROM) в пределах первых 1023 цилиндров. Так что каталог (или раздел) /boot, в котором хранятся как файлы самого загрузчика, так и загружаемые файлы (ядро, initrd) должен удовлетворять данным ограничениям.
Уровни выполнения и /etc/inittab
Формат файла /etc/inittab (комментарии начинаются с символа '#'):
идентификатор:перечень-уровней-выполнения:действие:процесс
где
идентификатор - уникальная последовательность от 1 до 4 символов (в старых версиях до 2); для getty и ему подобных идентификатор д.б. номером линии tty
перечень-уровней-выполнения - перечисление (без пробела) уровней выполнения, для которых выполняется указанное действие (от 0 до 6 и от A до C, s, S); для sysinit, boot и bootwait игнорируется; при смене уровня всем процессам, не специфицированным для этого уровня, посылается сигнал SIGTERM, а через 5 секунд (интервал задаётся при вызове telinit -t) сигнал SIGKILL (init предполагает, что процесс не сменил группу процессов, в которой он его запустил); пустой список означает "для всех"
действие (по-моему, тут перемешанны условия и действия)
respawn (процесс по завершении запускается вновь и вновь; после 10 перезапусков за 2 минуты делается пауза 5 минут)
wait (процесс запускается один раз при переходе на уровень, init ждёт его завершения)
once (процесс запускается один раз при переходе на уровень)
boot (процесс запускается при загрузке системы)
bootwait (процесс запускается при загрузке системы, init ждёт его завершения)
off (ничего не делать)
ondemand (процесс запускается при вызове данного уровня выполнения (от A до C), но смены уровня не происходит)
initdefault (на какой уровень выполнения переходить после загрузки; если не указан, то будет спрашивать на консоли)
sysinit (процесс запускается при загрузке до boot и bootwait)
powerwait (вызывается при пропадании питания, например, программой слежения за UPS, SIGPWR (подробности в /etc/powerstatus: FAIL), init ждёт его завершения)
powerfail (вызывается при пропадании питания, например, программой слежения за UPS, SIGPWR (подробности в /etc/powerstatus: FAIL), init не ждёт его завершения)
powerokwait (вызывается при возобновлении питания, SIGPWR (подробности в /etc/powerstatus: OK), init ждёт его завершения)
powerfailnow (вызывается непосредственно перед исчерпанием аккумуляторов UPS, SIGPWR (подробности в /etc/powerstatus: LOW))
ctrlaltdel (вызывается при получении сигнала SIGINT от ядра)
kbrequest (ядро посылает SIGWINCH при нажатии определённой комбинации клавиш)
процесс - имя файла ('+' перед символом отменяет запись utmp и wtmp), программа или скрипт
При запуске процесса устанавливаются переменные окружения: PATH, INIT_VERSION, RUNLEVEL, PREVLEVEL, CONSOLE.
Уровни выполнения для Red Hat Linux:
0: halt (неинтереактивный уровень)
1: single user (одна виртуальная консоль)
2: multiuser (6 виртуальных консолей)
3: multiuser + NFS (6 виртуальных консолей)
4: не используется
5: X11 (6 виртуальных консолей и xdm, gdm или kdm в зависимости от /etc/X11/prefdm)
6: reboot (неинтереактивный уровень)
Переход на другой уровень можно сделать с помощью программы telinit или прямо через /dev/initctl. telinit с указанием уровня q (Q) заставляет init перечитать /etc/inittab. Использование SIGPWR и /etc/powerstatus признано устаревшим.
Загрузчик может передать процессу init параметры
-s, S, single (загрузка в однопользовательском режиме)
от 1 до 5 (явное задание уровня выполнения)
-b, emergency (однопользовательский режим без выполнения sysinit)
-a, auto (устанавливается переменная AUTOBOOT)
