Як отримати вихідний код ядра?


25

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

Чи достатньо, якщо я завантажую це зображення і вставляю його в usr/src/папку, чи потрібно щось інше робити?


1
Зазвичай я просто встановлюю пакет "linux-source" із синаптики, коли я користувачу компілюю для однієї з моїх машин, але, враховуючи, що ви займаєтеся розробкою, вам може знадобитися остання версія. Це посилання може бути вам корисним: 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 для клонування, як вказати версію. Також якщо я клонуюсь, цього достатньо, якщо я скопіюю паштет у папку usr / src
субота,

Цей git сховище зберігається до 3.2.0 спеціально; з цього випливає, що є в Ubuntu Precision (12.04). Якщо ви хочете іншу версію, змініть ubuntu-preci.git на ubuntu-quantal.git або будь-яку іншу. Добре просто скопіювати в usr / src.
Брайс

Добре. Дякую - Але як ви знайшли це git-посилання?
Субень


І де я можу знайти дерево-джерело при установці з ... Чорт, я повинен прочитати краще. Відповідь говорить, що apt-get sourceні apt-get install. Тоді вихідне дерево опиниться у вашому поточному шляху .
Pro резервне копіювання

8
apt-get source linux

це найпростіший спосіб. Він завантажить джерело з вашого сховища - і воно буде таким самим, як і запущена версія (якщо припустити, що ви його ще не налаштували).

Але якщо ви хочете знайти, де підтримується джерело, можете запустити:

apt-cache showsrc linux

Шукайте атрибут 'Vcs-' (система управління версіями). Зазвичай це буде git (Vcs-Git) або рядовий сховище.

Примітка - ці команди працюють з будь-яким пакетом. Просто замініть "linux" на пакунок, який вас цікавить. А також зауважте, що "apt-get source" не потребує доступу до sudo, і він скидає джерело у поточну каталог.


Для цього потрібна машина, яку ви завантажуєте, щоб відповідати цільовій машині. Дійсно працює лише за наявності мережі. Більшість читачів, які розміщуються на цій сторінці, не матимуть мережі (звідси для них раптом потрібне джерело). Мені він потрібен як тарбол на палець, і я не маю працюючого підходу.
mckenzm

Це завантажило лише заголовки linux /usr/src- не повне джерело ядра - на Ubuntu 16.04
П'єрз

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 .

Дякую, що ви так чітко пояснили це. Однак я все ще не можу знайти джерело для linux-image-4.15.0-39-generic. Цей процес непотрібно складний. Я пробував гуглінг для цього, але я продовжую знаходити пакети, які мають лише кілька кілобайт. Якісь поради?
забудьте

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 у своєму source.list". Я поняття не маю, як це зробити.
Ендрю Бейнбрідж

@AndrewBainbridge Я додав інформацію про це. Це для тебе зараз добре?
Тім

Так дякую. Це був дурний коментар від мене. Мені потрібно було лише гугл повідомлення про помилку. У будь-якому разі, ви знайдете нагороду за свої зусилля.
Ендрю Бейнбрідж
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.