Что происходит на каждом этапе процесса создания ядра Linux?

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

Процедура, описанная на сайте Ubuntu, очень много работает с fakeroot , dpkg , make-kpkg , некоторыми initramfs и другими ужасными файлами, которые работают, но просто не помогают мне понять, что происходит.

  • Что такое вывод make в каталоге Linux linux?
  • Создает ли он «сжатый образ ядра»?
  • Каково имя файла «сжатого образа ядра» и где оно размещено?
  • Что делает make modules делать?
  • Должны ли make modules до или после make ?
  • Не удается автоматически создать мои модули?
  • Каков процесс (на английском языке, а не только список команд) добавления вновь построенных ядер в список загружаемых ядер?
  • Что делает make install делать?
  • Будет ли make install его в список загружаемых ядер, чтобы мне больше не нужно было ничего делать?
  • Есть ли эквивалентный make modules_install ?

One Solution collect form web for “Что происходит на каждом этапе процесса создания ядра Linux?”

От верхней…

  • make компилирует и связывает образ ядра. Это один файл с именем vmlinuz .
  • make modules компилируют отдельные файлы для каждого вопроса, на который вы ответили M во время конфигурации ядра. Объектный код связан с вашим недавно построенным ядром. ( vmlinuz на вопросы Y , они уже являются частью vmlinuz , а для ответов на вопросы N они пропущены).
  • make install устанавливает ваше построенное ядро ​​в /vmlinuz .
  • make modules_install устанавливает ваши модули ядра в /lib/modules или /lib/modules/<version> .

Что касается добавления его в список доступных ядер, об этом заботится загрузчик. Это различно для каждого загрузчика, но grub является наиболее распространенным на x86 и amd64, поэтому я опишу это. На самом деле это довольно просто. Grub смотрит в / , /boot и /lib/modules для любой вещи, которая выглядит как работающее ядро ​​и добавляет его. И да, это упрощенное описание.

Этот дополнительный «ужасный материал» в документации Ubuntu является дополнительным материалом для создания пакета deb . Когда вы делаете это больше, чем самостоятельно, гораздо лучше его упаковать. Вы переключитесь вовремя.

Построение ядра и модулей поддерживается отдельно, потому что для людей, которым необходимо (т.е. разработчиков ядра), они часто вносят изменения только в модуль. Они могут применять свои изменения, перестраивать и устанавливать только модули. Это экономит много времени, когда это нужно делать 20 раз в день. Он никогда не будет обновлен, чтобы make everything команду make everything . Вместо этого запустите make && make modules && make install && make modules_install же, как говорится в документации . Процесс сборки благоприятствует разработчикам ядра, а не вам. И так должно быть.

На самом деле для компиляции ядра практически нет причин, кроме разработчиков ядра или дистрибутивов дистрибутива. Практически в любом случае функция ядра, которую вы хотите, уже была создана для вас и доступна в одном из предварительно упакованных ядер. Есть исключения, но в наши дни они очень редки.

Не то чтобы я обескураживаю вас от создания собственного ядра, я действительно призываю вас это сделать. Я думаю, что создание вашего ядра с нуля – бесценная практика для изучения того, как все работает там. Отчасти, потому что, возможно, однажды вы станете исключением. Но он также учит вас много о процессе ядра и загрузки в целом. Вы станете лучшим человеком для этого.

  • Повторно открыть окна терминала после перезапуска
  • Должен ли я обновить ядро ​​Ubuntu 12.04
  • eth: ошибка при получении информации об интерфейсе: устройство не найдено
  • Установка драйверов в ubuntu
  • Как я могу переделать текстовый дистрибутив Linux?
  • Не удалось выполнить ssh в Ubuntu 12.04 LTS [не удалось разрешить имя хоста (имя хоста): имя или услуга неизвестны
  • badblocks и «end_request: ошибка ввода-вывода» на выходе
  • nginx: не удалось создать referer_hash, вы должны увеличить referer_hash_bucket_size: 64
  • Изменение частоты выборки в ALSA
  • Как создать загрузочную ручку usb для любого дистрибутива linux с помощью терминала
  • Как обеспечить программное обеспечение на нескольких ноутбуках
  • Linux и Unix - лучшая ОС в мире.