Coder Social home page Coder Social logo

ubmp-cn-code's Introduction

从零开始的UEFI裸机编程 中文版示例代码

同人志《从零开始的UEFI裸机编程》中文版示例代码

本体可以在可以在 >这里< 在线阅读,请配合使用

如果您发现示例代码中存在问题,欢迎在 Issues 中提出

目录结构

  • baremetal: 裸机编程的例子的目录
  • gnuefi: 使用gnu-efi的例子的目录
  • drivers: UEFI驱动程序目录
    • UsbMouseDxe.efi: USB鼠标驱动 (提取自 Clover EFI bootloader r5070)
  • linux: Linux相关例子所用内容目录

环境要求

  • amd64(x86_64)平台
  • GNU make
  • GCC
  • MinGW-w64 GCC交叉编译器
  • QEMU
  • OVMF
  • gnu-efi (版本 >= 3.0.14)
  • dos2unix
  • imagemagick

在 Ubuntu 20.04 上安装上述工具的代码如下:

sudo apt install build-essential gcc-mingw-w64-x86-64 qemu-system-x86 ovmf gnu-efi dos2unix imagemagick

关于gnu-efi

绝大部分发行版提供的 gnu-efi 版本并不满足运行所有示例代码的要求。使用 Simple Text Input Ex 协议和 Device Path Utilities 协议的代码将无法编译,并且 Pause() 函数会产生非预期的结果。请务必确保使用的 gnu-efi 是 3.0.14 及更高版本,最新版的 gnu-efi 可以在 https://gitlab.com/ncroxon/gnu-efi 下载.

本示例代码也提供了一个更简便的方法来使用最新版的 gnu-efi. 运行 source init-gnuefi 命令将自动拉取新版本的 gnu-efi, 编译并安装至 sysroot 下(不会与既有安装冲突), 同时设置环境变量。运行该命令后, 在该 shell 进程及其子进程下, 将会使用 sysroot 中的 gnu-efi 编译示例代码。

Makefile 规则

  • make: 编译.efi可执行文件
  • make run: 编译、构建文件系统并运行
  • make clean: 删除中间文件和可执行文件

关于 Linux 内核

请在编译完Linux内核后将 arch/x86/boot/bzImage 文件复制到 linux/kernel 目录下

ubmp-cn-code's People

Contributors

kagurazakakotori avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ubmp-cn-code's Issues

barebone/shell的代碼中缺少對退格鍵的處理

在 barebone/shell 的代碼中缺少對 '\b' 的處理,
這會造成使用過BackSpace的輸入不能被正確的識別,
舉個例子,假設原本輸入了"helloa",然後把最後面的's'用BackSpace刪掉,
那麼指令看起來是"hello",實則輸入了"helloa\b"。

代码和书没有对应索引

请问书原文就没有写对应的代码目录吗?感觉书和代码割裂了,要花一些时间去找对应的代码在那里

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.