Сборка нового ванильного ядра - некоторая путаница с производимыми дбами

Итак, я хотел попробовать собрать 2.6.39-4. Я следовал процедуре на странице вики по Ubuntu «GitKernelBuild» .

Короче говоря, скачайте tar.bz2, распакуйте, скопируйте мой старый конфиг, сделайте oldconfig, а затем

fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Все прошло нормально, я сейчас использую это ядро, за исключением одной мелочи: Я не могу собрать другие модули, собрать dkms и т. Д. Далее следует следующая информация:

Созданных файлов deb два:

linux-image-2.6.39.4-custom_2.6.39.4-custom-10.00.Custom_amd64.deb
linux-headers-2.6.39.4-custom_2.6.39.4-custom-10.00.Custom_amd64.deb

Я немного смущен этим.

В обычных ядрах Ubuntu, даже в mainline-ppa, установлены три файла deb. Например, для одного и того же ядра из mainline ppa существуют следующие пакеты:

linux-image-2.6.39-02063904-generic_2.6.39-02063904.201108040905_amd64.deb
linux-headers-2.6.39-02063904-generic_2.6.39-02063904.201108040905_amd64.deb
linux-headers-2.6.39-02063904_2.6.39-02063904.201108040905_all.deb

Как видите, есть два разных пакета заголовков. В самом деле, после их установки основные ppa-пакеты создают каталог в / lib / modules:

/lib/modules/2.6.39-02063904-generic

В этом каталоге существует символическая ссылка, которая указывает на -generic заголовки в / usr / src

/lib/modules/2.6.39-02063904-generic/build -> /usr/src/linux-headers-2.6.39-02063904-generic

В / usr / src для этого ядра существуют две разные директории

/usr/src/linux-headers-2.6.39-02063904-generic
/usr/src/linux-headers-2.6.39-02063904

Теперь вот проблема с моими двумя собственными пакетами:

В / usr / В src есть только одна папка,

/usr/src/linux-headers-2.6.39.4-custom

А в / lib / modules есть папка

/lib/modules/linux-headers-2.6.39.4-custom

Реальная проблема, и причина, по которой я пишу этот пост, заключается в следующем символическая ссылка, которая создается в указанном выше каталоге:

/lib/modules/linux-headers-2.6.39.4-custom/build -> /home/nickped/projects/kernel/linux-2.6.39.4

Как вы можете видеть, она ссылается на каталог, где я собрал ядро ​​- который, конечно, впоследствии мог не существовать. Это приводит к невозможности сборки других модулей (например, vmware, virtualbox и т. Д.), Поскольку он не может найти важные вещи.

Почему это происходит? Как это можно исправить? Почему создаются два, а не три файла deb? Какова цель этих трех различных файлов deb, которые есть в официальных выпусках, и как они могут быть созданы другими?

2
задан 10 March 2014 в 18:24

1 ответ

Отвечать на первый вопрос, Почему там только два пакета? или Почему не там два заголовочных файла? - когда они перекрестные скомпилированный, они упаковываются для обработки каждого варианта использования. Путем разделения заголовков на большее весь пакет и меньший определенный для дуги, Вы сохраняете пропускную способность, выставляющую их пользователям. При выполнении его сами Вам только нужен он для одной дуги, таким образом, один файл заголовков сделает.

Что касается символьной ссылки до Вашего исходного местоположения, у меня была та же проблема. Я не нашел хорошую фиксацию кроме также генерировать a linux_source пакет (просто включают это после kernel_image kernel_headers) и затем зафиксируйте символьную ссылку вручную.

Уже существует на самом деле вопрос все об этой стороне вещей. Долгосрочное решение, кажется, взламывает в сценарии, который бежит за каждой установкой ядра, которая просто ремонтирует symink.

1
ответ дан 2 December 2019 в 05:44

Другие вопросы по тегам:

Похожие вопросы: