V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Damn
V2EX  ›  问与答

启动时如何选择性地屏蔽 nvme 硬盘?

  •  
  •   Damn · 352 天前 via iPhone · 1444 次点击
    这是一个创建于 352 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前情提要:家里有人见不得多台电脑。

    实际场景:多个硬盘装 Windows 系统,启动时不同的用户选择对应的硬盘。

    真实需求:启动时屏蔽别的硬盘(都是 nvme ,即 PCIe device ),避免误操作,各自相安无事。

    找了一圈似乎修改 ACPI table 可行,但 Clover 貌似只能根据启动不同的 OS 来加载,而我两个不同的启动项都是 Windows ,需要对 ACPI table 做不同的修改。 有没有一种类似的东西,可以在不同的 entry 加载不同的 ACPI table ?

    20 条回复    2024-01-13 18:08:22 +08:00
    AoEiuV020JP
        1
    AoEiuV020JP  
       352 天前 via Android
    真的有必要吗,家里人什么水平,
    默认启动硬盘 A ,并在操作系统层面删除硬盘 B 的所有盘符,这样不够隐蔽?考虑硬盘 B 系统级全盘加密?
    kenvix
        2
    kenvix  
       352 天前   ❤️ 1
    你就不能在 Windows 里直接把硬盘脱机吗
    PrinceofInj
        3
    PrinceofInj  
       352 天前
    买两台小主机,放到一个盒子里,然后配个 KVM 切换器
    zhdi
        4
    zhdi  
       352 天前 via iPhone
    linux 下可以直接添加一个 systemd 来关掉所在的 pci node ,或许 windows 下也可以通过 powershell 做到同样的事,这样理论上磁盘管理器就扫不到盘,日常用的磁盘工具也扫不到
    datocp
        5
    datocp  
       352 天前 via Android
    当年 grub for dos 在单硬盘上实现过,主要是划分三主分区装系统+1 逻辑分区,启动时屏蔽另外 2 主分区来实现启动 3 独立操作系统。
    Tomss
        6
    Tomss  
       352 天前
    AB 两块硬盘分别安装 2 个 windows 同时各自生成启动引导(这个很重要),然后在 BIOS 直接设置默认启动 A 盘的引导,需要启动 B 盘的时候开机按 f12 (不同品牌不一样)进入启动项设置选择 B 盘不就可以了?
    Damn
        7
    Damn  
    OP
       352 天前 via iPhone
    @Tomss 你这个是基本且必要的操作。
    但开机后能访问到非启动盘。
    我想要的效果是启动后只能操作当前系统所在的硬盘,无法操作别的硬盘。
    Damn
        8
    Damn  
    OP
       352 天前 via iPhone
    @AoEiuV020JP
    @kenvix
    @zhdi 目前找到一个折衷的方案。
    开机的时候运行 devcon 或者 pnputil 来 disable-device 。尝试了一下 remove-device 没有成功不知为何。
    waringid
        9
    waringid  
       351 天前
    @PrinceofInj 这个最靠谱
    since2021
        10
    since2021  
       351 天前
    都是 windows 的话,在 ta 的系统里直接删除掉用不到的盘符就行啦
    Damn
        11
    Damn  
    OP
       351 天前 via iPhone
    @AoEiuV020JP
    @kenvix
    @since2021 devcon 和 pnputil 失败,设备管理器里的 nvme 控制器或者硬盘驱动器都是没有办法禁用的,看起来只有删除盘符的选择了。
    @zhdi Windows 似乎没有提供关闭 PCI node 的能力。
    zhdi
        12
    zhdi  
       350 天前 via iPhone
    @Damn 刚查了一下,或许可以尝试一下 disable-pnpdevice ,配合 get-pnpdevice 用,链接如下

    https://learn.microsoft.com/en-us/powershell/module/pnpdevice/?view=windowsserver2022-ps
    另外还有 devcon 可以尝试一下

    https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/devcon-disable
    但大概看了一下,这个貌似是直接卸载驱动,不知道能不能实现你想要的效果
    zhdi
        13
    zhdi  
       350 天前 via iPhone
    @Damn sry 没看到 devcon 失败了,试一下 disablepnpdevice 吧
    busier
        14
    busier  
       349 天前 via Android
    @Damn 不能禁用引导盘(当前系统引导的 bootmgr 所在盘)和系统盘所在的 nvme 控制器和硬盘驱动器以及对应的 pci node ,非引导盘和系统盘还是可以禁用的。
    busier
        15
    busier  
       349 天前 via Android
    如果你引导分区 efi bootmgr 在一块硬盘(并且是通过这个引导进入的系统),win 系统在另一个硬盘,那么两块硬盘,连同控制器,都不能禁用。
    Damn
        16
    Damn  
    OP
       349 天前
    @zhdi
    @busier
    sata 盘可以在 Windows 里面禁用 sata 控制器,但 nvme 好像真的没什么好办法。disablepnpdevice 也是失败的。
    应该是 Windows 设计成这样了,搜到一个:
    Generally you can't disable PCIE/add-in card devices which nvme drives are considered.
    ( https://hardforum.com/threads/can-i-disable-nvme-slot.2018114/)
    Damn
        17
    Damn  
    OP
       349 天前
    @busier 并不,我两块盘都是独立的 os ,并且我还有第三盘,上面没有 os ,也无法禁用的。
    Damn
        18
    Damn  
    OP
       349 天前
    @zhdi
    @busier 而且操作的时候无论是"SCSI\DISK&VEN_NVME&PROD*********",还是"PCI\VEN_****&DEV_**********",都是一样的结果。
    busier
        19
    busier  
       349 天前 via Android
    先用设备管理器 把查看改成 按连接列出 测试下禁用
    zhdi
        20
    zhdi  
       349 天前 via iPhone
    @Damn 那就不清楚了,我的 windows 只用来打游戏,对 windows 没啥了解(
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2649 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:38 · PVG 13:38 · LAX 21:38 · JFK 00:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.