如何隔离驱动器?

如何隔离驱动器?

问题

在 Linux 启动时,我是否可以向“vmlinuz...”行添加一个选项,以防止操作系统(至少在该会话中)能够看到或访问 NVMe SSD - 同时保持所有其他硬件可发现和可安装?

语境

我对 Linux 还不熟悉,仍在学习中。我想创建一个多重引导设置(从不同的驱动器,而不是不同的分区),其中每个操作系统实例实际上都与其他操作系统实例“隔离”。然后我可以在启动时在 BIOS 中选择从哪个驱动器引导,无论哪个驱动器引导,该操作系统都无法看到另一个驱动器。

我正在使用的笔记本电脑无法物理地交换驱动器(至少不经常交换),我想从我的 NVMe 驱动器运行 Win 10 Pro(在设备管理器中禁用 SATA 驱动器)并摆弄各种 Linux 发行版,从我的 SATA 驱动器或 Live CD 运行它们(NVMe 驱动器对它们不可见) - 同时确保我的 NVMe 驱动器上的数据安全。

一些系统信息

  • BIOS
    AMI Aptio 2.18.126
    固件版本 1.05.03
  • 芯片组
    Intel Z170
  • 处理器系列
    Skylake
  • NVMe 驱动器
    三星 950 Pro
  • SATA 驱动器
    Samsung 850 Pro

非常感谢@EugenRieck、@davidgo、@TwistyImpersonator、@dirkt、@KamilMaciorowski 以及所有花时间回复的人。

回答 Dirk 的问题。我的目标是实现多重启动设置,其中“驱动器 a”及其数据和操作系统与“驱动器 b”上运行的任何内容隔离。理想情况下,在 BIOS 中禁用选定驱动器(或驱动器端口)会很方便,或者更好的方法是通过硬件开关,但我的系统没有该选项。我看到一些内容提到通过命令行在启动时配置 Linux 内核选项,所以我想知道我是否可以通过这种方式禁用驱动器。这种方法似乎很方便,因为它更容易应用于预配置的 Live CD 以及我可能在“驱动器 b”上安装和设置的任何内容。(再次感谢 Eugen 提供有关如何执行此操作的详细信息)。从 David 在他的帖子中所说的内容来看,听起来这样的内核命令并没有覆盖,而且在这种方法下,如果我配置错误 IPTables 或配置错误 VM 或安装一个看起来具有一些独特创意功能但实际上已损坏的包,一些恶意软件仍然很容易进入我的 NVMe 驱动器。那是对的吗?

答案1

这相当简单:一个启动命令行参数就modprobe.blacklist=nvme可以完成这个工作。

编辑

根据评论中的要求,以下是一些背景信息:

  • modprobe是检测到设备时自动加载驱动程序的机制。因此,当在 PCIe 总线上检测到您的 NVMe 驱动器时,它将被调用以尝试加载驱动程序。
  • 由于在某些情况下您不希望自动加载驱动程序(典型示例是nouveau与供应商二进制 nvidia 驱动程序相比),该机制包含“黑名单”功能,它将停止驱动程序的自动加载。
  • /etc/modprobe.d可以通过编辑文件或通过内核命令行来启动黑名单。我使用了后者,因为你的问题明确说明了启动命令行。
  • 使 NVMe 驱动器可作为块设备访问的驱动程序(内核模块)不出所料地被称为“nvme”

将所有这些放在一起会产生上述命令行 - 使用这样的参数绝对不罕见,尤其是在古怪的笔记本电脑上。基本上,这与在 Windows 设备管理器中禁用 SATA 驱动程序完全类似。

相关内容