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

8

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

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 $ 
СФС
источник

Ответы:

8

Из вики Debian :

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

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

  • Верхний тарбол с окончанием .tar.gz

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

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

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

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

  • "linux-lts-vivid-3.19.0": собственно ядро , исправленное начиная с вышестоящего архива "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": архив с любыми изменениями в исходном коде плюс все файлы, созданные для пакета 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.gz" (учтите, что по моему опыту это не всегда файл ".tar.gz", он может быть немного разные форматы, такие как ".tar.xz");

Когда вы запускаете apt-get source linux-image-$(uname -r), вышестоящий архив автоматически исправляется с помощью изменений, перечисленных в "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
# ...
кос
источник
4

Корень вашего дерева ядра - это каталог 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.

Rmano
источник
4

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

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

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

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

cd linux-lts-vivid-3.19.0

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

Ник Вейч
источник