访问 2016 年 4 月 MacBook 12" (A1534) 的 NVMe 闪存驱动器

Car*_*old 6 dual-boot ubuntu arch-linux system-installation macintosh

我正在尝试在 2016 年 4 月的新款 MacBook 12" (A1534) 上安装 Linux。

通过 EFI 从 USB 启动工作正常:我尝试了 Arch Linux(2016.05.01,内核 4.5.1)和 Ubuntu(16.04,内核 4.4.0-21;和 Lubuntu 15.10)。noapic在 Arch Linux 案例和noapic acpi=off noacpi nomodesetUbuntu 案例中,我必须传递内核选项——否则屏幕保持空白并且内核无法启动。

甚至无线网卡也可以开箱即用(Broadcom BCM4350 802.11ac 14e4:43a3)。挂起到 RAM 也有效。(键盘和触摸板不起作用,但目前这些不是我的优先事项。)

但是,内核没有检测到内置闪存驱动器(MacBook 没有进一步的存储介质)。也就是说,blkid并且cat /proc/partitions不显示属于闪存驱动器的任何条目。根据对旧款 MacBook 的建议,我加载了内核模块nvme,并且由于闪存驱动器报告了不正确的 PCI 设备类,因此手动将其绑定:

echo 106b 2003 > /sys/bus/pci/drivers/nvme/new_id
Run Code Online (Sandbox Code Playgroud)

dmesg 输出没有信息,它只是报告探测失败。闪存驱动器报告lspci -nn如下:

01:00.0 Mass storage controller [0180]: Apple Inc. Device [106b:2003] (rev 11)
Run Code Online (Sandbox Code Playgroud)

请注意,这与之前版本的 MacBook(其中 PCI ID 为 106b:2001)不同。从 Grub shell 检测到闪存驱动器,并且在 Mac OS X 上工作正常。

我接下来应该尝试什么?我希望确实有进一步的建议,在这一点上我不知所措。

Car*_*old 3

我现在可以高兴地确认使用内核 4.6.0-rc7访问内置闪存驱动器没有问题,并使用以下命令手动绑定设备:

echo 106b 2003 > /sys/bus/pci/drivers/nvme/new_id
Run Code Online (Sandbox Code Playgroud)

我将提交一个补丁,这将使手动绑定变得多余。

在测试过程中,我遇到了一次虚假超时,但我再也无法重现。即使在执行适度的磁盘密集型操作时,驱动程序似乎也很稳定。

MacBook 唯一剩下的问题是:

  1. 音频播放不起作用(录音工作正常)。
  2. 键盘和触摸板不起作用。