华硕笔记本电脑上的 128GB eMMC 驱动器 - 无法格式化为 ext4

华硕笔记本电脑上的 128GB eMMC 驱动器 - 无法格式化为 ext4

我收到了一台新的华硕 BR1100FKA 笔记本电脑作为礼物。此型号的主驱动器为 128GB eMMC。尝试安装 EndeavourOS,但出现错误。安装程序在格式化为 ext4 时抱怨“输入/输出”错误。

一个月过去了,我还是搞不懂。作为替代方案,我安装了持久的 USB 闪存盘。不过,32GB 的空间不太宽容。

以下是我尝试过的:

  1. 使用 GParted 进行格式化在实时 USB 环境中。GParted 在任何更改分区位置、大小和文件系统的操作上都会抛出或多或少相同的错误。不过,NTFS 是个例外。它返回Input/Output error while syncing device,但分区在安装后会自动修复。

  2. 从 Windows 10 格式化。我试过傲梅助手、易我分区工具、DiskGenius 以及一个我忘记的工具。除非我故意在 Win10 上操作 C: 驱动器,否则傲梅助手不会格式化为 ext4。这样,傲梅将在 Win PE 模式下执行操作,并以某种方式成功。然而,生成的 ext4 分区容易出现随机错误。以下是列表:

  • /home通过已安装的 Thunar 文件管理器从目录复制文件gvfs不会返回任何错误。但是,尝试通过 /etc/fstab 挂载它们总是失败,并让我进入紧急模式。只有在注释掉 /etc/fstab 中负责的行后,我才能正常启动。之后手动挂载它们,返回无法读取超级块。

  • 使用rsyncwith-v选项时,我偶尔可以看到几行EXT4 ERROR,但滚动速度太快了。也许我稍后会尝试捕捉它。

  • cp命令更稳定,通常不会出错。但它确实会出现相同的 /etc/fstab 错误。抛出的错误是输入/输出错误。

  • dd命令非常不稳定,最终导致I/O error

  • ddrescue从未出现过错误,但复制操作系统分区意味着之后需要修复分区。据我所知,在 Win10 上不可能。

  • 由于 Calamares 默认首先格式化分区,因此我尝试进行原始 Arch 安装。当通过 pacstrap 安装baselinux-lts和时linux-firmware,会出现几个 I/O 错误,并且下载完成后 pacstrap 会停止而不进行安装

  • 之后尝试使用fsck驱动器。在出现一长串错误之后,fsck最终得到了I/O Error一个一致的修复(目前无法重新创建,错误列表意味着我需要按下 Enter 按钮大约一个小时,或者自动按下并观察最后一个错误,这仍然需要 30 分钟。)

  1. BIOS 更新我通过华硕的 EZ Smart Flash 实用程序手动更新了 BIOS。固件是从 Win10 上的 MyASUS 应用程序下载的。差别不大。

  2. 已禁用 TPM。没什么区别,只是不能像平常一样登录Win10。

  3. 手动格式化。使用mkfs.ext4带选项的命令-v。错误如下:Writing superblocks and filesystem accounting information: mkfs.ext4: Input/output error while writing out and closing file system.

很多 Google 搜索结果显示 I/O 错误,但我很怀疑这是事实。我也阅读了很多关于从 eMMC 启动的文章,但我想先解决格式化问题。有些人已经通过 BIOS 设置解决了这个问题,而我的电脑上没有 BIOS 设置。

我已尝试过 KDE-Neon 和 EndeavourOS 的 Gparted。

任何帮助,将不胜感激!

答案1

我的 ASUS BR1100FKA、128GB eMMC 和 Ubuntu 20.04 也有同样的情况。

它似乎笔记本电脑的 eMMC 控制器的 CQE 实现存在缺陷

自从Linux 内核版本 5.5可以通过为模块指定debug_quirks=0x20000选项来使系统避免使用 CQE。(是 SDHCI_QUIRK_BROKEN_CQE 标志的值sdhci0x20000sdhci.h)。正确传播该选项后,我就能够在这台笔记本电脑的 eMMC 驱动器上安装和使用带有 ext4 rootfs 的 Ubuntu 20.04。

根据您所处的情况,有几种常见的方法可以将选项推送到系统:

方法 1:卸载模块并使用指定的选项重新加载。

sudo modprobe -r sdhci_pci
sudo modprobe -r sdhci
sudo modprobe sdhci debug_quirks=0x20000
sudo modprobe sdhci_pci

当系统在启动期间不访问 eMMC 驱动器时,此方法有效。例如,您正在某种 Linux 安装程序中,并即将开始在 eMMC 驱动器上进行安装。

方法 2:指定sdhci.debug_quirks=0x20000内核命令行选项。

这通常可以通过 bootloader 菜单来完成。当在启动过程中使用 eMMC 驱动器并且您没有机会通过/etc/modprobe.dinitramfs 刻录选项时,它可能会挽救局面。

方法 3: 使用/etc/modprobe.d

创建一个包含以下内容的文件/etc/modprobe.d/sdhci-disable-cqe.conf

options sdhci debug_quirks=0x20000

这通常是永久调整模块加载行为的“正确”方法。但是,为了使其在早期启动时工作,应确保配置文件到达 initrd 映像。执行此操作的方法可能因发行版而异。对于 Ubuntu,它通常sudo update-initramfs -u在创建/编辑文件后运行/etc/modprobe.d

PS:据我所知 - debug_quirks 似乎是禁用常见内核版本上 CQE 的唯一可用选项。这个问题似乎很少见,通常在某些特定的非 x86 硬件上遇到。我真的很绝望,正准备订购一个 SSD,在最后一刻,我突然想到要挖掘 sdhci 源代码以查找所有可用选项,以响应一些(与 CQE 无关的)debug_quirks 提及=)

答案2

我在华硕 BR1100FKA 上遇到了同样的问题。

该设备确实有一个未使用的 m.2 插槽,您可以购买便宜的 pcie m.2 ssd(它不适用于 sata)并在其上安装 linux。

编辑:这是拆卸说明。https://youtu.be/T6lysjmaBSA

一些说明:

  1. 机壳螺丝适合 PH1 螺丝刀
  2. 如前所述,它必须是标准尺寸(80 毫米)的 m.2 NVME SSD。Sata m.2 SSD 可能适合,但主板无法识别它们。
  3. m.2 插槽没有预装螺丝,因此您需要购买一颗。

相关内容