diff --git a/README.md b/README.md index 3db022b..71b4bde 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,61 @@ # uniLoader -A simple secondary bootloader that is capable of loading Linux for Android and iOS based devices. +A secondary bootloader that is capable of loading the upstream Linux kernel for Android and iOS-based devices.

+The purpose behind it is to provide a small shim for avoiding vendor bootloader quirks.
+> (ex.: some newer Exynos phones leave decon framebuffer refreshing disabled right before jumping to kernel, which makes initial debugging efforts when bringing up the platform to upstream linux hard)
+The currently supported architectures are ARMV7 and AARCH64.
+ +## Preparation +1. Install a toolchain that matches your target architecture (ex. AArch64 cross-toolchain): + ```sh + sudo apt install aarch64-linux-gnu + ``` +2. Clone the repository: + ```sh + git clone https://github.com/ivoszbg/uniLoader + ``` +3. Navigate to the project directory: + ```sh + cd uniLoader + ``` +4. Place your kernel and device tree blobs under the `blob/` directory. + +### Make Syntax +```sh +make ARCH= CROSS_COMPILE= +``` + +### Building Example +```sh +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 +make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 dreamlte_defconfig +make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4 +``` + +### Usage + +```sh +For Apple devices: Load the generated uniLoader binary via PongoOS. +For Android devices: Replace the Linux kernel in your boot.img with the uniLoader binary. +``` + +### TODO LIST +1. [C] Allow loading instead of PongoOS for Apple devices; +2. [C] Fix/replace the libc implementation; +3. [M] Implement a serial library and make the debug lib less hacky; +4. [M] Implement more features: + > New devices
+ > Boot menu with countdown timer and selectable items via GPIO volume keys
+ > Threaded execution + +
+ [C] = Critical for overall ease of use and functionality
+ [M] = Nice to have :) +
+ +### License -# Building -1. Install aarch64-linux-gnu -2. ```git clone https://github.com/ivoszbg/uniLoader``` -3. ```cd uniLoader``` -4. Place your kernel and device tree blobs under blob/ -5. ```make BOARD=(oem)-(board-codename) SOC=(device-soc)```
-# 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```
-```make BOARD=samsung-dreamlte SOC=exynos8895``` -# Usage -For Apple devices: Load the generated **uniLoader** binary via PongoOs (TODO: allow loading **instead** of PongoOs)

-For Android devices: Replace the linux kernel in your *boot.img* with the **uniLoader** binary -# Credits -VDavid003 - for his sboot wrapper
-Quack723 - Contributor
-Ivoszbg - Making this huge mess of a bootloader -# License This project is licensed under GPL2.