https://github.com/embeddedos/arm64_emulation_system
Build a complete Emulation Linux distro for Aarch64.
https://github.com/embeddedos/arm64_emulation_system
aarch64 arm arm-trusted-firmware initrd linux qemu-system-aarch64 rootfs uboot yocto
Last synced: 3 months ago
JSON representation
Build a complete Emulation Linux distro for Aarch64.
- Host: GitHub
- URL: https://github.com/embeddedos/arm64_emulation_system
- Owner: EmbeddedOS
- Created: 2025-02-13T07:46:09.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-04-21T17:17:58.000Z (9 months ago)
- Last Synced: 2025-04-22T12:28:51.624Z (9 months ago)
- Topics: aarch64, arm, arm-trusted-firmware, initrd, linux, qemu-system-aarch64, rootfs, uboot, yocto
- Language: BitBake
- Homepage:
- Size: 77.1 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AArch64 emulation system
This repository setup a simplest Yocto build system to emulate a complete aarch64 Linux system (trusted-firmware-a, u-boot, kernel, initrd, rootfs). This might be helpful for those who want to:
- Understand all basic components in a Aarch64 Linux Embedded System and how they work together.
- Develop your own Linux distro, write BSP layer, and port components (kernel, u-boot, trusted-firmware-a) to your platform.
- Have hardware limitations or want to learn emulating with QEMU.
For more detail about the system, visit the [Main Blog](https://embeddedos.github.io/posts/simplest-emulation/).
## `meta-lava` layer
This layer contains minimal components to build an Aarch64 Linux distro run QEMU platform. This includes:
- 1 distro: `lava-distro`.
- 1 machine: `lava-machine`.
- And few recipes that build components from local sources.
The directory structure:
```text
meta-lava/
├── classes
│ └── lava_src.bbclass
├── conf
│ ├── distro
│ │ └── lava-distro.conf
│ ├── layer.conf
│ └── machine
│ ├── include
│ └── lava-machine.conf
├── README.md
├── recipes-bsp
│ ├── tfa
│ └── u-boot
├── recipes-core
│ └── images
├── recipes-kernel
│ └── linux
└── wic
├── lava-extlinux.cfg
└── lava.wks
```
## Build system
To clone external repos (tfa, u-boot, kernel):
```bash
git submodule update --init
```
Build system:
```bash
kas checkout
kas build
```
And start emulating with `runqemu`:
```bash
source openembedded-core/oe-init-build-env
runqemu nographic
```
That's it 😛