Как мне получить исходный код ядра?

25

Я планирую написать некоторые драйверы устройств, и мне нужно получить исходный код ядра Linux. Моя версия ядра Linux - 3.2.0-23-generic-pae, и я скачал образ с этого . Во многих статьях, которые я читал, говорится, что мне нужно иметь все дерево ядра, чтобы начать вставлять новые модули.

Достаточно ли этого, если я скачаю это изображение и вставлю его в usr/src/папку, или мне придется сделать что-то еще?

научно-консультативный комитет
источник
1
Обычно я просто устанавливаю пакет 'linux-source' из synaptic, когда настраиваю компиляцию для одной из моих машин, но если вы занимаетесь разработкой, вам может потребоваться самая последняя версия. Эта ссылка может быть полезна для вас: help.ubuntu.com/community/Kernel/Compile
Марк Паскал

Ответы:

27

Это получит исходный код ядра:

apt-get source linux-source

Вы можете проверить, какая версия ядра работает следующим образом:

uname -r

Который напечатает что-то вроде:

3.13.0-46-generic

Вы можете найти список текущих версий пакетов с исходным кодом, доступных в вашей системе, через:

apt-cache search linux-source

Чтобы получить исходную версию ядра:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

В приведенной выше ссылке «верный» - это кодовое название версии Ubuntu. Вы можете узнать кодовое название для версии Ubuntu, которую вы установили через:

cat /etc/lsb-release
Брайс
источник
Если я использую git для клонирования, как мне указать версию. Кроме того, если я Clone это его достаточно , если я копирую Pâte его в ЕГР / SRC папки
Саб
Этот репозиторий git хранится специально для 3.2.0; это соответствует тому, что есть в Ubuntu Precise (12.04). Если вы хотите другую версию, измените ubuntu-precision.git на ubuntu-quantal.git или любую другую. Это должно быть хорошо просто скопировать в usr / src.
Брайс
Хорошо. Спасибо. Но как вы нашли эту ссылку?
Саб
Нашел его на wiki.ubuntu.com/KernelTeam/GitKernelBuild
Брайс
И где я могу найти дерево исходных текстов при установке с ... Черт, мне лучше читать. Ответ говорит, что apt-get sourceнет apt-get install. Чем исходное дерево окажется в вашем текущем пути .
Pro Backup
8
apt-get source linux

это самый простой способ. Он загрузит исходный код из вашего репозитория - и будет совпадать с версией, которую вы используете (если вы еще не настроили ее).

Но если вы хотите узнать, где находится источник, вы можете запустить:

apt-cache showsrc linux

Найдите атрибут «Vcs-» (Система контроля версий). Обычно это будет git (Vcs-Git) или ртутный репозиторий.

Обратите внимание - эти команды работают с любым пакетом. Просто замените 'linux' на интересующий вас пакет. Также обратите внимание, что 'apt-get source' не нуждается в доступе sudo и сбросит исходный код в ваш текущий каталог.

Брендан МакГрат
источник
Для этого требуется, чтобы загружаемая машина соответствовала целевой машине. Действительно работает только если у вас есть сеть. У большинства читателей, приземляющихся на этой странице, не будет сети (поэтому они вдруг нуждаются в источнике). Мне это нужно как тарбол на флеш-накопителе, и у меня нет подходящей рабочей силы.
Маккензм
Это только загрузило linux-заголовки в /usr/src- не полный исходный код ядра - в Ubuntu 16.04
Pierz
4

Скачать исходный код прямо с Launchpad

Как ни странно, все рекомендуют, apt-get source что не работает большую часть времени, если вы ищете конкретную версию ядра:

Скажем, вам нужен исходный код ядра для 3.19.0-58:
apt-get source linux-image-3.19.0-58-genericвы получите исходный код для самого последнего ядра из серии: в данном случае 3.19.0-80, а это не то, что вы просили.

Итак, у вас есть два варианта:

1) Откажитесь, установите ядро ​​3.19.0-80 и используйте apt-get source

2) Получить источник прямо из панели запуска:

связи

  • Поместите их в новый каталог, распакуйте с dpkg-source -x *.dsc

Заметки:

  • Должен быть лучший способ.
  • Вы можете получить нужную версию из git, но вам нужна большая загрузка. См. «Получение исходных текстов ядра для выпуска Ubuntu с использованием git» в Исходном коде ядра Ubuntu Wiki .
lemonsqueeze
источник
Спасибо, что объяснили это так ясно. Тем не менее, я все еще не могу найти источник для linux-image-4.15.0-39-generic. Этот процесс излишне сложен. Я попробовал поискать в Google, но я продолжаю находить пакеты размером всего в несколько килобайт. Какие-нибудь советы?
забывает
3

Просто выберите один из:

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

Если вам предлагают указать URL-адреса «источников» в вашем файле sources.list, отредактируйте /etc/apt/sources.listфайл и раскомментируйте нужную deb-srcстроку, например (если вы используете Xenial):

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

Удаление #последней строки позволяет загружать репозитории исходных кодов, включая исходные коды ядра.

Примечания:

  • Использовать современные инструменты; избежать apt-get.
  • Эти команды загружают исходный код вашего текущего ядра (в моем случае, 4.4.0-75-genericнапример).
  • При загрузке в системный каталог файлы сохраняются в /usr/src/linux-source-4.4.0/(например).
Тим
источник
У меня не работает (но не версия apt-get). Я использую Ubuntu 16.04.4, ядро ​​4.4.0-98-generic. В нем говорится: «Вы должны поместить некоторые« исходные »URI в ваш sources.list». Я понятия не имею, как это сделать.
Эндрю Бейнбридж
@AndrewBainbridge Я добавил информацию об этом. Это нормально для тебя сейчас?
Тим
Да, спасибо. Это был глупый комментарий от меня. Мне нужно было только погуглить сообщение об ошибке. В любом случае, воздержитесь от ваших усилий.
Эндрю Бейнбридж