This post describes the basic requirements for compiling highly portable ELF binaries. Essentially using a newer Linux distro like Ubuntu 18.10 to build complex projects that run on older distros like CentOS 6. The details are limited to C/C++ projects and to x86_64 architectures. The low-level solution is to use a C++ runtime that requires only glibc 2.13+ runtime linkage and link all third-party libraries as well as the compiler runtime and C++ implementation statically. Do not make a “fully static” binary. You will most likely find a glibc newer than 2.13 on every Linux distribution released since 2011. The high-level solution is to use the build-anywhere scripts to build a easy-to-use toolchain and set compiler flags.[…]
Concolically debug executable binary using Triton with sequential programming experience.
This time only supports single-threaded and single-processed target binary.
sisyphos-kernel-uefi-x86_64: UEFI-based Rust kernel
A Rust kernel running on bare UEFI (no separate bootloader). Very early stage. Basically, the eventual goal is to build a non-opinionated microkernel that can load regular ELF64 programs as kernel “modules”. Actually, just fairly conventional processes, except running in kernel space (they are assumed to be written in Rust and reproducible, so that hardware protections are unnecessary, similar but unrelated to Microsoft’s Singularity project). The core micro/nano/whateverkernel will link up the loaded applications with a builtin dynamically linked library that exposes its functionality, moving the responsibility for higher-level problems (such as syscalls) into these loadable binaries, and also allowing simple emulation without virtualization for debugging purposes.[…]
Sugawaray has written EFIboot, which runs Linux-style ELF binaries inside the UEFI Shell. Here’s the *full* readme:
A tool to execute an elf binary in the UEFI shell environment.
This tool executes an elf binary in the UEFI SHELL.
The name of the elf binary must be ‘test.elf’.
For more information, read the code:
.Bx has a new article on boot loaders:
As a teaser here’s the first paragraph:
Welcome neighbors. In this blog I will be publishing notes I have taken on UEFI, BIOS, bootloading, ELF, and other technical topics that interest me and seem to lack documentation or explanation. I will also be keeping a list of UEFI, bootloading, and other resources I have found useful on my resources page. The rest of this post will be a whirlwind toure of bootloading and thus fairly introductory, so if you are already familiar with the world of bootloaders you might as well move on and read something else (although I would like to encourage you to look at the section where I propose new general bootloader terminology). In case you want to stick around for the full blog post I will be discussing: my motivations behind studying bootloading, bootloader terminology, how to navigate the plethora of bootloader implementations, specifications that relate to bootloading, BIOS, UEFI, and how they came to be, and how to write a simple boot sector.