我有一个英特尔 750 NVMe 驱动器。工作正常。嗯……有点。我想将此设备用作我的根文件系统。
我没有对 NVMe 设备的 bios 支持。
当我尝试将此设备用作 grub2 中的根文件系统时,我得到了一个未知设备。
这是内核和参数的 grub2 行:
linux /boot/kernel-4.1.6-gentoo root=/dev/nvme0n1p1 ro quiet
Run Code Online (Sandbox Code Playgroud)
为什么是这样?驱动程序在内核中。它不是一个模块。它不需要来自根文件系统的任何东西。是否使用 bios 访问 /dev/nvme0n1p1?
我的第二次尝试是使用 initramfs。我使用 genkernel 来创建 initramfs。
这也有 /dev/nvme0n1p1 的问题。它使用 initramfs 启动到 linux。但是,当它尝试通过 linuxrc 脚本挂载真正的根文件系统时,它在检查块设备时失败
.... 检查块设备或 /dev/nfs elif [ -b "${REAL_ROOT}" ] || [ "${REAL_ROOT}" = "/dev/nfs" ] ...
REAL_ROOT 设置为 dev/nvme0n1p1(我添加了一些调试代码)
我破解了上面的脚本,只挂载 /dev/nvme0n1p1 并且也失败了。它不在那里。
奇怪的是......失败后它要求用户进入根文件系统......然后......我输入“/dev/nvme0n1p1”并且它工作正常。靴子。
此外,它会让你进入一个 shell.. 和 /dev/nvme0n1p1 在那里......和测试
elif [ -b "${REAL_ROOT}" ]
Run Code Online (Sandbox Code Playgroud)
通过外壳。
那么,#1 中发生了什么。这应该工作吗?是否正在使用 BIOS(会失败,因为我的 BIOS 不支持 …