标签: efi

使用UEFI编写操作系统

由于上学原因,我最近没有编码,但我决定再次开始从事OS开发工作.最近我听说EFI作为BIOS的替代品.我想为使用EFI而不是BIOS的平台开发操作系统.我无法确定从哪里开始.谁能指出我正确的方向?也许解释一下EFI对OS开发的意义,也许可以告诉我可以使用哪些测试环境(最好是虚拟的).坦率地说,我真的不确定EFI到底是什么.我也应该花时间研究ARM组装吗?我知道x86汇编,但我觉得这也已经过时了.我真的迷路了,我很想听听你的意见.

谢谢

assembly cpu-architecture osdev efi uefi

18
推荐指数
2
解决办法
8473
查看次数

如何检测WinPE(4)是否已从UEFI或BIOS启动?

我正在寻找一种方法来可靠地检测我何时启动到WinPE 4(powershell)(或WinPE 3(vbs)作为替代),我是从UEFI或BIOS系统启动的吗?(因为我在受限制的环境中没有运行第三方exe)

这会显着改变我在分区布局更改和格式时对Windows部署进行分区的方式.(GPT与MBR等)

我有一个工作是一个适应这样的C++代码使用PowerShell v3的,但感觉还砍十岁上下的:

## Check if we can get a dummy flag from the UEFI via the Kernel
## [Bool] check the result of the kernel's fetch of the dummy GUID from UEFI
## The only way I found to do it was using the C++ compiler in powershell
Function Compile-UEFIDectectionClass{
    $win32UEFICode= @'
    using System;
    using System.Runtime.InteropServices;

    public class UEFI
    {
       [DllImport("kernel32.dll")]
       public static extern UInt32 GetFirmwareEnvironmentVariableA([MarshalAs(UnmanagedType.LPWStr)] …
Run Code Online (Sandbox Code Playgroud)

c# powershell automation winpe efi

8
推荐指数
1
解决办法
5357
查看次数

OS旁边的UEFI运行时服务

我有想法在操作系统旁边运行一个小服务,但我不确定它是否可行.我试着通过阅读一些文档来解决这个问题,但没有达到目标,所以这就是我的问题.

我读到了UEFI运行时服务.
是否可以在固件中安装一个小模块,该模块在所使用的操作系统旁边运行,并将有关设备位置的信息发送到互联网上的地址?

据我所知,我会说,一旦UEFI将控制权移交给OS内核,就不应该在后台运行一些东西.

为了澄清我的意图,我想在我的笔记本电脑上有类似的东西.有Prey项目,但它安装在操作系统内.我正在使用没有自动登录的Linux发行版.如果有人会窃取它,他们可能只会安装Windows.

efi uefi

7
推荐指数
1
解决办法
2379
查看次数

UEFI"应用程序"实际上用于什么类型的东西?

我对PC固件编程很感兴趣,我只是在研究UEFI规范.令我惊讶的是,它似乎是嵌入固件的整个操作系统的规范.您甚至可以编写UEFI"应用程序",它们直接使用UEFI引导服务运行,而不存在任何其他操作系统.

我找到了博客文章,展示了如何创建"Hello,world!" 可以在UEFI预引导环境中运行的应用程序.这很有趣,同时也很奇怪.我将在常规操作系统上运行我的"Hello,world"程序,谢谢.

UEFI应用程序实际上有哪些用例?花哨的启动配置屏幕?任何"真正的"商用PC固件是否使用UEFI应用程序来实现除引导加载程序和引导配置实用程序之外的任何其他功能?

firmware efi uefi

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

在引导时自动运行EFI应用程序

我可以在UEFI环境中构建和手动执行 EFI应用程序.但是,我想让我的应用程序在启动时自动执行.

有没有办法告诉引导加载程序执行此操作,还是需要将我的应用程序转换为驱动程序以使其自动执行?在FDF,DEC,DSC或INF文件中是否有一些条目我不见了?

efi uefi

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

如何在 UEFI 中访问命令行参数?

规范的哪一部分详细说明了如何获取命令行参数?

efi uefi

4
推荐指数
1
解决办法
5786
查看次数

如何通过批处理脚本检测Windows中是否已安装EFI分区?

我正在尝试编写批处理脚本来检测Windows中是否已安装EFI分区.

最终,我的目标是mountvol /S仅在尚未安装EFI分区时使用(安装EFI系统分区).

diskpart具有该list volume命令的实用程序mountvol本身具有一些可能有用的信息,但看起来这两个都需要一些字符串解析.

有没有更好的办法?

windows batch-file efi

3
推荐指数
1
解决办法
4833
查看次数

在EFI模式下启动是否意味着我无法访问BIOS中断?

我正在尝试开发一个简单的操作系统.我以前做过一些装配程序,不得不INT 10h用来在屏幕上显示字符.我知道UEFI支持传统BIOS,并且仍然可以使用INT 10h服务.但是,如果我选择构建纯UEFI可引导操作系统,我应该避免使用INT 10h吗?或者我是以错误的方式看事情的?

换句话说,它的向下钻取printfstdout(屏幕)最终调用的BIOS INT 10h?或者是问题 - " SYS_WRITE函数调用基于INT 10h吗?" 更合适?

我是否仍然需要创建一个512字节的引导扇区并将它们作为第0扇区放在磁盘(或磁盘映像)上?该位置是否0x7c00具有重要意义?

boot operating-system bios osdev efi

3
推荐指数
1
解决办法
3861
查看次数

将EFI内存映射转换为E820映射

我是Linux新手并且学习Linux如何了解可用的物理存储器.我知道有一些BIOS系统调用int 0x15,它将为你提供E20内存映射.

现在我找到了一段代码,其中说明了将EFI内存映射转换为E820内存映射的定义.上面的意思是什么?

这是否意味着主板固件是基于EFI的,但由于此代码在x86上运行,我们需要将其转换为E820内存映射

如果是这样,x86是否只知道E820内存映射?

E820和EFI内存映射有什么区别?

期待得到详细的答案.

linux x86 bios bootloader efi

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