This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3358:SD 卡 EXT4错误

Guru**** 2925110 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664264/linux-am3358-sd-card-ext4-error

器件型号:AM3358

工具/软件:Linux

您好!

我想请您提供有关从 SD 卡运行的系统配置的建议。 我正在使用 TI 4.9.59的内核。 由于需要我们自己的文件系统、我选择使用 BuildRoot。 我知道 TI 主要支持 Yocto、但我相信任何人都可以帮助我。

这是件事。 编译正常、我按照 buildroot 的建议创建 SD 卡、方法是: DD if=${BASEDIR}/../output/images/sdcard.img of=/dev/mmcblk0. 它会在 SD 上创建两个分区。 Linux 引导正常、但随后出现 Wierd Ext-4错误。 这里是我得到的一些示例。

[17.243011] ext4_reserve_inode_write:5434中的 EXT4-FS 错误(器件 mmcblk0p2):out y
[17.256024] ext4_孤立_add:2845中的 EXT4-FS 错误(器件 mmcblk0p2):内存不足
[17.268580] ext4_reserve_inode_write:5434中的 EXT4-FS 错误(器件 mmcblk0p2):内存不足
[17.280781] ext4_setattr:5261:内存不足
[19.682658] EXT4-FS 错误(器件 mmcblk0p2):ext4_map_blocks:567:inode #8:Block 114770:Comm jbd2)
[19.700038] jbd2_journal_bmap:在 mmcblk0p2-8的偏移81处找不到日记账块
[19.709030]器件 mmcblk0p2-8上的中止日志。
[37.046792] EXT4-FS 错误(器件 mmcblk0p2):ext4_journal_check_start:56:检测到的日志已中止
[37.056102] EXT4-FS (mmcblk0p2):重新安装文件系统为只读
[37.067945] EXT4-FS (mmcblk0p2):ext4_writepages:jbd2_start:3072 pages、ino 4342;err -30
[60.772476] random: crng init done.(完成 crng 初始化。
[305.122423] EXT4-FS (mmcblk0p2):自上次 fsck 以来的错误计数:39
[305.128516] EXT4-FS (mmcblk0p2):65536时的初始错误:
0:inode 8:块524288
[305.136965] EXT4-FS (mmcblk0p2):时间1513289431处的最后一个错误:ext4_journal_check_start:56:inode 80

最终会导致内核完全崩溃。 我尝试了多个 SD 卡、行为相同。 我将 journald 切换为使用易失性存储器、但我确实缺少了一些东西。

下面是我的 BuildRoot defconfig。

请提供任何帮助。

e2e.ti.com/.../prusa_5F00_pro_5F00_defconfig.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    当前 Linux 处理器 SDK 版本基于内核 v4.9.41。 此论坛不支持其他版本或 Linux 版本。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TI SDK 04.02.00.09包括我正在使用的内核4.9.59。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我在这里犯了个错误。 我已通知软件团队。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Filip、

    您之前的格式中仍有一些会混淆 ext4文件系统的内容。 请在刷新新新映像之前用零覆盖 SD 卡上的完整数据。

    DD if=/dev/zero of=/dev/sdX

    此致、
    Kemal
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经这么做了、但没有改变。

    当我再次尝试 DD 卡并将映像写入其中时、我在引导后遇到以下错误:

    [18.422901] EXT4-FS 错误(器件 mmcblk0p2):MB_free_blocks:1470:组1、块33283:释放已释放的块(位515);块位图损坏。
    [18.436628] EXT4-FS 错误(器件 mmcblk0p2):ext4_MB_Generate_Buddy:758:组1、块位图和 bg 描述符不一致:30010与30011可用群集

    下一次重新引导后、设备启动时收到错误消息:

    [1.731485] ALSA 器件列表:
    [1.734557]未找到声卡。
    [1.750369] EXT4-FS (mmcblk0p2):警告:安装 FS 时出错、建议运行 e2fsck
    [1.763438] EXT4-FS (mmcblk0p2):已安装文件系统、具有有序数据模式。 OPTS:(空)
    [1.771630] VFS:在设备179:2上安装了根(ext4文件系统)。
    [1.779902] devtmpfs:已安装
    [1.784394]释放未使用的内核内存:1024K
    (笑声)
    [确定]已到达目标本地文件系统。
    正在开始重建日记账目录...
    [3.953640] systemd-journale[89]:已收到从 PID 刷新运行时日志的请求1.
    [4.020297] EXT4-FS 错误(器件 mmcblk0p2):ext4_MB_generate_buddy:758:组1、块位图和 bg 描述符不一致:30517与30518可用群集
    [确定]已开始将日志刷新到持久存储。
    正在开始创建易失性文件和目录...
    [4.094186] JBD2:斑点脏元数据缓冲区(dev = mmcblk0p2、isdknr = 0)。 系统崩溃时存在文件系统损坏的风险。
    [确定]已开始重建日志目录。

    这可能是由一些错误分配造成的? 当我将映像写入8 GB SD 卡时、它会创建两个分区:

    /dev/mmcblk0p1 16MB 第一扇区1、最后一个扇区32768、Flasgs 引导 LBA
    /dev/mmcblk0p2 512MB 第一扇区32769、最后一扇区1081344
    未分频的第一个扇区1081345、最后一个扇区15759359

    或者、Linux 是否会在 SD 卡的某个位置多次写入内容、从而导致损坏扇区?
    我通过 USB 小工具驱动程序将第二个分区安装为大容量存储。 那么、这可能是由器件处理不当造成的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们需要缩小问题的范围、以了解发生这种情况的原因。 您能否从 最新 的 Processor SDK 中使用内核启动、因为此问题只能在 bildroot 的内核中看到? 您能否将该 SD 卡连接到主机或 tftpboot 并在该 mmcblk0p2分区上运行 e2fsck? 如果没有成功,是否可以将带有 cp -rp 的 rootfs 文件复制到另一个位置,然后将 mkfs.ext4复制回该分区?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    似乎问题是在 g_multi-driver 上安装 mmblck0p2。 当我切换到仅使用 g_ether 而不共享 SD 卡中的文件系统时、它似乎可以正常工作。 我发送配置和处理 g_multi.

    e2e.ti.com/.../usb_2D00_ethernet.sh.txt

    e2e.ti.com/.../usb_2D00_ethernet.service.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、这可能是由 g_multi-driver 引起的。 我将向您发送 来自最新 Processor SDK 的脚本。

    e2e.ti.com/.../gadget_2D00_init.sh.txt
    e2e.ti.com/.../gadget_2D00_init.service.txt