Процесс загрузки ОС Linux


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

1. BIOS выполняет загрузку, специфичную для данного аппаратного обеспечения, а затем загружает и выполняет загрузочный код с одного из разделов заданного загрузочного устройства (на ПК — загружаются и выполняются 512 байт кода MBR (Master Boot Record))
В конце MBR находятся «магическое число» — два байта (0xAA55), которые служат для целей проверки MBR.

2. 512-байтовый загрузчик из MBR, загружает тот «большой загрузчик», который мы обычно и называем загрузочной программой (NTLDR, LILO, GRUB).
3. Загрузчик, предлагает(или не предлагает) пользователю меню с доступными вариантами загрузки и затем загружает ядро.
4. Ядро, при загрузке, обычно имеет вид файла-образа: сжатого с помощью zlib ядра в формате zImage (сжатый образ размером менее 512KB) или bzImage (большой сжатый образ, размером более 512KB).
В образе, содержится программа, которая проводит минимальную настройку оборудования и распаковывает образ целиком в память.
5. ядро инициализирует устройства, монтирует указанную загрузчиком файловую систему в режиме «только чтение» и запускает процесс Init (/sbin/init),

В Linux, init запускается с параметром, задающим уровень выполнения (от 1 до 6) и определяющим, какие подсистемы следует включить.
Для каждого уровня выполнения есть собственные сценарии, которые регламентируют различные процессы, участвующие в установлении или снятии данного уровня, и эти сценарии считаются необходимыми для процесса загрузки.
Сценарии Init обычно хранятся в каталогах с именами вида /etc/rс
Главный файл конфигурации уровней для init — /etc/inittab

уровни выполнения:
0 — выключение(остановка) системы.
1 — однопользовательский режим (single user mode) — для административных действий по восстановлению системы ( по смыслу, аналогичен Safe Mode Windows). На этом уровне не запущен ни один сервис, работа производятся в режиме командной строки под учётной записью root.
2 — Запуск ОС в многопользовательском режиме без поддержки сетевых сервисов.
3 — многопользовательский режим (multiuser mode).
4 — не используется.
5 — многопользовательский режим. Загрузка ОС и последующая работа производятся в графическом режиме.
6 — перезагрузка системы.


На встраиваемых платформах, чаще всего, используются загрузчики:
U-Boot (Universal Boot Loader)
RedBoot.
Программы загрузчиков хранятся в специальной области flash-памяти, расположенной во встраиваемой системе: они предоставляют средства для загрузки образа ядра Linux во flash-память и, в дальнейшем, обеспечивают выполнение этого ядра.

посмотреть MBR под линуксом:
Команда dd выполняется с правами root, считывает первые 512 байт с /dev/sda (или /dev/hda) (первый SATA/IDE -жёсткий диск) и записывает их в файл mbr.bin.
затем используется команда hexdump для удобного шестнадцатиричного представления файла.
noonv@noonv-VirtualBox:~$ sudo dd if=/dev/sda of=mbr.bin bs=512 count=1
[sudo] password for noonv: 
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0 s, Infinity B/s
noonv@noonv-VirtualBox:~$ hexdump mbr.bin -C
00000000  eb 63 90 10 8e d0 bc 00  b0 b8 00 00 8e d8 8e c0  |.c..............|
00000010  fb be 00 7c bf 00 06 b9  00 02 f3 a4 ea 21 06 00  |...|.........!..|
00000020  00 be be 07 38 04 75 0b  83 c6 10 81 fe fe 07 75  |....8.u........u|
00000030  f3 eb 16 b4 02 b0 01 bb  00 7c b2 80 8a 74 01 8b  |.........|...t..|
00000040  4c 02 cd 13 ea 00 7c 00  00 eb fe 00 00 00 00 00  |L.....|.........|
00000050  00 00 00 00 00 00 00 00  00 00 00 80 01 00 00 00  |................|
00000060  00 00 00 00 ff fa 90 90  f6 c2 80 75 02 b2 80 ea  |...........u....|
00000070  74 7c 00 00 31 c0 8e d8  8e d0 bc 00 20 fb a0 64  |t|..1....... ..d|
00000080  7c 3c ff 74 02 88 c2 52  bb 17 04 80 27 03 74 06  ||<.t...R....'.t.|
00000090  be 88 7d e8 1c 01 be 05  7c f6 c2 80 74 48 b4 41  |..}.....|...tH.A|
000000a0  bb aa 55 cd 13 5a 52 72  3d 81 fb 55 aa 75 37 83  |..U..ZRr=..U.u7.|
000000b0  e1 01 74 32 31 c0 89 44  04 40 88 44 ff 89 44 02  |..t21..D.@.D..D.|
000000c0  c7 04 10 00 66 8b 1e 5c  7c 66 89 5c 08 66 8b 1e  |....f..\|f.\.f..|
000000d0  60 7c 66 89 5c 0c c7 44  06 00 70 b4 42 cd 13 72  |`|f.\..D..p.B..r|
000000e0  05 bb 00 70 eb 76 b4 08  cd 13 73 0d f6 c2 80 0f  |...p.v....s.....|
000000f0  84 d0 00 be 93 7d e9 82  00 66 0f b6 c6 88 64 ff  |.....}...f....d.|
00000100  40 66 89 44 04 0f b6 d1  c1 e2 02 88 e8 88 f4 40  |@f.D...........@|
00000110  89 44 08 0f b6 c2 c0 e8  02 66 89 04 66 a1 60 7c  |.D.......f..f.`||
00000120  66 09 c0 75 4e 66 a1 5c  7c 66 31 d2 66 f7 34 88  |f..uNf.\|f1.f.4.|
00000130  d1 31 d2 66 f7 74 04 3b  44 08 7d 37 fe c1 88 c5  |.1.f.t.;D.}7....|
00000140  30 c0 c1 e8 02 08 c1 88  d0 5a 88 c6 bb 00 70 8e  |0........Z....p.|
00000150  c3 31 db b8 01 02 cd 13  72 1e 8c c3 60 1e b9 00  |.1......r...`...|
00000160  01 8e db 31 f6 bf 00 80  8e c6 fc f3 a5 1f 61 ff  |...1..........a.|
00000170  26 5a 7c be 8e 7d eb 03  be 9d 7d e8 34 00 be a2  |&Z|..}....}.4...|
00000180  7d e8 2e 00 cd 18 eb fe  47 52 55 42 20 00 47 65  |}.......GRUB .Ge|
00000190  6f 6d 00 48 61 72 64 20  44 69 73 6b 00 52 65 61  |om.Hard Disk.Rea|
000001a0  64 00 20 45 72 72 6f 72  0d 0a 00 bb 01 00 b4 0e  |d. Error........|
000001b0  cd 10 ac 3c 00 75 f4 c3  eb 27 0f 00 00 00 80 20  |...<.u...'..... |
000001c0  21 00 83 b5 8f e6 00 08  00 00 00 08 b6 00 00 d5  |!...............|
000001d0  ae e6 05 1f d0 0f fe 17  b6 00 02 e0 09 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|


Ссылки:
http://ru.wikipedia.org/wiki/Процесс_загрузки_Linux
Подробности процесса загрузки Linux
http://ru.wikipedia.org/wiki/MBR
http://ru.wikipedia.org/wiki/Уровни_выполнения
Этапы загрузки системы
  • 0
  • 3 января 2011, 21:49
  • noonv

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.