/ sbin / init существует, но не может его выполнить (ошибка -13) - PullRequest
0 голосов
/ 10 июня 2018

Я перекомпилирую свой проект (https://github.com/warpme/minimyth2) в rpi3 (aarch64). У меня все компоненты скомпилированы, и сейчас я пытаюсь загрузить его на rpi3.

Я использую тебя-boot скрипт из arm archlinux с замененным образом ядра (Image.gz) и rootfs из моей компиляции

загрузки ядра. Также я вижу, что на консоли ядро ​​монтирует нормально 2-й раздел (мой контент rootfs здесь).

, но позже журнал ядра сообщает:

Starting init: /sbin/init exists but couldn’t execute it (error -13)
Starting init: /sbin/sh exists but couldn’t execute it (error -13)

В соответствии с https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/include/uapi/asm-generic/errno-base.h?h=v4.16.14 «ошибка -13» означает EACCES 13 /* Permission denied */.

Я дважды проверил: оба файлаroot: root и 755 (также их зависимости). Что еще может вызвать EACCES здесь?

Сценарий u-boot выглядит следующим образом:

# Set root partition to the second partition of boot device
part uuid ${devtype} ${devnum}:2 uuid

setenv bootargs console=ttyS1,115200 console=tty0 root=PARTUUID=${uuid} rw rootwait debug loglevel=7 smsc95xx.macaddr="${usbethaddr}"

if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /Image; then
  if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /dtbs/${fdtfile}; then
    if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /initramfs-linux.img; then
      booti ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};
    else
      booti ${kernel_addr_r} - ${fdt_addr_r};
    fi;
  fi;
fi

, поэтому я думаю, что rootfs смонтирован как rw

Если кто-то захочет просмотреть мои файлы, вот содержимое разделов boot и rootfs:

hxxp: //warped.inet2.org/boot.tar.bz2 hxxp: //warped.inet2.org / root.tar.bz2

Подводя итог:

1 \ на этапе монтирования rootfs, ядро ​​говорит:

EXT4-fs (mmcblk0p2): mounted filesystem with ordered data mode. Opts: (null)

2 \ kernel isв состоянии найти init (и выполнить откат к sh из-за неудачного выполнения init), как говорит ядро ​​

Starting init: /sbin/init exists but couldn't execute it (error -13) Starting init: /sbin/sh exists but couldn’t execute it (error -13)

3 \ добавление "rootflags=exec" в командную строку ядра, вызывает монтирование root.

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

Прикрепление моего ядра cfg http://warped.inet2.org/kernel-config.tar.bz2) (пожалуйста, посмотрите linux-4.16.13-arm64-armv8.config)

Может кто-нибудь взглянуть на него и проверить, достаточно ли такой конфигурациисмонтировать rootfs без какого-либо initrd?(для подтверждения: я хочу смонтировать SD-карту ext4 rootfs прямо из образа ядра).

В качестве альтернативы: может ли кто-нибудь предоставить мне минимальную конфигурацию ядра aarch64, достаточную для U-boot rpi3 с общим ядром 4.16 с rootfs на разделе SD ext4 и без какого-либо initrd?

(PS: мой конфиг ядра основан на многоплатформенном ядре archlinux aarch64 и на 99,9% равен плечу archlinux)

(ниже приведен скриншот журнала ядра) загрузочный скриншот

1 Ответ

0 голосов
/ 14 июня 2018

Похоже, проблема была в glibc.Я собираю с 2.17 и, несмотря на это, продается как «первый glibc, поддерживающий aarch64» - это не работает для меня.Обновление glibc до 2.27 решает проблему: -)

Спасибо всем, кто пытался помочь мне с этим!

...