Как собрать основной пакет исходного кода ядра?
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.
Возможно, мне не нужен полный исходный код, но я все же хотел бы попробовать установить его, чтобы посмотреть, решит ли он мою проблему.
Что я пробовал:
- Распаковка исходного архива kernel.org в
/usr/src/
, ДКМС все еще жалуется. - Вручную обновите исходный пакет ядра с помощью uupdate и основного пакета исходного кода, как описано здесь. Не удалось.
- Сборка пакета linux-source вручную, следуя инструкциям @roadmr и @elmicha. В конце концов мне удалось построить его, но DKMS все еще жаловался на отсутствующий источник.
- Наконец я заметил ошибку, которую я не уловил в первую очередь при переустановке заголовков ядра. Появляется.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 /, в котором находятся управляющие файлы, которые позволяют вам собирать пакет. Это не большая проблема, хотя; легко получить пакетируемое исходное дерево:
Получить основное дерево ядра
git clone https://github.com/torvalds/linux.git
Посмотрите на последнее основное ядро (на сегодняшний день http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.2-rc6-precise/). Существует три файла исправлений (0001-base-packaging.patch, 0002-debian-changelog.patch, 0003-default-configs.patch). Загрузите эти три файла.
Перейдите в новый каталог с исходным кодом 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.
Когда вы говорите mainline, я понимаю, что вы хотите неизмененное / официальное ядро.
Итак, для начала, вы не найдете его в репозитории deb, потому что он будет изменен (Debian или Ubuntu).
Вот ссылка о том, как это сделать: http://blog.avirtualhome.com/compile-mainline-kernel-ubuntu/ Вот ссылка, показывающая, как скомпилировать ядро 3.6: http://blog.avirtualhome.com/linux-kernel-3-6-on-ubuntu/