Zenbook. Инициализация системы. Системы инициализации Unix и Linux после SysV Инициализация - что такое в общем понимании

Многие пользователи компьютерной и мобильной техники достаточно часто сталкиваются с термином «инициализация». Что такое инициализация, в основном мало кто себе представляет. Поэтому стоит попытаться восполнить этот пробел в знаниях, приведя конкретные примеры.

Инициализация - что такое в общем понимании

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

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

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

Основные направления инициализации

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

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

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

Поэтому, особо не вдаваясь в технические особенности процессов, остановимся на каждом конкретном случае отдельно.

Каким образом происходит инициализация программы

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

Например, для ассемблерных программ, представленных в большинстве случаев исполняемыми файлами форматов COM и EXE, процесс инициализации состоит из четырех основных этапов:

  • указание на то, какие именно сегментные регистры должны соответствовать определенным сегментам;
  • сохранение адреса регистра DS в стеке при старте исполнения программы;
  • запись в стек нулевого адреса;

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

Вопросы инициализации жестких дисков

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

Инициализация диска на начальной стадии, если использовать средства Windows-систем, производит определение нового раздела путем сопоставления атрибутов загрузочных записей (MBR или GPT).

Далее применяется процесс создания простого тома, указание действительного размера, присвоение литеры (чтобы система «увидела» диск), а только потом начинается форматирование с выбором соответствующей файловой системы (в большинстве случаев NTFS).

На этом этапе и завершается инициализация. Что такое инициализация в данном случае? Это комплекс мер по установке параметров винчестера, а не единичный процесс, как утверждают некоторые.

Подсистема печати

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

Эти параметры и используются для установок подсистемы печати. Таким образом, приведенный в начальное состояние принтер будет работать корректно и без сбоев.

Инициализация на мобильных устройствах

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

Как правило, вводимое значение всегда имеет один и тот же вид - AT+CGDCONT=1,"IP","Название оператора или его интернет-ресурс". Но это касается только тех случаев, когда предполагается производить выход в интернет на компьютере через модем подключаемого мобильного устройства.

Ошибки инициализации и методы их устранения

Наконец, стоит отметить, что во всех приведенных примерах может возникнуть ошибка инициализации. Что делать в такой ситуации? В случае с жесткими дисками или устройствами для съемных носителей самым простым выходом станет проверка подключений к материнской плате.

В программах наиболее распространенным является сбой с кодом 0x0175dcbb (как, например, в игре Sims 3). В основном проблема касается конфликтов драйверов устройств, их отсутствия или некорректной установки, неработоспособности планок оперативной памяти и т. д. Иногда проблема может состоять в платформе.NET Framework, для которой нужно установить обновление. Возможно, сбой связан с повреждениями носителя, например, с которого запускается игра. В общем, мало ли что может приключиться. Но решение данной проблемы должно производиться на основе оценки самой ситуации и вызвавших сбой причин.

После завершения загрузки ядра, обеспечением которой мы занимались в прошлом update , наступает время инициализации системы. Она начинается запуском процесса init, что осуществляется исполнением одноименного файла /sbin/init . Рассмотрим его штатные задачи.

Первой из таких задач, как по времени исполнения, так и по значению, является проверка целостности наличных файловых систем. Для начала каждая из них проверяется на наличие бита "чистого размонтирования" (clean byte), который автоматически устанавливается в ходе правильного завершения предыдущего сеанса работы. Если такой бит обнаруживается на каждой файловой системе — все хорошо, дело движется дальше. Если нет — запускается принудительная проверка некорректно размонтированной файловой системы.

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

А следующая задача процесса init — это вызов и отработка сценариев инициализации, или стартовых скриптов, собранных в каталоге /etc и его подкаталогах. Это обычные сценарии оболочки, рассчитанные на исполнение стандартным шеллом (в Linux — /bin/bash). Они включают в себя последовательности команд, призванные монтировать файловые системы, активизировать область своппинга, устанавливать системные часы, запускать те или иные службы и демоны, включая сетевые соединения.

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

Например, обязательная процедура на стадии отработки сценариев инициализации — монтирование (и перемонтирование) необходимых файловых систем в режиме чтения/записи — ведь, как мы помним из предыдущей главы, при загрузке ядра несущая его корневая файловая система монтируется в режиме "только для чтения". Это выполняется прямой директивой

# /sbin/mount -a предписывающей смонтировать все файловые системы, и входящей в состав одного из стартовых сценариев. В какой именно — зависит от системы, и со временем мы разберёмся, где она находится в нашем случае). А вот что понимается под словом "все" (имя опции -a — от all ) — то есть список аргументов (устройств и точек монтирования), а также опций, с которыми должна быть смонтирована та или иная файловая система, — и составляет содержание конфигурационного файла /etc/fstab .

Это — очень простая база данных, каждая запись которой соответствует подлежащей монтированию файловой системе, а поля, разделителем которых являются символы пробела (пробелов) или табуляции, следующие:

  • имя файла устройства, несущего файловую систему;
  • точка монтирования - каталог в файловой иерархии;
  • тип файловой системы;
  • опции монтирования (часто имеет значение default).
Содержимое первых двух полей каждой записи передается команде mount из стартового сценария в качестве первого и второго ее аргументов, остальных двух - как опции, обязательные (тип файловой системы) и необязательные (все прочие).

Последовательное разделение стартовых сценариев и их конфигурационных файлов - один из краеугольных принципов общесистемного конфигурирования. В сущности, пользователю при нормальном ходе настройки практически нет необходимости ни знакомиться с содержимым скриптов (хотя это и не вредно), ни, тем паче, менять в них что-либо (последнее допустимо только в том случае, если этот самый пользователь точно знает, что делает, иначе систему легко довести до неработоспособного состояния). А вот вносить изменения в значения параметров конфигурационных файлов — не только можно, но и нужно, причём, как мы скоро увидим, разными способами. Разумеется, такое разрешение не избавляет пользователя от понимания смысла своих действий.

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

Описанная последовательность инициализации происходит при бессбойном ее протекании — если ни на одной из стадий не происходит ошибок. Самые серьезные последствия будут иметь ошибки при монтировании файловых систем, обычный источник которых — неправильное описание в файле /etc/fstab (то есть элементарные опечатки) или отсутствие поддержки ядром (или его модулем) типа файловой системы, несущей корень файлового древа. В последнем случае ядро впадет в панику (т.н. Kernel panic) и продолжение загрузки окажется невозможным.

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

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

Впрочем, оснований для паники нет ни в одном из указанных случаев — даже при впадении в панику ядра. Все возможные при инициализации системы ошибки исправимы тем или иным способом. Ибо легкий флирт, в том числе и с операционной системой, подобно насморку, переносится на ногах, и постельный режим необходим лишь в тяжелых случаях. В одних ситуациях достаточно завершить процесс загрузки и чуть изменить настройки, в других - загрузиться в однопользовательском режиме, в третьих придется грузиться с rescue-носителя (например, LiveCD). А вот хирургического вмешательства, сиречь полной переустановки системы, скорее всего, не потребуется никогда.

Оборотная сторона инициализации системы - это ее останов или рестарт, различий между этими процессами практически нет. И отвечает за него команда shutdown , которая может быть дана от лица суперпользователя или члена группы operator . С опцией -h она вызывает останов машины, с опцией -r - ее перезагрузку. И еще команде этой требуется аргумент - время, когда останов или рестарт должны произойти. Впрочем, есть способ и мгновенного останова или рестарта:

# shutdown -h now или # shutdown -r now соответственно. Именно последняя команда отрабатывается при перезагрузке машины с клавиатуры посредством "Салюта из трёх пальцев", по выражению Патрика Фолькердинга.

Кроме того, существуют также команды halt и reboot того же назначения. Однако самостоятельной роли они не играют, просто вызывая команду shutdown с опцией останова и перезагрузки, соответственно.

Останов системы происходит в порядке, обратном ее инициализации. Сначала делается попытка корректного завершения всех запущенных приложений, а при невозможности таковой — их принудительное завершение. Затем стопорятся все стартовые сервисы и демоны. Наконец, содержимое дисковых кэшей записывается на диск, и размонтируются файловые системы. После этого обычно появляется сообщение о возможности безопасного отключения питания машины или оно отключается автоматически. При рестарте все происходит точно также, но после останова системы автоматически начинается перезагрузка машины. Весь процесс останова и (или) рестарта определяется сценариями, подобными сценариям инициализации.

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

Однако в современном ядре Linux реализована поддержка управления питанием стандарта ACPI (Advanced Configuration and Power Interface). Она делает допустим останов системы простым отключением питания машины — на нажатие кнопки Power на корпусе компьютера (но ни в коем случае не на переключение тумблера блока питания или выдёргивание силового кабеля) система реагирует точно так же, как и на команду shutdown -h now . В частности, в Zenwalk"е эта процедура выполняется абсолютно безболезненно. Разумеется, на мало-мальски современном "железе".

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

Вызов определённого runlevel , то есть такой взаимосвязанной группы сценариев, осуществляется при инициализации системы программой /sbin/init. А сами эти группы описаны в главном её конфигурационном файле — /etc/inittab , описывающем весь ход процесса init — от проверки файловых систем до подготовки к регистрации.

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

  • 0 - halt, то есть останов системы;
  • 1 - single user mode, сиречь однопользовательский режим;
Использование остальных отдано на откуп создателям дистрибутивов. В чём мы сейчас и убедимся на примере нашего героя, дистрибутива Zenwalk. Для чего внимательно рассмотрим устройство его файла /etc/inittab .

В нем после всякого рода копирайтов для начала перечисляются все runlevels и поясняется их значение для дистрибутива Slackware, поскольку в Zenwalk"е, его прямом потомке, они отличаются лишь в деталях. Так что вот на этих деталях мы и заострим внимание:

  • 0 = останов системы;
  • 1 = однопользовательский режим;
  • 2 = не используется, но сконфигурирован аналогично runlevel 3;
  • 3 = многопользовательский текстовый режим;
  • 4 = многопользовательский графический режим с авторизацией через менеджер сессий GDM;
  • 5 = не используется, но сконфигурирован аналогично runlevel 3;
Все эти строки закрыты комментариями, то есть приводятся только для справки. А теперь начинаются строки, собственно и определяющие конфигурацию. Формат любой из строк в /etc/inittab следующий:

идентификатор:runlevel:действие:запускаемый процесс

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

Для начала определяется runlevels по умолчанию. В Zenwalk"е, в отличие от Slackware, "умолчальным" уровнем по умолчанию является 4-й, что описывается такой строкой:

Id:4:initdefault: Если необходимо перейти на загрузку в текстовом режиме (это может случиться при сбоях графической системы), её следует заменить строкой id:3:initdefault: Далее следует серия строк, описывающих, какие сценарии должны запускаться при каждом из задействованных runlevels и некоторых других событиях, как то:

  • старте системы (выполняется в любом случае, независимо от runlevel по умолчанию);
  • загрузке в однопользовательском режиме или переходе в него из любого многопользовательского;
  • загрузке в любом из многопользовательских режимов;
  • "комбинации из трёх пальцев" (Three Finger Salute, по выражению Патрика Фолькрдинга);
  • обычном останове системы;
  • обычной программной перезагрузке;
  • аварийном отключении питания;
  • восстановлении питания после сбоя.
Сами по себе сценарии эти мы рассмотрим в одной из последующих глав, посвящённых собственно настройке системы, тем более, что здесь менять, скорее всего, ничего не придётся.

А пока, слову скажу, что переход с одного runlevels на другой осуществляется командой

# /sbin/init # где # — требуемый runlevel. Например: # /sbin/init 0 вызовет останов системы, аналогично команде # shutdown -h now команда # /sbin/init 6 её перезагрузку, как при команде # shutdown -r now а команда # /sbin/init 1 переход в однопользовательский режим — ситуация, к которой на практике иногда приходится прибегать. Впрочем, это не какая-то особенность Zenwalk"а, а общее свойство всех Linux-систем.

c1:1235:respawn:/sbin/agetty 38400 tty1 linux c2:12345:respawn:/sbin/agetty 38400 tty2 linux c3:12345:respawn:/sbin/agetty 38400 tty3 linux c4:12345:respawn:/sbin/agetty 38400 tty4 linux c5:12345:respawn:/sbin/agetty 38400 tty5 linux c6:12345:respawn:/sbin/agetty 38400 tty6 linux

Таковых по умолчанию как бы шесть. Почему "как бы" — сейчас увидим: в поле runlevels всех строк перечислены все доступные пользователям уровни, и лишь в первой из них пропущен runlevel 4. А ведь именно он является умолчальным в Zenwalk"е. Это вызвано тем, что первый виртуальный терминал зарезервирован для запуска X-сервера и менеджера сессий. Так что в обычной жизни пользователю доступны только 5 виртуальных терминалов.

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

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

Еще обратим внимание на поле действия: значение respawn, что означает автоматический перезапуск процесса в случае его завершения. То есть: по завершении сеанса пользователя на любой консоли тут же появляется приглашение в авторизации.

Последняя строка определяет сценарий при запуске графического режима:

X1:45:respawn:/etc/rc.d/rc.4 Можно видеть, что он приурочен к уровням 4 и 5, и также влечёт "самовосстановление" по завершении сеанса.

На этом рассмотрение инициализации системы можно считать законченным. Если чего упустил — буду признателен на указание пробелов. Добавлю только, что этот вопрос подробно освещён в статье Владмира Попова Init et cetera или О стилях загрузки Linux . Дата её смущать не должна — ничего принципиально нового в дистрибутивах, не использующих upstart или initng, не изменилось.

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

Что такое инициализация?

Данным термином сегодня называют процессы активации, создания, подготовки к работе, определения требуемых параметров для качественной и безошибочной работы приложения. Инициализация является обязательным шагом на пути приведения любой программы или устройства в состояние использования. Сам принцип действия процедуры инициализации направлен извне относительно объекта. Чаще всего под данным словом подразумевается именно процесс настройки необходимых параметров, а также задание основных правил работы, по которым будет функционировать данная программа.

Инициализация: примеры

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

1. Инициализация жесткого диска представляет собой процесс его форматирования. Сюда также может быть отнесена запись управляющей информации, вроде меток томов, описателей дорожек и прочие манипуляции.
2. Инициализация программы предусматривает задание необходимых переменных или установку программных переменных, таких как счетчики, адреса и переключатели, в нулевое значение. Устанавливается все согласно тому, что необходимо сделать для программного обеспечения данного типа. Указания по установке могут содержаться в самом файле.
3. Инициализация подсистемы печати для вывода на принтер. Данная операция подразумевает под собой следующее: необходимо перенести данные на бумаги при помощи какого-то устройства и выполнить учет всех необходимостей. Так, например, необходимо определить расширение, тип бумаги и многие другие параметры. Прежде всего на устройство подается специальный управляющий сигнал, после этого сканируются его возможности. Это делается для того, чтобы выполнить первоначальную настройку печатающего устройства и предложить пользователю соответствующий вариант, который данный тип техники может осуществить.

Рассмотрим на практике случай запуска приложений. Предположим, при запуске компьютерной игры возникает ошибка инициализации. В качестве примера рассмотрим игру Симс 3. Данное приложение сегодня пользуется большой популярностью. По каким причинам может возникнуть ошибка инициализации в данном случае? Самый распространенный вариант такой проблемы – ошибка с кодом 0x0175dcbb. Данный номер используется для того, чтобы обозначить номер ошибки, связанной с инициализацией приложения. Возникает она чаще всего из-за того, что игра конфликтует с драйверами, дополнениями и модами. От возникновения данной проблемы не застрахованы даже те пользователи, которые предпочитают использовать лицензионные игры.

Лицензия не приводит к автоматическому решению таких проблем. Что делать при возникновении ошибки инициализации? Разберемся, как можно убрать подобную ошибку. Хотя в данном случае мы будем рассматривать игру, приведенные рекомендации вполне пригодятся и при работе с более серьезными приложениями. Стоит помнить, что самой старой проблемой является использование архаических компонент программы. Прежде всего нас будут интересовать драйвера видеокарт. Их можно скачать с официального сайта компании производителя. Нелишним будет также установить NETFramework, обновленный до последней версии. Желательно данный компонент скачивать с официального сайта разработчика – компании Microsoft.

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

Заключение

Только вам предстоит решать, что устанавливать на свой персональный компьютер. Но прежде чем добавлять на свой компьютер контент, созданный сторонними разработчиками, рекомендуется проявить особую внимательность к качеству скачиваемых вами дополнений. Возможно возникновение ошибки инициализации обновления. Как правило, возможность отката в данном случае не предусмотрена. Тогда вам придется удалять данную программу и заново ее устанавливать. Если вы решили так сделать, необходимо отдельно позаботиться о сохранности наработанной информации. Копию данных необходимо разместить в безопасном месте, например, на флэш-накопителе.

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

Что такое инициализация

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

Также существует понятие, как аппаратная инициализация. Лучше всего ее рассмотреть на примере загрузки персонального компьютера: когда ПК подключен к электросети, он не выполняет каких-либо функций, контроллеры и микросхемы содержат случайные числовые последовательности, а процессор не исполняет заданный код. Чтобы загрузить ПК необходимо, чтобы процессор выполнил команду «Сброс». После того, как она будет осуществлена, контроллеры начнут выполнение заданного кода, при этом он будет записан в специальное хранилище энергозависимой памяти (ROM). Данные, которые сохраняются в ROM передаются в BIOS, где используются для управления внешними устройствами, которые подключены к компьютеру.

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

Направления инициализации

Существует несколько направлений:

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

Где используется инициализация

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

Программы

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

Жесткий диск

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

Подсистема печати

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

На телефоне

Инициализация на телефоне, как правило, бывает связана с определением параметров SIM-карты, СМС-сообщений и приложений. Обычно она происходит при первом запуске мобильной системы или при установке программ. Если на телефоне появится сообщение «Подождите, идет инициализация », это означает, что производится настройка программного обеспечения. Также она возможна при подключении телефона к модему или роутеру для определения настроек сети.

Инициализация скачивания

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

Частые ошибки инициализации

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

Ошибка 0×0175dcbb

Встречается при запуске игры SIMS 3, реже в других играх. Связана с установкой сторонних модов и с неправильной конфигурацией графического драйвера. Решение заключается в деинсталляции расширений и переустановкой драйвера.

Ошибка печати: Ошибки инициализации текущего принтера

Чаще всего встречается при установке драйверов принтера через Wi-Fi. При инсталляции драйвера в конце установки всплывает окно «Инициализация устройства». Решением будет установка драйвера по USB.

Ошибка инициализации страницы

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

Failed to initialize 3D rendering (Не удалось инициализировать 3D-рендеринг)

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

Ошибка инициализации приложения 0xc0000005

Подобное сообщение, также как и предыдущее, имеет отношение к графическому ускорителю. Приложение во время запуска производит обращение к ОЗУ и получает отказ, так как доступ к ней блокирован. Доступ может быть заблокирован, как самой операционной системой, так и ошибкой конфигурации видеоадаптера. Выходом является переустановка драйвера или восстановление системы к состоянию, когда подобная неисправность не наблюдалась.

Ошибка инициализации Сим-карты

Данный сбой встречается у владельцев смартфонов. Через некоторое время после запуска смартфона появляется ошибка – Failure to initialize, или подобная. Он заключается в том, что телефон не видит установленной карточки . Это может быть следствием, как программного сбоя, так и аппаратного. Чтобы решить проблему, необходимо перезагрузить устройство или вставить карточку в другой слот.

И смешал все карты. Но кто же был истинным первопроходцем?

Daniel J. Bernstein математик и специалист по криптографии, автор популярного MTA qmail и множества других менее известных программ, среди которых выделяется daemontools . Для множества современных систем инициализации daemontools являлся примером и вдохновителем. Прошу внутрь для того, чтобы познакомиться с самой элегантной, простой и влиятельной системой управления службами в Unix / Linux.

DJB и Daemontools

Уравнения Максвелла для управления процессами на Unix ОС .

Внимание - не следует путать daemontools написанный DJB с программой-тезкой DAEMON Tools для монтирования iso образов и создания виртуальных CD/DVD дисков.


Daniel J. Bernstein создал свою программу в 1997 г. Последний стабильный релиз был в июле 2001 г.


Сейчас, когда в Linux сообществе наблюдается раскол из-за systemd, самое время вспомнить каким может быть настоящий инит в духе принципов и философии Unix. В этом смысле дзен-программист DJB является воплощением минимализма и простоты, а бритва Оккама у него встроена в клавиатуру. Его решения основательны и элегантны, на этом фундаменте он строит надежное, безопасное ПО, которое потребляет минимальное количество ресурсов ОС. Вот некоторые особенности его стиля работы.

  • Самый большой файс исходного кода multilog.c имеет всего лишь 13898, нет не строк, а байтов. Команда wc указывает лишь на 617 строк кода.
  • Большинство функций имеют меньше 30 строк.
  • Принцип - никогда ничего не парсить .
  • Принцип - использовать все, что дает ОС и не изобретать велосипеды.

Почему такие странные принципы, и еще с учетом того, что автор исповедует их фанатично? Строительный материал daemontools - директории, процессы, FIFO, исполняемые файлы. Это дает массу преимуществ в разработке и отладке приложения:

  • Тестировать запуск службы проще простого - если запустится исполняемый файл./run , то и служба тоже запустится.
  • Можно использовать любой язык программирования, не только Bash. Сгодится даже скомпилированный бинарник.
  • Понятно, что и как делает программа даже без подробного прочтения документации и изучения исходного кода.
  • Парсить разнообразные текстовые структуры - на удивление трудная задача , если это делать по уму. Автор избегает этого, умело используя иерархическое свойство файловой системы Unix для воссоздания структуры переменных среды ключ=значение.

Сравнительная таблица DT

Стоит обратить внимание на неортодоксальную структуру директорий daemontools , ничтоже сумняшеся программа создает каталоги в корне файловой системы Unix. DJB прописал в коде программы директории /service , /command и рекомендует создать /package для исходников программы. Это считается весьма дурным тоном в Unix и Linux, создатели дистрибутивов всеми силами избегают этого, также как и пользователи с правами root.


features inittab ttys init.d rc.local /service
Easy service installation and removal No No Yes No Yes
Easy first-time service startup No No No No Yes
Reliable restarts Yes Yes No No Yes
Easy, reliable signalling No No No No Yes
Clean process state Yes Yes No No Yes
Portability No No No No Yes

Давайте пробежимся по таблице самовосхваления daemontools . Начнем с первой строчки. Действительно создание и удаление нового сервиса проще простого, добавил, или удалил новую директорию в /service вместе с файлом./run и на этом все. Сравните со скриптами sysvinit и остальных инитов, чтобы оценить простоту такого способа достичь того же самого.


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


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


Четвертая позиция - сигналы. Команда svc , как показано ниже, позволяет послать службе практически любой сигнал POSIX стандартов.


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

Структура DT

По словам автора: daemontools - это набор инструментов для управления службами UNIX. Основными отличиями от традиционных инитов (структуры директорий rcX.d, rc.d, rc.local и пр.) является способность перезапустить сервис в случае его падения и наличие программы ведения и ротации логов - multilog. Также, multilog позволяет вести лог вывода программ, не умеющих перенаправлять вывод в syslog . Таким образом, можно запускать как сервис программы, для этого вовсе не предназначенные.


Внутреннее устройство daemontools, граница обведена красной прерывистой линией.




Теперь немного о принципах работы программы.


В самом начале системный инит запускает svscanboot , который затем запускает программу svscan в ново-созданной директории svscan . Далее svscanboot перенаправляет вывод запущенного svscan в отладочный процесс readproctitle .


Ядром daemontools являются всего две программы: svscan и supervise . Первая запускается с единственным аргументом по выбору, а вторая - с обязательным ключом.


Svscan служит для запуска и слежения за сервисами. Каждые 5 секунд Svscan проверяет каталог /service , если другой не задан, на наличие новых подкаталогов. Если такие будут обнаружены, запускается новая копия supervise для каждого каталога.


Supervise является, в соответствии с названием, контролирующем процессом. Он вызывается с параметром, в котором содержится имя каталога и в нем ищет скрипт./run , который и запускает. Если по каким-то причинам./run перестал исполняться, то тогда supervise его перезапустит после небольшой паузы - чтобы не создавать дополнительной нагрузки на ОС. Supervise не перезапустит./run , если в каталоге будет обнаружен файл./down . Supervise создает в каталоге сервиса подкаталог./supervise , в котором хранятся данные о процессе. Эти данные могут быть прочитаны с помощью утилиты svstat . Для управления сервисом служит программа svc .


Синтаксис команды svc и опции представлены ниже.


svc options services
  • -u: Up, запустить сервис, в случае останова - перезапустить.
  • -d: Down, остановить сервис.
  • -t: Terminate, посылает сервису сигнал TERM.
  • -k: Kill, посылает сервису сигнал KILL.
  • -p: Pause, посылает сервису сигнал STOP.
  • -c: Continue, посылает сервису сигнал CONT.
  • -h: Hangup, посылает сервису сигнал HUP.
  • -a: Alarm, посылает сервису сигнал ALRM.
  • -h: Interrupt, посылает сервису сигнал INT.
  • -x: Exit, supervise завершит работу как только./run или его потомок завершится.
  • -o: Once, запустить сервис, но не перезапускать после его завершения.

Есть еще одно обстоятельство, если в рабочем каталоге supervise содержится подкаталог./log , в котором есть./log/run , то тогда будет запущена еще одна копия supervise и создан канал между./run и./log/run .


Попробуем добавить сервис sshd.


#!/bin/sh # перенаправить stderr в stdout exec 2>&1 # с опцией -D sshd выполняется явно, с опцией -e отладка пишется в stderr exec /usr/sbin/sshd -D -e

В таком случае структура директорий может выглядеть так.


- service/ |- ngetty/ | |- run | |- log/ | |- run |- sshd/ | |- run | |- log/ | |- run |- squid/ | |- run | |- log/ | |- run

После того, как svscan пробежится по этому списку мы получим дерево процессов, в котором процессы service следят за сервисами и логированием.


-svscan-+-service-+-ngetty | `-log-service +-service-+-sshd | `-log-service +-service-+-crond | `-log-service

Зависимости между службами

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


#!/bin/sh svok postgres || (echo "waiting for postgres..." && exit 1) exec 2>&1 exec python3 your-web-app.py
  • svok - проверяет, запущена ли определенная служба. Ничего не выводит в stdout и stderr , если служба запущена, то тогда программа возвращает код 0, в противном случае - код 100.

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

Квотирование сервиса

С помощью утилиты softlimit можно ограничить предоставленные данному сервису ресурсы.


#!/bin/sh exec 2>&1 # сменить пользователя на foo, ограничить стек 4096 байтами, открытые # файловые дескрипторы 15 и количество процессов 1: exec setuidgid foo softlimit -n 4096 -o 15 -p 1 \ bar -n
  • softlimit - запускает программу с ресурсными ограничениями.

Логирование

Если у вас есть некая программа foo , которая не ведет логов, вы без труда сделаете это с помощью multilog , собрав в отдельном файле вывод stdout и stderr с временными метками.