Где / какой фактический источник ядра?
Я следую за этим, чтобы научиться компилировать ядро. я использовал
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 $
3 ответа
Из вики 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
# ...
Корень вашего дерева ядра - это каталог linux-lts-vivid-3.19.0
,
О других файлах:
В тарболе linux-lts-vivid_3.19.0.orig.tar.gz
вы можете найти "ванильное" ядро, выпущенное в апстриме; к этому ядру разработчики Ubuntu добавили патчи, драйверы, изменили вещи, которые собираются в diff
который сжат в linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
,
Хммм. Когда вы запускаете команду
apt-get source linux-image-`uname -r`
команда должна автоматически извлечь исходные архивы и исправить их, чтобы создать каталог, названный в честь вашего ядра. В вашем случае это выглядит так, как будто оно называется 'linux-lts-vivid-3.19.0' - оно есть в вашем списке каталогов.
Итак, это исходный каталог, вы должны запустить:
cd linux-lts-vivid-3.19.0
а затем продолжайте следовать инструкциям