Вопрос или проблема
Я пытаюсь загрузить Raspberry Pi 4B с Ubuntu 24.04 по сети. Я скачал
ubuntu-24.04.1-preinstalled-server-arm64+raspi.img.xz
но мне не удалось успешно загрузиться с него. Загрузка останавливается до initramfs, и происходит паника ядра с сообщением о том, что /sbin/init
не найден.
Под руководством моего верного помощника, ChatGPT, я проверил vmlinuz
на загрузочном разделе и обнаружил, что отсутствуют вхождения строк “CONFIG_NFS*”, что говорит о том, что NFS не был скомпилирован. Также его нет в vmlinuz
на корневом разделе. Если это действительно так, то попытка загрузки по сети с NFS обречена на неудачу.
Может ли кто-нибудь это подтвердить? И знает ли кто-нибудь, где можно скачать vmlinuz
с встроенной поддержкой NFS? Я бы очень не хотел собирать свой собственный.
Я вносил изменения в initrd.img
для поддержки NFS, но initrd.img
вообще не вызывается (я знаю это, потому что я получаю точно такую же панику ядра, если убираю ссылку на него из config.txt
).
Ответ или решение
Чтобы понять, почему ваша Raspberry Pi 4B не может загружаться по сети с Ubuntu 24.04, давайте детально разберем задачу и постараемся найти оптимальное решение.
Проблема, с которой вы столкнулись, связана с отсутствием поддержки NFS в текущем ядре Linux, используемом для загрузки Raspberry Pi. Это означает, что попытки загрузить устройство с помощью NFS обречены на неудачу, поскольку ядро не имеет необходимых модулей для этого процесса.
Основные шаги и возможные решения:
-
Проверка конфигурации ядра:
Вы уже установили, что строки "CONFIG_NFS*" отсутствуют в файлеvmlinuz
. Это очевидно подтверждает, что поддержка NFS не включена в ядро. Для загрузки по сети через NFS ядро должно поддерживать NFS-клиента. -
Получение ядра с поддержкой NFS:
К сожалению, если ваше текущее ядро действительно не поддерживает NFS, то вариантов немного. Вы можете попробовать следующие решения:- Скачивание предварительно скомпилированного ядра: Попробуйте найти репозиторий или источник, где доступны сборки ядра с поддержкой NFS для Raspberry Pi. Возможно, кто-то из сообщества уже собрал ядро с необходимыми модулями.
- Компиляция собственного ядра: Если нет готовых решений, придется собрать ядро вручную. Процесс компиляции может быть трудоемким, но вы получите ядро, на 100% соответствующее вашим требованиям.
-
Интеграция initrd.img:
Поскольку вы отметили, чтоinitrd.img
не инициируется, убедитесь, что путь к файлу в конфигурацииconfig.txt
указан правильно. Даже если ядро поддерживает NFS, неспособность использовать initrd может вызвать проблемы. Проверьте:- Правильность путей в
config.txt
. - Корректность начального загрузочного окружения (включена ли загрузка initrd).
- Правильность путей в
-
Альтернативные способы загрузки:
Если проблема продолжает возникать, подумайте о других подходах к сетевой загрузке или об использовании различных протоколов, таких как TFTP, которые могут быть полезны в данной ситуации.
Оптимизация и заключение
SEO-оптимизация вашего запроса может привлечь внимание к вашему вопросу, используя релевантные ключевые слова и фразы, такие как "сетевая загрузка Raspberry Pi", "ядро Linux с поддержкой NFS" и "компиляция ядра для Raspberry Pi". Это поможет в будущем легче найти данное решение людям с аналогичными проблемами.
Резюмируя, проблема с сетевой загрузкой Raspberry Pi связана с отсутствием поддержки NFS в текущем ядре. Рекомендуется поиск предварительно скомпилированного ядра или воспитание ручной сборки с требуемыми настройками.