Уровни выполнения, выключение и перезагрузка
Содержание:
Распространенные сообщения об ошибках в Init.dll
Наиболее распространенные ошибки Init.dll, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:
- «Init.dll не найден.»
- «Файл Init.dll отсутствует.»
- «Init.dll нарушение прав доступа.»
- «Файл Init.dll не удалось зарегистрировать.»
- «Файл C:\Windows\System32\\Init.dll не найден.»
- «Не удалось запустить Microsoft Windows Operating System. Отсутствует необходимый компонент: Init.dll. Пожалуйста, установите Microsoft Windows Operating System заново.»
- «Не удалось запустить данное приложение, так как не найден файл Init.dll. Повторная установка приложения может решить эту проблему.»
Такие сообщения об ошибках DLL могут появляться в процессе установки программы, когда запущена программа, связанная с Init.dll (например, Microsoft Windows Operating System), при запуске или завершении работы Windows, или даже при установке операционной системы Windows
Отслеживание момента появления ошибки Init.dll является важной информацией при устранении проблемы
Example ‘inittab’ Files
This is an example of a inittab which resembles the old Linux inittab:
# inittab for linuxid:1:initdefault:rc::bootwait:/etc/rc1:1:respawn:/etc/getty 9600 tty12:1:respawn:/etc/getty 9600 tty23:1:respawn:/etc/getty 9600 tty34:1:respawn:/etc/getty 9600 tty4
This inittab file executes /etc/rc during boot and starts gettys on tty1-tty4.
A more elaborate inittab with different runlevels:
# Level to run inid:2:initdefault:# System initialization before anything else.si::sysinit:/etc/rc.d/bcheckrc# Runlevel 0,6 is halt and reboot, 1 is maintenance mode.l0:0:wait:/etc/rc.d/rc.haltl1:1:wait:/etc/rc.d/rc.singlel2:2345:wait:/etc/rc.d/rc.multil6:6:wait:/etc/rc.d/rc.reboot# What to do at the "3 finger salute".ca::ctrlaltdel:/sbin/shutdown -t5 -rf now# Runlevel 2&3: getty on console, level 3 also getty on modem port.1:23:respawn:/sbin/getty tty1 VC linux2:23:respawn:/sbin/getty tty2 VC linux3:23:respawn:/sbin/getty tty3 VC linux4:23:respawn:/sbin/getty tty4 VC linuxS2:3:respawn:/sbin/uugetty ttyS2 M19200
Use the man command (% man) to see how a command is used on your particular computer.
Корректное завершение работы
Хотя для остановки работы пользователей и перехода в однопользовательский режим можно использовать команду или , такое неожиданное завершение работы может привести к потере пользовательских данных и аварийному завершению работающих служб и процессов. Более предпочтительным методом завершения работы или перезагрузки системы является команда , которая сначала посылает предупреждения всем работающим в системе пользователям и блокирует все дальнейшие входы в систему, а затем посылает сигнал для переключения уровней выполнения. Процесс , в свою очередь, посылает всем запущенным процессам сигнал SIGTERM, позволяя им сохранить данные и корректно завершить работу. По завершении 5 секунд (или другого определенного интервала времени) посылает сигнал SIGKILL для принудительного завершения всех оставшихся процессов.
По умолчанию команда переключает систему на уровень выполнения 1 (однопользовательский режим). Вы можете указать опцию для остановки системы или опцию – для ее перезагрузки. В дополнение к указанному вами сообщению выводится стандартное сообщение. Можно указывать абсолютное время в формате hh:mm, а также относительное время в формате n, где n – это количество минут до выключения. Для немедленного завершения работы используйте опцию now, которая эквивалентна опции +0.
Если вы назначили отложенное завершение работы системы, и это время еще не наступило, то вы можете отменить его, нажав Ctrl-c, если команда выполняется в приоритетном режиме, или повторно запустив команду с опцией для отмены всех отложенных действий. В листинге 6 приведено несколько примеров использования команды и способов ее отмены.
Листинг 6. Примеры завершения работы системы
# shutdown 5 File system recovery needed Broadcast message from root (pts/1) (Tue Jan 4 08:05:24 2011): File system recovery needed The system is going DOWN to maintenance mode in 5 minutes! ^C Shutdown cancelled. # shutdown -r 10 Reloading updated kernel& 18784 # Broadcast message from root (pts/1) (Tue Jan 4 08:05:53 2011): Reloading updated kernel The system is going DOWN for reboot in 10 minutes! # fg shutdown -r 10 Reloading updated kernel ^C Shutdown cancelled. # shutdown -h 23:59& 18788 # shutdown -c Shutdown cancelled. + Done shutdown -h 23:59
Вы, возможно, заметили, что в последнем примере не посылается сообщение с предупреждением. Это происходит потому, что сообщение посылается только тогда, когда до наступления события останется не более 15 минут, как показано в листинге 7. Также в листинге 7 продемонстрировано использование опции для увеличения задержки по умолчанию между сигналами SIGTERM и SIGKILL (с 5 до 60 секунд).
Листинг 7. Другой пример завершения работы
# date;shutdown -t60 17 Time to do backups& Tue Jan 4 08:12:55 EST 2011 18825 # date Tue Jan 4 08:14:13 EST 2011 # Broadcast message from root (pts/1) (Tue Jan 4 08:14:55 2011): Time to do backups The system is going DOWN to maintenance mode in 15 minutes!
Если вы отменили завершение работы, то следует использовать команду для отправки сообщений всем пользователям, предупреждающих их о том, что работа системы не будет завершена.
Как говорилось ранее, для завершения работы или перезагрузки системы можно использовать команду (или ). В случае использования пользователи не получают никаких предупреждений, а команда срабатывает немедленно, хотя задержка между сигналами SIGTERM и SIGKILL сохраняется. Если вы хотите узнать о дополнительных опциях , и , то обратитесь к соответствующим man-страницам.
1. System V Init
System V или SysV — это довольно старая, но до сих пор еще популярная система инициализации Linux и Unix подобных операционных систем. Она была основой для создания многих других систем инициализации, а также первой коммерческой системой инициализации разработанной для Unix в AT&T. Она была разработана еще в 1983 году.
Почти все дистрибутивы Linux изначально использовали SysV. Исключением была только Gentoo, в которой использовалась собственная система инициализации и Slackware, с инициализацией в стиле BSD.
Основные возможности SysV:
- Написание файлов запуска служб на bash;
- Последовательный запуск служб;
- Сортировка порядка запуска с помощью номеров в именах файлов;
- Команды для запуска, остановки и проверки состояния служб.
Никакой параллельной загрузки, системы зависимостей, запуска по требованию и автоматического запуска здесь не было и в помине.
С момента ее разработки прошло много лет и из-за некоторых недостатков были разработаны другие системы для ее замены, они хоть и имели новые функции и были более эффективны, но они были по-прежнему совместимы с SysV.
Installation¶
First, a directory for the initrd file system has to be created on the
“normal” root file system, e.g.:
# mkdir /initrd
The name is not relevant. More details can be found on the
pivot_root(2) man page.
If the root file system is created during the boot procedure (i.e. if
you’re building an install floppy), the root file system creation
procedure should create the directory.
If initrd will not be mounted in some cases, its content is still
accessible if the following device has been created:
# mknod /dev/initrd b 1 250 # chmod 400 /dev/initrd
Second, the kernel has to be compiled with RAM disk support and with
support for the initial RAM disk enabled. Also, at least all components
needed to execute programs from initrd (e.g. executable format and file
system) must be compiled into the kernel.
Third, you have to create the RAM disk image. This is done by creating a
file system on a block device, copying files to it as needed, and then
copying the content of the block device to the initrd file. With recent
kernels, at least three types of devices are suitable for that:
We’ll describe the loopback device method:
For experimenting with initrd, you may want to take a rescue floppy and
only add a symbolic link from to . Alternatively, you
can try the experimental newlib environment to create a small
initrd.
Finally, you have to boot the kernel and load initrd. Almost all Linux
boot loaders support initrd. Since the boot process is still compatible
with an older mechanism, the following boot command line parameters
have to be given:
root=/dev/ram0 rw
(rw is only necessary if writing to the initrd file system.)
With LOADLIN, you simply execute:
LOADLIN <kernel> initrd=<disk_image>
e.g.:
LOADLIN C:\LINUX\BZIMAGE initrd=C:\LINUX\INITRD.GZ root=/dev/ram0 rw
With LILO, you add the option to either the global section
or to the section of the respective kernel in , and pass
the options using APPEND, e.g.:
image = /bzImage initrd = /boot/initrd.gz append = "root=/dev/ram0 rw"
and run
For other boot loaders, please refer to the respective documentation.
Причины ошибок в файле Init.dll
Большинство ошибок Init.dll связано с отсутствием или повреждениями файлов Init.dll. Тот факт, что Init.dll – внешний файл, открывает возможность для всяческих нежелательных последствий.
Непредвиденные завершения работы вашего компьютера или заражение вирусом может повредить Init.dll, что приведет к ошибкам dll. Когда файл Init.dll повреждается, он не может быть нормально загружен и выведет сообщение об ошибке.
В других случаях ошибки файла Init.dll могут быть связаны с проблемами в реестре Windows. Нерабочие ссылки DLL файлов могут помешать зарегистрировать файл dll должным образом и вызвать ошибку Init.dll. Эти нерабочие ключи реестра могут появиться в результате отсутствия файла DLL, перемещения файла DLL или ввиду наличия остаточной ссылки DLL файла в реестре Windows после неудачной установки или удаления программы.
Более конкретно, данные ошибки Init.dll могут быть вызваны следующими причинами:
- Ошибочные или поврежденные записи реестра для Init.dll
- Вирус или вредоносное ПО, повредившее файл Init.dll.
- Отказ оборудования Microsoft Corporation, например, некачественный жесткий диск, вызвавший повреждение файла Init.dll.
- Другая программа изменила требуемую версию Init.dll.
- Другая программа злонамеренно или по ошибке удалила файл Init.dll.
- Другая программа удалила файл Init.dll.
DESCRIPTION
The inittab file describes which processes are |
id:runlevels:action:process |
Lines beginning with ‘#’ are ignored. |
id |
is a unique sequence of 1-4 characters which identifies |
Note: traditionally, for getty and other login processes, |
runlevels |
lists the runlevels for which the specified action should |
action |
describes which action should be taken. |
process |
specifies the process to be executed. If the process |
The runlevels field may contain multiple When the system runlevel is changed, any running Valid actions for the action field are: |
respawn |
The process will be restarted whenever it terminates |
wait |
The process will be started once when the specified |
||
once |
The process will be executed once when the specified |
||
boot |
The process will be executed during system boot. The |
bootwait |
The process will be executed during system boot, while |
off |
This does nothing. |
ondemand |
A process marked with an ondemand runlevel will be |
initdefault |
An initdefault entry specifies the runlevel which |
sysinit |
The process will be executed during system boot. It will |
powerwait |
The process will be executed when the power goes down. |
powerfail |
As for powerwait, except that init does not |
powerokwait |
This process will be executed as soon as init is |
powerfailnow |
This process will be executed when init is told |
ctrlaltdel |
The process will be executed when init receives |
kbrequest |
The process will be executed when init receives a The documentation for this function is not complete yet; |
alt keycode 103 = KeyboardSignal |
Файл /etc/inittab
Возможно, вам будет интересно, почему нажатие Ctrl-Alt-Delete в некоторых операционных системах приводит к перезагрузке, и каким образом устроены все эти уровни выполнения. Вы помните поле в файле /etc/inittab? Так вот, в файле /etc/inittab есть еще несколько полей, а в файловой системе присутствует набор сценариев инициализации, расположенных в каталогах, таких как rc1.d или rc5.d; цифра означает уровень выполнения, на котором выполняются сценарии из соответствующей директории. В листинге 8 показано полное содержимое файла inittab в нашей операционной системе Fedora 8.
Листинг 8. Полное содержимое файла inittab в ОС Fedora 8
# # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org> # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon
Как обычно, строки, начинающиеся с # – это комментарии. Остальные строки содержат несколько полей в следующем формате:
- идентификатор id
- Уникальный идентификатор, состоящий из 1-4 символов. В более ранних версиях идентификатор состоял не более чем из двух символов, поэтому часто используются только два символа.
- уровни выполнения
- Список уровней выполнения, на которых выполняется действие, определенное для данного идентификатора. Если уровни выполнения не указаны, то действие выполняется на всех уровнях.
- действие
- Одно из возможных действий, которое будет выполняться.
- процесс
- Процесс (может быть не указан), который должен быть запущен при выполнении действия, определенного в строке.
Некоторые действия, которые можно указать в файле /etc/inittab, перечислены в таблице 3. О других возможностях inittab вы можете узнать из man-страниц.
Таблица 3. Некоторые распространенные действия inittab
Действие | Назначение |
---|---|
respawn | Перезапустить процесс, если он завершается. Обычно используется для процессов getty, которые отслеживают входы в систему. |
wait | Запустить процесс при переключении на заданный уровень выполнения и ждать его завершения перед запуском init. |
once | Запустить процесс при переключении на заданный уровень выполнения. |
initdefault | Указывает уровень выполнения, переключение на который осуществляется после загрузки системы. |
ctrlaltdel | Запустить назначенный процесс при получении процессом init сигнала SIGINT (например, при нажатии CTRL-ALT-DEL на системной консоли). |
В листинге 9 показана запись для комбинации Ctrl-Alt-Delete (фрагмент листинга 8). Итак, теперь вы видите, почему нажатие комбинации Ctrl-Alt-Delete приводит к перезагрузке системы.