Intereting Posts
Что произойдет, если мой RAID завершится неудачно, пока на нем будет своп? Vagrant ssh закрывает соединение после выполнения опции -t Сценарий запуска, когда USB-накопитель не подключен, но пользователь не вошел в Ubuntu 18.04 grep для извлечения строк, содержащих полные доменные имена из файла команду для определения портов устройства (например, / dev / ttyUSB0) Как предотвратить прыжок указателя при нажатии сенсорной панели? Второй монитор обнаружил, но не принял сигнал? правильный способ синхронизации источников на freebsd Насколько хорошо AMD Radeon HD 7950 gpu будет работать на Linux? Связывание двух входящих TCP-соединений Является ли / dev / random data псевдо-случайным AES cypher, и откуда берется энтропия? / восстановление домашнего раздела Как я могу заставить японские символы правильно отображаться в Firefox на Arch? cp или rsync, действительно ли CP это стоит? только показать исходный файл и целевой файл с помощью `ls`

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

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

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

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

От верхней…

  • 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 же, как говорится в документации . Процесс сборки благоприятствует разработчикам ядра, а не вам. И так должно быть.

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

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