mirror of
https://github.com/ivoszbg/uniLoader.git
synced 2026-01-18 07:00:07 +00:00
The C runtime requires that uninitialized global variables are zero. In a bare-metal environment, memory contents are undefined at startup and the BSS section is not automatically cleared, so we must zero out this entire section ourselves. Without this, static variables contain garbage values, leading to unpredictable behavior. For example, the simplefb driver uses a static variable to track the current print position, which resulted in text being drawn at random locations on the screen.
uniLoader
uniLoader is a minimalistic loader, capable of booting Linux kernels.
It can be used as an intermediate bootloader, providing a clean booting
environment in case of a forced and buggy bootloader.
Supported Architectures
- ARMv7
- ARMv8
Supported Devices
Apple
- N61AP
Amazon
- PW3
- Taimen
itel
- P682LPN
Infinix
- X6710
Nokia
- Essential
Nothing
- Tetris
QEMU
- Virt
Samsung
- A105F
- A127F
- A305F
- A3XELTE
- C1S
- HEROLTE
- G0S
- NOBLELTE
- JACKPOTLTE
- ZEROFLTE
- DREAMLTE
- STARLTE
- X1S
- J5LTE
- J4LTE
- GTA4XL
- R0Q
- R8S
Volla
- Algiz
Xiaomi
- Begonia
- Blossom
- Camellia
Make Syntax
make ARCH=$(arch) CROSS_COMPILE=$(toolchain)
Building Example
sudo apt install aarch64-linux-gnu
git clone https://github.com/ivoszbg/uniLoader
cd uniLoader
cp /home/user/linux/arch/arm64/boot/Image blob/Image
cp /home/user/linux/arch/arm64/boot/dts/exynos/exynos8895-dreamlte.dtb blob/dtb
cp /home/user/ramdisk.gz blob/ramdisk
make ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu- dreamlte_defconfig
make ARCH=aarch64 CROSS_COMPILE=aarch64-linux-gnu-
License
This project is licensed under GPLv2.
Languages
C
82.5%
C++
6.1%
Makefile
4.3%
Assembly
2.9%
Yacc
1.8%
Other
2.4%