Skip to content

kyrie-z/UEFI-tutorial

Repository files navigation

##run qemu: kvm --bios /usr/share/ovmf/OVMF.fd -hda fat:rw:. -net none

support usbmouse: kvm: -usb -device usb-mouse

efishell: load fs0:\EFI\UsbMouseDxe.efi

apt install dox2unix 将文本文件转换为UEFI可识别的Unicode编码。

cat << EOF | unix2dos | iconv -f UTF-8 -t UCS-2LE > ./abc
        1234567890
        abcdefg
        blah blah blah
        EOF

apt install gcc-mingw-w64-x86-64 交叉编译工具,将UEFI可以执行的PE32+格式

编译参数 -Wall -Wextra -e efi_main -nostdinc -nostdlib -shared -fno-builtin -Wl,--subsystem,10

-e 指定函数入口 --subsystem,10 告诉编译器将生成的可执行文件类型设置为UEFI应用程序

efi shell: map -r命令列出所有的被UEFI识别的文件系统 使用fs#:命令进入某个文件系统

通过LoadImage()加载的UEFI应用程序,它的可执行文件必须是一个可重定位目标文件(shared object), 在编译时加上-share

启动内核运行后需要找到一个根文件系统,root=... 告诉内核根文件系统的挂载地方。可以通过busybox和脚本来构建一个基于busybox的根文件系统镜像,也可通过debootstrap构建一个基于发行版的..., 或者通过initramfs生成,这也是在linux桌面发行版本用的最多的工具。 生成根文件系统后需要挂载到qemu中,通过 -drive file=./hdb/rootfs.img,index=1,format=raw 将根文件系统挂载到虚拟机的/dev/sdb中

About

Programming tutorial under UEFI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published