You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+11-75Lines changed: 11 additions & 75 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,36 +40,21 @@ No, Aero runs its own kernel that does *not* originate from Linux and does not s
40
40
41
41
# How to Build and Run Aero
42
42
43
-
Please make sure you have a **unix-like** host system before building
44
-
Aero. If you are using windows, its highly recommended to use WSL 2.
43
+
Please make sure you have a Linux host system before building
44
+
Aero. If you are using windows, use WSL 2.
45
45
46
46
## Dependencies
47
47
48
48
Before building Aero, you need the following things installed:
49
49
-`rust` (should be the **latest nightly**)
50
50
-`nasm`
51
51
-`qemu` (optional: required if you want to run it in the Qemu emulator)
52
-
53
-
If you are building Aero with sysroot, run the following helper script to install additional dependencies.
54
-
```sh
55
-
# make sure to run the script with root privileges!
56
-
./tools/deps.sh
57
-
```
58
-
You can optionally set the environment variable `VERBOSE` to `true`, which will pass through the output of your package manager for troubleshooting.
59
-
```sh
60
-
VERBOSE=true ./tools/deps.sh
61
-
```
62
-
63
-
Note: If your host operating system is not in the list below, you will need to determine the dependency packages' names for your package manager (contributions to this tool are welcome!)
64
-
- Arch Linux/based (pacman)
65
-
- Debian Linux/based (apt)
66
-
- macOS (homebrew)
67
-
52
+
-`make`
68
53
69
54
## Hardware
70
55
71
56
The following are *not* requirements but are *recommendations*:
72
-
-~15GB of free disk space
57
+
-~15GB of free disk space (this will vary depending on the amount of packages you want to build)
73
58
-\>= 8GB RAM
74
59
-\>= 2 cores
75
60
- Internet access
@@ -86,63 +71,14 @@ $ cd aero
86
71
87
72
## Building Aero
88
73
89
-
Aero uses a custom build system, that wraps `cargo` and takes care of building the kernel and
90
-
userland for you. It also builds the initramfs and disk image for you.
91
-
92
-
The main command we will focus on is `./aero.py`. The source code can be found in the
93
-
root of the repository and, as the file name states, it is written in Python.
94
-
95
-
By default if you run `./aero.py` without any arguments it will build the kernel and userland
96
-
in release mode with debug symbols and run it in QEMU. You can configure the behavior of the
97
-
build system though. If you want to, you can use the `--help` option to read a brief description
98
-
of what it can do.
99
-
100
-
The build system acknowledges few different build modes, which cannot be used together
101
-
and they are: `--clean`, `--check`, `--test` and `--document`.
102
-
103
-
-`--clean` option will clean all the build outputs.
104
-
-`--check` will build the kernel and userland using cargo's `check` command,
105
-
this build mode will not produce a disk image, if you want one without actually
106
-
running Aero in the emulator read ahead
107
-
-`--test` will run the built-in Aero test suite
108
-
-`--document` will generate web-based docs using cargo's `doc` command
109
-
-`--sysroot` will build the full userland sysroot. If not passed, then the sysroot will only contain
110
-
the `aero_shell` and the `init` binaries.
111
-
112
-
**Note**: This command will require a relatively large amount of storage
113
-
space. You may want to have upwards of 10 or 15 gigabytes available if building with full sysroot.
114
-
115
-
Each of these modes can be used with additional flags, that will alter the behavior in different
116
-
ways, some of them will not work for some of these modes - for example: the `--la57` option
117
-
will not have any effect when you are simply checking or documenting the build.
118
-
119
-
-`--debug` toggles off the release build flag when calling cargo.
120
-
121
-
**Summary**: If the `--debug` flag is not passed then it will build Aero in release mode
122
-
and debug symbols will be available. On the other hand, if the debug flag is passed
123
-
then it will be built in debug mode and debug symbols will be still available. By default
124
-
Aero is built in release mode (with debug symbols) since it generates faster and smaller
125
-
binaries which are easier to test.
126
-
-`--no-run` prevents from running the built disk image in the emulator
127
-
-`--bios` lets you choose the firmware the emulator will use when booting Aero,
128
-
currently supported values are: `legacy` and `uefi`
129
-
-`--features` accepts a single comma-separated list of kernel crate features, please
130
-
keep in mind that there cannot be spaces in between the values
131
-
-`--target` lets you override the target architecture for which the kernel is built,
132
-
currently the default value is `x86_64-aero_os`
133
-
-`--la57` tells the emulator to use 5 level paging, if it supports it
134
-
135
-
The built disk image is stored in the `build` directory under the name `aero.iso`. Both the
136
-
disk root and initramfs root are preserved in case you want to inspect them manually.
137
-
138
-
## Running Aero in an emulator
139
-
140
-
If you haven't used the `--no-run` option and you aren't using the `--check` or `--document` build
141
-
mode, the build system will run Aero in the emulator for you.
142
-
143
-
## Nightly Images
74
+
```shell
75
+
make distro-image
76
+
make qemu
144
77
145
-
Want to give Aero a shot, without building it! You can go to the [latest job](https://github.com/Andy-Python-Programmer/aero/actions/workflows/build.yml?query=is%3Asuccess+branch%3Amaster) and download the latest nightly image (`aero.iso`), under artifacts.
78
+
# To build documentation run the following command. The documentation will be outputed to the `target/doc` directory.
79
+
make doc
80
+
# The documentation will be available in the `target/doc` directory.
0 commit comments