标签: bios

如何通过命令提示符检查Linux中的BIOS版本或名称?

我想在终端上工作时检索当前的BIOS版本和名称.

可以找到它的命令是什么?

linux terminal bios

39
推荐指数
2
解决办法
4万
查看次数

编写自己的BIOS

我并不疯狂,只是重新发明轮子:D
我写过启动加载器,鼠标和键盘迷你驱动程序,迷你操作系统等等.

我总是试图避免DOS中断,只使用BIOS,尝试前进一个统一的迷你操作系统,但突然我决定编写自己的BIOS :)

传说:
我是高级程序员,然后是低级程序员.有一天,我将成为机器语言程序员!

BIOS是用汇编语言编写的吗?我该如何闪光?机制是什么?我可以开始编辑当前的BIOS吗?

x86 assembly bios

34
推荐指数
1
解决办法
5万
查看次数

可靠的方式生成唯一的硬件ID

问题:我必须为每个联网客户端提供唯一ID,例如:

  • 一旦客户端软件安装在目标计算机上,它(ID)应该保持不变,并且如果软件重新安装在同一台计算机和相同的操作系统上,则应继续保持,
  • 如果在大多数情况下修改硬件配置(更换主板除外),则不应更改
  • 当安装了客户端软件的硬盘驱动器克隆到具有相同硬件配置(或尽可能相似)的另一台计算机时,客户端软件应该知道该更改.

一点点解释和一些背景故事:

这个问题基本上是古老的问题,也触及了软件拷贝保护的主题,因为这里提到了该领域中使用的一些机制.在这一点上我应该清楚,我不是在寻找一种复制保护方案.请继续阅读.:)

我正在开发一个应该在本地网络中工作的客户端 - 服务器软件.我必须解决的一个问题是识别网络中的每个唯一客户端(而不是问题),以便我可以将某些属性应用于每个特定客户端,在特定部署的生命周期中保留并强制执行这些属性.客户.

在我寻找解决方案时,我发现了以下情况:

  • Windows激活系统使用某种对硬件修改极其敏感的重型指纹识别机制,
  • 磁盘映像软件会复制所有卷ID(格式化时绑定到每个分区),以及在安装过程中,首次运行期间或以任何其他方式自定义,唯一生成的ID,严格来说属于软件本身,并存储在注册表或在硬盘上,所以很容易混淆两个.

这种问题的明显选择是找出BIOS标识符(不过100%确定这是否通过相同的主板型号是唯一的),因为这是我唯一可以依赖的不重复,通过克隆传输,并且不能改变(至少不能通过使用一些用户空间程序).其他一切都失败了,因为要么不可靠(MAC克隆,任何人?),要么太苛刻(就其对配置变化过于敏感而言).

我想问的一个子问题是,我是否正确地进行了架构方面的工作?也许有一个更好的工具来完成我必须完成的任务......

我想到的另一种方法类似于握手机制,其中服务器维护一个连接的客户端ID的内部查找表(在任何给定时刻甚至可以完全基于软件和非唯一),并告诉客户端如果在连接时提供重复的ID,则在握手期间提供不同的ID.遗憾的是,这种方法不能很好地满足在生命周期内将属性绑定到特定客户端的要求之一.

windows client-server bios uniqueidentifier hardware-id

30
推荐指数
4
解决办法
4万
查看次数

了解SMBIOS中的段组,总线,设备和功能编号

目的

我正在尝试以编程方式找出特定PCIe设备连接的物理插槽.前提是我有卡的PCI-ID肯定会占用一个插槽,解决方案是找出哪一个.

请注意,我只对使用PCI Express总线感兴趣,尽管我认为设备识别/枚举过程与旧PCI相同.

尝试

SMBIOS包含可用的主板插槽信息.可以从linux命令行检查这些信息:

$ sudo dmidecode -t slot
# dmidecode 2.11
SMBIOS 2.7 present.

Handle 0x003A, DMI type 9, 17 bytes
System Slot Information
    Designation: PCIEX16_1
    Type: x16 PCI Express x16
    Current Usage: In Use
    Length: Short
    ID: 1
    Characteristics:
        3.3 V is provided
        Opening is shared
        PME signal is supported
    Bus Address: 0000:03:02.0

Handle 0x003B, DMI type 9, 17 bytes
System Slot Information
    Designation: PCIEX16_2
    Type: x8 PCI Express x8
    Current Usage: In Use …
Run Code Online (Sandbox Code Playgroud)

linux bios pci pci-e

19
推荐指数
1
解决办法
2381
查看次数

Oracle VirtualBox"在BIOS中禁用了VT-x"

从Oracle虚拟盒加载图像时出现此错误.我该如何解决?我通过远程桌面连接将虚拟机4.3.12安装到Windows 7 64位,32G RAM计算机上.

在此输入图像描述

我查看了英特尔可视化设置,它对硬件可视化说"是". 在此输入图像描述

我在网上看到这个问题看起来像是同一个问题.但我正在使用远程桌面控制,所以我无法在重启页面上更改设置.重新启动此计算机时,我将自动注销.

从Oracle虚拟框启动映像时,VERR_VMX_MSR_VMXON_DISABLED

virtualbox remote-desktop remote-access bios

18
推荐指数
1
解决办法
5万
查看次数

现代操作系统如何使用BIOS?

BIOS在现代操作系统中的作用是什么?它在启动后仍然使用吗?是否有某种BIOS API?

api operating-system bios

17
推荐指数
2
解决办法
2827
查看次数

为什么我不能从保护模式调用BIOS中断?

对.今天我花了三个多小时试图理解为什么你不能在保护模式下调用bios ISR.我得到的一旦你设置和IDT它不一定是在通常的地址为IVT加段没有固定的大小在保护模式等.但我仍然不明白为什么不能你jsut创建一个4GB段,将您的IDT段映射到BIOS IVT,将所有内容设置为0,然后调用它们.不应该那样吗?

大多数文章要么说:"记住你不能在保护模式下使用BIOS中断!" 没有探索主题或极具描述性和引用陷阱,例外,图片重新制作,缺乏权利和段记录的问题作为其背后的原因.

如果有人能够提出一个更人性化的解释,那将是非常有帮助的...我不怀疑文章所说的内容,我只是想明白为什么会这么"痛苦"!

提前致谢!

protected mode interrupt bios

13
推荐指数
2
解决办法
3345
查看次数

用于查询和设置bios属性的API

假设我想在Linux中更改计算机BIOS中的设置(如果重要的话,请说Ubuntu 11.)有哪些类型的API可用于查询和操作BIOS设置?

此外,进行此类开发的资源是什么?

c linux operating-system bios

13
推荐指数
2
解决办法
2万
查看次数

为什么BIOS入口点以WBINVD指令开始?

我正在研究我的机器中的BIOS代码(x86_64 Linux,IvyBridge).我使用以下过程来转储BIOS代码:

$ sudo cat /proc/iomem | grep ROM
  000f0000-000fffff : System ROM
$ sudo dd if=/dev/mem of=bios.dump bs=1M count=1
Run Code Online (Sandbox Code Playgroud)

然后我radare2用来读取和反汇编二进制转储:

$ r2 -b 16 bios.dump 
[0000:0000]> s 0xffff0
[f000:fff0]> pd 3
        :   f000:fff0      0f09           wbinvd
        `=< f000:fff2      e927f5         jmp 0xff51c
            f000:fff5      0000           add byte [bx + si], al
Run Code Online (Sandbox Code Playgroud)

我知道x86处理器初始化始终以16位8086环境开始,并且要执行的第一条指令是at f000:fff0,即0xffff0.所以我去那个地方并反汇编代码.

令我惊讶的是WBINVD,第一条指令的功能是使缓存无效,这在处理器上电或复位时似乎无关紧要.我希望第一条指令只是jmp一个较低的内存地址.

为什么WBINVD以前有jmp

我已经搜索了英特尔手册第3卷第9章处理器管理和初始化的相关部分,但它没有提及任何相关内容WBINVD.我也搜索了一些在线资源,但没有找到任何解释.

编辑以获取更多信息:

遵循jmp指令后0xff51c,代码更有趣; 它正在进行自我检查:

[f000:f51c]> pd
            f000:f51c      dbe3 …
Run Code Online (Sandbox Code Playgroud)

boot x86 assembly bios

13
推荐指数
1
解决办法
405
查看次数

现代 PC 视频硬件是否支持硬件中的 VGA 文本模式,或者 BIOS 是否模拟它(使用系统管理模式)?

当您将一个字节(例如(0x31)存储到物理线性地址的VGA 文本(模式 03)帧缓冲区中时),在以 16 位传统 BIOS MBR 模式启动的现代 PC 硬件上究竟发生了什么? 将该地区MTRR设置为 UC商店有多慢在一台 Kaby Lake iGPU 笔记本电脑上的实验测试表明,WC 上的 clflushopt 与 VGA 内存的 UC 速度大致相同。但没有 clflushopt,存储到 WC 内存永远不会离开 CPU 并且根本不更新屏幕,运行速度超快.)'1'B8000mov [es:di], eaxmov

如果它不是每个商店的 SMI,是否有任何方法可以在用户空间中的一块 WB 内存上估算此成本,以进行性能实验而无需实际重新启动到实模式?(例如,使用 BSS 页面作为实际上并不在任何地方显示的假装帧缓冲区)。

相应的字体字形在下一次刷新时出现在屏幕上,但硬件扫描是否真的从 VRAM(或 iGPU 的 DRAM)读取该 ASCII 字符并动态映射到位图字体字形?或者每个存储或每个 vblank 都有一些软件拦截,所以真正的硬件只需要处理位图帧缓冲区?


众所周知,传统 BIOS 引导使用系统管理模式 (SMM)将 USB kbd/鼠标模拟为 PS/2 设备。我想知道它是否也用于 VGA 文本模式帧缓冲区。我认为它用于VGA的I …

performance assembly bios vga x86-16

13
推荐指数
2
解决办法
1199
查看次数