Documentation: Promote aarch64 to more supported in the docs

This commit is contained in:
Andrew Kaster 2024-12-28 16:16:43 -07:00 committed by Sönke Holz
parent ee891462b8
commit 89c655529c
4 changed files with 20 additions and 14 deletions

View file

@ -22,11 +22,23 @@ cp /somewhere/on/your/system/file.txt mnt/home/anon
This will configure your keymap to German (`de`) instead of US English. See [`Base/res/keymaps/`](../Base/res/keymaps/) for a full list. Note that the `keymap` program itself will also modify the `/etc/Keyboard.ini` config file, but this way the change will persist across image rebuilds.
## Selecting an architecture
By default, the build script will build for the architecture of your host system.
If you want to build for a different architecture, you can specify it with the `SERENITY_ARCH` environment variable.
For example, force a build build for `aarch64`, you can run:
```sh
SERENITY_ARCH=aarch64 Meta/serenity.sh run
```
Supported values for `SERENITY_ARCH` are `x86_64`, `aarch64`, and `riscv64`.
## Ninja build targets
The `Meta/serenity.sh` script provides an abstraction over the build targets which are made available by CMake. The
following build targets cannot be accessed through the script and have to be used directly by changing the current
directory to `Build/x86_64` and then running `ninja <target>`:
directory to `Build/<architecture>` and then running `ninja <target>`:
- `ninja limine-image`: Builds a disk image (`limine_disk_image`) with Limine
- `ninja grub-image`: Builds a disk image (`grub_disk_image`) with GRUB

View file

@ -109,8 +109,9 @@ Run the following command to build and run SerenityOS:
Meta/serenity.sh run
```
This will compile all of SerenityOS and install the built files into the `Build/x86_64/Root` directory inside your Git
repository. It will also build a disk image and start SerenityOS using QEMU.
This will compile all of SerenityOS and install the built files into the `Build/<architecture>/Root` directory inside your Git
repository. It will also build a disk image and start SerenityOS using QEMU. The chosen architecture defaults to
your host architecture. Supported architectures are x86_64, aarch64 and riscv64.
The first time this command is executed, it will also download some required database files from the internet and build
the SerenityOS cross-compiler toolchain. These steps only have to be done once, so the next build will go much faster.

View file

@ -38,15 +38,8 @@ brew install gcc@13
# Notes
You can use both Intel and Apple Silicon Macs to run the x86-64 version of SerenityOS. You do not
need to install Rosetta for this. An emulator is used when running on an Apple Silicon, so Serenity
will be slower compared to running natively with hardware-assisted virtualization on an Intel machine.
If you're building on M1 Mac and have Homebrew installed in both Rosetta and native environments,
you have to make sure that required packages are installed only in one of the environments. Otherwise,
these installations can conflict during the build process, which is manifested in hard to diagnose issues.
Building on M1 natively without Rosetta is recommended, as the build process should be faster without Rosetta
overhead.
You can use both Intel and Apple Silicon Macs to run a native architecture version of SerenityOS.
If Rosetta 2 is installed on an Apple Silicon Mac, it should be disabled in order to build the native aarch64 version.
Installing macfuse for the first time requires enabling its system extension in System Preferences and then restarting your machine. The output from installing macfuse with brew says this, but it's easy to miss.

View file

@ -1,6 +1,6 @@
# SerenityOS
Graphical Unix-like operating system for x86-64 computers.
Graphical Unix-like operating system for x86-64 and aarch64 computers.
[![GitHub Actions Status](https://github.com/SerenityOS/serenity/workflows/Build,%20lint,%20and%20test/badge.svg)](https://github.com/SerenityOS/serenity/actions?query=workflow%3A"Build%2C%20lint%2C%20and%20test")
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/serenity.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:serenity)
@ -26,7 +26,7 @@ You can watch videos of the system being developed on YouTube:
## Features
- Modern x86 64-bit kernel with pre-emptive multi-threading
- Modern 64-bit kernel with pre-emptive multi-threading
- [Browser](Userland/Applications/Browser/) with JavaScript, WebAssembly, and more (check the spec compliance for [JS](https://serenityos.github.io/libjs-website/test262/), [CSS](https://css.tobyase.de/), and [Wasm](https://serenityos.github.io/libjs-website/wasm/))
- Security features (hardware protections, limited userland capabilities, W^X memory, `pledge` & `unveil`, (K)ASLR, OOM-resistance, web-content isolation, state-of-the-art TLS algorithms, ...)
- [System services](Userland/Services/) (WindowServer, LoginServer, AudioServer, WebServer, RequestServer, CrashServer, ...) and modern IPC