blob: 801ac939b141a6747c039f43541651ad62d71cac (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# SerenityOS build instructions
## Prerequisites
Make sure you have all the dependencies installed:
### Debian / Ubuntu
```console
sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2fsprogs ninja-build qemu-system-gui qemu-system-x86 qemu-utils ccache rsync unzip texinfo
```
#### GCC 10
On Ubuntu gcc-10 is available in the repositories of 20.04 (Focal) and later - add the `ubuntu-toolchain-r/test` PPA if you're running an older version:
```console
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
```
Now on Ubuntu or Debian you can install gcc-10 with apt like this:
```console
sudo apt install gcc-10 g++-10
```
#### QEMU 5 or later
QEMU version 5 is available in Ubuntu 20.10, but it is recommended to build Qemu as provided by the toolchain by running `Toolchain/BuildQemu.sh`.
Note that you might need additional dev packages:
```console
sudo apt install libgtk-3-dev libpixman-1-dev libsdl2-dev libspice-server-dev
```
### Windows
If you're on Windows you can use WSL2 to build SerenityOS. Please have a look at the [Windows guide](BuildInstructionsWindows.md)
for details.
### Arch Linux / Manjaro
```console
sudo pacman -S --needed base-devel cmake curl mpfr libmpc gmp e2fsprogs ninja qemu qemu-arch-extra ccache rsync unzip
```
### Other systems
There is also documentation for installing the build prerequisites for some less commonly used systems:
* [Other Linux distributions and \*NIX systems](BuildInstructionsOther.md)
* [macOS](BuildInstructionsMacOS.md)
## Build
In order to build SerenityOS you will first need to build the toolchain by running the following command:
```console
Meta/serenity.sh rebuild-toolchain
```
Later on, when you use `git pull` to get the latest changes, there's (usually) no need to rebuild the toolchain.
Run the following command to build and run SerenityOS:
```console
Meta/serenity.sh run
```
This will compile all of SerenityOS and install the built files into the `Build/i686/Root` directory inside your Git
repository. It will also build a disk image and start SerenityOS using QEMU.
Note that the `anon` user is able to become `root` without a password by default, as a development convenience.
To prevent this, remove `anon` from the `wheel` group and he will no longer be able to run `/bin/su`.
By default the `anon` user account's password is: `foo`
If you want to test whether your code changes compile without running the VM you can use
`Meta/serenity.sh build`. The `serenity.sh` script also provides a number of other commands. Run the script without
arguments for a list.
## Ports
To add a package from the ports collection to Serenity, for example curl, change into the `Ports/curl` directory and
run `./package.sh`. The source code for the package will be downloaded and the package will be built. The next time you
start Serenity, `curl` will be available.
## More information
At this point you should have a fully functioning VM for SerenityOS. The [advanced build instructions guide](AdvancedBuildInstructions.md)
has more information for some less commonly used features of the build system.
|