假设我们有一台双启动机器。或者我们在 CD 驱动器中有一个 Linux LiveCD。
我们正在运行 Windows 并选择重新启动或休眠。
机器退出操作系统并返回引导过程。
在这里我们可以选择其他一些操作系统。或者我们可以在 CD 驱动器中启动 Linux LiveCD。
然后我们关闭其他操作系统。
当我们重新启动时,Windows 再次获得控制权。这个 Windows 实例是否“知道”在重新启动之间有其他操作系统正在运行?
我正在考虑一些记录先前引导设备的 CMOS 设置(或 BIOS 或 UEFI 或类似设置)。
将其与当前引导设备进行比较将告诉操作系统在其间运行其他操作系统。
那可能吗 ?
尽管我出于好奇而问这个问题,但有实际原因:
例如 1:当我们有一台公司笔记本电脑,并且公司政策是不使用 Linux LiveCD(例如从硬盘中提取机密数据)时,检查“以前的引导设备”并将其记录在员工身上可能很有用。
例如 2:Windows 可能假设想要进入关于系统文件完整性的“偏执模式”,并在检测到“上一个引导设备”不是 Windows 时启动完整的系统检查。
不见得。我从未见过 BIOS 记录引导设备。如果您要从 Live CD 或 USB 启动,安装在 HDD/SSD 上的操作系统将不会执行并创建自己的任何日志。然后,您就可以在无人知晓的情况下复制文件甚至镜像磁盘。
话虽如此,如果公司不希望您这样做,它可能会将引导配置限制为 HDD/SSD,并且密码保护计算机的引导菜单。但是,如果您可以物理访问计算机,则可以简单地移除驱动器并从另一台机器上读取它。唯一的保护措施是驱动器是否已加密。
要直接回答这个问题,据我所知这是不可能的,至少不能以一种足够可靠的方式来回答你所描述的问题。系统固件不会保留启动时间的持久日志。唯一接近的事情是磁盘在其 SMART 数据中跟踪的“开机计数”和 TPM 芯片同样跟踪的“启动计数”,但不能使用简单的计数器来证明实际上已经完成了任何不需要的操作.
(一些 Linux 文件系统确实在文件系统本身中记录了“最后安装在”主机名,但这完全是他们自愿的;这样做是为了避免共享磁盘同时被安装两次。)
但是在您的两个示例中,您只考虑在同一台计算机上启动 liveCD - 但是您忘记了从机器中删除磁盘并将其连接到另一个系统(如数据磁盘)的可能性,这更有可能发生. 即使可以轻松检测到以前的非 Windows 启动,它也无法检测到在同一台计算机上甚至没有发生过的事情。
因此,在您的两个示例中,通常会采用不同的方法——而不是使用公司策略(以吓跑最不关心公司策略的人)在为时已晚时对事件做出反应,系统磁盘通常是加密的,以便它的首先无法访问数据,例如使用 BitLocker 或各种商业工具。(也就是说,防篡改与防篡改之间的区别。)
BitLocker 不是让操作系统检测之前发生的事情,而是相反;诸如“测量启动”(通过 TPM + 安全启动)之类的功能提供有关当前启动期间发生的情况的信息,例如,如果当前启动通过验证, Windows 将能够自动解锁受 BitLocker 保护的磁盘,但其他任何事情都不会能够从 TPM 硬件获取解密密钥。