Где/какой фактический исходный код ядра?

Где/какой фактический исходный код ядра?

Я слежуэтотчтобы научиться компилировать ядро. Я использовал

apt-get source linux-image-$(uname -r)

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

После выполнения указанной выше команды были загружены следующие файлы (и каталоги).

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

втакой жестранице упоминается:

Сборка ядра довольно проста. Измените рабочий каталог на корень исходного дерева ядра, а затем введите следующие команды:

Но я не уверен, что является «корнем дерева исходных кодов ядра».

Это текущий каталог (куда я запустил apt-get source ...и где у меня находятся перечисленные выше файлы)?

Или это каталог:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

или мне следует извлечь тарболл

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

Вывод для uname -r:

user $ uname -r
3.19.0-30-generic
user $ 

решение1

ИзВики Debian:

Исходные пакетыпредоставить вам все необходимые файлы для компиляции или, иными словами, сборки желаемого программного обеспечения.

В простейшем виде он состоит из трех файлов:

  • Восходящий tarball с.tar.gzокончание

  • Файл описания с окончанием .dsc. Он содержит имя пакета, как в имени файла, так и в содержимом (после ключевого слова Source:).

  • Архив tar со всеми изменениями, внесенными в исходный код основной ветки разработки, а также со всеми файлами, созданными для пакета Debian.

    • Это имеет.debian.tar.gz(исходный формат: 3.0)
    • или.diff.gzокончание (исходный формат: 1.0)

То же самое касается и Ubuntu, а в вашем случае:

  • "linux-lts-vivid-3.19.0": фактическое ядро, исправленный, начиная с исходного tar-архива "linux-lts-vivid_3.19.0.orig.tar.gz" с изменениями, перечисленными в "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz";
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz": tarball со всеми изменениями, внесенными в исходный код основной ветки разработки, а также со всеми файлами, созданными для пакета Debian;
  • "linux-lts-vivid_3.19.0-30.34~14.04.1.dsc": файл описания, заканчивающийся на ".dsc". Он содержит имя пакета, как в имени файла, так и в содержимом (после ключевого слова Source:);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": tar-архив исходной ветки с окончанием ".tar.gz" (помните, что по моему опыту это не всегда файл ".tar.gz", он может быть в немного других форматах, например ".tar.xz");

При запуске apt-get source linux-image-$(uname -r)исходный tar-архив автоматически исправляется с помощью изменений, перечисленных в "linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz" в "linux-lts-vivid-3.19.0":

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

решение2

Корнем дерева ядра является каталог linux-lts-vivid-3.19.0.

О других файлах:

В tarball linux-lts-vivid_3.19.0.orig.tar.gzвы можете найти «ванильное» ядро, выпущенное в апстриме; к этому ядру разработчики Ubuntu добавили патчи, драйверы, изменили некоторые вещи, которые собраны в , diffкоторый сжат в linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

решение3

Хм. Когда вы запускаете команду

apt-get source linux-image-`uname -r`

команда должнаавтоматическиИзвлеките исходные tarballs и исправьте их, чтобы создать каталог, названный в честь вашего ядра. В вашем случае, похоже, он называется 'linux-lts-vivid-3.19.0' - он есть в вашем списке каталогов.

Итак, это исходный каталог, вам следует запустить:

cd linux-lts-vivid-3.19.0

и затем продолжайте следовать инструкциям

Связанный контент