Рейтинг:0

Не удается скомпилировать ядро ​​Ubuntu для AMD64 из исходного кода GIT

флаг it

Мне нужно протестировать LKM, используя несколько старых версий ядра, которые я должен взять из GIT.

На основе вики-страниц Ubuntu BuildYourOwnKernel и ЯдроGitGuide Я следую следующему рецепту:

$ git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/<серия> <серия>
$ cd <серия>
$ git тег -l Ubuntu-*
$ git checkout Ubuntu-v.w.x-y.z
$ LANG=C fakeroot debian/правила чистые
$ LANG=C fakeroot debian/rules бинарные-заголовки бинарный-общий бинарный-перарх

Это работало со многими версиями ядра, которые я тестировал, в том числе более ранними, чем Ubuntu-2.6.32-418.35. Однако я столкнулся со следующей странной ошибкой.

$ dpkg --print-архитектура
amd64

$ git clone git://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/maverick maverick

$ компакт-диск индивидуалист

Тег $ git -l Ubuntu-2.6.32-418.35*
Убунту-2.6.32-418.35

$ Git проверить Ubuntu-2.6.32-418.35

$ LANG=C fakeroot debian/правила чистые

$ LANG=C fakeroot debian/rules бинарные-заголовки бинарный-общий бинарный-перарх
...
dpkg-gencontrol: ошибка: текущая архитектура хоста «amd64» не отображается в списке архитектуры пакета (armel)

Видеть журнал для полного вывода и дополнительной системной информации.

У меня есть несколько вопросов:

  • мерзавцы Ubuntu-v.w.x-y.z теги ограничены одной/некоторыми конкретными арками? В этом случае представляется Убунту-2.6.32-418.35 тег поддерживает только армель.
  • Если да, то есть ли способ узнать заранее, какой Ubuntu-v.w.x-y.z поддержка тегов amd64?
  • Есть ли способ изменить конфигурацию ядра для компиляции? Убунту-2.6.32-418.35 за amd64. Я пытался LANG=C fakeroot debian/rules editconfigs но похоже конфиг руки и в списке систем нету i386/amd64. В корневом каталоге нет файла .config, и вы не знаете, как правильно это сделать, когда вы компилируете ядро, используя дебиан/правила. Есть ли способ изменить его для конфигурации x86? как?

Спасибо

paladin avatar
флаг kr
`dpkg-gencontrol: ошибка: текущая архитектура хоста 'amd64' не отображается в списке архитектуры пакета (armel)`, вы загрузили неправильный исходный код (вам нужен исходный код amd64, а не исходный код armel).
David avatar
флаг cn
Также обратите внимание, что эти старые ядра не используются ни в одной из текущих поддерживаемых версий Ubuntu и поэтому здесь не по теме.
флаг it
@ Дэвид не поддерживается .. что? :) Это НЕ система тикетов Ubuntu, и это определенно НЕ отчет об ошибке. Я (очевидно) делаю что-то не так, поэтому и прошу помощи
флаг it
@paladin загрузил неправильный исходный код? Не могли бы вы уточнить это? Насколько я знаю, нет такой вещи, как исходный код «amd64». Что вы имеете в виду? В ядре Linux все архитектуры находятся в одном и том же исходном коде.
paladin avatar
флаг kr
Уважаемый @Tavo, программирование ядра на низком уровне (то есть на ассемблере) различается для каждой архитектуры ЦП. Поэтому вам нужно использовать правильный исходный код для вашей архитектуры процессора. Пожалуйста, посмотрите здесь -> https://github.com/torvalds/linux/tree/master/arch
флаг it
@paladin, нет ... это уже в дереве исходного кода ядра. Больше ничего скачивать не нужно. Если вы перейдете по ссылке, которую я использую выше для клонирования репозитория, вы найдете каталог arch со всеми архитектурами. См. https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/maverick/tree/arch. В `x86` указан код как для 32-битной, так и для 64-битной версии. Основное ядро ​​берет арку из .config. Но когда вы компилируете ядро ​​в стиле Ubuntu/Debian, как и в этом посте, все меняется.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.