Компиляция ядра 5.11.11 и выше

Вопрос или проблема

В Ubuntu 20.04 LTS я компилировал ядро 5.11.11 после добавления нового системного вызова. Я также получаю это с более поздними версиями Ubuntu и ядрами. Во время выполнения команды make произошла следующая ошибка:

make[1]: *** Нет правила для создания цели 'debian/canonical-certs.pem', необходимой для 'certs/x509_certificate_list'.  Остановка.
make: *** [Makefile:1809: certs] Ошибка 2

Если кто-то может помочь, я буду очень признателен, спасибо.

В вашем файле конфигурации ядра вы найдете следующую строку:

CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"

Измените ее на:

CONFIG_SYSTEM_TRUSTED_KEYS=""

В зависимости от вашей структуры исходников вы можете сделать это через командную строку. Примеры:

scripts/config --disable SYSTEM_TRUSTED_KEYS

или

scripts/config --set-str SYSTEM_TRUSTED_KEYS ""

ИЗМЕНЕНИЕ: В стандартную конфигурацию ядра Canonical добавлен другой ключ с момента публикации этого ответа:

CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

Таким образом, с ним также нужно разобраться, чтобы сборка пользовательского ядра завершилась:

scripts/config --disable SYSTEM_REVOCATION_KEYS

Смотрите также заметки по компиляции ядра на основе git.

Что ж, я только что сгенерировал самоподписанный x509 сертификат с общим названием, равным моему имени, поместил ключ и сертификат в один файл и указал обе строки на этот файл. Компилируется идеально, и безопасность должна быть сохранена. Я предполагаю, что он используется для подписи бинарного ядра, и вы можете добавить ваш сертификат в белый список при безопасной загрузке, чтобы позволить вашему ядру загружаться.

openssl req -x509 -newkey rsa:4096 -keyout certs/mycert.pem -out certs/mycert.pem -nodes -days 3650
CONFIG_MODULE_SIG_KEY="certs/mycert.pem"
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS="certs/mycert.pem"
CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
CONFIG_SECONDARY_TRUSTED_KEYRING=y
CONFIG_SYSTEM_BLACKLIST_KEYRING=y
CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""

Я просто выполнил следующие две команды после запуска “make menuconfig”

scripts/config --disable SYSTEM_TRUSTED_KEYS
scripts/config --disable SYSTEM_REVOCATION_KEYS

если во время выполнения команды “make” возникает какой-либо вопрос, связанный с сертификатом, просто нажмите Enter. Вот и все.

Вот решение, которое не требует отключения безопасности 🙂

Из вашего каталога linux (например, /opt/linux-5.13.4):

  1. mkdir debian результат -> /opt/linux-5.13.4/debian
  2. cd certs результат -> /opt/linux-5.13.4/certs
  3. cp canonical.pem ../debian* результат -> /opt/linux-5.13.4/debian/canonical*.pem
  4. cd .. результат -> /opt/linux-5.13.4
  5. make

Ответ или решение

Компиляция ядра 5.11.11 и более поздних версий в Ubuntu

При компиляции ядра Linux, особенно версии 5.11.11 и более поздних, на системе Ubuntu 20.04 LTS и других версиях могут возникать проблемные ситуации. Одной из таких проблем является ошибка, указывающая на отсутствие правила для создания целевого файла debian/canonical-certs.pem, необходимого для сборки сертификатов, как показано в следующем сообщении об ошибке:

make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.
make: *** [Makefile:1809: certs] Error 2

Чтобы успешно завершить процесс компиляции, необходимо внести изменения в конфигурацию ядра. В этом документе мы рассмотрим шаги, которые помогут вам устранить данную ошибку.

Шаги для решения проблемы

  1. Изменение конфигурации ядра

    Вам нужно изменить конфигурацию, указав, что система не должна использовать отсутствующий файл сертификата. Найдите следующую строку в вашем конфигурационном файле ядра:

    CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"

    Измените её на:

    CONFIG_SYSTEM_TRUSTED_KEYS=""

    Это отключит использование доверенных ключей. Альтернативно, вы можете сделать это с помощью командной строки:

    scripts/config --disable SYSTEM_TRUSTED_KEYS

    Также необходимо отключить другую конфигурацию, которая может вызвать проблемы:

    scripts/config --disable SYSTEM_REVOCATION_KEYS
  2. Использование самоподписанного сертификата

    Если вы хотите сохранить всю систему безопасности, можно создать самоподписанный X.509 сертификат и использовать его для подписывания ядра. Для этого выполните команду:

    openssl req -x509 -newkey rsa:4096 -keyout certs/mycert.pem -out certs/mycert.pem -nodes -days 3650

    После этого измените конфигурационные параметры в вашем .config файле на:

    CONFIG_MODULE_SIG_KEY="certs/mycert.pem"
    CONFIG_SYSTEM_TRUSTED_KEYRING=y
    CONFIG_SYSTEM_TRUSTED_KEYS="certs/mycert.pem"
    CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
    CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
    CONFIG_SECONDARY_TRUSTED_KEYRING=y
    CONFIG_SYSTEM_BLACKLIST_KEYRING=y
    CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
  3. Не отключая безопасность

    Если вы хотите подход, который не требует отключения системных защит, выполните следующие шаги:

    • Создайте директорию debian:

      mkdir debian
    • Перейдите в директорию certs:

      cd certs
    • Скопируйте файл сертификата canonical.pem в директорию debian:

      cp canonical.pem ../debian/
    • Вернитесь назад в корневую директорию исходного кода ядра:

      cd ..
    • Запустите компиляцию:

      make

Заключение

Следуя этим инструкциям, вы сможете устранить проблемы, связанные с отсутствующими сертификатами, и успешно скомпилировать ядро Linux версии 5.11.11 и более поздние версии для Ubuntu. Будьте внимательны при работе с системными сертификатами и конфигурацией безопасности, чтобы обеспечить надёжность и безопасность вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...