Лекция №2 - Загрузка системы

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

Программа проводит начальную настройку (инициализацию) устройств компьютера (материнская плата, процессор, память, жесткий диск, видео-подсистема и т.д.) и выясняет с какого устройства будет продолжена загрузка. Как правило таким устройством является жесткий диск (”винчестер”) на котором записана загрузочная запись - MBR (Master Boot Record). Эта запись расположена на самом первом секторе жесткого диска и занимает размер всего 512 байт. В эти 512 байт входит начальный загрузчик (446 байт), таблица разделов диска (64 байта) и так называемый специальный код в 511-м и 512-м байтах, который указывает на, то, что диск является загрузочным (содержит MBR). Как раз с помощью проверки этих двух последних байт БИОС и определяет является ли диск загрузочным или нет.  На рисунке 1 показано более наглядно.

Master Boot Record

Рисунок 1

Задача начального загрузчика определить активный раздел диска и загрузить в память загрузчик ядра операционной системы.  Такими загрузчиками в Linux являются LILO (сокращенно от Linux Loader) и GRUB (GRand Unified Bootloader). Загрузчик GRUB - является более новым загрузчиком с большими возможностями и используется в большинстве современных дистибутивов.  LILO, который долгое время был стандартом, потихоньку сдает позиции, уступая место более современному GRUB. Основное преимущество GRUB в том, что он умеет обращаться к файловой системе Linux. (Подробнее о GRUB рекомендую читать на официальном сайте http://www.gnu.org/software/grub/)

Задача загрузчика загрузить в память ядро операционной системы и передать ему управление. Ядро Linux расположено в файле /boot и имеет название вида vmlinuz-2.6.24, где цифры обозначают номер (версию) ядра. Размер файла колеблется примерно от 400 Кб до 2 Мб. Ядро на диске находится в сжатом виде, поэтому происходит еще такая процедура как распаковка ядра и уже потом оно записывается в область оперативной памяти, которая недоступна пользовательским процессам. Ядро после того как записано в память берет управление в “свои руки” и проводит повторную инициализацию оборудования. Дело в том, что Linux в своей работе не использует функции БИОС, а “общается” с железом напрямую. Windows умеет работать с железом через функции БИОС. Чтобы не вдаваться в подробности объясню на примере. На современных материнских платах есть возможность создавать рейды. Например, объединить два жестких диска в рейд 1 (зеркало). Это реализуется как раз с помощью БИОС. Так вот Windows будет работать с таким рейдом, так как умеет обращаться к БИОС. Linux, тоже сможет обращаться с рейдом, но только если поддержка такого рейда будет реализована в ядре.

Загрузчик может передавать ядру некоторые параметры, которые влияют на загрузку системы. Например, если передать ядру параметр single, то Linux загрузится в однопользовательском режиме (можно грубо сравнить с безопасным режимом Windows XP). Параметры передаваемые ядру прописаны в конфигурационном файле. Для GRUB это файл /boot/grub/menu.lst. Как работать с GRUB пока останавливаться не будем, вернемся к этому вопросу в дальнейшем если будет время.

Дальше ядро загружает несколько системных процессов: менеджер памяти и менеджер процессов. И только потом загружается первый пользовательский процесс - init. Процесс init является основным (родительским) процессом с идентификатором 1. Это первый процесс к которому имеет доступ системный администратор. Система Linux работает до тех пор пока “жив” процесс init . Получив управление, init выполняет алгоритм описанный в конфигурационном файле /etc/inittab . В результате работы init запускаются скрипты собранные  в директории /etc/init.d/ .

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

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

Когда мы видим на экране приглашение в текстовом или графическом режиме, можно считать, что система уже почти загрузилась. Далее нужно ввести имя пользователя и пароль. Обращаю внимание на то, что в текстовом режиме при вводе пароля информация не отображается на экране (то есть нет ни “звездочек” ни кружочков). Когда вы прошли регистрацию в текстовом режиме загружается так называемая программа-оболочка (shell), в которой пользователи и работают далее. Об оболочке (еще ее называют командным интерпретатором) мы еще будем говорить, пока только скажу, что оболочек есть несколько видов - csh, tcsh, zsh, bash, но мы будем работать в bash.

В завершение хочу сказать о выборе дистрибутива. Для этого курса совершенно неважно какой дистрибутив вы выберете для того, чтобы изучать Linux. Будет даже хорошо, если у вас будет отличный дистрибутив от того, который мы используем на занятиях. Для новичков, рекомендация купить отдельный жесткий диск на 10, 20 Гб и установить туда систему, если вы боитесь, что можете навредить данным на основном винчестере.

Несколько слов добавлю от себя. На курсах мы пока используем дистрибутив Knoppix (основанный на дистрибутиве Debian), дома и на работе я работаю в Ubuntu. Если у вас нет дистрибутива, то рекомендую зайти на сайт http://linuxiso.com.ua , где представлены все популярные дистрибутивы на сегодняшний день. Если у вас хороший канал можете скачать iso-образ и записать его на компакт-диск, если нет можете заказать диск по почте.

Читать другие лекции по курсу Администратор ПК с Linux

Статьи и новости схожей тематики:

Комментариев: 3

  1. IgorKa - Информационный ресурс » Архив сайта » Лекция №17 - Жесткие диски в Linux:

    [...] MBR - master boot record. О MBR мы уже говорили во второй лекции. Продублирую для наглядности рисунок отображающий [...]

  2. Bush:

    Добрый день. Читаю ваши статьи (спасибо за них!) и ковыряю установленный у меня Linux: дистрибутив: ubuntu 10.10 x64, версия ядра - 2.6.35-22-generic (версию получил командой uname -a).

    Ниже показаны некоторые несостыковки с тем, что имеется у меня на руках, а так же озвучено несколько вопросов (буду признателен за пояснения):

    >Ядро Linux расположено в файле /boot и имеет название вида vmlinuz-2.6.24, где цифры обозначают номер (версию) ядра. Размер файла колеблется примерно от 400 Кб до 2 Мб.

    В указанном каталоге у меня находится файл vmlinuz-2.6.35-22-generic, объёмом 4.1 Мб (полагаю, что это тот, о котором речь).

    >Загрузчик GRUB - является более новым загрузчиком с большими возможностями и используется в большинстве современных дистибутивов.

    Именно он установлен у меня в каталоге /boot/grub, но (смотрим след. пункт)…

    >Параметры передаваемые ядру прописаны в конфигурационном файле. Для GRUB это файл /boot/grub/menu.lst

    В указанном каталоге у меня нет файла menu.lst.

    >Получив управление, init выполняет алгоритм описанный в конфигурационном файле /etc/inittab . В результате работы init запускаются скрипты собранные в директории /etc/init.d/ .

    В каталоге /etc я не нашел файла inittab. Каталог /etc/init.d/ присутствует.

    >Каждый процесс getty связывается с виртуальной (и не только виртуальной) консолью, которая отображается при помощи видеоадаптера и позволяет пользователю работать с этой консолью после того как пользователь зарегистрируется в системе.

    Консоль для каждого процесса своя, или единая для всех?

    >Когда вы прошли регистрацию в текстовом режиме загружается так называемая программа-оболочка (shell), в которой пользователи и работают далее. Об оболочке (еще ее называют командным интерпретатором) мы еще будем говорить, пока только скажу, что оболочек есть несколько видов - csh, tcsh, zsh, bash, но мы будем работать в bash.

    Терминал, который вызывается через графический интерфейс, это тоже самое, что и shell?

    Ответить

    Igorka Reply:

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

    >В указанном каталоге у меня находится файл vmlinuz-2.6.35-22-generic, объёмом 4.1 Мб (полагаю, что это тот, о котором речь).
    Да это тот файл о котором идет речь.

    Насчет Grub. В лекции идет речь о первом Grub (или Grub Legacy). В новых дистрибутивах используется новая версия загрузчика GRUB2

    >В каталоге /etc я не нашел файла inittab. Каталог /etc/init.d/ присутствует.
    Сам задавал себе такой же вопрос :) Вот ответ - http://igorka.com.ua/2009-09-18/upstart-alternativa-init/

    >Консоль для каждого процесса своя, или единая для всех?
    Здесь не уверен, но если правильно помню, то для каждого процесса своя.

    >Терминал, который вызывается через графический интерфейс, это тоже самое, что и
    shell?
    Да

    Ответить

Оставьте свой отзыв