我正在尝试使用 u-boot 启动 beaglebone black。我使用的 microSD 卡分为 3 个分区: 包含 U-boot 映像和内核映像的 FAT 启动分区。 带有根文件系统的 SquashFS 分区 第三个数据分区
内核是 v. 6.1.55(稳定版本之一)。我在我的开发工作站上构建了它,除了位于启动分区上之外,还可以通过 USB 以太网连接通过 tftp 进行 U-boot。
开发工作站还通过nfs向板子提供根FS。
U-boot (v2023.04) 也是在开发工作站上从源代码构建的。它是使用 SquashFS 支持构建的,尽管我不确定是否需要这样做。因为 u-boot 映像本身是从 FAT 分区加载的,而不是 SquashFS 分区。
根 FS 是使用 busybox (v. 1.36.1) 构建的。
使用 nfsroot 启动成功,既可以通过 tftp 加载内核,也可以从 SD 卡本地加载内核,并且我可以在板上的 linux 提示符下使用 busybox 命令。
然后我尝试从 SquashFS 分区启动。我没有更改有关内核或 U-boot 构建的任何内容,仅更改了 u-boot 环境中的内核命令行以从 SquashFS 分区而不是 nfsroot 加载内核:
=> print bootargs
bootargs=console=ttyS0,115200n8 ip=192.168.0.100:::::usb0 g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=08:00:27:E6:75:37 root=/dev/mmcblk0p2 rootfstype=squashfs rootwait
除了与 rootfs 相关的参数之外,这个命令行看起来与我用于从 nfsroot 启动的命令行一模一样,即:
=> print bootargs_nfsroot
bootargs_nfsroot=console=ttyS0,115200n8 root=/dev/nfs ip=192.168.0.100:::::usb0 g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=08:00:27:E6:75:37 nfsroot=192.168.0.1:/home/debian/nfsroot,nfsvers=3,tcp rw
我从 nfsroot 目录制作了一个 rootfs squashFS 映像,然后将其安装在我的开发工作站上,以确保一切正常,特别是 init 文件在那里,一切正常。这些与使用 nfsroot 时起作用的初始化文件相同。
a@a-VirtualBox:~/code$ mksquashfs ./nfsroot rootfs.sqfs -noappend
a@a-VirtualBox:~/code$ sudo mount rootfs.sqfs /mnt
[sudo] password for a:
a@a-VirtualBox:~/code$ ls /mnt
bin dev etc proc sbin sys usr var www
a@a-VirtualBox:~/code$ ls -l /mnt/sbin/
total 0
lrwxrwxrwx 1 a a 14 Sep 29 13:15 halt -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 ifconfig -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 init -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 insmod -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 lsmod -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 modinfo -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 modprobe -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 poweroff -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 reboot -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 rmmod -> ../bin/busybox
lrwxrwxrwx 1 a a 14 Sep 29 13:15 swapoff -> ../bin/busybox
a@a-VirtualBox:~/code$ ls -l /mnt/etc
total 1
drwxr-xr-x 2 a a 26 Sep 29 10:08 init.d
-rw-r--r-- 1 a a 154 Sep 29 12:47 inittab
a@a-VirtualBox:~/code$ cat /mnt/etc/init.d/rcS
#!/bin/sh
mount -t sysfs nodev /sys
mount -t proc nodev /proc
mount -t debugfs debugfs /sys/kernel/debug
mount /dev/mmcblk0p3 /www/upload/files
mount -t tmpfs nodev /var/log
httpd -h /www/
a@a-VirtualBox:~/code$ cat /mnt/etc/inittab
::sysinit:/etc/init.d/rcS
ttyS0::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
a@a-VirtualBox:~/code$
现在,当我尝试从 SquashFS 分区启动时,内核已加载,并且似乎根 FS 也已加载,但内核会出现恐慌,因为它在根 FS 中找不到 init 程序。这是完整的内核日志:
Starting kernel ...
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 6.1.55 (a@a-VirtualBox) (arm-linux-gcc (crosstool-NG 1.25.0.199_36ad0b1) 12.3.0, GNU ld (crosstool-NG 1.25.0.199_36ad0b1) 2.40) #9 SMP Thu Oct 5 09:44:38 CEST 2023
[ 0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[ 0.000000] OF: fdt: Machine model: TI AM335x BeagleBone Black
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] cma: Reserved 16 MiB at 0x9e800000
[ 0.000000] Zone ranges:
[ 0.000000] Normal [mem 0x0000000080000000-0x000000009fefffff]
[ 0.000000] HighMem empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000080000000-0x000000009fefffff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fefffff]
[ 0.000000] CPU: All CPU(s) started in SVC mode.
[ 0.000000] AM335X ES2.1 (sgx neon)
[ 0.000000] percpu: Embedded 16 pages/cpu s34132 r8192 d23212 u65536
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 129666
[ 0.000000] Kernel command line: console=ttyS0,115200n8 ip=192.168.0.100:::::usb0 g_ether.dev_addr=f8:dc:7a:00:00:02 g_ether.host_addr=08:00:27:E6:75:37 root=/dev/mmcblk0p2 rootfstype=squashfs rootwait
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[ 0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[ 0.000000] Memory: 485868K/523264K available (10240K kernel code, 1006K rwdata, 2480K rodata, 1024K init, 276K bss, 21012K reserved, 16384K cma-reserved, 0K highmem)
[ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] trace event string verifier disabled
[ 0.000000] rcu: Hierarchical RCU implementation.
[ 0.000000] rcu: RCU event tracing is enabled.
[ 0.000000] rcu: RCU restricting CPUs from NR_CPUS=2 to nr_cpu_ids=1.
[ 0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[ 0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[ 0.000000] IRQ: Found an INTC at 0x(ptrval) (revision 5.0) with 128 interrupts
[ 0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ 0.000000] TI gptimer clocksource: always-on /ocp/interconnect@44c00000/segment@200000/target-module@31000
[ 0.000002] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
[ 0.000027] clocksource: dmtimer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
[ 0.000404] TI gptimer clockevent: 24000000 Hz at /ocp/interconnect@48000000/segment@0/target-module@40000
[ 0.001681] Console: colour dummy device 80x30
[ 0.001760] Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
[ 0.090506] CPU: Testing write buffer coherency: ok
[ 0.090582] CPU0: Spectre v2: using BPIALL workaround
[ 0.090591] pid_max: default: 32768 minimum: 301
[ 0.090719] LSM: Security Framework initializing
[ 0.090895] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.090916] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[ 0.092365] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[ 0.093576] Setting up static identity map for 0x80100000 - 0x80100078
[ 0.093809] rcu: Hierarchical SRCU implementation.
[ 0.093817] rcu: Max phase no-delay instances is 1000.
[ 0.094469] smp: Bringing up secondary CPUs ...
[ 0.094481] smp: Brought up 1 node, 1 CPU
[ 0.094490] SMP: Total of 1 processors activated (996.14 BogoMIPS).
[ 0.094501] CPU: All CPU(s) started in SVC mode.
[ 0.095289] devtmpfs: initialized
[ 0.108349] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[ 0.108656] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[ 0.108688] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[ 0.110052] pinctrl core: initialized pinctrl subsystem
[ 0.112054] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[ 0.114872] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.115336] audit: initializing netlink subsys (disabled)
[ 0.116478] thermal_sys: Registered thermal governor 'fair_share'
[ 0.116494] thermal_sys: Registered thermal governor 'step_wise'
[ 0.116500] thermal_sys: Registered thermal governor 'user_space'
[ 0.116625] audit: type=2000 audit(0.110:1): state=initialized audit_enabled=0 res=1
[ 0.116655] cpuidle: using governor menu
[ 0.135665] No ATAGs?
[ 0.135689] hw-breakpoint: debug architecture 0x4 unsupported.
[ 0.144938] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[ 1.138390] iommu: Default domain type: Translated
[ 1.138403] iommu: DMA domain TLB invalidation policy: strict mode
[ 1.139752] SCSI subsystem initialized
[ 1.140691] usbcore: registered new interface driver usbfs
[ 1.140746] usbcore: registered new interface driver hub
[ 1.140802] usbcore: registered new device driver usb
[ 1.141126] pps_core: LinuxPPS API ver. 1 registered
[ 1.141135] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
[ 1.141162] PTP clock support registered
[ 1.142695] vgaarb: loaded
[ 1.143004] clocksource: Switched to clocksource dmtimer
[ 1.143555] VFS: Disk quotas dquot_6.6.0
[ 1.143632] VFS: Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 1.204812] NET: Registered PF_INET protocol family
[ 1.205138] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
[ 1.206469] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear)
[ 1.206511] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[ 1.206530] TCP established hash table entries: 4096 (order: 2, 16384 bytes, linear)
[ 1.206574] TCP bind hash table entries: 4096 (order: 4, 65536 bytes, linear)
[ 1.206674] TCP: Hash tables configured (established 4096 bind 4096)
[ 1.206786] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 1.206813] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[ 1.206998] NET: Registered PF_UNIX/PF_LOCAL protocol family
[ 1.208144] RPC: Registered named UNIX socket transport module.
[ 1.208162] RPC: Registered udp transport module.
[ 1.208168] RPC: Registered tcp transport module.
[ 1.208172] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 1.208192] PCI: CLS 0 bytes, default 64
[ 1.209589] Initialise system trusted keyrings
[ 1.210389] workingset: timestamp_bits=14 max_order=17 bucket_order=3
[ 1.218457] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 1.219456] NFS: Registering the id_resolver key type
[ 1.219521] Key type id_resolver registered
[ 1.219529] Key type id_legacy registered
[ 1.219582] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
[ 1.220262] Key type asymmetric registered
[ 1.220279] Asymmetric key parser 'x509' registered
[ 1.220418] io scheduler mq-deadline registered
[ 1.220428] io scheduler kyber registered
[ 1.224984] Serial: 8250/16550 driver, 6 ports, IRQ sharing enabled
[ 1.240091] brd: module loaded
[ 1.247451] loop: module loaded
[ 1.248309] mtdoops: mtd device (mtddev=name/number) must be supplied
[ 1.250934] UDC core: g_ether: couldn't find an available UDC
[ 1.250952] i2c_dev: i2c /dev entries driver
[ 1.251685] cpuidle: enable-method property 'ti,am3352' found operations
[ 1.252076] sdhci: Secure Digital Host Controller Interface driver
[ 1.252085] sdhci: Copyright(c) Pierre Ossman
[ 1.252241] sdhci-pltfm: SDHCI platform and OF driver helper
[ 1.252565] ledtrig-cpu: registered to indicate activity on CPUs
[ 1.253427] Initializing XFRM netlink socket
[ 1.253965] NET: Registered PF_INET6 protocol family
[ 1.255732] Segment Routing with IPv6
[ 1.255801] In-situ OAM (IOAM) with IPv6
[ 1.255904] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[ 1.256751] NET: Registered PF_PACKET protocol family
[ 1.256774] NET: Registered PF_KEY protocol family
[ 1.256876] Key type dns_resolver registered
[ 1.256984] ThumbEE CPU extension supported.
[ 1.256998] Registering SWP/SWPB emulation handler
[ 1.257441] omap_voltage_late_init: Voltage driver support not added
[ 1.258574] Loading compiled-in X.509 certificates
[ 1.291376] platform 44e10800.pinmux: Fixed dependency cycle(s) with /ocp/interconnect@44c00000/segment@200000/target-module@10000/scm@0/pinmux@800/pinmux_clkout2_pin
[ 1.291918] pinctrl-single 44e10800.pinmux: 142 pins, size 568
[ 1.296204] ti-sysc: probe of 44e31000.target-module failed with error -16
[ 1.308751] omap_i2c 4802a000.i2c: bus 1 rev0.11 at 100 kHz
[ 1.312694] ti-sysc: probe of 48040000.target-module failed with error -16
[ 1.322151] gpio gpiochip0: (gpio-0-31): not an immutable chip, please consider fixing it!
[ 1.323282] OMAP GPIO hardware version 0.1
[ 1.334497] omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
[ 1.339091] gpio gpiochip1: (gpio-32-63): not an immutable chip, please consider fixing it!
[ 1.341724] gpio gpiochip2: (gpio-64-95): not an immutable chip, please consider fixing it!
[ 1.359115] sdhci-omap 481d8000.mmc: supply pbias not found, using dummy regulator
[ 1.359545] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[ 1.413026] davinci_mdio 4a101000.mdio: davinci mdio revision 1.6, bus freq 1000000
[ 1.415757] davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
[ 1.416070] cpsw-switch 4a100000.switch: initialized cpsw ale version 1.4
[ 1.416086] cpsw-switch 4a100000.switch: ALE Table size 1024
[ 1.416211] cpsw-switch 4a100000.switch: cpts: overflow check period 500 (jiffies)
[ 1.416226] cpsw-switch 4a100000.switch: CPTS: ref_clk_freq:250000000 calc_mult:2147483648 calc_shift:29 error:0 nsec/sec
[ 1.416309] cpsw-switch 4a100000.switch: Detected MACID = f4:b8:98:8b:29:c5
[ 1.417857] cpsw-switch 4a100000.switch: initialized (regs 0x4a100000, pool size 256) hw_ver:0019010C 1.12 (0)
[ 1.427079] debugfs: Directory '49000000.dma' with parent 'dmaengine' already present!
[ 1.427117] edma 49000000.dma: TI EDMA DMA engine driver
[ 1.432779] am335x-phy-driver 47401300.usb-phy: supply vcc not found, using dummy regulator
[ 1.433179] am335x-phy-driver 47401300.usb-phy: dummy supplies not allowed for exclusive requests
[ 1.436398] am335x-phy-driver 47401b00.usb-phy: supply vcc not found, using dummy regulator
[ 1.436679] am335x-phy-driver 47401b00.usb-phy: dummy supplies not allowed for exclusive requests
[ 1.454685] hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
[ 1.457937] gpio gpiochip3: (gpio-96-127): not an immutable chip, please consider fixing it!
[ 1.463124] l3-aon-clkctrl:0000:0: failed to disable
[ 1.465284] printk: console [ttyS0] disabled
[ 1.465489] 44e09000.serial: ttyS0 at MMIO 0x44e09000 (irq = 37, base_baud = 3000000) is a 8250
[ 2.479958] printk: console [ttyS0] enabled
[ 2.513990] tps65217-pmic: Failed to locate of_node [id: -1]
[ 2.527433] tps65217-bl: Failed to locate of_node [id: -1]
[ 2.535896] tps65217 0-0024: TPS65217 ID 0xe version 1.2
[ 2.541890] i2c 0-0070: Fixed dependency cycle(s) with /ocp/interconnect@48000000/segment@300000/target-module@e000/lcdc@0/port/endpoint@0
[ 2.554643] omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
[ 2.565853] using random self ethernet address
[ 2.570348] using random host ethernet address
[ 2.574891] using host ethernet address: 08:00:27:E6:75:37
[ 2.574900] using self ethernet address: f8:dc:7a:00:00:02
[ 2.581264] usb0: HOST MAC 08:00:27:e6:75:37
[ 2.591154] usb0: MAC f8:dc:7a:00:00:02
[ 2.595092] using random self ethernet address
[ 2.599570] using random host ethernet address
[ 2.604338] g_ether gadget.0: Ethernet Gadget, version: Memorial Day 2008
[ 2.611162] g_ether gadget.0: g_ether ready
[ 2.616979] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
[ 2.625825] sdhci-omap 48060000.mmc: Got CD GPIO
[ 2.630777] sdhci-omap 48060000.mmc: supply pbias not found, using dummy regulator
[ 2.640708] sdhci-omap 48060000.mmc: supply vqmmc not found, using dummy regulator
[ 2.649107] sdhci-omap 481d8000.mmc: supply pbias not found, using dummy regulator
[ 2.657223] sdhci-omap 481d8000.mmc: supply vqmmc not found, using dummy regulator
[ 2.696401] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[ 2.701797] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1
[ 2.711089] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.01
[ 2.719521] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 2.726824] usb usb1: Product: MUSB HDRC host driver
[ 2.731813] usb usb1: Manufacturer: Linux 6.1.55 musb-hcd
[ 2.737256] usb usb1: SerialNumber: musb-hdrc.1
[ 2.742808] hub 1-0:1.0: USB hub found
[ 2.746762] hub 1-0:1.0: 1 port detected
[ 2.753326] mmc1: SDHCI controller on 481d8000.mmc [481d8000.mmc] using External DMA
[ 2.762048] mmc0: SDHCI controller on 48060000.mmc [48060000.mmc] using External DMA
[ 2.805242] mmc0: new high speed SDHC card at address 1234
[ 2.811867] mmcblk0: mmc0:1234 SA08G 7.21 GiB
[ 2.819509] mmcblk0: p1 p2 p3
[ 2.862550] mmc1: new high speed MMC card at address 0001
[ 2.869100] mmcblk1: mmc1:0001 MK2704 3.53 GiB
[ 2.876264] mmcblk1: p1
[ 2.879817] mmcblk1boot0: mmc1:0001 MK2704 2.00 MiB
[ 2.886893] mmcblk1boot1: mmc1:0001 MK2704 2.00 MiB
[ 2.893604] mmcblk1rpmb: mmc1:0001 MK2704 512 KiB, chardev (250:0)
[ 3.025131] IPv6: ADDRCONF(NETDEV_CHANGE): usb0: link becomes ready
[ 3.063056] IP-Config: Guessing netmask 255.255.255.0
[ 3.068155] IP-Config: Complete:
[ 3.071394] device=usb0, hwaddr=f8:dc:7a:00:00:02, ipaddr=192.168.0.100, mask=255.255.255.0, gw=255.255.255.255
[ 3.082010] host=192.168.0.100, domain=, nis-domain=(none)
[ 3.087977] bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath=
[ 3.119550] VFS: Mounted root (squashfs filesystem) readonly on device 179:2.
[ 3.135943] devtmpfs: mounted
[ 3.140266] Freeing unused kernel image (initmem) memory: 1024K
[ 3.146864] Run /sbin/init as init process
[ 3.160800] Run /etc/init as init process
[ 3.165408] Run /bin/init as init process
[ 3.169625] Run /bin/sh as init process
[ 3.174004] Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance.
[ 3.188264] ---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---
我可以在日志中看到 SquashFS 文件系统已挂载:
[ 3.119550] VFS: Mounted root (squashfs filesystem) readonly on device 179:2.
但是 /sbin/init 没有找到,尽管它在那里。我错过了什么?
当内核初始化完成后,它通过运行init程序来启动用户空间端。在 kernel_init() 函数的末尾,我们有:
static int __ref kernel_init(void *unused)
{
int ret;
[...]
if (!try_to_run_init_process("/sbin/init") ||
!try_to_run_init_process("/etc/init") ||
!try_to_run_init_process("/bin/init") ||
!try_to_run_init_process("/bin/sh"))
return 0;
panic("No working init found. Try passing init= option to kernel. "
"See Linux Documentation/init.txt for guidance.");
}
您的启动执行了前面的内容。看着
try_to_run_init_process()
:
static int try_to_run_init_process(const char *init_filename)
{
int ret;
ret = run_init_process(init_filename);
if (ret && ret != -ENOENT) {
pr_err("Starting init: %s exists but couldn't execute it (error %d)\n",
init_filename, ret);
}
return ret;
}
如果 init 程序的执行返回除
ENOENT
之外的其他内容,则您将收到上述消息“正在启动 init:.../init 存在但无法执行它(错误...”,这意味着该程序不存在) .
因此,您的 init 程序似乎不存在。当我们查看有关文件系统挂载的屏幕截图时,您的 init 程序应该位于
/bin
目录中,但 busybox 可能不存在于 /bin
中。