精华内容
下载资源
问答
  • 安装Ubuntu 系统后发现开机时按什么键都没办法进入到 BIOS或UEFI界面了。网上能找到的最明显的方法就是 使用 sudo rm -rf /* 命令来卸载系统,这样虽然粗暴简单,但是这样做的话,系统也没有了如果还要用Ubuntu的话...

    前言:

    安装Ubuntu 系统后发现开机时按什么键都没办法进入到 BIOS或UEFI界面了。
    网上能找到的最明显的方法就是 使用 sudo rm -rf /* 命令来卸载系统,这样虽然粗暴简单,但是这样做的话,系统也没有了如果还要用Ubuntu的话还得重装一遍系统,很麻烦。所以自己分享一个不用卸载系统进入BIOS或UEFI的方法,GRUB也可以按照这个方法进入。
    在这里插入图片描述



    第一步:

    首先进入到Ubuntu系统,打开终端,输入 sudo vim /etc/default/grub 命令,编辑配置文件 。

    在这里插入图片描述



    第二步:

    在编辑界面按 i键 进行编辑,将 GRUB_CMDLINE_LINUX_DEFAULT 的值修改为 “text”, 修改完成后,保存文件。
    在这里插入图片描述

    在这里插入图片描述



    第三步:

    使用 sudo update-grub 命令更新grub配置。
    在这里插入图片描述



    第四步:

    更新完配置后,重启系统,开机时尝试一直连续按键盘上的 ESC 或 DEL 或 F2 或 F12等其他按键,具体按哪个还得看自己机器和主板的型号。这样就可以进入BIOS或者UEFI设置了。
    在这里插入图片描述

    进入GRUB和前面差不多,等到BIOS自检过后,亮一下屏,再一直按ESC键就可以进入了。
    在这里插入图片描述



    其他

    如果还不行,可以尝试注释掉 GRUB_TIMEOUT_STYLE=hidden
    并将 GRUB_TIMEOUT 的值改为10,再试试看
    在这里插入图片描述

    原创文章,如需转载请注明出处或者相关链接
    展开全文
  • UEFI Images

    千次阅读 2015-07-15 13:46:13
    UEFI Images 1. 什么是UEFI Images? UEFI Images是UEFI定义的、包含可执行代码的一类文件,最显著的特征是包含一个用来定义这段可执行代码格式的PE/COFF header,这个header定义了Processor Type和Image Type。...

    UEFI Images


    1. 什么是UEFI Images?

    UEFI Images是UEFI定义的、包含可执行代码的一类文件,最显著的特征是包含一个用来定义这段可执行代码格式的PE/COFF header,这个header定义了Processor Type和Image Type。(Microsoft Portable Executable and Common Object File Format Specification (Microsoft 2008)) 

     // PE32+ Subsystem type for EFI images
    #define EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION                          10
    #define EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER   11
    #define EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER               12


    // PE32+ Machine type for EFI images
    #define EFI_IMAGE_MACHINE_IA32                                    0x014c
    #define EFI_IMAGE_MACHINE_IA64                                    0x0200
    #define EFI_IMAGE_MACHINE_EBC                                   0x0EBC
    #define EFI_IMAGE_MACHINE_x64                                     0x8664
    #define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED       0x01C2

    2. UEFI Images的分类

    UEFI Images依据驻留内存的能力可分成两大类:

    1>, UEFI Applications   其中,UEFI OS Loader是一种特殊类型的Application

    2>, UEFI Drivers      又分为:UEFI Boot Service Drivers和UEFI Runtime Drivers

    各个类别的区别,主要有两点:一、各Image被加载到的Memory Type不同,二、退出或返回时的Action不同。

    一、各Image被加载到的Memory Type不同:

    二、退出或返回时的Action不同:

    a>. UEFI Applications:当Image退出或返回时,这种Image会被自动卸载,其内存资源和状态会被释放。

    b>. UEFI OS Loader:这是一种特殊类型的Application,通常不会退出或返回,相反的,它会调用gBS->ExitBootService()来把平台的控制权从固件交给OS。

    c>. UEFI Boot Service Drivers:这种Image的内存资源和状态在进入操作系统之前都被保存,当OS Loader调用gBS->ExitBootService()时被释放。

    d>. UEFI Runtime Drivers:这种Image的内存资源和状态会一直存在。这些Images和UEFI OS并存,并且能够被支持UEFI的OS调用。

    3. UEFI Image Entry Point

    Prototype
        typedef
        EFI_STATUS
        (EFIAPI *EFI_IMAGE_ENTRY_POINT) (
            IN     EFI_HANDLE                   ImageHandle,
            IN     EFI_SYSTEM_TABLE     *SystemTable
        );      

    Parameters
        ImageHandle:  The firmware allocated handle for the UEFI image.   该UEFI Image的ImageHandle
        SystemTable:    A pointer to the EFI System Table.                                 指向EFI System Table的指针

    有了这两个参数,EFI Image可以做到:

    1>. 访问平台上可用的所有EFI服务程序。

    2>. 知道EFI Image从哪里被装载以及放在内存的什么位置。

     

    Note:

    UEFI Images不是被编译和链接在一个固定的位置,相反的,UEFI Images可以被relocation,所以UEFI Images能被放系统内存的任何地方。

    一个UEFI Image是通过EFI Boot Service gBS->LoadImage()被加载(Load)并重定位(Relocation)到系统内存中的;通过gBS->StartImage()被调用。

    EFI Boot Service gBS->LoadImage()会做以下动作:

    1>. 为加载的 Image分配内存(Allocate Memory)。

    2>. 自动为Image申请Relocation fix-up。

    3>. 在Handle database中创建一个新的Image handle. 在这个新的Image handle中,创建了一个EFI_LOADED_IMAGE_PROTOCOL的instance, 它包含了被加载的Image的信息。

     

     

    Refer:

    Unified Extensible Firmware Interface Specification, Version 2.3.1

    Beyond BIOS, Second Edition

    展开全文
  • UEFI Runtime Drivers

    2020-08-07 10:54:24
    UEFI runtime driver 是当OS 调用ExitBootServices 之后继续给OS 提供服务的驱动,UEFI Driver Writer Guide 也提到了一个比较好的UEFI runtime driver 是UNDI driver,其实写过网卡驱动的同学知道,在UEFI 环境一下...

    UEFI Runtime Drivers

    UEFI runtime driver 是当OS 调用ExitBootServices 之后继续给OS 提供服务的驱动,UEFI Driver Writer Guide 也提到了一个比较好的UEFI runtime driver 是UNDI driver,其实写过网卡驱动的同学知道,在UEFI 环境一下我们只要提供SNP 驱动就可以了(参考VirtNet),提供UNDI 驱动是为了支持有的OS 启动的时候也可以直接调用UNDI 提供的接口去收发网络包。(感兴趣可以参考Network Driver Design Guidelines)

    UEFI runtime driver 比一般驱动稍微麻烦一点的就是注意,OS启动之后用的是虚拟地址,它的物理地址和逻辑地址存在一个转换关系,但是UEFI 环境下,比如X86_64, 在DXE 之后一般是进入64Bit Mode, 分页模式虽然已经打开但是逻辑地址和物理地址是1:1 关系,所以我们UEFI runtime driver 驱动的一些地址要进行转换比如全局变量地址、allocate 返回的地址、寄存器mmio地址等等。当然UEFI runtime driver 本身代码地址UEFI core 会帮忙转换的。

    举个简单例子OS 下虚拟地址和物理地址转换关系f(x) = phyaddr + 0x1000;

    // 变量A 地址是0x2000 存的值是100
    .data 
       0x2000 : 100
    .text
        movl  (0x2000), %eax     ;  把A的值赋给寄存器eax
    

    如果在UEFI 环境下,A 变量逻辑地址和物理地址都是0x2000 并且该地址存的值是100,但是如果在OS 下,由于OS 下MMU 是开启的,那么在movl (0x2000), %eax 寻址的时候会进行转变,如上关系得到phyaddr = f(x) - 0x1000 = 0x2000 - 0x1000 = 0x1000, 所以这行代码就会把物理地址0x1000的值给到eax ,当然这个不是我们想要的结果。所以我们会调用EfiConvertPointer 这个function 把A的地址进行转换,转换结果A的地址就会变成0x3000 所以执行 movl (0x3000), %eax 就会把物理地址0x2000地址的值给到eax.

    下面具体讲解UEFI runtime driver 从UEFI 到OS 细节讲解

    UEFI 部分:

    uefi runtime core 相关代码稍微有点分散

    • DxeMain.c
    • DxeProtocolNotify.c
    • Image.c
    • Event.c
    • Runtime.c

    他们之间的联系是DXE 会临时声明一个EFI_RUNTIME_ARCH_PROTOCOL, 这个Protocol 会把所有Image.c 汇报的类型是RUNTIME_DRIVER 的驱动收集到ImageHead List 上,也会把Event.c 汇报上去所有注册为EVT_RUNTIME (EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE) Event 收集放到EventHead List 上用。当真正的Runtime跑的时候通过DxeProtcolNotify.c 注册的NotifyProtocol 把临时EFI_RUNTIME_ARCH_PROTOCOL上面的内容复制到Runtime.c注册的 EFI_RUNTIME_ARCH_PROTOCOL 上。Runtime.c 会把所有runtime driver image 和 注册EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 变量进行重定向工作。

    //DxeMain.c
    EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate = {
      INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.ImageHead),
      INITIALIZE_LIST_HEAD_VARIABLE (gRuntimeTemplate.EventHead),
    
      //
      // Make sure Size != sizeof (EFI_MEMORY_DESCRIPTOR). This will
      // prevent people from having pointer math bugs in their code.
      // now you have to use *DescriptorSize to make things work.
      //
      sizeof (EFI_MEMORY_DESCRIPTOR) + sizeof (UINT64) - (sizeof (EFI_MEMORY_DESCRIPTOR) % sizeof (UINT64)),
      EFI_MEMORY_DESCRIPTOR_VERSION,
      0,
      NULL,
      NULL,
      FALSE,
      FALSE
    };
    
    EFI_RUNTIME_ARCH_PROTOCOL *gRuntime = &gRuntimeTemplate;
    
    // Image.c   每当调用LoadImage 就会把runtime driver 注册到链表Imagehead中
    
        if (Image->ImageContext.ImageType == EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER) {
          //
          // Make a list off all the RT images so we can let the RT AP know about them.
          //
          Image->RuntimeData = AllocateRuntimePool (sizeof(EFI_RUNTIME_IMAGE_ENTRY));
          if (Image->RuntimeData == NULL) {
            goto Done;
          }
          Image->RuntimeData->ImageBase      = Image->Info.ImageBase;
          Image->RuntimeData->ImageSize      = (UINT64) (Image->Info.ImageSize);
          Image->RuntimeData->RelocationData = Image->ImageContext.FixupData;
          Image->RuntimeData->Handle         = Image->Handle;
          InsertTailList (&gRuntime->ImageHead, &Image->RuntimeData->Link);
          InsertImageRecord (Image->RuntimeData);
        }
    
    // 我们代码每次注册 gEfiEventVirtualAddressChangeGuid 的时候就会把相关信息收集到链表Eventhead中
      if ((Type & EVT_RUNTIME) != 0) {
        //
        // Keep a list of all RT events so we can tell the RT AP.
        //
        IEvent->RuntimeData.Type           = Type;
        IEvent->RuntimeData.NotifyTpl      = NotifyTpl;
        IEvent->RuntimeData.NotifyFunction = NotifyFunction;
        IEvent->RuntimeData.NotifyContext  = (VOID *) NotifyContext;
        IEvent->RuntimeData.Event          = (EFI_EVENT *) IEvent;
        InsertTailList (&gRuntime->EventHead, &IEvent->RuntimeData.Link);
      }
    
    // DxeProtocolNotify.c 当Runtime.c 跑起来并且注册EFI_RUNTIME_ARCH_PROTOCOL 就会把临时数据拷贝到新的Runtime_Arch_Protocol上
    
        // Copy all the registered Image to new gRuntime protocol
        //
        for (Link = gRuntimeTemplate.ImageHead.ForwardLink; Link != &gRuntimeTemplate.ImageHead; Link = TempLinkNode.ForwardLink) {
          CopyMem (&TempLinkNode, Link, sizeof(LIST_ENTRY));
          InsertTailList (&gRuntime->ImageHead, Link);
        }
        //
        // Copy all the registered Event to new gRuntime protocol
        //
        for (Link = gRuntimeTemplate.EventHead.ForwardLink; Link != &gRuntimeTemplate.EventHead; Link = TempLinkNode.ForwardLink) {
          CopyMem (&TempLinkNode, Link, sizeof(LIST_ENTRY));
          InsertTailList (&gRuntime->EventHead, Link);
        }
    

    接下来是UEFI Runtime Core 入口函数首先会安装EfiRuntimeArchProtocol , 根据上面介绍mRuntime 的ImageHead, EventHead 会在DxeProtocolNotify.c 中把比RuntimeDxe Driver 更早跑的runtime 类型驱动和相关runtime event 重新copy 到Runtime.c 中的mRuntime 结构体里,以后一直会用Runtime.c 中的mRuntime. 在这个驱动中,我们可以看到两个核心函数

    1. RuntimeDriverSetVirtualAddressMap
    2. RuntimeDriverConvertPointer

    在RuntimeCore 之前我们应该知道我们目前处理器处于什么状态,以X86-64 为例,我们目前已经处于long mode (PE,PAE , PG , LME 都是enable 状态),页表处于1:1 映射状态,对于页面是选择1G/2M/4K 那要看代码实现了。想检查也简单方法如下 PDPTE.PS ? 1G:(PDE.PS ? 2M : 4K) 建立1:1 页表可以参考 CreateIdentityMappingPageTables;

    RuntimeCore 两个核心函数RuntimeDriverSetVirtualAddressMap, RuntimeDriverConvertPointer
    RuntimeDriverSetVirtualAddressMap 是OS 调用的,调用这个function 之前,OS 会调用GetMemoryMap,我们知道MemoryMap 会得到EFI_MEMORY_DESCRIPTOR 如下所示,OS 会把所有具有Runtime 属性的EFI_MEMORY_DESCRIPTOR 中的VirtualStart 填入,然后把这些MemoryMap 描述符一起传入到RuntimeDriverSetVirtualAddressMap 这个function 中,所以RuntimeDriverConvertPointer 就知道了虚拟地址和物理地址的转换关系,RuntimeDriverSetVirtualAddressMap 要做的就是把所有Runtime Driver 进行重定位,对于注册了gEfiEventVirtualAddressChangeGuid Events 进行地址转换。关于PE 进行重定位挺简单的,可以参考

    UEFI 文件类型

    typedef struct {
      UINT32                Type;
      EFI_PHYSICAL_ADDRESS  PhysicalStart;
      EFI_VIRTUAL_ADDRESS   VirtualStart;
      UINT64                NumberOfPages;
      UINT64                Attribute;
    } EFI_MEMORY_DESCRIPTOR;
    

    这些就是整个UEFI Runtime Core 的逻辑,单看UEFI 部分还比较简单容易理解。但是从UEFI到OS 一个整体就会有一些难度比如:

    1. 我们知道RuntimeDriver 是被RuntimeCore中的RuntimeDriverSetVirtualAddressMap
      进行重定位和地址转换之后才会被OS 访问,但是RuntimeDriverSetVirtualAddressMap 是直接被OS调用的,那么当时OS 页表和UEFI 一样么?直接调用会不会有问题?

    2. OS 是多任务,那么有没有可能比如RuntimeDriver 和 其他进程同时访问设备资源,会不会有问题?

    3. OS 对于性能和并发的互斥性比较在意的,那么如果RuntimeDriver 比较耗时会不会影响操作系统性能? RuntimeDriver 是否可以多进程同时访问,访问RuntimeDriver 用了什么样的同步机制。
      等等问题需要我们去研究,OS 相关问题之后博客会更新

    针对第二个问题引用EBBR 中的一段话

    2.5.1. Runtime Device Mappings
    Firmware shall not create runtime mappings, or perform any runtime IO that will conflict with device access by the OS. Normally this means a device may be controlled by firmware, or controlled by the OS, but not both. e.g. If firmware attempts to access an eMMC device at runtime then it will conflict with transactions being performed by the OS.
    Devices that are provided to the OS (i.e., via PCIe discovery or ACPI/DT description) shall not be accessed by firmware at runtime. Similarly, devices retained by firmware (i.e., not discoverable by the OS) shall not be accessed by the OS.
    Only devices that explicitly support concurrent access by both firmware and an OS may be mapped at runtime by both firmware and the OS.

    展开全文
  • UEFI开发探索系列博客的第48篇中,我介绍了如何在VirtualBox中搭建UEFI Shell。本节就在这篇博客的基础上,让VirtualBox下的UEFI Shell有访问网络的功能。 1)安装网络驱动和网络协议驱动 我使用的是VirtualBox...

    (请保留-> 作者: 罗冰   https://blog.csdn.net/luobing4365)

    在VirtualBox中使用网络

    在UEFI开发探索系列博客的第48篇中,我介绍了如何在VirtualBox中搭建UEFI Shell。本节就在这篇博客的基础上,让VirtualBox下的UEFI Shell有访问网络的功能。

    1) 安装网络驱动和网络协议驱动

    我使用的是VirtualBox6.1.4,其虚拟网卡为Intel Pro/1000MT Desktop。网卡驱动下载地址为:

    https://downloadcenter.intel.com/download/27539/Ethernet-Intel-Ethernet-Connections-Boot-Utility-Preboot-Images-and-EFI-Drivers

    下载版本为22.10的PREBOOT.exe,双击安装。将目录/APPS/EIF/EFIx64下的驱动E3522X2.EFI拷贝到虚拟机的硬盘中。同时,将之前编译好x64的Ipv4网络协议驱动(MdeModulePkg)也拷贝到虚拟机的硬盘中。

    启动虚拟机,进入UEFI Shell,执行如下命令,加载网卡驱动和网络协议驱动:

    Shell>fs0:
    fs0:>load E3522X2.EFI
    fs0:> load SnpDxe.efi MnpDxe.efi ArpDxe.efi Ip4Dxe.efi VlanConfigDxe.efi Udp4Dxe.efi Dhcp4Dxe.efi Mtftp4Dxe.efi Tcp4Dxe.efi

    2) 配置网卡。

    使用ifconfig命令设置:

    fs0:\>ifconfig -s eth0 dhcp

    检查网络配置情况:

    图1 VirtualBox的UEFI Shell中查看IP

    3) 测试网络连接

    我的主机IP地址为192.168.1.42,VirtualBox虚拟机通过NAT方式与主机相连的。测试情况如下:

    图2 VirtualBox的UEFI shell中网络连接测试

    在Qemu中使用网络

    以下的实验,OVMF的镜像在VS2015+UDK2018下编译,Qemu的网络实验在Ubuntu16.04 LTS下进行。

    官方的文档中,OVMF的实验一直都是以Qemu为例的。Qemu的功能很强大,也非常灵活,带来的问题是配置相对复杂。因此,除了需要进行源码级调试时,我也很少使用。

    在Qemu中搭建网络测试环境,可按照如下步骤进行:

    1) 编译OVMF镜像。

    在Intel网站上下载E3522X2.EFI,这是网卡E1000的驱动,上一节中已经给出了下载地址。进入UEFI的编译目录,新建目录Intel3.5/EFIX64,将E3522X2.EFI拷贝到这个目录下。

    编译OVMF镜像,编译命令为:

    C:\Myworkspace> build -p OvmfPkg/OvmfPkgX64.dsc -a X64 -D E1000_ENABLE -D DEBUG_ON_SERIAL_PORT

    同时按照之前的方法编译UEFI下64位Ipv4的网络协议,将编译好的镜像OVMF.fd和网络协议驱动拷贝出来,准备下面的步骤。

    2) 安装Qemu和必要的网络工具

    使用apt-get 安装,命令为:

    $ sudo apt-get install qemu
    $ sudo apt-get install bridge-utils  #虚拟网桥设置工具
    $ sudo apt-get install uml-utilities  #UML(User-mod linux)工具

    3) 搭建Qemu的网络通道

    在之前的编译中,已经将网卡驱动包含在VOMF镜像所启动的UEFI shell中了。如果不指定任何网络设置,Qemu将使用带有内置DHCP服务器的用户模式(user)网络。当虚拟机运行时,可设定为DHCP模式,它能够通过QEMU伪装的IP来访问物理主机的网络。

    不过,这种情况下,能通信的仅限于TCP和UDP协议,因此ICMP协议(包括ping)将不起作用。因此,我们准备采用tap模式,使用桥接的方法,让虚拟机和外部通信起来。

    首先用命令ifconfig获取本机的网络接口:

    图3 获取网络接口

    然后按照如下步骤操作,当然,也可以写个sh文件,批量处理:

    $sudo ifconfig ens33 down                 # 先关闭ens33接口
    $sudo brctl addbr br0                     # 增加一个虚拟网桥br0
    $sudo brctl addif br0 ens33                # 在br0中添加一个接口ens33

    $sudo brctl stp br0 off                    # 只有一个网桥,所以关闭生成树协议
    $sudo brctl setfd br0 1                    # 设置br0的转发延迟
    $sudo brctl sethello br0 1                 # 设置br0的hello时间
    $sudo ifconfig br0 0.0.0.0 promisc up       # 打开br0接口
    $sudo ifconfig ens33 0.0.0.0 promisc up     # 打开ens33接口
    $sudo dhclient br0                      # 从dhcp服务器获得br0的IP地址

    $sudo tunctl -t tap0 -u root               # 创建一个tap0接口,只允许root用户访问
    $sudo brctl addif br0 tap0                # 在虚拟网桥中增加一个tap0接口
    $sudo ifconfig tap0 0.0.0.0 promisc up      # 打开tap0接口

    其作用为创建虚拟网桥br0和虚拟网卡接口tap0,并将tap0和宿主机的网络接口(ens33)作为网桥的两个接口。这样,宿主机的接口作为网桥接口,与外部网络连接;TAP设备作为网桥的另一个接口,与Qemu虚拟机中的Vlan连接。

    配置虚拟机内UEFI网卡

    将之前的Ipv4的64位驱动文件,拷贝到hda.img中,拷贝的方法在之前的博客《UEFI开发探索39》中已经详细描述过。

    启动虚拟机:

    $sudo qemu-system-x86_64 -bios OVMF.fd -hdd hda.img -net nic -net tap,ifname=tap0 -serial stdio

    进入UEFI shell后,设置网卡的IP地址,注意要与宿主机的网卡地址同一网段。

    FS0:\> ifconfig -s eth0 static 192.168.171.111 255.255.255.0 192.168.171.141

    至此,完成了所有的配置过程,虚拟机的网卡和宿主机网卡连通完毕。可以按照之前介绍的方法,加载Ipv4相关的网络协议驱动,以备后续的实验。

    5) 测试网络连接

    从宿主机ping虚拟机,以及从虚拟机中ping宿主机,情况如下:

    图4 Qemu虚拟机与宿主机的网络连接测试

    用了两篇博客的篇幅,尝试了三类不同的UEFI网络的搭建方法。对平常的编程来说,可能用得最多的还是Nt32的模拟环境。

    从下篇开始,尝试UEFI下的TCP和UDP编程。

    展开全文
  • 市面上的电脑大部分都预装联想电脑使用UEFI模式注意事项:1、2、uefi模式开启后分区形式需要采用gpt分区,我们可以用disk...联想电脑BIOS设置UEFI模式:1、开机一直按F2或(FN+F2)进入BIOS,切换到Startup,把Boot ...
  • 大致意思就是让不要用UEFI启动,我就去按照这个步骤设置了(去除红框中的勾选)。 很棒,系统直接无法启动了。 没办法,只好再勾选上那个勾选。 然后再尝试启动,可以正常进入了。 不知道怎么解释了 反正我...
  • (请保留-> 作者: 罗冰) 我使用AppPkg进行Uefi app和UEFI oprom的开发,这样很方便生成在实际硬件中运行的代码...我一般是将生成文件拷贝到其同目录下,运行SecMain.exe,进入模拟UEFI Shell执行生成文件。 当然...
  • UEFI知识积累

    千次阅读 2018-03-06 15:47:42
    UEFI原理及编程知识点总结:第三章:*pkg:包含模块和和.dsc文件和.dec文件每个工程模块:原数据文件(.inf文件)和原文件(.efi文件组成)标准应用程序模块包含的部分:头文件(Uefi.h)和入口函数(默认的入口函数...
  • 但碰到一个匪夷所思的问题,纯新的系统内核引导没任何问题,但就是不能进入系统,上来就是救援模式。 cat /var/log/boot.log [ TIME ] Timed out waiting for device dev-disk-by\x2duuid-5f874d06\x2db1ca\x2d4....
  • UEFI Shell下截屏工具1 PrintScreenLogger的代码结构1)PrintScreenLoggerEntry()2)PrintScreenLoggerUnload()3)PrintScreenCallback()2 测试运行 最近有些程序,只能在实际机器的UEFI Shell下进行测试。比如上...
  • UEFI 之 Capsule Update

    2021-06-06 20:58:39
    什么是UEFI Capsule Update呢?Capsule,顾名思义,是“胶囊”的意思,所以UEFI Capsule Update可以理解为胶囊式固件更新。 UEFI规范定义了Firmware Management Protocol(FMP)、capsule格式以及EFI System ...
  • 在安装Android Studio后运行AVD时遇到VT-x is disabled in BIOS的...本来以为只是进入BIOS的事,但是重启按f2一直进不去BIOS,然后上网搜到一堆方法,无非是先关闭win10的快速启动功能,再重启电脑,按fn+f2,或del,,
  • UEFI下安装系统

    2017-07-01 18:53:48
    UEFI下安装系统UEFI 全称“统一的可扩展固定接口”(Unified Extensible Firmware Interface)。所谓UEFI,实际上就是Intel 当年提出的EFI。相比古老陈旧的BIOS系统,UEFI 拥有诸多优势,这种接口用于操作系统自动从预...
  • uefi启动进不去系统怎么办呀?win10x86.ghox86 32位因为32位不支持uefi启动、!因为32位不支持uefi启动、!因为32位不支持uefi启动、!还有 干嘛用ghost?uefi下如何重新安装操作系统?UEFI还是装win10比较简单。分要...
  • 技嘉主板U盘启动UEFI引导模式

    千次阅读 2020-03-14 11:27:27
    当时就觉得很奇怪,明明在BIOS设置中选择的就是UEFI,PE系统一直无法进入UEFI的引导模式。经过贴吧老哥提醒,发现技嘉有很多主板只支持FAT32的格式,故在创建PE的时候U盘的格式应该设置为FAT32。 下面...
  • 一块移动硬盘安装了linux kali。并分了efi区。 安装完后把安装时使用的win10电脑的EFI分区内容copy到移动硬盘的EFI分区下。...一直循环无法进入引导。 这个问题怎么解?是我哪里没有操作错了吗?
  • 在进行电脑重装的时候,我们常会听到UEFI和BIOS这两个词,例如怎么进入BIOS启动设置页面,电脑不支持UEFI启动等等,但是我们对其背后的含义却没有什么了解,实际上这些都是比较基础的知识,理解这些知识的话,更有利...
  • win10 UEFI引导恢复

    万次阅读 多人点赞 2019-04-26 13:09:15
    一直想在本本上装个双系统(win + linux(deepin))。结果呢?到处碰壁,虽然安装完毕但是启动不了(找不到启动项)。上网一查,发现对于efi什么的完全不懂啊,百度一下教程,下载了easybcd这个软件用来编辑启动项...
  • EFI & UEFI

    2020-11-12 15:18:29
    UEFI ** 1.定义 PC BIOS有一个限制(支援16 bit 的处理器模式,1MB 位址空间与AT 硬件架构),而这个限制使的他无法支援大型服务器平台的系统 EFI(Extensible Firmware Interface):可延伸韧体界面,他规范了一个...
  • UEFI EVENT 全解

    2019-04-13 15:30:00
    Event和Timer在UEFI当中是怎么实现的以及原理,我们先从Timer开始,然后细细的拨开隐藏在底层的实现。 先说Timer,那什么是Timer呢?其实在中文里面我们把它叫做定时/计数器,但是我的理解它不仅仅是一个定时/...
  • UEFI Images 转载

    2011-12-08 09:52:59
    1. 什么是UEFI Images? UEFI Images是UEFI定义的、包含可执行代码的一类文件,最显著的特征是包含一个用来定义这段可执行代码格式的PE/COFF header,这个header定义了Processor Type和Image Type。(Microsoft ...
  • 如何安装UEFI+GPT系统

    2019-09-16 15:44:40
    UEFI采用快速启动模式,在开机速度上占据很大优势,几乎是在点击电源键出现电脑标志后就能直接进入系统(也跟电脑性能有关);而传统模式虽然也能够安装win10(win10自带快速开机),但是开机时也需要加载一段时间。...
  • 1. 确认你的电脑是否支持 UEFI 引导进入电脑 BIOS 设置界面,以我的华硕笔记本为例,开机键按下之后一直敲F2键,就能进入 BIOS 。找到 Boot 菜单,查看是否有UEFI Boot的选项。如果有的话,就通过方向键和回车键将...
  • 进入windows系统中cmd运行 bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi 或 shimx64.efi(安全启动打开的情况) 重启进入Grub,选择系统即可 但是修改后可能仍然遇到一些情况: 情况1(2017年更新): ...
  • 只要UEFI+MBR

    千次阅读 2019-01-13 15:09:00
    之前发了一篇“实战WIN10+UEFI引导装系统(不重装不格盘100%成功)”的文章,今天在朋友那制作时候,发现漏了一步(重建引导部分,之前有人卡WINDOWS标徽那,估计就是引导指向错误了!),晕……现在重新发布一次!...
  • 入职接近3年,从起初进入...之前一直查看相关资料,也一直没有明白BIOS、UEFIUEFI BIOS此三个词语的区别,最近仔细看书后,对自己的理解总结如下,共自己查阅和参考。  1.BIOS:Basic Insput Output System,基本
  • BIOS与UEFI

    2019-05-03 18:07:00
    legacy启动模式: 就是这么多年来PC一直在使用的启动方式(从MBR中加载启动程序),UEFI BIOS作为一种新的BIOS自然也应该兼容这种老的启动方式; UEFI启动模式: UEFI BIOS下新的启动技术。如果你的PC在UEFI启动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,361
精华内容 944
关键字:

一直进入uefi