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

7

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

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

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

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

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

или, если я извлечу tarball

-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 $ 
    
задан sps 16.10.2015 в 07:24
источник

3 ответа

8

Из Debian Wiki :

  

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

     

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

     
  • Верхний tarball с завершением .tar.gz

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

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

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

Для Ubuntu это совершенно то же самое, и в вашем случае:

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

При запуске apt-get source linux-image-$(uname -r) верхний tarball автоматически исправляется с изменениями, перечисленными в «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
# ...
    
ответ дан kos 16.10.2015 в 08:02
источник
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 16.10.2015 в 07:59
4

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

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

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

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

cd linux-lts-vivid-3.19.0

, а затем следуйте инструкциям

    
ответ дан Nick Veitch 16.10.2015 в 08:01