AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-276165

Dave's questions

Martin Hope
Dave
Asked: 2020-02-25 06:39:31 +0800 CST

如何在已挂载的文件系统上安装内核模块?

  • 1

我正在设置一个使用 Yocto 项目构建的嵌入式系统。这会输出一个根文件系统、内核、u-boot 等。我有一个从 SD 卡运行的安装程序脚本,它在板上配置 eMMC 分区、rootfs 中的副本、uboot 等。它产生一个可引导我从 eMMC 启动时的系统。

我遇到的问题是以太网驱动程序。默认情况下未安装在系统上。安装脚本将其复制到/lib/modules/4.14.98-imx8mq+gea48c83/kernel/drivers/net/ethernet/freescale/fec.ko,我可以通过串行登录并手动加载它insmod,并且工作正常。但我不确定如何让它自动加载。

Systemd 查找/etc/modules-load.d/要加载的模块列表,但此过程似乎使用 modprobe 而不是 insmod。modprobe 系统并不真正了解以太网驱动程序,因为我没有在其上运行 depmod。但我无法从安装程序运行 depmod,因为它会将其安装在我的 SD 卡安装上,而不是 eMMC 上。

我在这里最好的方法是什么?我需要在安装过程中找到某种方法来运行 depmod 吗?也许它可以用chroot来完成?

或者有没有一种好方法可以让我的模块在不使用 depmod/modprobe 系统的情况下自动加载?

这里的任何见解将不胜感激。

systemd kernel-modules
  • 1 个回答
  • 959 Views
Martin Hope
Dave
Asked: 2019-10-30 06:06:33 +0800 CST

如何将缺少的“env import”添加到 u-boot?

  • 1

我正在尝试在 imx8 板上设置 u-boot,以从第一个分区上的 uEnv.txt 文件加载环境变量。我已经让它工作了,它可以加载文件,现在我正在尝试使用env import. 但是,使用供应商提供的 BSP 构建的 u-boot 版本似乎没有env import作为选项。这是我尝试运行它时得到的:

u-boot=> env import -t ${loadaddr} $(filesize}
env - environment handling commands

Usage:
env default [-f] -a - [forcibly] reset default environment
env default [-f] var [...] - [forcibly] reset variable(s) to their default values
env delete [-f] var [...] - [forcibly] delete variable(s)
env edit name - edit environment variable
env exists name - tests for existence of variable
env print [-a | name ...] - print environment
env run var [...] - run commands in an environment variable
env save - save environment
env set [-f] name [arg ...]

我还注意到其他一些我习惯喜欢的缺失命令loadfat。

env import在编译之前需要配置一些可选的东西吗?如果是这样,任何人都可以提供有关如何完成的信息吗?

作为参考,我使用 Yocto Sumo 构建 u-boot,u-boot 版本号显示为:U-Boot SPL 2018.03-imx_v2018.03_4.14.78_1.0.0_ga_var01+g5c48b6c (Oct 29 2019 - 13:16 :16 +0000)

编辑:我实际上找不到env import作为官方命令的参考,但我已经在几个地方看到了对它的参考。如果它不是命令,我如何将我从文件加载到内存中的环境变量获取并应用它们?

embedded
  • 1 个回答
  • 2091 Views
Martin Hope
Dave
Asked: 2019-02-28 06:15:30 +0800 CST

为什么我不能删除这个目录?

  • 2

这里发生了什么?

dave@dave-desktop:/mnt/w/Source/Sign/dist$ ls -la
total 0
drwxrwxrwx 1 dave dave 512 Feb 27 08:55 .
drwxrwxrwx 1 dave dave 512 Feb 27 09:09 ..
drwxrwxrwx 1 dave dave 512 Feb 27 09:09 signage
dave@dave-desktop:/mnt/w/Source/Sign/dist$ rmdir signage
rmdir: failed to remove 'signage': Permission denied
dave@dave-desktop:/mnt/w/Source/Sign/dist$ rm -rf signage
rm: cannot remove 'signage': Permission denied
dave@dave-desktop:/mnt/w/Source/Sign/dist$ whoami
dave

这是在 Windows 10 WSL 上运行的“Ubuntu”上。

ubuntu windows-subsystem-for-linux
  • 3 个回答
  • 1432 Views
Martin Hope
Dave
Asked: 2018-04-17 09:49:51 +0800 CST

使用 rsync 从 tar 恢复文件

  • 2

我正在为一件嵌入式设备编写软件升级功能。目前,根文件系统通过获取一个新的 rootfs.tar.gz 文件并将其解压缩到根文件系统(覆盖现有文件并添加新文件)来升级。但这不会删除不在新包中的文件。

所以现在我将不得不 rm -rf 所有现有文件,然后解压缩新的 rootfs tar 文件。这似乎需要做很多工作,并且需要很多时间,而且可能唯一改变的是一个配置文件。

相反,我希望能够将 .tar.gz 文件的内容同步到目录。这是否可行而无需通过某种中介(意思是,无需将 tar 解压到临时目录然后执行 rsync)?

linux rsync
  • 1 个回答
  • 706 Views
Martin Hope
Dave
Asked: 2018-04-07 08:14:44 +0800 CST

如何调试u-boot问题?

  • 1

我正在努力在 Beaglebone Black 上安装一个定制系统。事情大部分时间都在工作,但每隔一段时间,系统就会在开机时无法启动。连接串行调试电缆时不会发生这种情况(这样我就可以看到 u-boot 和内核消息。)

但是,我发现,在极少数情况下,如果我连接串行电缆,我发现我正坐在 u-boot 提示符下。如果我手动设置 u-boot 以从那里加载内核和所有内容,我可以启动只是找到(它可以读取 eMMC 等)。

我的第一个想法是串行线路上有某种噪音导致 u-boot 中断(我相信默认会在 2 秒内中断空间)。但是,我重新编译了 u-boot 以使用 0 秒延迟(不等待空格键),但这并没有解决问题。

我怎样才能弄清楚为什么 u-boot 在引导期间没有连接串行电缆就停止了(因为这会使问题消失;Heisenbug)?我可以访问是否启用了任何类型的日志记录?

boot boot-loader
  • 1 个回答
  • 808 Views
Martin Hope
Dave
Asked: 2018-03-23 08:02:32 +0800 CST

u-boot bootdelay=2 启动 ext4 时 bootdelay=0 启动 fat

  • 0

我在 Beaglebone Black 自定义安装上运行 u-boot,并修改了 ./include/configs/am335x_evm.h 以将默认 bootdelay 设置为 0,当我从一个胖子加载我的内核和设备树时它运行良好分割。但是我将分区 1 从 fat 切换到 ext4,并将我的 uEnv.txt 中的 fatload 语句更改为 ext4load。一切都和以前一样,除了现在我恢复了 2 秒的引导延迟。我不明白为什么切换分区类型会导致这种情况。

在我使用 ext4 引导分区的情况下,有谁知道如何重新编译 u-boot 以将 bootdelay 设置回 0?


或者,我想我可以弄清楚如何让 saveenv 工作。目前它给出:

=> saveenv
Saving Environment to FAT... MMC: no card present
** Bad device mmc 0 **
Failed (1)

但老实说,我宁愿在编译时更改默认值。

boot-loader embedded
  • 1 个回答
  • 1331 Views
Martin Hope
Dave
Asked: 2018-03-03 16:05:52 +0800 CST

为什么我的一半逻辑分区不可用?

  • 1

我正在尝试在 Beaglebone Black 上对 eMMC 进行分区。这是我对 /dev/mmcblk1 进行分区的方式:

root@beaglebone:~# fdisk -l /dev/mmcblk1
Disk /dev/mmcblk1: 3.6 GiB, 3825205248 bytes, 7471104 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9ccd5613

Device          Boot   Start     End Sectors  Size Id Type
/dev/mmcblk1p1  *       2048  206847  204800  100M  c W95 FAT32 (LBA)
/dev/mmcblk1p2        206848 7112703 6905856  3.3G  5 Extended
/dev/mmcblk1p5        208896  823295  614400  300M 83 Linux
/dev/mmcblk1p6        825344 1849343 1024000  500M 83 Linux
/dev/mmcblk1p7       1851392 2875391 1024000  500M 83 Linux
/dev/mmcblk1p8       2877440 3901439 1024000  500M 83 Linux
/dev/mmcblk1p9       3903488 4927487 1024000  500M 83 Linux
/dev/mmcblk1p10      4929536 7026687 2097152    1G 83 Linux

这正是它应该看起来的样子。分区 1 是主分区,分区 2 是扩展分区,其余是逻辑分区。但是,当我列出设备时,我只看到分区 1、2、5、6 和 7。

root@beaglebone:~# ls -l /dev/mmcblk1p*
brw-rw---- 1 root disk 179,  9 Mar  2 23:53 /dev/mmcblk1p1
brw-rw---- 1 root disk 179, 10 Mar  2 23:53 /dev/mmcblk1p2
brw-rw---- 1 root disk 179, 13 Mar  2 23:53 /dev/mmcblk1p5
brw-rw---- 1 root disk 179, 14 Mar  2 23:53 /dev/mmcblk1p6
brw-rw---- 1 root disk 179, 15 Mar  2 23:53 /dev/mmcblk1p7

lsblk 显示相同:

root@beaglebone:~# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0      179:0    0  7.2G  0 disk
└─mmcblk0p1  179:1    0  3.3G  0 part /
mmcblk1      179:8    0  3.6G  0 disk
├─mmcblk1p1  179:9    0  100M  0 part
├─mmcblk1p2  179:10   0    1K  0 part
├─mmcblk1p5  179:13   0  300M  0 part
├─mmcblk1p6  179:14   0  500M  0 part
└─mmcblk1p7  179:15   0  500M  0 part
mmcblk1boot0 179:16   0    4M  1 disk
mmcblk1boot1 179:24   0    4M  1 disk

即使在重新启动后也是如此。我正在尝试从运行 debian 9(Linux beaglebone 4.4.84-ti-r120)的 SD 卡启动。

有人知道这里可能会发生什么吗?我是否达到了某种极限?

linux debian
  • 3 个回答
  • 416 Views
Martin Hope
Dave
Asked: 2018-02-16 07:15:07 +0800 CST

为什么 uboot 忽略 uEnv.txt 中的 mmcroot?

  • 1

我正在尝试使用 yocto 构建嵌入式 linux 来工作。我非常接近,但我在启动时遇到了问题。我有 2 个根文件系统。一个是主要的,另一个是在固件升级期间使用的。但是,除了第一个 rootfs 之外,我无法让系统启动任何东西。

这是我的分区布局:

Disk /dev/mmcblk1: 3825 MB, 3825205248 bytes
4 heads, 16 sectors/track, 116736 cylinders
Units = cylinders of 64 * 512 = 32768 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/mmcblk1p1   *          33        6432      204800   c Win95 FAT32 (LBA)
/dev/mmcblk1p2            6433       19232      409600  83 Linux
/dev/mmcblk1p3           19233       32032      409600  83 Linux
/dev/mmcblk1p4           32033       97568     2097152   5 Extended
/dev/mmcblk1p5           32065       43264      358400  83 Linux
/dev/mmcblk1p6           43297       97568     1736704  83 Linux

/dev/mmcblk1p2 和 /dev/mmcblk1p3 是根文件系统。

当前,当我启动机器时,它会从 /dev/mmcblk1p2 启动,尽管在 uEnv.txt 中将 mmcroot 配置为 /dev/mmcblk1p3。这是我的uEnv:

bootdir=
bootfile=zImage
fdtfile=am335x-boneblack.dtb
loadaddr=0x80007fc0
fdtaddr=0x80F80000
console=ttyO0,115200
mmcroot=/dev/mmcblk1p3
mmcrootfstype=ext4
loadfdt=fatload mmc 1:1 ${fdtaddr} ${fdtfile}
loaduimage=fatload mmc 1:1 ${loadaddr} ${bootfile}
mmc_args=setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype}
uenvcmd=mmc rescan; run loaduimage; run loadfdt; run fdtboot
fdtboot=run mmc_args; run mmcargs; bootz ${loadaddr} - ${fdtaddr}

此外,这是启动的结果:

U-Boot SPL 2017.09 (Feb 15 2018 - 07:11:54)
Trying to boot from MMC2
reading u-boot.img
reading u-boot.img


U-Boot 2017.09 (Feb 15 2018 - 07:11:54 -0500)

CPU  : AM335X-GP rev 2.1
I2C:   ready
DRAM:  512 MiB
No match for driver 'omap_hsmmc'
No match for driver 'omap_hsmmc'
Some drivers were not found
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
Net:   cpsw, usb_ether
Press SPACE to abort autoboot in 2 seconds
Card did not respond to voltage select!
mmc_init: -95, time 12
Card did not respond to voltage select!
mmc_init: -95, time 12
Card did not respond to voltage select!
mmc_init: -95, time 13
Card did not respond to voltage select!
mmc_init: -95, time 13
Card did not respond to voltage select!
mmc_init: -95, time 12
switch to partitions #0, OK
mmc1(part 0) is current device
Scanning mmc 1:1...
reading /am335x-boneblack.dtb
36168 bytes read in 9 ms (3.8 MiB/s)
switch to partitions #0, OK
mmc1(part 0) is current device
SD/MMC found on device 1
5768968 bytes read in 380 ms (14.5 MiB/s)
36168 bytes read in 22 ms (1.6 MiB/s)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 8fff4000, end 8ffffd47 ... OK

Starting kernel ...

Booting Linux on physical CPU 0x0
Linux version 4.12.12-yocto-standard (oe-user@oe-host) (gcc version 7.3.0 (GCC) ) #1 PREEMPT Thu Feb 15 07:09:00 EST 2018
CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c5387d
CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
OF: fdt: Machine model: TI AM335x BeagleBone Black
Memory policy: Data cache writeback
cma: Reserved 16 MiB at 0x9e800000
CPU: All CPU(s) started in SVC mode.
AM335X ES2.1 (sgx neon)
Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 129666
Kernel command line: console=ttyO0,115200n8 root=PARTUUID=b804e92a-02 rw rootfstype=ext4 rootwait
PID hash table entries: 2048 (order: 1, 8192 bytes)
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 486888K/523264K available (8192K kernel code, 778K rwdata, 2600K rodata, 1024K init, 595K bss, 19992K reserved, 16384K cma-reserved, 0K highmem)
Virtual kernel memory layout:
    vector  : 0xffff0000 - 0xffff1000   (   4 kB)
    fixmap  : 0xffc00000 - 0xfff00000   (3072 kB)
    vmalloc : 0xe0000000 - 0xff800000   ( 504 MB)
    lowmem  : 0xc0000000 - 0xdff00000   ( 511 MB)
    pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
    modules : 0xbf000000 - 0xbfe00000   (  14 MB)
      .text : 0xc0008000 - 0xc0900000   (9184 kB)
      .init : 0xc0d00000 - 0xc0e00000   (1024 kB)
      .data : 0xc0e00000 - 0xc0ec29ec   ( 779 kB)
       .bss : 0xc0ecc6c4 - 0xc0f6134c   ( 596 kB)
SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
ftrace: allocating 30390 entries in 90 pages
Preemptible hierarchical RCU implementation.
NR_IRQS:16 nr_irqs:16 16
IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
OMAP clockevent source: timer2 at 24000000 Hz
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
clocksource: timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
OMAP clocksource: timer1 at 24000000 Hz
clocksource_probe: no matching clocksources found
Console: colour dummy device 80x30
Calibrating delay loop... 996.14 BogoMIPS (lpj=4980736)
pid_max: default: 32768 minimum: 301
Security Framework initialized
Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
CPU: Testing write buffer coherency: ok
Setting up static identity map for 0x80100000 - 0x80100060
devtmpfs: initialized
VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
futex hash table entries: 256 (order: -1, 3072 bytes)
xor: measuring software checksum speed
   arm4regs  :  1201.600 MB/sec
   8regs     :   893.200 MB/sec
   32regs    :  1156.400 MB/sec
xor: using function: arm4regs (1201.600 MB/sec)
pinctrl core: initialized pinctrl subsystem
NET: Registered protocol family 16
DMA: preallocated 256 KiB pool for atomic coherent allocations
omap_hwmod: debugss: _wait_target_disable failed
cpuidle: using governor ladder
cpuidle: using governor menu
OMAP GPIO hardware version 0.1
hw-breakpoint: debug architecture 0x4 unsupported.
raid6: int32x1  gen()   209 MB/s
raid6: int32x1  xor()   143 MB/s
raid6: int32x2  gen()   226 MB/s
raid6: int32x2  xor()   162 MB/s
raid6: int32x4  gen()   190 MB/s
raid6: int32x4  xor()   133 MB/s
raid6: int32x8  gen()   175 MB/s
raid6: int32x8  xor()   118 MB/s
raid6: using algorithm int32x2 gen() 226 MB/s
raid6: .... xor() 162 MB/s, rmw enabled
raid6: using intx1 recovery algorithm
edma 49000000.edma: TI EDMA DMA engine driver
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
omap_i2c 44e0b000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c0_pins, deferring probe
omap_i2c 4802a000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c1_pins, deferring probe
omap_i2c 4819c000.i2c: could not find pctldev for node /ocp/l4_wkup@44c00000/scm@210000/pinmux@800/pinmux_i2c2_pins, deferring probe
clocksource: Switched to clocksource timer1
NET: Registered protocol family 2
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 4096 bind 4096)
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
hw perfevents: no interrupt-affinity property for /pmu, guessing.
hw perfevents: enabled with armv7_cortex_a8 PMU driver, 5 counters available
workingset: timestamp_bits=14 max_order=17 bucket_order=3
NFS: Registering the id_resolver key type
Key type id_resolver registered
Key type id_legacy registered
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
io scheduler noop registered
io scheduler deadline registered
io scheduler cfq registered (default)
io scheduler mq-deadline registered
io scheduler kyber registered
pinctrl-single 44e10800.pinmux: 142 pins at pa f9e10800 size 568
omap_uart 44e09000.serial: no wakeirq for uart0
44e09000.serial: ttyO0 at MMIO 0x44e09000 (irq = 158, base_baud = 3000000) is a OMAP UART0
console [ttyO0] enabled
omap_uart 48022000.serial: no wakeirq for uart1
48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 159, base_baud = 3000000) is a OMAP UART1
omap_uart 48024000.serial: no wakeirq for uart2
48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 160, base_baud = 3000000) is a OMAP UART2
brd: module loaded
mtdoops: mtd device (mtddev=name/number) must be supplied
libphy: Fixed MDIO Bus: probed
davinci_mdio 4a101000.mdio: davinci mdio revision 1.6
davinci_mdio 4a101000.mdio: detected phy mask fffffffe
random: fast init done
libphy: 4a101000.mdio: probed
davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720
cpsw 4a100000.ethernet: Detected MACID = 68:9e:19:8f:7c:44
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci-omap: OMAP-EHCI Host Controller driver
usbcore: registered new interface driver usb-storage
am335x-phy-driver 47401300.usb-phy: 47401300.usb-phy supply vcc not found, using dummy regulator
irq: no irq domain found for /ocp/i2c@44e0b000/tps@24 !
am335x-phy-driver 47401b00.usb-phy: 47401b00.usb-phy supply vcc not found, using dummy regulator
musb-hdrc musb-hdrc.1: Failed to request rx1.
omap_rtc 44e3e000.rtc: already running
omap_rtc 44e3e000.rtc: rtc core: registered 44e3e000.rtc as rtc0
i2c /dev entries driver
omap_wdt: OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
omap_hsmmc 48060000.mmc: Got CD GPIO
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
oprofile: using arm/armv7
u32 classifier
    Actions configured
NET: Registered protocol family 10
Segment Routing with IPv6
sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
NET: Registered protocol family 17
Key type dns_resolver registered
omap_voltage_late_init: Voltage driver support not added
ThumbEE CPU extension supported.
Btrfs loaded, crc32c=crc32c-generic
Key type encrypted registered
mmc1: new high speed MMC card at address 0001
mmcblk1: mmc1:0001 S10004 3.56 GiB
mmcblk1boot0: mmc1:0001 S10004 partition 1 4.00 MiB
mmcblk1boot1: mmc1:0001 S10004 partition 2 4.00 MiB
 mmcblk1: p1 p2 p3 p4 < p5 p6 >
tps65217 0-0024: TPS65217 ID 0xe version 1.2
omap_i2c 44e0b000.i2c: bus 0 rev0.11 at 400 kHz
omap_i2c 4802a000.i2c: bus 1 rev0.11 at 50 kHz
omap_i2c 4819c000.i2c: bus 2 rev0.11 at 100 kHz
musb-hdrc musb-hdrc.1: MUSB HDRC host driver
musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
console [netcon0] enabled
netconsole: network logging started
omap_rtc 44e3e000.rtc: setting system clock to 2018-02-15 12:46:24 UTC (1518698784)
EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 179:2.
devtmpfs: mounted
Freeing unused kernel memory: 1024K
INIT: version 2.88 booting
Starting udev
udevd[111]: starting version 3.2.2
udevd[112]: starting eudev-3.2.2
EXT4-fs (mmcblk1p2): re-mounted. Opts: data=ordered
INIT: Entering runlevel: 5
Configuring network interfaces... net eth0: initializing cpsw version 1.12 (0)
cpsw 4a100000.ethernet: initialized cpsw ale version 1.4
cpsw 4a100000.ethernet: ALE Table size 1024
SMSC LAN8710/LAN8720 4a101000.mdio:00: attached PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=4a101000.mdio:00, irq=-1)
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
udhcpc (v1.24.1) started
Sending discover...
cpsw 4a100000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
Sending discover...
Sending select for 10.1.1.73...
Lease of 10.1.1.73 obtained, lease time 7200
/etc/udhcpc.d/50default: Adding DNS 10.1.0.1
done.
Starting OpenBSD Secure Shell server: sshd
done.
Starting syslogd/klogd: done
Starting web server: apache2.

Poky (Yocto Project Reference Distro) 2.4.2 beaglebone /dev/ttyO0

beaglebone login:

您可以看到它以 root 身份挂载 /dev/mmcblk1p2。

我认为某些问题远远超出 uEnv.txt 的问题。 我可以从我的启动分区 (/dev/mmcblk1p1) 中删除 uEnv.txt,系统仍然可以正常启动。 不应该是这样的。事实上,我似乎可以将我的引导分区剥离为仅 MLO 和 u-boot.img,并且系统仍然可以引导。它似乎是从 /dev/mmcblk1p2 /boot 目录中拉出扁平设备树和 uEnv(如果我删除那里的文件,系统将无法启动)。

因此,就好像 /dev/mmcblk1p2 或分区 2 以某种方式被硬编码,尽管我找不到任何证据。有谁知道可能发生了什么以及如何使我的系统能够从我的任何一个根文件系统启动?

这是我的默认 u-boot 设置:

arch=arm
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
baudrate=115200
board=am335x
board_name=A335BNLT
board_rev=00C0
board_serial=0816BBBK018E
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf
boot_fdt=try
boot_fit=0
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_targets=mmc0 legacy_mmc0 mmc1 legacy_mmc1 nand0 pxe dhcp
bootcmd=if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd
bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
bootcmd_legacy_mmc0=setenv mmcdev 0; setenv bootpart 0:2 ; run mmcboot
bootcmd_legacy_mmc1=setenv mmcdev 1; setenv bootpart 1:2 ; run mmcboot
bootcmd_mmc0=setenv devnum 0; run mmc_boot
bootcmd_mmc1=setenv devnum 1; run mmc_boot
bootcmd_nand=run nandboot
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcount=1
bootdelay=2
bootdir=/boot
bootenvfile=uEnv.txt
bootfile=zImage
bootm_size=0x10000000
bootpart=0:2
bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
console=ttyO0,115200n8
cpu=armv7
dfu_alt_info_emmc=rawemmc raw 0 3751936;boot part 1 1;rootfs part 1 2;MLO fat 1 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 1 1;spl-os-image fat 1 1;u-boot.img fat 1 1;uEnv.txt fat 1 1
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1
dfu_alt_info_nand=SPL part 0 1;SPL.backup1 part 0 2;SPL.backup2 part 0 3;SPL.backup3 part 0 4;u-boot part 0 5;u-boot-spl-os part 0 6;kernel part 0 8;rootfs part 0 9
dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
efi_dtb_prefixes=/ /dtb/ /dtb/current/
envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
eth1addr=68:9e:19:8f:7c:46
ethaddr=68:9e:19:8f:7c:44
fdt_addr_r=0x88000000
fdtaddr=0x88000000
fdtcontroladdr=9df219f8
fdtfile=undefined
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; fi; if test $board_name = BBBW; then setenv fdtfile am335x-boneblack-wireless.dtb; fi; if test $board_name = BBG1; then setenv fdtfile am335x-bonegreen.dtb; fi; if test $board_name = BBGW; then setenv fdtfile am335x-bonegreen-wireless.dtb; fi; if test $board_name = BBBL; then setenv fdtfile am335x-boneblue.dtb; fi; if test $board_name = A33515BB; then setenv fdtfile am335x-evm.dtb; fi; if test $board_name = A335X_SK; then setenv fdtfile am335x-evmsk.dtb; fi; if test $board_name = A335_ICE; then setenv fdtfile am335x-icev2.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
finduuid=part uuid mmc ${bootpart} uuid
fit_bootfile=fitImage
fit_loadaddr=0x87000000
importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
init_console=if test $board_name = A335_ICE; then setenv console ttyO3,115200n8;else setenv console ttyO0,115200n8;fi;
kernel_addr_r=0x82000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x82000000
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
loadfit=run args_mmc; bootm ${loadaddr}#${fdtfile};
loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi
mmcboot=mmc dev ${mmcdev}; setenv devnum ${mmcdev}; setenv devtype mmc; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then if test ${boot_fit} -eq 1; then run loadfit; else run mmcloados;fi;fi;fi;
mmcdev=0
mmcloados=run args_mmc; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcrootfstype=ext4 rootwait
mtdids=nand0=nand.0
mtdparts=mtdparts=nand.0:128k(NAND.SPL),128k(NAND.SPL.backup1),128k(NAND.SPL.backup2),128k(NAND.SPL.backup3),256k(NAND.u-boot-spl-os),1m(NAND.u-boot),128k(NAND.u-boot-env),128k(NAND.u-boot-env.backup1),8m(NAND.kernel),-(NAND.file-system)
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype}
nandboot=echo Booting from nand ...; run nandargs; nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} - ${fdtaddr}
nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048
nandrootfstype=ubifs rootwait=1
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
netloadfdt=tftp ${fdtaddr} ${fdtfile}
netloadimage=tftp ${loadaddr} ${bootfile}
nfsopts=nolock
partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
pxefile_addr_r=0x80100000
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
ramdisk_addr_r=0x88080000
ramroot=/dev/ram0 rw
ramrootfstype=ext2
rdaddr=0x88080000
rootpath=/export/rootfs
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done
scriptaddr=0x80000000
soc=am33xx
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
spibusno=0
spiimgsize=0x362000
spiroot=/dev/mtdblock4 rw
spirootfstype=jffs2
spisrcaddr=0xe0000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial@44e09000
stdin=serial@44e09000
stdout=serial@44e09000
update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}
usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi
vendor=ti
ver=U-Boot 2018.01 (Feb 15 2018 - 13:50:14 -0500)

Environment size: 9701/131068 bytes

此外,以下是在 u-boot 中手动输入时会导致系统完美启动的命令列表:

setenv bootfile zImage
setenv fdtfile am335x-boneblack.dtb
setenv loadaddr 0x80007fc0
setenv fdtaddr 0x80F80000
setenv console ttyO0,115200
setenv mmcroot /dev/mmcblk1p3
setenv mmcrootfstype ext4
setenv loadfdt fatload mmc 1:1 ${fdtaddr} ${fdtfile}
setenv loaduimage fatload mmc 1:1 ${loadaddr} ${bootfile}
setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype}
mmc rescan
run loaduimage
run loadfdt
bootz ${loadaddr} - ${fdtaddr}
linux u-boot
  • 1 个回答
  • 2831 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve