
Я слежуэтотчтобы научиться компилировать ядро. Я использовал
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
и затем продолжайте следовать инструкциям