Вопрос или проблема
Я создаю образ Yocto для Raspberry Pi CM4 с версией Yocto 5.0 (‘scarthgap’) и соответствующим слоем meta-raspberrypi. Я добавил пользовательский слой, где пытаюсь установить пароль root на “toor” с помощью пользовательского рецепта в “/yocto/mylayer/recipes-core/images/custom-image.bb”.
Содержимое custom-image.bb выглядит следующим образом:
SUMMARY = "Custom image additions"
LICENSE = "MIT"
inherit core-image
inherit extrausers
# Change root pw
EXTRA_USERS_PARAMS = "usermod -p '\$6\$lfNRUJ5VLwiI2b8l\$SK./HnnHZoM19LuCyWO3ex.TuhAm4p.mVwXAkLYndcO7I8RbBCzzyTmow2haQmix07fTH0TM.xiRY6u48.kdX/' root;"
Я создал хешированный пароль, используя следующую команду:
openssl passwd -6 toor
При попытке войти как ‘root’ после сборки образа, я получаю только такой ответ:
raspberrypi4 login: root
Password:
Login incorrect
Дополнительная информация:
Я уже удалил “debug-tweaks” из IMAGE_FEATURES, закомментировав его в local.conf (так как я читал, что “debug-tweaks” создает конфликты при попытке установить пароль root).
Не знаю, имеет ли это значение, но я также устанавливаю следующие пакеты, используя другой пользовательский рецепт:
require recipes-core/images/core-image-minimal.bb
IMAGE_INSTALL += "libstdc++ mtd-utils"
IMAGE_INSTALL += "openssh openssl openssh-sftp-server"
Ответ или решение
Для решения проблемы, описанной в вашем вопросе, необходимо внимательно рассмотреть несколько аспектов процесса настройки пароля root в Yocto. Проблемы с авторизацией, типа "Login incorrect", часто связаны с несоответствиями в хэшировании паролей и их настройках в сборке Yocto. Давайте разберем возможные причины и подходы к их устранению.
Теория
Yocto — это сложная и мощная система сборки, которая позволяет разработчикам создавать полностью кастомизируемые Linux-дистрибутивы для встроенных систем. Система использует BitBake для управления процессом сборки и поддерживает создание индивидуализированных рецептов для добавления пакетов и конфигурации систем.
Для установки пароля пользователя root в Yocto обычно используются классы extrausers
, которые позволяют добавлять или изменять пользователей и их атрибуты, включая пароли. Однако важно следить за форматированием и способом хэширования паролей, так как каждая ошибка может привести к невозможности входа в систему.
Пример
Вы пытаетесь установить пароль пользователя root в вашем Yocto-дистрибутиве, используя хэшированный пароль, сгенерированный через команду:
openssl passwd -6 toor
Вы добавили строку для установки пароля в файл custom-image.bb
:
EXTRA_USERS_PARAMS = "usermod -p '\$6\$lfNRUJ5VLwiI2b8l\$SK./HnnHZoM19LuCyWO3ex.TuhAm4p.mVwXAkLYndcO7I8RbBCzzyTmow2haQmix07fTH0TM.xiRY6u48.kdX/' root;"
Тем не менее, после сборки образа и загрузки на Raspberry Pi, вы сталкиваетесь с проблемой при входе в систему как "root".
Применение
Шаги, которые стоит рассмотреть для устранения этой проблемы:
-
Проверка Хэша Пароля: Убедитесь, что хэш пароля корректно сгенерирован и вставлен в рецепт. Иногда проблема может заключаться в неверно скопированном хэше или экранировании спецсимволов. Проверьте, что хэш содержит корректные символы в нужной последовательности.
-
Проверка Конфигурации Yocto: Убедитесь, что в конфигурационных файлах Yocto нет конфликтующих настроек или параметров, которые могут влиять на настройку пароля. Особенно проверьте, что "debug-tweaks" действительно отключены, так как они могут перезаписывать изменения, вносимые
EXTRA_USERS_PARAMS
. -
Классы и Модули: Убедитесь, что ваши рецепты корректно наследуют нужные классы и включают все зависимости. Например, убедитесь, что класс
extrausers
подключен и функционирует:
inherit core-image
inherit extrausers
-
Проверка Логов: Проверьте логи сборки и загрузки, чтобы увидеть, нет ли дополнительных сообщений об ошибках, связанных с созданием пользователей или авторизацией. Это может дать вам подсказки относительно места проблемы.
-
Минимизация Кода: Если возможно, создайте минимальный тестовый образ без дополнительных пакетов, чтобы проверить, воспроизводится ли проблема в упрощенной среде. Оставьте только необходимые конфигурации для установки root-пароля, чтобы изолировать проблему.
-
Отладка Пароля: Создайте пароль с использованием другого метода или утилиты и проверьте, будет ли новая хэш-функция работать корректно.
Применяя эти шаги, вам удастся диагностировать и, в конечном итоге, устранить проблему с неправильным логином. Если проблема продолжает возникать, возможно, стоит обратиться к документации Yocto или сообществу для получения дополнительной поддержки.