我正在尝试在我的 Lenovo IdeaPad 1 11ADA05 上安装 Linux。我已经在 SD 卡上准备了安装程序。它可以正常启动到 SD 卡,但当我尝试安装发行版时,它找不到我的 SSD。我的 SSD 型号是 eMMC 卡 64gb Ramexal SSD。我尝试过多种不同的发行版,包括 Arch、Manjaro、Ubuntu、Mint、Kubuntu 和 GNU Guix。这是输出fdisk -l
Disk /dev/loop0: 81.81 MiB, 85786624 bytes, 167552 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
Disk /dev/loop1: 537.95 MiB, 564084736 bytes, 1101728 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
Disk /dev/loop2: 1.31 GiB, 1404850176 bytes, 2743848 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
Disk /dev/loop3: 656.67 MiB, 688570368 bytes, 1344864 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
Disk /dev/sda: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Disk model: MassStorageClass
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: 0x00000000
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 64 5496075 5496012 2.6G 0 Empty
/dev/sda2 5496076 5504267 8192 4M ef EFI (FAT-12/16/32)
有什么方法可以让我的 SSD 正常工作还是我被困在 Windows 上?
答案1
使用最新的 Ubuntu Mainline Kernel 5.13,我现在可以在我的 IdeaPad 1 11ADA05 上看到 mmc 设备。
答案2
禁用 IOMMU 可能会有所帮助。
查看 的输出lspci
,很明显那里没有与 SD/MMC 主控制器对应的 PCI 设备。这解释了为什么 mmc 驱动程序模块从未加载(当匹配的设备出现时触发加载模块)。
我从未见过那台特定的机器,所以我不确定它使用哪种 MMC 控制器。然而,很可能没有专用控制器意味着内存被连接到 CPU 中的内置控制器。
鉴于它的 PCI 设备也无处可见,我怀疑您受到了不久前内核邮件列表中提到的错误变体的影响:
https://www.lkml.org/lkml/2019/9/21/31“IOMMU 与 Ryzen 嵌入式 EMMC 控制器”
简而言之,由于平台 ACPI 表(由机器供应商提供)配置错误,IOMMU(以“AMD-Vi”或“Intel VT-d”销售)没有针对 PCI 设备的正确映射从而对内核隐藏它。
要查看是否属于这种情况,请尝试在 UEFI 设置中查找可让您禁用 IOMMU 的切换选项。如果禁用 IOMMU 有帮助,则可以将其关闭,除非您想要在设备上运行任何虚拟机并让这些虚拟机快速访问硬件(通常用于加速虚拟机中的 GPU 渲染)。
作为替代测试,您可以尝试手动加载驱动程序modprobe sdhci_acpi
,并查看日志中是否从 IOMMU 收到任何错误dmesg
。
如果禁用 IOMMU 有帮助,但您确实希望保持其启用状态,则需要使用ivrs_acpihid
类似以下的解决方法https://www.lkml.org/lkml/2019/10/9/1015:
我怀疑 IVRS 表中缺少某些内容,需要为 eMMC 设备提供 ACPI HID。
查看内核参数:
ivrs_acpihid [HW,X86_64]
Provide an override to the ACPI-HID:UID<->DEVICE-ID
mapping provided in the IVRS ACPI table. For
example, to map UART-HID:UID AMD0020:0 to
PCI device 00:14.5 write the parameter as:
ivrs_acpihid[00:14.5]=AMD0020:0