Возникает kernel panic с exitcode = 0x00000004 после запуска /linuxrc (или /init, или /bin/busybox) из рамдиска.
Имеется встраиваемая система с процессором AT91SAM9G45, для которой необходимо собрать ядро linux (в текущий момент версия 4.14.79) и образ файловой системы, которая должна находиться в оперативной памяти.
1. Ядро определенно находит cpio.gz-образ рамдиска, определенно правильно его распаковывает в память и определенно правильно запускает необходимый файл. «Правильно запускает» в данном случае означает, что функция запуска исполняемого файла возвращает ноль, после чего сразу возникает kernel panic. В том случае, если файл не найден, отсутствуют права доступа или он не является исполняемым, функция возвращает другое значение (ненулевое). Все это я выяснил с помощью дебага.
2. Образ файловой системы (rootfs) я компилировал разными способами, как с помощью buxybox, так и с помощью buildroot (который тоже включает в себя busybox). Разницы нет, kernel panic один и тот же. При сборке rootfs и ядра использую кросс-компилятор для ARM.
В чем может быть причина? Какие параметры сборки ядра я мог упустить? Или какие опции командной строки при передаче параметров ядру?
Вывод консоли при запуске ядра выложил в виде скриншота: http://i12.pixs.ru/storage/3/3/4/Snimokekra_4974857_31163334.png
Строчка !!! ramdisk_execute_command 2 /init 0 означает, что был запущен файл /init и функция запуска возвратила 0 (т. е. функция не вернула ошибку). Если бы я передал ядру заведомо несуществующий файл, н-р, /init12vn7dv21er, то строка выглядела бы так: !!! ramdisk_execute_command 2 /init -2, что означало бы, что файл не найден.