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

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

Контекст:

В настоящее время я использую Ubuntu 11.10 с основным ядром (сейчас 3.2 rc6), чтобы лучше поддерживать мой IGP с песочным мостом (ноутбук 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 его не предоставляет. Не говоря уже о том, что я многому научился в процессе ^^

6 ответов

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

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

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

Вот конкретные инструкции о том, как скомпилировать ядро ​​для 11.10 (хотя вы бы делали это из дерева исходных текстов 3.2, поэтому некоторые вещи могут отличаться).

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

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

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

    git clone https://github.com/torvalds/linux.git
    
  2. Посмотрите на последнее основное ядро ​​(на сегодняшний день http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.2-rc6-precise/). Существует три файла исправлений (0001-base-packaging.patch, 0002-debian-changelog.patch, 0003-default-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-адресах, которые я упомянул выше, для настройки и сборки пакетов из вашего ядра. Надеюсь, это также создаст пакет с исходным кодом ядра.

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

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, они не жалуются.

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

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

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

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

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

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

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

Основное ядро ​​в ppa не исправлено

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

Ubuntu wiki MainlineBuilds

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

Итак, для начала, вы не найдете его в репозитории deb, потому что он будет изменен (Debian или Ubuntu).

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

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