Skip to content

Commit bef7c4d

Browse files
committed
Merge develop into main for release v0.9.2
2 parents 87e20a9 + 4626cfe commit bef7c4d

2 files changed

Lines changed: 73 additions & 30 deletions

File tree

CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,6 @@ else()
7373
else()
7474
# set(EMULATOR_FLAGS ${EMULATOR_FLAGS} -sdl)
7575
endif()
76-
# Speicfy the linker.
77-
set(CMAKE_LINKER ld)
7876
endif()
7977

8078
# =============================================================================

README.md

Lines changed: 73 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,27 @@
77
[![Ubuntu](https://github.com/mentos-team/MentOS/actions/workflows/ubuntu.yml/badge.svg)](https://github.com/mentos-team/MentOS/actions/workflows/ubuntu.yml)
88
[![Documentation](https://github.com/mentos-team/MentOS/actions/workflows/documentation.yml/badge.svg)](https://github.com/mentos-team/MentOS/actions/workflows/documentation.yml)
99

10+
---
11+
12+
> 📢 **Note:** The new default branch is `main`.
13+
> The old `master` branch will remain available temporarily but is no longer updated.
14+
15+
---
16+
1017
## Table of Contents
1118

1219
- [MentOS (Mentoring Operating System)](#mentos-mentoring-operating-system)
1320
- [Table of Contents](#table-of-contents)
1421
- [What is MentOS](#what-is-mentos)
1522
- [Implemented features](#implemented-features)
23+
- [Processes and Events](#processes-and-events)
24+
- [Memory](#memory)
25+
- [Filesystem](#filesystem)
26+
- [Input/Output](#inputoutput)
27+
- [Inter-Process Communication (IPC)](#inter-process-communication-ipc)
1628
- [Prerequisites](#prerequisites)
17-
- [Installing the prerequisites](#installing-the-prerequisites)
29+
- [Compiling on Ubuntu / WSL1 / WSL2](#compiling-on-ubuntu--wsl1--wsl2)
30+
- [Compiling on ARM (e.g., Ubuntu ARM / Apple Silicon in a Linux VM)](#compiling-on-arm-eg-ubuntu-arm--apple-silicon-in-a-linux-vm)
1831
- [Compiling MentOS](#compiling-mentos)
1932
- [Generating the EXT2 filesystem](#generating-the-ext2-filesystem)
2033
- [Running MentOS](#running-mentos)
@@ -28,6 +41,8 @@
2841
- [Debugging the kernel](#debugging-the-kernel)
2942
- [Contributors](#contributors)
3043

44+
---
45+
3146
## What is MentOS
3247

3348
MentOS (Mentoring Operating System) is an open source educational operating
@@ -52,6 +67,8 @@ Gualandri.
5267

5368
*[Back to the Table of Contents](#table-of-contents)*
5469

70+
---
71+
5572
## Implemented features
5673

5774
Follows the list of implemented features:
@@ -107,37 +124,31 @@ I will try to keep it updated...
107124

108125
*[Back to the Table of Contents](#table-of-contents)*
109126

110-
## Prerequisites
111-
112-
MentOS is compatible with the main **unix-based** operating systems. It has been
113-
tested with *Ubuntu*, and under Windows with *WSL1* and *WSL2*.
114-
115-
For **compiling** the system we need:
116-
117-
- git
118-
- gcc
119-
- nasm
120-
- make
121-
- cmake
122-
- ccmake (suggested)
123-
- e2fsprogs (should be already installed)
127+
---
124128

125-
Under **MacOS**, for compiling, you have additional dependencies:
126-
127-
- i386-elf-binutils
128-
- i386-elf-gcc
129+
## Prerequisites
129130

130-
For **executing** the operating system we need:
131+
MentOS is compatible with the main **Unix-based** operating systems. It has been tested with:
131132

132-
- qemu-system-i386 (or qemu-system-x86)
133+
- **Ubuntu**
134+
- **WSL1 / WSL2**
135+
- **macOS** (via cross-compilation using i386 toolchains)
133136

134-
For **debugging** we suggest using:
137+
The prerequisites vary depending on your platform. Follow the section below that matches your system.
135138

136-
- gdb or cgdb
139+
### Compiling on Ubuntu / WSL1 / WSL2
137140

138-
### Installing the prerequisites
141+
To **build and run** MentOS, install:
139142

140-
Under **Ubuntu**, you can type the following commands:
143+
- `git`
144+
- `gcc`
145+
- `nasm`
146+
- `make`
147+
- `cmake`
148+
- `ccmake` (optional, for curses-based CMake GUI)
149+
- `e2fsprogs`
150+
- `qemu-system-x86` (or `qemu-system-i386` on older versions)
151+
- `gdb` or `cgdb` (recommended for debugging)
141152

142153
```bash
143154
sudo apt-get update && sudo apt-get upgrade -y
@@ -146,13 +157,21 @@ sudo apt-get install -y qemu-system-x86
146157
sudo apt-get install -y gdb cgdb
147158
```
148159

149-
Note: Older versions might have `qemu-system-i386` instead of `qemu-system-x86`.
160+
On older Ubuntu systems, the QEMU package might be named qemu-system-i386.
150161

151-
*[Back to the Table of Contents](#table-of-contents)*
162+
### Compiling on ARM (e.g., Ubuntu ARM / Apple Silicon in a Linux VM)
163+
164+
To compile MentOS on **ARM-based Linux** (e.g., Ubuntu ARM or Apple Silicon using UTM/Parallels), you must install a cross-compilation toolchain for i386:
165+
166+
```bash
167+
sudo apt-get install -y gcc-i686-linux-gnu libc6-dev-i386-cross
168+
```
169+
170+
---
152171

153172
## Compiling MentOS
154173

155-
Compile MentOS with:
174+
To **compile** MentOS on **Ubuntu / WSL1 / WSL2**:
156175

157176
```bash
158177
cd <clone_directory>
@@ -162,8 +181,20 @@ cmake ..
162181
make
163182
```
164183

184+
To **compile** MentOS on **ARM** (cross-compilation):
185+
186+
```bash
187+
cd <clone_directory>
188+
mkdir build
189+
cd build
190+
cmake .. -DCMAKE_C_COMPILER=i686-linux-gnu-gcc -DCMAKE_LINKER=i686-linux-gnu-ld
191+
make
192+
```
193+
165194
*[Back to the Table of Contents](#table-of-contents)*
166195

196+
---
197+
167198
## Generating the EXT2 filesystem
168199

169200
Generate the EXT2 filesystem with:
@@ -176,6 +207,8 @@ you just need to generate the filesystem once. If you change a `program` you nee
176207

177208
*[Back to the Table of Contents](#table-of-contents)*
178209

210+
---
211+
179212
## Running MentOS
180213

181214
Boot MentOS with qemu:
@@ -188,6 +221,8 @@ To login, use one of the usernames listed in `files/etc/passwd`.
188221

189222
*[Back to the Table of Contents](#table-of-contents)*
190223

224+
---
225+
191226
## Running MentOS from GRUB
192227

193228
For booting MentOS from GRUB in QEMU we need the following tools:
@@ -212,6 +247,8 @@ make qemu-grub
212247

213248
*[Back to the Table of Contents](#table-of-contents)*
214249

250+
---
251+
215252
## Running and adding new programs to MentOS
216253

217254
This section explains how to add a new program to MentOS, and also how to run programs in mentos. It also explains how to add new tests, which are located in the `programs/tests` folder.
@@ -278,6 +315,8 @@ However, the `/bin/tests` folder is not listed in `PATH`, so, if you want to exe
278315

279316
*[Back to the Table of Contents](#table-of-contents)*
280317

318+
---
319+
281320
## Kernel logging
282321

283322
The kernel provides ways of printing logging messages *from* inside the kernel code *to* the bash where you executed the `make qemu`.
@@ -338,6 +377,8 @@ This example sets the `__DEBUG_LEVEL__`, so that all the messages from `INFO` an
338377

339378
*[Back to the Table of Contents](#table-of-contents)*
340379

380+
---
381+
341382
## Change the scheduling algorithm
342383

343384
MentOS supports scheduling algorithms for aperiodic:
@@ -406,6 +447,8 @@ make qemu
406447

407448
*[Back to the Table of Contents](#table-of-contents)*
408449

450+
---
451+
409452
## Debugging the kernel
410453

411454
If you want to use GDB to debug MentOS, first you need to compile everything:
@@ -475,6 +518,8 @@ to connect to the running process.
475518
476519
*[Back to the Table of Contents](#table-of-contents)*
477520
521+
---
522+
478523
## Contributors
479524
480525
Project Manager:

0 commit comments

Comments
 (0)