В чем разница между Src версии 3. * и 3. * - универсальный

10

В моем локальном Linux / Ubuntu у меня есть две директории для Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

Я обнаружил, что код в 3.16.0 намного больше, чем в 3.16.0-generic. Мне интересно, почему и как эти два каталога отличаются (и что они представляют?)

Ричард
источник

Ответы:

1

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

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

Первый каталог /usr/src/linux-headers-X.X.XX-XXсодержит файлы заголовков для нескольких архитектур, включая x86, amd64, powerpc и другие, что приводит к увеличению количества файлов и увеличению размера пакета.

/usr/src/linux-headers-X.X.XX-XX-genericПохоже, что другой каталог в основном содержит исходные коды, относящиеся к архитектуре x86, предназначенной для локальной установки.

Соответствующий пакет намекает в описании, например:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

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

Связанный: Что содержит дерево исходного кода ядра? Это связано с заголовками ядра Linux?

Расширенный ответ (2015.07.30)

так как оба хранят x86связанный код, какая разница между x86кодом в двух каталогах? - Ричард 29 июля 15 в 19:11

Большинство каталогов и файлов, содержащихся в них, /usr/src/linux-headers-X.X.XX-XX-genericявляются символическими ссылками, которые указывают на фактические каталоги и файлы в /usr/src/linux-headers-X.X.XX-XX. Другими словами, arch/x86в этих двух каталогах есть только различие между реальными и символическими ссылками, с некоторыми оставшимися файлами asmзаголовков в *-genericаналоге.

Между этими двумя пакетами можно заметить еще одно существенное отличие - наличие каталогов configи generatedкаталогов *-generic.

В моем лучшем понимании, я бы подумал, что *-genericкаталог содержит необходимые заголовочные файлы для настройки и компиляции модулей, относящихся к x86архитектуре, без внесения случайных изменений в исходный каталог linux-headers-x.x.xx-xx.

Прежде всего, эти два каталога, вероятно, являются «чистым» подходом к упаковке и компиляции пакетов на соответствующих платформах. Хотя я не в состоянии уточнить этот вопрос.


Примечание ответчика : я написал этот ответ наивно в то время - не уверен, что правильно или неправильно - и между ними может отсутствовать какое-то объяснение. Следовательно, этот ответ теперь является вики сообщества, так что любой человек с минимальной репутацией может улучшить этот пост, чтобы полностью объяснить разницу.

клиаркимура
источник
так как оба хранят x86связанный код, какая разница между x86кодом в двух каталогах?
Ричард
@Richard Я обновил свой ответ, как указано выше, насколько мне известно, настолько простым, насколько это возможно. Мой ответ может показаться наивным, поэтому вы можете захотеть найти лучший ответ от кого-то другого.
Clearkimura