2. Общая схема загрузки ДОСИСТЕМНАЯ ЗАГРУЗКА СИСТЕМНАЯ ЗАГРУЗКА Первичный загрузчик MBR - загрузочный сектор IBM PC Вторичный загрузчик Задача - загрузить в память ядро и все необходимое для старта системы (иногда - модули, иногда - стартовый виртуальный диск), настроить все это и передать управление ядру. Загрузчик из ПЗУ «нулевой этап загрузки» BIOS, CMOS (NVRAM) Процесс init (PID=1) запуск системных служб Программа login
3. Подсистемы загрузки LILO и GRUB Карта размещения - представление области с необходимыми данными (например, вторичным загрузчиком или ядром системы) в виде списка секторов диска, которые она занимает. LILO использует и для первичного, и для вторичного загрузчика схему с картой размещения - представляет ядро в виде набора секторов на диске, записывает этот набор в заранее определенное место и затем собирает ядро из кусков по карте. Недостатки:1) ее создание возможно только под управлением уже загруженной системы 2) изменение ядра должно обязательно сопровождаться изменением карты. GRUB устроена более сложно. Она также имеет первичный загрузчик, который записывается в первый сектор диска или раздела , и вторичный загрузчик, располагающийся в файловой системе . Однако карта размещения в GRUB обычно используется только для так называемого "полуторного" загрузчика ("stage 1.5") - по сути дела, драйвера одной определенной файловой системы. Процедура загрузки при этом выглядит так. Первичный загрузчик загружает полуторный по записанной в него карте размещения. Эта карта может быть очень простой, так как обычно полуторный загрузчик размещается непосредственно после первичного в нескольких секторах подряд, или в ином специально отведенном месте вне файловой системы. Полуторный загрузчик умеет распознавать одну файловую систему и находить там вторичный уже по имени . Наконец, вторичный загрузчик, пользуясь возможностями полуторного, читает из файла /boot/grub/menu.lst меню, в котором пользователь может выбирать варианты загрузки так же, как и в LILO. Таким образом, обновление и перенастройка установленного GRUB не требует пересчета карт размещения и изменения чего-то, кроме файлов в каталоге /boot/grub.
4. Ядро Linux Ядро - набор подпрограмм, используемых для организации доступа к ресурсам компьютера ( к оперативной памяти, сети, дисковым и прочим внешним устройствам) , для обеспечения запуска и взаимодействия процессов, для проведения политики безопасности системы и для других действий. Стартовый виртуальный диск - минимальный набор программ и модулей Linux, необходимый для обеспечения загрузки системы. Представляет собой виртуальную файловую систему в оперативной памяти. Загружается вторичным загрузчиком вместе с ядром. ядро Базовое (generic) kernel.org Профильное (пересобранное базовое) Модули (части ядра, которые можно добавлять и удалять во время работы initrd (стартовый виртуальный диск)
5.
6. Если в параметрах не указано иное, ядро считает, что init называется /sbin/init .
7. Первым делом init разбирает собственный конфигурационный файл - /etc/inittab.
13. Стартовый сценарий - программа (обычно написанная на shell), управляющая включением или выключением какого-нибудь свойства системы.
14. Простейший стартовый сценарий обязан принимать один параметр, значение которого может быть словом "start" для запуска (включения) и "stop" для остановки (выключения)
15.
16. Запустить или остановить службу можно, просто вызвав соответствующий сценарий с параметром "start" или "stop" .
17. Часто ту же самую задачу выполняет и специальная команда service , которая проверяет, есть ли указанный стартовый сценарий, и запускает его
18. Пример (остановка и активация звуковой подсистемы): [root@localhost root]# /etc/rc.d/init.d/sound stop
23. Каждый файл в таком каталоге соответствует настройке одной службы: при добавлении ее в систему файл появляется, при удалении - исчезает.
24.
25. 1) т. к. стартовые сценарии можно запускать, а можно и не запускать init.d на роль ".d"-каталога не годится. Поэтому организуем еще один каталог, скажем, rc.d , и создаем там ссылки (для наглядности лучше символьные) на те сценарии из init.d, которые планируем запускать при старте системы. Общий стартовый сценарий rc как раз и будет заниматься запуском стартовых сценариев из rc.d.
26. 2) Необходимо также обеспечить строгий порядок запуска этих сценариев. Теоретически это совсем просто: отсортировать их по алфавиту, как это далает ls, и запускать подряд. Практически же такое требование накладывает ограничение на имя ссылки в ".d"-каталоге, поэтому принято, чтобы в начале имени стояло двузначное число. Тогда, запуская подряд все сценарии, отсортированные по алфавиту, rc будет в первую очередь руководствоваться этим номером, а уж потом - названием службы, которое после него стоит.
27.
28. Одну и ту же систему в разных случаях бывает необходимо загружать с разным набором служб.
29. Пример: Если, скажем, использование сети нежелательно, удобнее сказать что-то вроде "Система! Загружайся без сети!", чем вручную удалять стартовые сценарии всех предположительно сетевых служб из ".d"-каталога.
30. Поэтому в Linux предусмотрено несколько вариантов начальной загрузки, называемых уровнями выполнения (run levels).
33. Уровень 2 соответствует многопользовательскому режиму загрузки системы с отключенной сетью. В этом режиме не запускаются никакие сетевые службы, что, с одной стороны, соответствует строгим требованиям безопасности, а с другой стороны, позволяет запускать службы и настраивать сеть вручную.
34. Уровень 3 соответствует многопользовательскому сетевому режиму загрузки системы. Сеть при загрузке на этот уровень настроена, и все необходимые сетевые службы запущены. На этом уровне обычно работают компьютеры-серверы.
35. Уровень 5 соответствует многопользовательскому графическому режиму загрузки системы. На этом уровне обычно функционируют рабочие станции, предоставляя пользователям возможность работать с графической подсистемой X11. Сеть на этом уровне настроена, а вот список запущенных сетевых служб может быть меньше, так как рабочая станция не всегда выполняет серверные функции (хотя, безусловно, может).