Что происходит после загрузки образа ядра Linux в оперативную память

Я просто хочу узнать о потоке действий, которые происходят после загрузки образа ядра Linux в ОЗУ после процесса загрузки.

  • Как ядро ​​«отказывается» от контроля инициализации, специфичной для дистрибутива?
  • Не удалось загрузить как анонимный пользователь в vsftpd
  • Есть ли способ автоматического включения Ubuntu?
  • Определение самого длинного времени, затраченного на процесс загрузки
  • Как устранить эту проблему при загрузке?
  • описание параметров загрузки ядра Linux «real_root» и «cdroot»
  • Новая установка Ubuntu, теперь загрузочный экран перезагрузки показывает контроллер Ethernet в течение 1 минуты
  • Проверка памяти во время загрузки. Не удалось загрузить Ubuntu 12 04 LTS
  • 3 Solutions collect form web for “Что происходит после загрузки образа ядра Linux в оперативную память”

    Что касается Linux 2.6:

    ядро

    После загрузки в ОЗУ ядро ​​выполняет следующие функции.

    setup() :

    1. Создайте таблицу в ОЗУ, описывающую макет физической памяти.
    2. Установите задержку и скорость повторения клавиатуры.
    3. Инициализируйте плату видеоадаптера.
    4. Инициализируйте контроллер диска с параметрами жесткого диска.
    5. Проверьте шины IBM Micro Channel.
    6. Проверьте наличие указательных устройств PS / 2 (мышь шины).
    7. Проверьте поддержку Advanced Power Management (APM).
    8. Если поддерживается, создайте таблицу в ОЗУ, описывающую доступные жесткие диски.
    9. Если изображение ядра было загружено с низким объемом ОЗУ, переместите его на высокий.
    10. Установите пиктограмму A20 (совместимость для антивирусных микропроцессоров 8088).
    11. Установите временную таблицу дескрипторов прерываний (IDT) и временную таблицу глобального дескриптора (GDT).
    12. Сбросьте блок с плавающей точкой (FPU).
    13. Перепрограммируйте программируемые контроллеры прерываний (PIC).
    14. Переключитесь с реального на защищенный.

    startup_32() :

    1. Инициализируйте регистры сегментации и временный стек.
    2. Очистите все биты в регистре eflags .
    3. Заполните область неинициализированных данных нулями.
    4. Вызывает функцию decompress_kernel() для распаковки образа ядра.

    startup_32() (то же имя, другая функция):

    1. Инициализация конечных регистров сегментации.
    2. Заполните сегмент bss нулями.
    3. Инициализировать временные таблицы страниц ядра.
    4. Включить пейджинг.
    5. Установка уровня ядра ядра для процесса 0.
    6. Снова очистите все биты в регистре eflags .
    7. Заполните IDT нулевыми обработчиками прерываний.
    8. Инициализируйте первый кадр страницы с системными параметрами.
    9. Определите модель процессора.
    10. Инициализация регистров с адресами GDT и IDT.

    start_kernel() : почти каждая часть ядра инициализируется этой функцией, но это лишь некоторые из них.

    • планировщик
    • Зоны памяти
    • Распределитель системы Buddy
    • IDT
    • SoftIRQs
    • Дата и время
    • Распределитель плиты
    • Создать процесс 1 ( /sbin/init )

    Полный «список» доступен в источниках в linux / init / main.c

    В этом

    Init запускает весь необходимый пользовательский процесс, чтобы привести систему в нужное состояние, эта процедура сильно зависит от распределения и запускаемого уровня запуска.

    Введите runlevel в консоль, это даст вам текущий уровень запуска вашей системы.

    Взгляните на /etc/rcX.d/ (или /etc/rc.d/rcX.d/ ), заменив X на уровень выполнения.
    Это символические ссылки, упорядоченные по приоритету выполнения. S01.... означает, что эти скрипты запускаются очень рано, а S99.... выполняется в самом конце процесса загрузки. KXX.... делают то же самое, но для последовательности выключения.

    Как правило, эти сценарии обрабатывают диски, сети, протоколирование, управление устройствами, специальные драйверы, среду и многие другие требуемые последовательности.

    • Ядро берет под контроль систему H / W, как только вы видите «Uncompressing Linux ..».
    • Ядро проверяет и устанавливает регистры BIOS графических карт и формат вывода экрана.
    • Затем ядро ​​считывает параметры BIOS и инициализирует основные аппаратные интерфейсы.
    • Затем драйверы в ядре инициализируют аппаратное обеспечение.
    • Затем проверка ядра для партитонов
    • Затем он монтирует корневую файловую систему
    • Затем ядро ​​запускает init, который загружает основную систему со всеми ее программами и конфигурациями.

    Загрузочный загрузчик перескакивает в точку доступа к точке передачи изображения, передавая командную строку ядра (если есть), а ядро ​​обрабатывает остальные.

    Linux и Unix - лучшая ОС в мире.