Как проверить, запускается ли / init / etc / inittab - PullRequest
0 голосов
/ 23 января 2019

У меня есть встроенная система ARM с процессором AT91SAM9G45.

Система состоит из двух компонентов:

  1. Ядро Linux (4.14.79)
  2. Busybox 1.29.3 как образ initramfs.

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

Когда ядро ​​запускается, все идет хорошо.Ядро распаковывает образ initramfs, все файлы найдены и перечислены (я вижу это по сообщениям отладки).Но когда он запускается / init, сообщения журнала:

Freeing unused kernel memory: 384K
This architecture does not have kernel memory protection.
run_init_process BEFORE /init
run_init_process AFTER /init, result = 0
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004

/ init - это символическая ссылка на / bin / busybox.Я попытался заменить / init на / sbin / init, / bin / busybox, / linuxrc, но результаты те же.

/ etc / inittab file:

# Begin /etc/inittab

id::initdefault:

si::sysinit:/etc/init.d/rc S

#l0::wait:/etc/rc.d/init.d/rc 0
#l1::wait:/etc/rc.d/init.d/rc 1
#l2::wait:/etc/rc.d/init.d/rc 2
#l3::wait:/etc/rc.d/init.d/rc 3
#l4::wait:/etc/rc.d/init.d/rc 4
#l5::wait:/etc/rc.d/init.d/rc 5
#l6::wait:/etc/rc.d/init.d/rc 6

ca::ctrlaltdel:/sbin/shutdown -t1 -a -r now

su::once:/sbin/sulogin

1::respawn:/sbin/getty ttyS1 115200
2::respawn:/sbin/getty ttyS2 115200
3::respawn:/sbin/getty ttyS3 115200
4::respawn:/sbin/getty ttyS4 115200
5::respawn:/sbin/getty ttyS5 115200
6::respawn:/sbin/getty ttyS6 115200

# End /etc/inittab

/ etc /Файл init.d / rcS (разрешено выполнение этого файла):

#!/bin/busybox sh
echo "Hello world!"

Я не знаю, запускается ли хотя бы / init процесс синтаксического анализа / etc / inittab или он падает до получения / etc / inittabнекоторые причины, которые я не могу выяснить.Возможно, в моих файлах / etc / inittab и /etc/init.d/rcS есть ошибки.Возможно, есть некоторые ошибки с терминалом (/etc/init.d/rcS не может записать в стандартный вывод, потому что он заблокирован, приостановлен, используется другим процессом и т. Д.).

Как точно убедиться, что / etc / inittab запущен?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

/ init - это символическая ссылка на /bin/busybox.

Типичный файл / init в initramfs, созданный Buildroot и включающий Busybox, представляет собой скрипт из семилинии:

#!/bin/sh
# devtmpfs does not get automounted for initramfs
/bin/mount -t devtmpfs devtmpfs /dev
exec 0</dev/console
exec 1>/dev/console
exec 2>/dev/console
exec /sbin/init $*

Обратите внимание на комментарий («devtmpfs не получает автомонтирование для initramfs») и команду mount для / dev .

/ sbin / init (а не / init ) связан с / bin / busybox .

IOW без правильной настройки каталога / dev пользовательская область не имеет возможности ввода / вывода.
Только после монтирования devtmpfs программа init может быть установленав Busybox будет выполнен, который затем получит доступ к / etc / inittab .

См. Есть ли способ заставить Linux рассматривать initramfs как финальныйкорневая файловая система?
и
Сделать применение CONFIG_DEVTMPFS_MOUNT к initramfs / initmpfs

0 голосов
/ 23 января 2019

Добро пожаловать в StackOverflow. Я вижу, что есть пространство между rc и S si::sysinit:/etc/init.d/rc S

изменить на

si::sysinit:/etc/init.d/rcS

Дайте мне знать, если это работает.

...