Компиляция ядра на другой системе

Компиляция ядра на другой системе

Я работаю в Nimbix и имею доступ к некоторым довольно мощным многоядерным системам. Я намерен создать сервис компиляции ядра.

Системы могут иметь до 128 ядер, и в моем первоначальном тесте с 32 ядрами я смог выполнить компиляцию очень быстро — вот время для make -j32Linux 4.8.12:

real    2m16.366s
user    29m18.732s
sys     2m28.616s

На моем ноутбуке Dell Precision 6500 компиляция так и не была выполнена спустя 25 минут.

Мой первый эксперимент — попытка собрать ядро ​​для моей собственной системы (Arch Linux).

Я скопировал каталог bzImage /lib/modulesиз удаленной системы в мою систему.

Теперь, когда я пытаюсь сделать это, mkinitcpioя получаю ошибку:

==> ERROR: '/lib/modules/4.8.14-2-ck-nehalem' is not a valid kernel module directory

(Я взял базовый файл конфигурации ядра из /proc/config.gz - у меня версия ядра ck-nehalem)

Как мне это сделать? Каков общий способ переноса модулей из другой системы в ту, где собран образ initramfs? Можно ли собрать initramfs удаленно?

Немного поинтересовавшись, будет ли такой сервис компиляции ядра полезен для разработчиков и мастеров ядра? Стоимость использования вычислительного кластера составляет около 3$ в час, так что одна компиляция в итоге почти ничего не стоит.

решение1

Поэтому я отвечаю на свой собственный вопрос, возможно, это будет полезно кому-то еще.

Вы определенно можете создать initramfs удаленно, если вы запустите

make modules_install

на удаленной системе - однако, я так и не смог получить образ, содержащий необходимые мне модули - особенно md raido. ,Я не смог создать initramfs, который бы загружал мою систему. Но я думаю, что это можно сделать, если вы явно укажете все модули в mkinitcpio.conf

Некоторые модули, такие как nvidia, также требуют запуска dkms для сборки необходимых модулей.

Если вы копируете модули из /lib/modules/ в локальную систему, вам придется переделать ссылки buildи sourceуказать на каталог, содержащий исходный код ядра Linux — ссылки, созданные на удаленной стороне, будут недействительными.

решение2

Что касается отсутствующих модулей md raid в initramfs - есть также способ открыть файл initramfs и добавить любые необходимые модули, а затем воссоздать новый initramfs на основе оригинального, но включив в этот раз добавленные вами модули. Я делал это в Fedora несколько раз, и я считаю, что это можно сделать и в Arch linux. В качестве альтернативы, возможно, это можно сделать через настройку файла mkinitcpio.conf или с помощью параметра mkinitcpio.

Рами Розен

решение3

Вам следует скомпилировать ядро ​​локально, собрать скомпилированное ядро ​​как пакет .deb/.rpm и установить его удаленно. Так же, как вы установили бинарное ядро ​​из репозиториев.

Связанный контент