Windows. Вирусы. Ноутбуки. Интернет. Office. Утилиты. Драйверы

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

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

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

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

Когда включается питание, запускается на выполнение загрузочный код, хранящий­ся в ПЗУ. Он должен запустить ядро. Ядро опрашивает состояние аппаратных устройств, а затем запускает демон init , идентификатор которого всегда равен 1.

Прежде чем на экране появится регистрационное приглашение, должен произой­ти целый ряд событий. Файловые системы должны быть проверены и смонтированы, а системные демоны - запущены. Соответствующие процедуры реализуются с помо­щью сценариев интерпретатора команд, которые последовательно запускаются демоном init. Эти сценарии часто называют rc-файлами, поскольку они имеют префикс “ rc ”. Он расшифровывается как “run command” (команда запуска) и является пережитком, оставшимся в наследство от операционной системы CTSS, существовавшей примерно в 1965 году. Конкретная структура сценариев и способ их выполнения зависят от системы.

Автоматическая и ручная загрузка

Linux-системы могут загружаться автоматически либо вручную. В первом случае система запускается самостоятельно, без какого-либо вмешательства извне. Во втором случае также все происходит автоматически до определенного момента, а перед вы­полнением основных инициализирующих сценариев управление передается оператору (человеку, сидящему за терминалом). В этот момент система входит в так называемый “однопользовательский режим”. Большинство системных процессов еще не начало вы­полняться, и вход других пользователей в систему невозможен.

В повседневной работе почти всегда применяется автоматическая загрузка. Типичная процедура загрузки на современном компьютере выглядит так: пользователь включа­ет питание и ждет (ждет, ждет, ждет...), пока система не перейдет в диалоговый режим. Системный администратор, однако, обязан не только понимать, как проходит автома­тическая загрузка, но и знать, как загрузить систему вручную. К последнему средству приходится прибегать при возникновении проблем, делающих невозможной автомати­ческую загрузку. Это может быть вызвано, например, повреждением файловой системы или ошибками в конфигурации сетевой платы.

Этапы загрузки

Типичная процедура начальной загрузки системы Linux состоит из шести этапов:

  • обнаружение и конфигурирование устройств;
  • создание процессов ядра;
  • действия оператора (только при ручной загрузке)
  • выполнение сценариев запуска;
  • работа в многопользовательском режиме.
  • Почти все этапы не требуют контроля со стороны администратора. Можно управлять загрузкой системы, редактируя сценарии запуска.

    Инициализация ядра

    Ядро Linux представляет собой программу, и первым этапом начальной загрузки является запись этой программы в память для последующего выполнения. Файл ядра обычно называется /vmlinuz или /boot/vmlinuz .

    В Linux загрузка ядра осуществляется в два этапа. Сначала в память компьютера с диска считывается (с помощью кода, записанного в ПЗУ) небольшая программа началь­ной загрузки, которая затем выполняет собственно загрузку ядра.

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

    Конфигурирование аппаратных средств

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

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

    Процессы ядра

    После завершения этапа базовой инициализации ядро создает в области памяти, вы­деленной для пользовательских программ, несколько “самовыполняющихся” процессов. Это происходит “в обход” стандартного системного вызова fork .

    Количество и характер таких процессов зависят от операционной системы. В Linux это демон init (всегда имеет идентификатор 1; процесс с идентификатором 0 отсутст­вует) и различные обработчики памяти и сигналов ядра, в том числе те, которые пред­ставлены в табл. 1. Все эти процессы имеют идентификаторы с низкими номерами, а их имена в списках ps заключены в квадратные скобки (например, ). Иногда имена процессов могут содержать в конце символ косой черты и цифру, как, например, . Число указывает процессор, на котором выполняется данный процесс. Эта информация может быть полезна при настройке многопроцессорной системы.

    Таблица 1. Некоторые наиболее часто встречающиеся процессы ядра Linux

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

    После создания перечисленных процессов ядро больше не принимает участия в про­цедуре начальной загрузки системы. К этому моменту, однако, еще не создан ни один из процессов, управляющих базовыми операциями (например, регистрацией пользователей в системе), и большинство демонов не запущено. Обо всем этом позаботится (в некото­рых случаях косвенно) демон init .

    Действия оператора (только при ручной загрузке)

    Если систему нужно запустить в однопользовательском режиме, оператор уста­навливает в командной строке специальный флаг (слово “ single ”), а ядро передает эту информацию демону init . Последний, в свою очередь, передает управление команде sulogin - специальной версии команды login , - которая выдает приглашение ввести пароль пользователя root . Если он введен правильно, запускается интерпретатор команд с правами суперпользователя. Можно не задавать пароль, а просто нажать < Ctrl+D >, после чего загрузка продолжится в многопользовательском режиме.

    В однопользовательском режиме команды выполняются почти так же, как и в пол­ностью загруженной системе. Однако в SUSE, Debian и Ubuntu обычно монтируется только корневой раздел. Чтобы можно было использовать программы, находящиеся вне каталогов /bin , /sbin или /etc , необходимо вручную смонтировать остальные файло­вые системы.

    Во многих однопользовательских средах корневой каталог файловой системы мон­тируется в режиме только для чтения. Если /tmp является частью корневой файловой системы, выполнение множества команд, которые используют временные файлы (таких как vi), будет невозможно. Чтобы выйти из положения, придется начать однопользова­тельский сеанс с повторного монтирования каталога / в режиме чтения/записи. Нужное действие выполняет команда:

    # mount -o rw,remount /

    В системах Red Hat и Fedora загрузка в однопользовательском режиме выпол­няется несколько более активно, нежели обычно. До того момента, когда на экран будет выведено приглашение интерпретатора команд, эти дистрибутивы попытаются смонтировать все локальные файловые системы. Хотя на первый взгляд такой подход кажется удобным, но при использовании недостаточно продуманной файловой системы он может порождать проблемы.

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

    Когда интерпретатор команд однопользовательского режима завершит свою работу, система продолжит загрузку в многопользовательском режиме.

    Выполнение сценариев запуска системы

    В тот момент, когда система сможет выполнять сценарии запуска, ее уже можно на­звать Linux. Это еще не полностью загруженная система, но “загадочных” этапов про­цесса загрузки больше не осталось. Файлы сценариев представляют собой обычные ко­мандные файлы, которые выбираются и запускаются демоном init по сложному, но, в общем-то, понятному алгоритму.

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

    Работа в многопользовательском режиме

    После выполнения сценариев запуска система полностью готова к работе, за одним исключением: никто не может в нее войти. Для того чтобы с конкретного терминала (включая системную консоль) можно было зарегистрироваться в системе, должен быть запущен процесс getty , ожидающий поступления запросов от этого терминала. Демон init порождает все необходимые процессы getty , заканчивая этап начальной загрузки. Если система сконфигурирована для работы в графическом режиме, демон init также порождает соответствующие регистрационные процессы, такие как xdm или gdm.

    Не забывайте о том, что демон init продолжает играть важную роль даже по завер­шении начальной загрузки. У него есть один однопользовательский и несколько много­пользовательских “уровней выполнения”, определяющих, какие ресурсы системы будут доступны пользователю.

    Загрузка Linux на персональном компьютере

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

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

    На персональных компьютерах код начальной загрузки представлен в виде базовой подсистемы ввода-вывода - BIOS (Basic Input/Output System), которая чрезвычайно уп­рощена в сравнении с фирменным кодом UNIX-станций. В действительности в BIOS есть несколько уровней кода: для самого компьютера, для видеоплаты, для SCSI-адаптера, если таковой имеется, и, иногда, для других периферийных устройств вроде сетевых плат.

    Встроенному коду BIOS известно об устройствах, расположенных на материнской плате, в частности контроллере IDE (и жестких дисках), плате сетевого адаптера, кон­троллере клавиатуры, последовательных и параллельных портах. SCSI-адаптеры знают только об устройствах, подключенных непосредственно к ним. К счастью, за последние несколько лет сложные взаимодействия, необходимые для обеспечения совместной ра­боты этих устройств, были стандартизованы и теперь почти не требуют вмешательства оператора.

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

    В режиме конфигурирования можно выбрать, с какого устройства требуется загру­жаться, хотя выбор не так уж велик. Обычно последовательность загрузки задается в виде правила, например: “сначала - дисковод для гибких дисков, затем - дисковод CD-ROM, в последнюю очередь - жесткий диск”. К сожалению, в некоторых BIOS за­грузка ограничена возможностью загрузки с первого IDE-дисковода CD-ROM или пер­вого жесткого диска IDE. Могут также распознаваться SCSI-адаптеры.

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

    Стандартная программа, находящаяся в ГЗЗ, дает компьютеру указание извлечь за­грузчик ОС из первого раздела диска. В Linux поддерживаются более сложные програм­мы, которые могут работать с несколькими операционными системами и ядрами.

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

    Linux: Полное руководство Колисниченко Денис Николаевич

    1.8. Первый запуск Linux

    1.8. Первый запуск Linux

    Если вы выбрали для входа в систему графический режим (или инсталлятор выбрал его сам, ни о чем не спросив), то вы увидите графический экран с полем ввода имени и пароля. Зарегистрируйтесь в системе (лучше под тем именем, которое завели для обычного пользователя; используйте root, только если обычных учетных записей у вас еще нет), и вы увидите рабочий стол той оконной среды, которую установили в качестве среды по умолчанию, внешне довольно похожий на рабочий стол Windows.

    Как же так, вы ведь слышали, что настоящие линуксоиды работают в среде командной строки? Сейчас найдем и командную строку.

    Вы знаете, что консолью, или терминалом (для персонального компьютера эти понятия - синонимы) называются устройства ввода-вывода, предназначенные для общения системы с пользователем, то есть клавиатура и монитор. В UNIX-подобных системах существует понятие виртуальных консолей - консолей, по очереди занимающих физически одни и те же монитор и клавиатуру. На каждой из них может быть открыт отдельный сеанс работы пользователя, запущены свои приложения, в общем, они представляют собой почти независимые друг от друга вычислительные системы.

    В большинстве дистрибутивов Linux по умолчанию обслуживается шесть текстовых виртуальных консолей, седьмая - графическая. На ней вы и находитесь. Чтобы переключиться с нее на первую текстовую консоль, нажмите комбинацию клавиш Ctrl+Alt+F1 (на шестую - Ctrl+Alt+F6).

    В ответ на приглашение программы login: введите root и нажмите <Ввод>. Потом введите пароль, и ваш сеанс работы в текстовой консоли начат.

    Информацию о сетевом имени машины, версии ОС, архитектуре можно получить по команде uname -а.

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

    #useradd < имя >

    Если вам ответили «command not found», то, значит, в вашей системе эта команда называется adduser .

    #passwd < имя >

    Теперь можно регистрироваться под новым именем на другой виртуальной консоли. Чтобы с текстовой консоли переключиться на другую текстовую, нажмите комбинацию Alt+Fn, где n - число от 1 до 6. Вы снова увидите приглашение login: .

    Зарегистрировались? Обратите внимание на строку приглашения. На той консоли, где вы зарегистрировались как root, она оканчивается символом #, а для любого обычного пользователя - символом $. Кроме этого символа, приглашение обычно состоит из имени пользователя, имени системы и текущего каталога, причем вид его можно изменить, как только вы узнаете, как это делать. В дальнейших примерах строки, начинающиеся с # или будут обозначать вводимую команду, а строки без такого символа - ее сообщения.

    Теперь убедитесь сами, что Linux - действительно многозадачная и многопользовательская система, то есть, в отличие от Windows, несколько пользователей могут работать одновременно. Спросите, кто сейчас работает в системе, введя команду who .

    Вы увидите что-то вроде:

    root tty1 <дата и время начала сеанса root>

    ivan tty2 <дата и время начала сеанса ivan>

    root:0 <дата и время начала сеанса root>

    <на графической консоли>

    ttyN - это номер виртуальной текстовой консоли.

    Если вы потерялись и хотите узнать, на какой консоли находитесь сейчас, введите команду tty . Если вы забыли, под каким именем зарегистрировались на текущей консоли, введите команду whoami . Команда w покажет не только работающих сейчас пользователей, но и запущенные ими задачи.

    Листать экран можно комбинациями клавиш Shift+PgUp и Shift+PgDn.

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

    Если вы хотите, не сходя с этой консоли, поработать под именем другого пользователя, введите su <имя> . По умолчанию в качестве имени подставляется root. Обычно это нужно для того, чтобы быстро выполнить какое-то администраторское действие. Возвращайтесь к работе под своим именем по команде exit.

    Чтобы переключиться обратно на графическую консоль, нажмите Alt+F7.

    В графическом режиме тоже можно не только щелкать мышью по значкам, но и вводить команды. Для этого запустите виртуальный терминал (рис. 1.13) - графическое приложение, в окне которого можно работать в режиме командной строки.

    Рис. 1.13 . Окно виртуального терминала

    Количество виртуальных терминалов, в отличие от количества виртуальных консолей, не ограничено ничем, даже традицией.

    Чтобы завершить сеанс работы на виртуальном терминале или на виртуальной консоли, введите команду exit (на виртуальной консоли можно также logout) или нажмите комбинацию клавиш Ctrl+D.

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

    # shutdown -h 19:00 [Конец рабочего дня]

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

    Из книги Мир общения: ICQ автора Леонтьев Виталий Петрович

    Первый запуск программы. Интерфейс ICQ После установки ICQ и перезагрузки компьютера в правом углу вашей панели задач появится скромный цветок с бледными лепестками – ICQ Netdetect Agent. Значок ICQВ момент вашего входа в Интернет лепестки цветка должны окраситься в ярко-зеленый

    Из книги Fedora 8 Руководство пользователя автора Колисниченко Денис Николаевич

    1.1.3.1. Запуск программы установки Linux Первым делом нужно настроить компьютер на загрузку с компакт диска. Обычно при запуске компьютера вы видите на экране сообщение:Press DEL to enter SETUP или Press F2 to enter SETUPВ программе SETUP нужно настроить компьютер на загрузку с CD/DVD (рис. 1.2), Если вы

    Из книги Linux для пользователя автора Костромин Виктор Алексеевич

    Глава 3. Первый запуск ОС Linux 3.1. Загрузка ОС Linux Итак, инсталляция Linux завершена, и вы перезапускаете компьютер. Если Linux - единственная операционная система, установленная на вашем компьютере (а, значит, загрузчик LILO размещается в главной загрузочной записи - MBR), то после

    Из книги 200 лучших программ для Linux автора Яремчук Сергей Акимович

    П5. К главе 3 "Первый запуск ОС Linux" 1. На странице Алексея Махоткина (http://alexm.here.ru/manpages-ru/index.html) можно найти переводы man-страниц на русский язык. 2. Guido Gonzato, "Из DOS/Windows в Linux HOWTO", перевод Alex Ott, v1.3.2, 22 Февраля 1999 (http://linux.webclub.ru/howtorus/doswinhow/dos-win-to-linux-howto.html). Это очень полезный материал

    Из книги Видеосамоучитель монтажа домашнего видео в Adobe Premiere Pro CS3 автора Днепров Александр Г

    Запуск игр Windows под Linux Для Linux существует мало игр. Неказуальных игр, позволяющих убить время, в Linux предостаточно, при установке дистрибутива пользователь найдет их несколько десятков. Есть и проекты OpenSource, предлагающие довольно серьезные игры в самых разообразных

    Из книги Создание шаблонов Joomla автора Автор неизвестен

    Первый запуск программы Premiere Pro Установка программы Premiere Pro на компьютер производится с помощью пошагового мастера. Нужно просто следовать указаниям на экране.Запустим программу Premiere Pro и создадим новый проект, чтобы далее познакомиться с интерфейсом программы.1. Нажмите

    Из книги Цифровой журнал «Компьютерра» № 71 автора Журнал «Компьютерра»

    Первый запуск После того, как мы создали структуру директории [ПутьКJoomla!]/templates/, наш шаблон появится в соответствующей секции административной части Joomla! (Extensions | Template). Теперь его можно использовать как шаблон по умолчанию. Рис. 2: Структура директории и файлы шаблона

    Из книги Компьютерра PDA N113 (28.05.2011-03.06.2011) автора Журнал «Компьютерра»

    Первый взгляд на Fedora Linux 15 Евгений Крестников Опубликовано 30 мая 2011 года Это выпуск важен по нескольким причинам. Во-первых, Fedora - популярный дистрибутив, который использует множество людей во всем мире. Кроме того, создается он сообществом

    Из книги Как найти и скачать в Интернете любые файлы автора Райтман М. А.

    Первый взгляд на Fedora Linux 15 Автор: Евгений КрестниковОпубликовано 30 мая 2011 годаЭто выпуск важен по нескольким причинам. Во-первых, Fedora - популярный дистрибутив, который использует множество людей во всем мире. Кроме того, создается он сообществом независимых разработчиков

    Из книги Наглядный самоучитель работы на нетбуке автора Сенкевич Г. Е.

    Первый запуск Как и большинство современных антивирусных программ, AVG Anti-Virus Free является не единой программой, а пакетом, состоящим из нескольких модулей, отвечающих за различные области защиты компьютера:? Anti-Virus - антивирусный сканер, отвечает за сканирование файлов

    Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

    Первый запуск Почты Windows Live Чтобы запустить установленную почтовую программу, нажмите кнопку Пуск и в открывшемся меню выберите пункт Почта Windows Live (1).Если этот значок в меню отсутствует, щелкните на пункте Все программы. В списке программ щелкните на пункте Windows Live -

    Из книги Photoshop CS4 автора Жвалевский Андрей Валентинович

    Первый запуск Windows Media Для запуска проигрывателя Windows Media нажмите кнопку на Панели задач или выберите в меню кнопки Пуск пункт Все программы|Проигрыватель Windows Media. При первом запуске проигрывателя предлагается выполнить некоторые его настройки. Установите переключатель

    Из книги Вопросы истории: UNIX, Linux, BSD и другие автора Федорчук Алексей Викторович

    Запуск Firebird на Linux/UNIX Суперсервер Каталог инсталляции по умолчанию /opt/firebird. В каталоге /bin находится в двоичном формате сервер Firebird fbserver (ibserver для Firebird 1.0.x), который запускается как процесс-демон в Linux/UNIX. Он запускается автоматически после инсталляции посредством RPM или

    Из книги автора

    Установка Photoshop CS4 и первый запуск Системные требования для Photoshop CS4 таковы: процессор с тактовой частотой не ниже 1,8 ГГц; операционная система Windows XP с Service Pack 2 (желательно Service Pack 3) или Windows Vista; не менее 512 Мбайт оперативной памяти (рекомендуется 1 Гбайт); 16-разрядная

    Из книги автора

    Slackware: первый шаг к Linux’у для всех Итак, дистрибутив SLS умер. Но душа его жила. Ещё в период его активного развития Патрик Фолькердинг принял SLS за основу своей Linux-системы, названной Slackware, первая версия которой была обнародована 17 июля 1993 года и с тех пор успешно развивается

    Из книги автора

    IPLabs Linux Team: начало русского Linux’а Следующая веха на пути русского Linux’а – 1998 год, когда фирма IPLabs (точнее, ее подразделение – IPLabs Linux Team) совместно с Институтом логики (на самом деле это были одни и те же люди – Алексей Новодворский, Алексей Смирнов и Юрий Девяткин с

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

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

    Когда включается питание, запускается на выполнение загрузочный код, хранящийся на постоянном запоминающем устройстве. Он должен запустить ядро. Ядро опрашивает состояние аппаратных устройств, а затем запускает демон init, идентификатор которого всегда равен 1.

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

    Главное - активизировать командную оболочку

    При нормальной работе системы сами выполняют начальную загрузку в автономном режиме, после чего к ним могут получить удаленный доступ администраторы и пользователи. Однако администраторам необходимо иметь инструмент восстановления системы в случае, если неожиданный отказ дисковода или какая-нибудь проблема конфигурации помешает системе нормально выполнить процесс начальной загрузки. Системы UNIX (вместо загрузки «по полной программе») могут ограничиться только самым необходимым, а именно активизацией командной оболочки на системной консоли. Этот вариант называют входом системы в так называемый «однопользовательский режим», режим восстановления или профилактический режим - все эти термины взаимозаменяемы. Однопользовательский режим не позволяет выполнять сетевые операции, а для использования системной консоли вам нужно иметь физический доступ к ней.

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

    Этапы загрузки

    Типичная процедура начальной загрузки состоит из шести отдельных этапов:

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

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

    Инициализация ядра

    Ядро представляет собой программу, и в качестве первой задачи начальной загрузки выполняется запись этой программы в память для последующего выполнения. Имя файлу ядра дает его изготовитель, но по традиции оно называется /unix или /vmunix . В Linux-системах ядро обычно получает путевое имя в виде вариации на тему /boot/ vmlinuz .

    В большинстве систем загрузка осуществляется в два этапа. Сначала в память компьютера с диска считывается (с помощью кода, записанного на постоянном запоминающем устройстве) небольшая программа начальной загрузки (именуемая начальным загрузчиком), которая затем выполняет собственно загрузку ядра. Эта процедура совершается вне UNIX-домена и поэтому не стандартизирована среди систем.

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

    Конфигурирование аппаратных средств

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

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

    Создание процессов ядра

    После завершения этапа базовой инициализации ядро создает в области памяти, выделенной для пользовательских программ, несколько «самовыполняющихся» процессов. Это происходит «в обход» стандартного системного механизма fork .

    Количество таких процессов зависит от операционной системы, хотя демон init всегда имеет идентификатор процесса (PID ), равный 1. Большинство систем UNIX использует sched в качестве процесса с идентификатором 0.В Linux процесс с идентификатором PID, равным 0, отсутствует. Демон init работает в сопровождении с различными обработчиками памяти и сигналов ядра. Все эти процессы имеют идентификаторы с низкими номерами, а их имена в листингах команды ps заключены в квадратные скобки (например, ). Иногда имена процессов могут содержать в конце символ косой черты и цифру, как, например, . Число указывает процессор, на котором выполняется данный процесс. Эта информация может быть полезна при настройке многопроцессорной системы.

    Некоторые наиболее часто встречающиеся процессы ядра в Linux-системах
    Процесс Назначение

    k journald Записывает обновления журнала на диска
    kswapd Выполняет подкачку процессов при недостаточном объеме физической памяти

    ksoftirqd Обрабатывает мягкие прерывания, если ими нельзя заняться во время переключения контекста

    khubd Выполняет конфигурирование USB-устройств

    Для каждой смонтированной файловой системы ext3 или ext4 существует один процесс kjoumald.

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

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

    После создания этих процессов ядро больше не принимает участия в процедуре начальной загрузки системы. К этому моменту, однако, еще не создан ни один из процессов, управляющих базовыми операциями (например, регистрацией пользователей в системе), и большинство демонов не запущено. Обо всем этом позаботится (в некоторых случаях косвенно) демон init.

    Действия оператора (только в режиме восстановления)

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

    В однопользовательском режиме команды выполняются почти так же, как и в полностью загруженной системе. Однако иногда монтируется только корневой раздел. Для того чтобы можно было использовать программы, находящиеся вне каталогов /bin, /sbin или /etc, необходимо вручную смонтировать остальные файловые системы.

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

    # mount -о rw,remount /

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

    В системе Red Hat загрузка в однопользовательском режиме выполняется несколько активнее, нежели обычно. До того момента, когда на экран будет выведено приглашение интерпретатора команд, этот дистрибутив попытается смонтировать все локальные файловые системы. Хотя на первый взгляд такой подход кажется удобным, но при использовании недостаточно продуманной файловой системы он может порождать проблемы.

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

    Когда интерпретатор команд однопользовательского режима завершит свою работу, система продолжит загрузку в нормальном режиме.

    Выполнение сценариев запуска системы

    В тот момент, когда система сможет выполнять сценарии запуска, ее уже можно назвать UNIX. Это еще не полностью загруженная система, но «загадочных» этапов процесса загрузки больше не осталось. Файлы сценариев представляют собой обычные командные файлы, которые выбираются и запускаются демоном init по сложному, но, в общем-то, понятному алгоритму.

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

    Завершение процесса загрузки

    После выполнения сценариев инициализации система полностью готова к работе. Такие системные демоны, как DNS- и SMTP-серверы, принимают и обслуживают подключения. Не забывайте о том, что демон init продолжает играть важную роль даже по завершении начальной загрузки.

    У демона init есть один однопользовательский и несколько многопользовательских «уровней выполнения», определяющих, какие ресурсы системы будут доступны пользователю.

    Linux обычно ставят после Windows так, чтобы GRUB затер загрузчик Windows и отображал во время загрузки обе системы. По умолчанию сначала идет Linux, в конце - Windows. Кого-то такое порядок может не устраивать . Есть и другой важный параметр - время ожидания.

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

    Все, что нужно сделать, - это отредактировать файл «grub.cfg» . Чтобы обезопасить себя, будем работать с копией файла на рабочем столе. Чтобы изменения можно было сохранить, файл нужно открыть от имени администратора - для этого используем консоль .

    1 . Заходим в папку «boot/grub/ » и копируем файл «grub.cfg » на рабочий стол. Это можно делать через консоль или через файловый менеджер .


    Если выбираете консоль, то введите команду: «sudo cp /boot/grub/grub.cfg /home/kij/Desktop/ » .


    «kij» - это имя пользователя, у вас оно наверняка другое.

    2 . Открываем файл «grub.cfg » на рабочем столе в текстовом редакторе. Делаем это через консоль: «sudo kate /home/kij/Desktop/grub.cfg »

    «kate » - это текстовый редактор Linux Mint KDE 15. Если у вас другой дистрибутив, то и редактор, скорее всего, другой, например, «gedit ».

    3. Обращаем внимание на строку «set default=0 ».

    Каждый пункт в GRUB имеет свой номер:

    Linux - 0;

    Linux...recovery mode - 1;

    Memory test - 2;

    Memory test (другая модификация) - 3;

    Windows 7 - 4.


    У вас может быть немного по-другому. В моем случае показатель default должен равняться 4, тогда по умолчанию будет грузиться Windows.

    4. Теперь изменяем временный параметр. Ищем в том же «grub.cfg » строку «set timeout=... ».


    Выставляем, сколько нужно. Если компьютер используют несколько пользователей, выставляем длительный таймаут - секунд 30. Если постоянно загружаете одну ОС, то ставьте 2-3 секунды.

    5. Сохраняем изменения. Закрываем редактор.

    6. Копируем файл с рабочего стола обратно в системную папку. Используем команду «sudo cp /home/kij/Desktop/grub.cfg /boot/grub/ ».


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

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

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

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

    Первым делом после включения компьютера происходит выполнение специального кода запуска, который представлен в виде базовой системы ввода-вывода (BIOS). Системе BIOS известна почти вся конфигурация железа. Есть сведения с какого устройства считывать первые 512 байт (MBR).

    Именно в MBR (Master Boot Record) хранится программа первичной загрузки (stage 1), в которой содержится информация о том, в каком месте диска расположена программа вторичной загрузки (stage 2), которая загружает саму операционную систему.

    Таким загрузчиком в нашем конкретном примере является GRUB (Grand Unified Boot Loader). Есть и промежуточный этап (так называемый stage 1.5), помогающий загрузчику ОС определить особые параметры файловой системы. Эта подпрограмма используется, если загрузчик GRUB не был установлен прямо в MBR.

    После получения управления GRUB отображает список операционных систем (Linux/Windows и различных версий ядра Linux), если они доступны. В ином случае управление переходит на командную строку GRUB.

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

    Вся информация о ходе процесса загрузки выводится на экран (если в опциях загрузки ядра отсутствует параметр quiet ), а так же в журнальный файл /var/log/dmesg . Просмотреть который можно непосредственно, либо используя утилиту dmesg .

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

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

    Когда ядро системы загружено, производится базовая настройка необходимых устройств, подсистемы LVM и RAID и диск в оперативной памяти initrd, позволяющий загрузить необходимые драйверы.

    Дальнейшие действия по загрузке процессов сильно отличаются в зависимости от версии ОС. В RHEL5 используется традиционный процесс загрузки служб SysV. В RHEL6 уже есть частичное распараллеливание загрузки процессов, причем по необходимости, а не все подряд. В новых версиях RHEL (с версии ядра 3.0) процесс ещё больше оптимизирован за счёт использования программы systemd, так же как в Fedora с 15-ой версии. В этом случае используется асинхронный режим работы, ускоряющий загрузку ОС.

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

    Вам так же понравится:

    Операционная система Linux Курс лекций. Учебное пособие Исправляем брешь CVE-2015-0235 в Linux

    Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter
    ПОДЕЛИТЬСЯ: