mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 01:20:25 +00:00
145 lines
3.8 KiB
Markdown
145 lines
3.8 KiB
Markdown
|
# Serenity Toolchain - Building the Serenity operating system
|
||
|
|
||
|
This directory contains all toolchain related files. E.g. build scripts for
|
||
|
the cross compilation toolchain and build toolchain for ports.
|
||
|
|
||
|
- [Serenity Toolchain - Building the Serenity operating system](#serenity-toolchain---building-the-serenity-operating-system)
|
||
|
- [Cross Compile Toolchain](#cross-compile-toolchain)
|
||
|
- [Dependencies](#dependencies)
|
||
|
- [Serenity (Full build)](#serenity-full-build)
|
||
|
- [Running SerenityOS in an emulator](#running-serenityos-in-an-emulator)
|
||
|
- [QEMU installation / compilation](#qemu-installation--compilation)
|
||
|
- [Passing custom arguments to QEMU](#passing-custom-arguments-to-qemu)
|
||
|
|
||
|
## Cross Compile Toolchain
|
||
|
|
||
|
The cross compile toolchain contains
|
||
|
|
||
|
- binutils 2.32
|
||
|
|
||
|
- GCC 8.3.0
|
||
|
|
||
|
These are built from source with some patches applied.
|
||
|
|
||
|
### Dependencies
|
||
|
|
||
|
- Build Essentials
|
||
|
|
||
|
```bash
|
||
|
sudo apt install build-essential curl libmpfr-dev libmpc-dev libgmp-dev
|
||
|
```
|
||
|
|
||
|
- GCC 8
|
||
|
|
||
|
```bash
|
||
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
||
|
sudo apt-get install gcc-8 g++-8
|
||
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
|
||
|
```
|
||
|
|
||
|
- e2fsprogs
|
||
|
|
||
|
```bash
|
||
|
sudo apt install e2fsprogs
|
||
|
```
|
||
|
|
||
|
## Serenity (Full build)
|
||
|
|
||
|
If everything worked out, you now have the **i686-pc-serenity** toolchain ready and we can build Serenity.
|
||
|
|
||
|
Go into `Kernel/` folder and build it:
|
||
|
|
||
|
```bash
|
||
|
./makeall.sh
|
||
|
```
|
||
|
|
||
|
Then take it for a spin:
|
||
|
|
||
|
```bash
|
||
|
./run
|
||
|
```
|
||
|
|
||
|
See next chapter for more options on running SerenityOS in an emulator.
|
||
|
|
||
|
## Running SerenityOS in an emulator
|
||
|
|
||
|
To run SerenityOS in a specific emulator, call the `./run` command in the `Kernel/` folder:
|
||
|
|
||
|
```bash
|
||
|
./run
|
||
|
```
|
||
|
|
||
|
There are several emulators supported to run SerenityOS in:
|
||
|
|
||
|
- Bochs
|
||
|
|
||
|
```bash
|
||
|
sudo apt install bochs
|
||
|
```
|
||
|
|
||
|
Add the `b` argument to the run script, to use bochs emulator:
|
||
|
|
||
|
```bash
|
||
|
./run b
|
||
|
```
|
||
|
|
||
|
- QEMU
|
||
|
QEMU with networking enabled is used by default, when no extra argument is passed to the run script.
|
||
|
There are some extra arguments to run QEMU emulator with specific settings:
|
||
|
|
||
|
Add the `qn` argument to the run script to use QEMU without networking:
|
||
|
|
||
|
```bash
|
||
|
./run qn
|
||
|
```
|
||
|
|
||
|
Add the `qgrub` argument to the run script to use QEMU with grub bootloader:
|
||
|
|
||
|
```bash
|
||
|
./run qgrub
|
||
|
```
|
||
|
|
||
|
Add the `qtext` argument to the run script to use QEMU with textmode:
|
||
|
|
||
|
```bash
|
||
|
./run qtext
|
||
|
```
|
||
|
|
||
|
Note: there is a problem with the PS/2 keyboard/mouse emulation in QEMU 2.11.1 as packaged in Ubuntu's LTS releases.
|
||
|
If you have any strange behaviour with missing keyboard inputs or jittery mouse movement, try building QEMU from
|
||
|
source as described in [QEMU](#qemu-installation--compilation). 2.12.1, 3.0.1, 3.1.0, and 4.0.0 are all confirmed as working when built from source.
|
||
|
|
||
|
### QEMU installation / compilation
|
||
|
|
||
|
If your distribution contains a QEMU version > 2.11.1, then you can just install it via
|
||
|
|
||
|
```bash
|
||
|
sudo apt install qemu-system-i386 qemu-utils
|
||
|
```
|
||
|
|
||
|
If that is not the case, you can build QEMU from sources with the provided script `BuildQemu.sh`.
|
||
|
To do so, some build dependencies have to be installed first:
|
||
|
|
||
|
```bash
|
||
|
sudo apt-get build-dep qemu
|
||
|
sudo apt-get install libgtk-3-dev
|
||
|
```
|
||
|
|
||
|
The source-repositories of your distribution have to be enabled to install the build-dep's.
|
||
|
|
||
|
`BuildQemu.sh` has been tested with QEMU 3.0.0 and 4.1.0 (which is default). If you
|
||
|
want to build QEMU 3.0.0, change the variable `QEMU_VERSION` and `QEMU_MD5SUM` accordingly:
|
||
|
|
||
|
```bash
|
||
|
QEMU_VERSION="qemu-3.0.0"
|
||
|
QEMU_MD5SUM="${QEMU300_MD5SUM}"
|
||
|
```
|
||
|
|
||
|
### Passing custom arguments to QEMU
|
||
|
|
||
|
You can modify the environment variable `SERENITY_EXTRA_QEMU_ARGS` to your needs or hand it over directly before the run command:
|
||
|
|
||
|
```bash
|
||
|
SERENITY_EXTRA_QEMU_ARGS="-nographic" ./run qtext
|
||
|
```
|