内核恐慌:找不到工作 init。问题出在哪里

问题描述 投票:0回答:1

我正在尝试使用 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 没有找到,尽管它在那里。我错过了什么?

linux-kernel beagleboneblack u-boot squashfs
1个回答
0
投票

当内核初始化完成后,它通过运行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
中。

© www.soinside.com 2019 - 2024. All rights reserved.