我收到了一台新的华硕 BR1100FKA 笔记本电脑作为礼物。此型号的主驱动器为 128GB eMMC。尝试安装 EndeavourOS,但出现错误。安装程序在格式化为 ext4 时抱怨“输入/输出”错误。
一个月过去了,我还是搞不懂。作为替代方案,我安装了持久的 USB 闪存盘。不过,32GB 的空间不太宽容。
以下是我尝试过的:
使用 GParted 进行格式化在实时 USB 环境中。GParted 在任何更改分区位置、大小和文件系统的操作上都会抛出或多或少相同的错误。不过,NTFS 是个例外。它返回
Input/Output error while syncing device
,但分区在安装后会自动修复。从 Windows 10 格式化。我试过傲梅助手、易我分区工具、DiskGenius 以及一个我忘记的工具。除非我故意在 Win10 上操作 C: 驱动器,否则傲梅助手不会格式化为 ext4。这样,傲梅将在 Win PE 模式下执行操作,并以某种方式成功。然而,生成的 ext4 分区容易出现随机错误。以下是列表:
/home
通过已安装的 Thunar 文件管理器从目录复制文件gvfs
不会返回任何错误。但是,尝试通过 /etc/fstab 挂载它们总是失败,并让我进入紧急模式。只有在注释掉 /etc/fstab 中负责的行后,我才能正常启动。之后手动挂载它们,返回无法读取超级块。使用
rsync
with-v
选项时,我偶尔可以看到几行EXT4 ERROR
,但滚动速度太快了。也许我稍后会尝试捕捉它。cp
命令更稳定,通常不会出错。但它确实会出现相同的 /etc/fstab 错误。抛出的错误是输入/输出错误。dd
命令非常不稳定,最终导致I/O error
ddrescue
从未出现过错误,但复制操作系统分区意味着之后需要修复分区。据我所知,在 Win10 上不可能。由于 Calamares 默认首先格式化分区,因此我尝试进行原始 Arch 安装。当通过 pacstrap 安装
base
、linux-lts
和时linux-firmware
,会出现几个 I/O 错误,并且下载完成后 pacstrap 会停止而不进行安装之后尝试使用
fsck
驱动器。在出现一长串错误之后,fsck
最终得到了I/O Error
一个一致的修复(目前无法重新创建,错误列表意味着我需要按下 Enter 按钮大约一个小时,或者自动按下并观察最后一个错误,这仍然需要 30 分钟。)
BIOS 更新我通过华硕的 EZ Smart Flash 实用程序手动更新了 BIOS。固件是从 Win10 上的 MyASUS 应用程序下载的。差别不大。
已禁用 TPM。没什么区别,只是不能像平常一样登录Win10。
手动格式化。使用
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 标志的值sdhci
0x20000
sdhci.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.d
initramfs 刻录选项时,它可能会挽救局面。
方法 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。
一些说明:
- 机壳螺丝适合 PH1 螺丝刀
- 如前所述,它必须是标准尺寸(80 毫米)的 m.2 NVME SSD。Sata m.2 SSD 可能适合,但主板无法识别它们。
- m.2 插槽没有预装螺丝,因此您需要购买一颗。