Updated README

This commit is contained in:
YusufOzmen01 committed 2026-09-26 21:50:17 +03:00
1 parent b8cea4e97e
commit a9cc6b7b79
1 file changed
+10 -31
+10 -31
View File
@@ -1,43 +1,25 @@
# Meta Quest kexec
# Quest-KeXec
An experimental ARM64 kexec implementation for Meta Quest headsets.
It starts a custom Linux kernel from rooted Android without flashing a
partition. The included RAM-only initramfs provides a BusyBox shell over USB
Ethernet.
A kernel module for Meta Quest headsets that allows you to load a custom kernel without unlocking the bootloader of the headset. Based on [kexec-at-home](https://github.com/provide-salad/kexec-at-home)
> **Note:** This project has only been developed and tested on Meta Quest Pro.
> Other Quest headsets require device-specific kernel and loader work.
> Other Quest headsets require device specific kernel and loader work.
> **ROOT IS REQUIRED**
## What works on Quest Pro
- all 8 CPUs
- DRM and both panels
- USB Ethernet shell
- AOP/QMP handoff
- syncboss
- camera CPAS/CDM
- SPMI and SMB5 charging
The tested kernel changes are available in:
https://github.com/YusufOzmen01/oculus-linux-kernel
Patch copies are also included under `kernel/patches/`.
A modified kernel for this kexec for the Quest Pro is available [from the repository here](https://github.com/YusufOzmen01/oculus-linux-kernel)
The changes done to the kernel are in `kernel/patches/` as patches.
## Basic build
Install Clang/LLD, an `aarch64-linux-gnu-` toolchain, Python 3, `adb`, `dtc`,
`fdtput`, `curl` and `make`.
Install Clang/LLD, an `aarch64-linux-gnu-` toolchain, Python 3, `adb`, `dtc`, `fdtput`, `curl` and `make`.
Build the kexec modules against the exact Android kernel running on the headset:
```sh
make module KDIR=/path/to/android-kernel-out \
LOCALVERSION=-g49638c7a8637
make module KDIR=/path/to/android-kernel-out LOCALVERSION=-g49638c7a8637
```
Build the BusyBox USB-network initramfs:
To build a basic initramfs that has busybox and USB ethernet (to get shell), run:
```sh
make initramfs
@@ -48,15 +30,12 @@ kernel trees.
## Basic usage
With rooted Android running:
```sh
# Capture the current runtime device tree and kernel information
tools/capture.sh out/captured
# Prepare the target payload
tools/prep.sh out/captured /path/to/target/Image \
out/initramfs.gz out/payload
tools/prep.sh out/captured /path/to/target/Image out/initramfs.gz out/payload
# Push, verify and boot it
tools/run.sh out/payload