Понимание инициализации ядра с точки зрения qemu

Я пытаюсь создать минималистскую настройку для виртуальной машины на основе ARM, используя qemu. Я следую этому руководству, чтобы сделать это.

Однако, следуя этому руководству, я ничего не увидел на консоли QEMU, так как считаю, что мы не передавали console= параметр для ядра. Итак, моя модифицированная команда вызова qemu выглядит так:

qemu-system-arm -M vexpress-a9 -dtb ./linux-4.20.8/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -kernel ./linux-4.20.8/arch/arm/boot/zImage -initrd rootfs.img --append "root=/dev/ram rdinit=/sbin/init console=ttyAMA0" --nographic

Однако я все еще получаю следующие предупреждения (ошибки??) при загрузке:

mount: you must be root
mount: you must be root
mdev: /sys/dev: No such file or directory
can't open /dev/tty3: No such file or directory
can't open /dev/tty2: No such file or directory

Я попытался создать мягкую ссылку на неиспользуемые консольные устройства, чтобы dev/null вроде так на корневом терминале ВМ ака

ln -sf /dev/null /dev/tty2

но это не останавливает эти раздражающие предупреждения. Кроме того, я не могу понять, почему не работают команды монтирования?

Может ли кто-нибудь, пожалуйста, подробно описать эти (я считаю общие) проблемы. Кроме того, когда я пытаюсь поместить rootfs в файл ext3, смонтированный в цикле, а затем использовать его как -hda он даже не находит /sbin/init файл. Я делаю корень setuid как предложено

sudo chmod u+s ./bin/busybox

но это, похоже, совсем не помогает

Я в полной растерянности и вцепился в соломинку. Может ли кто-нибудь рассказать о настройке?

Может ли кто-нибудь указать мне на статью / блог, в котором помимо упоминания о том, как, а также говорится, почему мы делаем то, что делаем. Я был бы очень благодарен

0 ответов

В соответствии с вашими инструкциями в командной строке ядра (rdinit) ядро ​​Linux запускает / sbin / init после загрузки в качестве первого пользовательского процесса.

Тот, который обычно настраивается с помощью Busybox (есть несколько вариантов), будет читать файл конфигурации с именем / etc / inittab и действовать в соответствии с тем, что там написано.

Выполнение /etc/init.d/rcS, если вообще выполняется, выполняется из этого файла.

Трудно точно определить, что происходит, но для начала взгляните на / etc / inittab. Возможно, он уже монтируется / proc.

По крайней мере, я предполагаю, что ошибки, связанные с / dev / ttyy, происходят из директив в этом файле и могут быть отключены путем его редактирования.

Другие вопросы по тегам