Linuxカーネルの起動:/ initを実行できません(エラー-2)。

Linuxカーネルの起動:/ initを実行できません(エラー-2)。

「独自のオペレーティングシステムの作成」の「Busyboxのみを使用して1時間以内に最小Linuxを構築する」チュートリアルを使用して、最小Linuxディストリビューションを作成しようとしています。起動すると、すべてが機能し、次の結果が表示されます。

[    0.187524] Run /init as init process
[    0.187624] Failed to execute /init (error -2)
[    0.187674] Run /sbin/init as init process
[    0.187707] Run /etc/init as init process
[    0.187753] Run /bin/init as init process
[    0.187807] Run /bin/sh as init process
[    0.187872] Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.
[    0.187973] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.18.9 #1
[    0.188032] Call trace:
[    0.188044]  dump_backtrace.part.0+0xcc/0xe0
[    0.188103]  show_stack+0x18/0x6c
[    0.188117]  dump_stack_lvl+0x68/0x84
[    0.188167]  dump_stack+0x18/0x34
[    0.188195]  panic+0x168/0x328
[    0.188215]  kernel_init+0x12c/0x13c
[    0.188262]  ret_from_fork+0x10/0x20
[    0.188279] SMP: stopping secondary CPUs
[    0.188340] Kernel Offset: disabled
[    0.188363] CPU features: 0x000,0000140a,59a49dc8
[    0.188409] Memory Limit: none
[    0.188426] ---[ end Kernel panic - not syncing: No working init found.  Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---

初期化ファイル:

#!/bin/sh
mount -t sysfs sysfs /sys
mount -t proc proc /proc
mount -t devtmpfs udev /dev
sysctl -w kernel.printk="2 4 1 7"
/bin/sh

ベストアンサー1

  1. カーネルがスクリプトを実行できるようにBINFMT_SCRIPTを設定すると、実際にはバイナリではなくINITを実行できます。その後、カーネルはバイナリELF(たとえば/ bin / sh)の実行を許可する必要があるため、「Error 2」の代わりに「Error 8」と表示されます。
  2. BINFMT_ELFも設定する必要があります。

おすすめ記事