unplugged-system/packages/modules/Virtualization/microdroid/kernel/README.md

79 lines
2.4 KiB
Markdown
Raw Permalink Normal View History

# Microdroid kernel
This directory contains prebuilt images of the Linux kernel that is used in
Microdroid. The kernel is built from the same source tree as Generic Kernel
Image (GKI), but with a different config where most of the config items are
turned off to make the kernel fast & slim.
## How to build the Microdroid kernels
### Checkout the GKI source code.
```bash
repo init -u https://android.googlesource.com/kernel/manifest -b common-android14-6.1
repo sync
```
### Build the Microdroid kernels manually
For ARM64
```bash
tools/bazel clean
tools/bazel run --config=fast --lto=thin //common-modules/virtual-device:microdroid_aarch64_dist -- --dist_dir=out/dist
```
For x86\_64,
```bash
tools/bazel clean
tools/bazel run --config=fast --lto=thin //common-modules/virtual-device:microdroid_x86_64_dist -- --dist_dir=out/dist
```
Note that
[`--config=fast`](https://android.googlesource.com/kernel/build/+/refs/heads/master/kleaf/docs/fast.md)
is not mandatory, but will make your build much faster.
The build may fail in case you are doing an incremental build and the config has changed (b/257288175). Until that issue
is fixed, do the clean build by invoking `tools/bazel clean` before the build command.
### Change the kernel configs
For ARM64
```bash
tools/bazel run //common-modules/virtual-device:microdroid_aarch64_config -- menuconfig
```
For x86\_64
```bash
tools/bazel run //common-modules/virtual-device:microdroid_x86_64_config -- menuconfig
```
## How to update Microdroid kernel prebuilts
### For manually built kernels (only for your own development)
Copy the built kernel image to the Android source tree directly, and build the virt APEX.
For ARM64,
```bash
cp out/dist/Image <android_checkout>/packages/modules/Virtualization/microdroid/kernel/arm64/kernel-6.1
```
For x86\_64,
```bash
cp out/dist/bzImage <android_checkout>/packages/modules/Virtualization/microdroid/kernel/x86_64/kernel-6.1
```
### For official updates
Use the `download_from_ci` script to automatically fetch the built images from
a specific `<build_id>` and make commits with nice history in the message.
```bash
cd <android_checkout>/packages/modules/Virtualization
repo start <topic_name>
cd <kernel_checkout>
ANDROID_BUILD_TOP=<android_checkout> ./build/kernel/gki/download_from_ci --update-microdroid -b <bug_id> <build_id>
cd <android_checkout>/packages/modules/Virtualization
repo upload .
```