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

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

Системы могут иметь до 128 ядер, и в моем первоначальном тестировании с 32 ядрами я могу скомпилировать очень быстро – это время для make -j32 для Linux 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 

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

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

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

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

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

make modules_install

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

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

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

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

Рами Розен

Вы должны скомпилировать ядро ​​на локальном и скомпилированном ядре как пакет .deb / .rpm и установить на удаленном компьютере. Как вы установили двоичное ядро ​​из репозиториев.