Глава 1. Введение
Не все знакомы с Fedora. В один из дней кто- то задал мне вопрос:
-
Студент: Что такое Fedora?
-
Я: Fedora это Linux.
-
Студент: Что такое Linux?
-
Я: Linux это операционная система.
-
Студент: Что такое операционная система?
-
Я: Она запускает компьютер.
-
Студент: Что такое компьютер?
-
Я: Компьютер помогает пользователям.
-
Студент: Кто такой пользователь?
-
Я: Это некий подобный мне пользователь.
-
Студент: Чёрт возьми, кто вы такой?
-
Я: Ну ладно, меня зовут. Йогеш Бабар. Последние десять лет я работал в Red Hat и мне нравится обсуждать как запускается операционная система.
Всем известно, что операционной системе требуется примерно от 20 до 30 секунд для загрузки. А потому зачем я написал книгу в 486 страниц о какой- то последовательности запуска в 30 секунд? Ответ прост.
-
В доступности нет никакого надлежащего документа/ статьи/ книги которые бы полностью поясняли последовательность запуска. Вы найдёте сотни хороших книг по операционным системам, но ни одна из них не о том как запускаются системы.
-
Вы способны решить проблемы с загрузкой только если вы знаете как ваша система запускается.
-
Если вы системный администратор и проходите собеседование, опрашивающие вас спросят как загружается Linux.
-
Проблемы "Can’t boot" всегда обладают наивысшей степенью серьёзности, поскольку по их причине падает вся промышленная система целиком. Когда система медленная, само производство всё ещё продолжается. Обладающий 10 000 пользователей сервер , который не способен загрузиться подразумевает что вся производственная система встаёт. Именно это определяет важность загрузки и, как я уже сказал, вы не сможете решать разрешать проблемы с загрузкой если не знаете как запускается система.
-
Понимание процесса запуска весьма занимательно.
-
Изучив всё это вы обретёте полное счастье.
Итак, что такое запуск, строго говоря? Технически говоря, весь процесс копирования необходимого ядра с имеющегося жёсткого диска в оперативную память и последующее исполнение носят название запуска (booting). Но это определение не вдохновит нас на изучение загрузки.
Я скажу это своими словами: мать это супермножество, а её новорожденное дитя - её част её. Точно так же некая операционная система выступает супермножеством, а загрузка является её подмножеством. Подмножество принадлежит своему супермножеству.
Теперь рассмотрим постулат: "Дитя порождает мать".
Технически говоря, это не верно, однако представим себе, что пока женщина вынашивает ребёнка, она просто женщина; в тот момент когда она получает дитя, женжина становится матерью. А потому дитя порождает мать.
То же самое происходит и с компьютерами. Тезнически запуск это часть некой операционной системы и сама операционная система обязана породить запуск, но всё наоборот. Именно запуск порождает свою операционную систему. Следовательно, мы можем сказать, что запуск это та процедура, которая даёт рождение некой операционной системе.
Данная книга поясняет саму процедуру запуска некой настольной или серверной системы на основе архитектуры x86 и она охватывает необходимую процедуру запуска различных операционных систем. В первую очередь она сосредоточена на глубоком анализе процедуры запуска Linux при вторичной фокусировке на рочих операционных системах, таких как Windows и Unix. Как вы знаете, имеется гигантское число дистрибутивов Linux. Некоторые из них предназначены для пользователей настольных систем, какие- то для корпоративных потребителей, а некоторые исключительно для игровых целей и ещё имеются доступными системы для пользователей, которые предпочитают подход сделай- всё- сам. Почти невозможно охватить абсолютно все последовательности запуска дистрибутивов. Следовательно, я принял решение выбрать в качестве первого дистрибутив Linux для корпоративных потребителей, и это RHEL (Red Hat Enterprise Linux).
RHEL основывается на Linux Fedora. Fedors является быстро меняющейся (шестимесячный цикл), в то время как RHEL это медленно движущийся дистрибутив (цикл выпусков составляет от двух до трёх лет). Это означает, что Fedora принимает все самые последние наработки так быстро, как только соответствующая команда QE (Quality Engineering) даёт им зелёный свет. Поскольку Fedora выступает испытательным стендом популярных корпоративных дистрибутивов Linux, всё доступное в Fedora в конечном счёте превращается в RHEL. Вот посему я выбрал Fedora для пояснения последовательности запуска Linux.
Всё начинается с того как вы наживаете на кнопку электропитания. После того как вы нажимаете на эту кнопку, электропитание подаётся на вашу материнскую плату. Эта материнская плата посылает сигнал вашей системе электропитания (SMPS? PSU), которая возвращает поддержку надлежащей мощности и, как результат, ваша материнская плата пытается запустить свой ЦПУ.
При запуске архитектуры ЦПУ на основе x86 очищаются все старые данные во всех имеющихся регистрах и старт начинается следующим:
IP 0xfff0
CS selector 0xf000
CS base 0xffff0000
0xffff0000 + 0xfff0 = 0xfffffff0
. Это то местоположение в памяти, в котором ваш
ЦПУ ожидает обнаружить самую первую инструкцию для исполнения. В этом месте содержится некая инструкция безусловного
перехода (jump), которая указывает на некую точку входа в BIOS. Иначе говоря, именно так запускается BIOS или ЦПУ стартуется
в BIOS/ встроенном программном обеспечении (ПО).
После этого, имеющееся встроенное ПО и начальный загрузчик выступают следующим этапом в данной процедуре запуска. Именно в этом и заключается задание имеющегося встроенного ПО запустить необходимый начальный загрузчик некой операционной системы. В своей следующей главе я обсужу то что происходит в самом встроенном ПО и как оно исполняет необходимы начальный загрузчик.