Раз уж мы занялись изучением встроенных систем и, в частности, линукса, то давайте рассмотрим, как же происходит загрузка ОС 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 |[email protected].| 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/Уровни_выполнения
Этапы загрузки системы