Как собрать основной пакет исходного кода ядра?

PPA ядра Ubuntu предоставляет только пакеты linux-headers * .deb и linux-image * .deb. Как я могу собрать соответствующий пакет linux-source * .deb?

Контекст:

В настоящее время я использую Ubuntu 11.10 с ядром mainline ( 3.2 rc6 сейчас), чтобы получить лучшую поддержку моего IGP Sandybridge (ноутбук Dell E6420 с процессором Intel i5-2520M).

Появляется, я хотел бы установить этот драйвер сенсорной панели , сенсорные панели ALPS плохо поддерживаются (см. Предыдущий отчет об ошибке ссылки), ожидая поддержки восходящего потока в ядре версии 3.3 .

Проблема в том, что DKMS продолжает жаловаться на то, что не может найти полный исходный код ядра:

Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.

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

Что я пробовал:

  1. Распаковка исходного архива kernel.org в /usr/src/. ДКМС все еще жалуется.
  2. Обновление пакета исходного кода ядра вручную с помощью uupdate и основного пакета исходного кода, например , объясняется здесь . Не удалось.
  3. Сборка пакета linux-source вручную, следуя инструкциям @roadmr и @elmicha. В конце концов мне удалось его построить, но DKMS все еще жаловался на отсутствующий источник.
  4. Наконец я заметил ошибку, которую я не уловил в первую очередь при переустановке заголовков ядра. Появляется .deb, который я получил, возможно, был поврежден, загрузка его снова сделала свое дело :) Увы, в то время как DKMS согласилась скомпилировать модуль, в котором я столкнулся с следующей ошибкой , которая, как представляется, уже сообщалась . Эта проблема еще не решена, но я не буду пытаться из-за следующего: в конце концов я решил протестировать точную версию ядра 3.2-rc6 через ppa-файл xorg-edgers, который, по-видимому, исправлен ]: это работает.

Тем не менее, все еще может быть интересно узнать, как собрать основной пакет linux-source, поскольку Ubuntu Kernel Team не предоставляет его. Не говоря уже о том, что я многому научился в процессе ^^

4
задан 23 May 2017 в 15:39

6 ответов

Похож Вы достаточно храбры :) Вы могли попытаться следовать этим инструкциям для создания собственных .deb пакетов из ядра магистрали.

Попытайтесь читать этот общий документ сначала:

https://help.ubuntu.com/community/Kernel/Compile

Вот конкретные инструкции о том, как скомпилировать ядро для 11,10 (хотя Вы сделали бы так от 3,2 исходных деревьев, таким образом, некоторые вещи могут ebd, являющийся отличающимся).

http://blog.avirtualhome.com/2011/10/28/how-to-compile-a-new-ubuntu-11-10-oneiric-kernel/

Теперь, проблема с этими инструкциями, они принимают исходное дерево с debian/каталогом, который является, где файлы управления, которые позволяют Вам создать пакет, находятся. Это не большая проблема хотя; легко получить packageable исходное дерево:

  1. Получите дерево ядра магистрали

    git clone https://github.com/torvalds/linux.git
    
  2. Посмотрите на последнее ядро магистрали (с сегодняшнего дня http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.2-rc6-precise/). Существует три файла исправления (0001 основа packaging.patch, 0002-debian-changelog.patch, 0003 значения по умолчанию configs.patch). Загрузите эти три файла.

  3. Изменитесь на свой свежий новый исходный каталог Linux и примените все 3 патча в порядке:

    patch -p1 <0001-base-packaging.patch
    
    patch -p1 <0002-debian-changelog.patch
    
    patch -p1 <0003-default-configs.patch
    

У Вас теперь будет хороший debian/каталог с упаковочной информацией. Затем можно применить инструкции в этих двух URL, которые я упоминаю выше, чтобы настроить и создать пакеты из ядра. Надо надеяться, это также создаст пакет источника ядра.

5
ответ дан 23 May 2017 в 15:39

Должно быть возможно собрать исходные исходные коды ядра. Если вы уже распаковали его в /usr/src/linux-X.Y:

cd /usr/src/linux-X.Y
# copy the configuration of the running kernel:
cp /boot/config-$(uname -r) .config
make oldconfig
fakeroot make-kpkg --initrd --append-to-version=-custom kernel-image kernel-headers
cd ..
ls -lrt *-custom*deb
# only install the latest *-custom*deb here:
sudo dpkg -i *-custom*deb

, я использую это все время, и хотя у меня установлено несколько пакетов DKMS, они не жалуются.

0
ответ дан 23 May 2017 в 15:39

Когда вы говорите mainline, я понимаю, что вам нужно неизмененное / официальное ядро.

Итак, для начала вы не найдете его в репозитории deb, потому что он будет изменен (с помощью debian или ubuntu).

Вот ссылка о том, как это сделать: http://blog.avirtualhome.com/compile-mainline-kernel-ubuntu/ Вот ссылка, показывающая, как скомпилировать ядро ​​3.6: http://blog.avirtualhome.com/linux-kernel-3-6-on-ubuntu/

0
ответ дан 23 May 2017 в 15:39

Вы можете скачать исходный код с kernel.org

Ядро mainline в ppa не исправлено

По определению сборки ядра mainline сделаны из первичных неизмененных исходных кодов ядра mainline и поэтому не включайте и не должны включать какие-либо исправления или драйверы Ubuntu.

Ubuntu wiki MainlineBuilds

0
ответ дан 23 May 2017 в 15:39

Я решил это, запустив:

sudo apt-get install linux-headers-3.5.0-17-generic

Конечно, вам придется заменить версию ядра версией, которую ищет установщик virtualbox.

0
ответ дан 23 May 2017 в 15:39

Чтобы скомпилировать основное ядро ​​для Ubuntu, вы можете следовать инструкциям, приведенным ниже в моем блоге:

Скомпилировать основное ядро ​​Linux для Ubuntu : подробная пошаговая статья на как скомпилировать и установить собственную версию основного ядра (v3.3) для Ubuntu (Precise).

Linux Kernel 3.6 в Ubuntu : подробная пошаговая статья о том, как скомпилировать и установить собственную версию основного ядра 3.6 для Ubuntu. Это зависит от шагов, выполненных в статье выше.

0
ответ дан 23 May 2017 в 15:39

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

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