Support i386

This commit is contained in:
Alex 2023-03-29 03:03:42 +03:00
parent ca3a6f11e7
commit d0ba001bf2
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
11 changed files with 74 additions and 100 deletions

View File

@ -61,7 +61,7 @@ jobs:
if: steps.cache-cross.outputs.cache-hit != 'true' if: steps.cache-cross.outputs.cache-hit != 'true'
run: make --quiet -C tools do_binutils64 run: make --quiet -C tools do_binutils64
- name: Compile Binutils i686 - name: Compile Binutils i386
if: steps.cache-cross.outputs.cache-hit != 'true' if: steps.cache-cross.outputs.cache-hit != 'true'
run: make --quiet -C tools do_binutils32 run: make --quiet -C tools do_binutils32
@ -73,7 +73,7 @@ jobs:
if: steps.cache-cross.outputs.cache-hit != 'true' if: steps.cache-cross.outputs.cache-hit != 'true'
run: make --quiet -C tools do_gcc64 run: make --quiet -C tools do_gcc64
- name: Compile GCC i686 - name: Compile GCC i386
if: steps.cache-cross.outputs.cache-hit != 'true' if: steps.cache-cross.outputs.cache-hit != 'true'
run: make --quiet -C tools do_gcc32 run: make --quiet -C tools do_gcc32
@ -101,7 +101,7 @@ jobs:
if: steps.cache-cross.outputs.cache-hit != 'true' if: steps.cache-cross.outputs.cache-hit != 'true'
run: | run: |
cd tools cd tools
rm -rf binutils-gdb gcc qemu build-binutilsamd64 build-binutilsi686 build-binutilsarm64 build-gccamd64 build-gcci686 build-gccarm64 build-toolchain-binutils64 build-toolchain-gcc64 build-toolchain-binutils32 build-toolchain-gcc32 rm -rf binutils-gdb gcc qemu build-binutilsamd64 build-binutilsi386 build-binutilsarm64 build-gccamd64 build-gcci386 build-gccarm64 build-toolchain-binutils64 build-toolchain-gcc64 build-toolchain-binutils32 build-toolchain-gcc32
compilegnuefi: compilegnuefi:
name: Build GNU-EFI name: Build GNU-EFI
@ -248,7 +248,7 @@ jobs:
path: Fennix-release.iso path: Fennix-release.iso
compile32: compile32:
name: Build i686 name: Build i386
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: [buildcompiler, compilegnuefi] needs: [buildcompiler, compilegnuefi]
steps: steps:
@ -281,7 +281,7 @@ jobs:
key: ${{ runner.os }}-gnuefi-${{ hashFiles('Lynx/Makefile') }} key: ${{ runner.os }}-gnuefi-${{ hashFiles('Lynx/Makefile') }}
- name: Configure Makefile.conf - name: Configure Makefile.conf
run: sed -i 's/.*OSARCH = .*/OSARCH = i686/' ./Makefile.conf && cat Makefile.conf | grep OSARCH run: sed -i 's/.*OSARCH = .*/OSARCH = i386/' ./Makefile.conf && cat Makefile.conf | grep OSARCH
- name: Compile Debug and Release ISO - name: Compile Debug and Release ISO
run: | run: |
@ -309,13 +309,13 @@ jobs:
- name: Upload Artifact (Fennix-legacy-debug.iso) - name: Upload Artifact (Fennix-legacy-debug.iso)
uses: actions/upload-artifact@v3.1.0 uses: actions/upload-artifact@v3.1.0
with: with:
name: Fennix-i686-debug name: Fennix-i386-debug
path: Fennix-legacy-debug.iso path: Fennix-legacy-debug.iso
- name: Upload Artifact (Fennix-legacy-release.iso) - name: Upload Artifact (Fennix-legacy-release.iso)
uses: actions/upload-artifact@v3.1.0 uses: actions/upload-artifact@v3.1.0
with: with:
name: Fennix-i686-release name: Fennix-i386-release
path: Fennix-legacy-release.iso path: Fennix-legacy-release.iso
compilearm64: compilearm64:

View File

@ -54,7 +54,7 @@ compiler:
- make --quiet -C tools do_toolchain_gcc64 - make --quiet -C tools do_toolchain_gcc64
- make --quiet -C tools do_toolchain_binutils32 - make --quiet -C tools do_toolchain_binutils32
- make --quiet -C tools do_toolchain_gcc32 - make --quiet -C tools do_toolchain_gcc32
- cd tools && rm -rf binutils-gdb gcc qemu build-binutilsamd64 build-binutilsi686 build-binutilsarm64 build-gccamd64 build-gcci686 build-gccarm64 build-toolchain-binutils64 build-toolchain-gcc64 build-toolchain-binutils32 build-toolchain-gcc32 - cd tools && rm -rf binutils-gdb gcc qemu build-binutilsamd64 build-binutilsi386 build-binutilsarm64 build-gccamd64 build-gcci386 build-gccarm64 build-toolchain-binutils64 build-toolchain-gcc64 build-toolchain-binutils32 build-toolchain-gcc32
artifacts: artifacts:
paths: paths:
@ -111,7 +111,7 @@ build32:
- make --quiet -C Userspace prepare - make --quiet -C Userspace prepare
- make --quiet -C Lynx prepare - make --quiet -C Lynx prepare
- make --quiet -C Kernel prepare - make --quiet -C Kernel prepare
- sed -i 's/.*OSARCH = .*/OSARCH = i686/' ./Makefile.conf && cat Makefile.conf | grep OSARCH - sed -i 's/.*OSARCH = .*/OSARCH = i386/' ./Makefile.conf && cat Makefile.conf | grep OSARCH
- make build - make build
- mv Fennix.iso Fennix-debug.iso - mv Fennix.iso Fennix-debug.iso
- make clean - make clean

View File

@ -13,10 +13,10 @@
"**/tools/binutils-gdb/**": true, "**/tools/binutils-gdb/**": true,
"**/tools/build-binutilsamd64/**": true, "**/tools/build-binutilsamd64/**": true,
"**/tools/build-binutilsarm64/**": true, "**/tools/build-binutilsarm64/**": true,
"**/tools/build-binutilsi686/**": true, "**/tools/build-binutilsi386/**": true,
"**/tools/build-gccamd64/**": true, "**/tools/build-gccamd64/**": true,
"**/tools/build-gccarm64/**": true, "**/tools/build-gccarm64/**": true,
"**/tools/build-gcci686/**": true, "**/tools/build-gcci386/**": true,
"**/tools/cross/**": true, "**/tools/cross/**": true,
"**/tools/gcc/**": true, "**/tools/gcc/**": true,
"**/tools/limine/**": true, "**/tools/limine/**": true,

@ -1 +1 @@
Subproject commit 22a8a38a80b68c963d53a756b221f2aba69439ac Subproject commit a631029d48d923e40be070c28f2df55694bd553e

View File

@ -28,7 +28,10 @@
"vector.hpp": "c", "vector.hpp": "c",
"string.hpp": "c", "string.hpp": "c",
"nc.hpp": "c", "nc.hpp": "c",
"vector": "c" "vector": "c",
"task.hpp": "c",
"recovery.hpp": "c",
"symbols.hpp": "c"
}, },
"cSpell.words": [ "cSpell.words": [
"AABBCC", "AABBCC",
@ -52,6 +55,7 @@
"binfo", "binfo",
"biosdev", "biosdev",
"BIST", "BIST",
"BITALG",
"BLOCKDEV", "BLOCKDEV",
"BLOCKDEVICE", "BLOCKDEVICE",
"BNDCFGS", "BNDCFGS",
@ -118,6 +122,7 @@
"FFSMBIOS", "FFSMBIOS",
"FFXSR", "FFXSR",
"filestatus", "filestatus",
"FMAPS",
"fonthdr", "fonthdr",
"Framebuffer", "Framebuffer",
"fxrstor", "fxrstor",
@ -125,6 +130,7 @@
"Gameport", "Gameport",
"geopbyte", "geopbyte",
"GETVERSION", "GETVERSION",
"GFNI",
"haddpd", "haddpd",
"headersize", "headersize",
"HIPROC", "HIPROC",
@ -318,6 +324,8 @@
"UPDT", "UPDT",
"UPID", "UPID",
"UTID", "UTID",
"VAES",
"VBMI",
"vectorize", "vectorize",
"vfctprintf", "vfctprintf",
"vfsdbg", "vfsdbg",
@ -326,8 +334,12 @@
"VMCS", "VMCS",
"VMFUNC", "VMFUNC",
"VMXE", "VMXE",
"VNNI",
"VNNIW",
"VPCLMULQDQ",
"VPID", "VPID",
"VPOKE", "VPOKE",
"VPOPCNTDQ",
"weakrefalias", "weakrefalias",
"Wignored", "Wignored",
"Wmissing", "Wmissing",

2
Kernel

@ -1 +1 @@
Subproject commit ab64b9f3b050c26b08bbd7865768e36784157578 Subproject commit 9e21c5326bbe7b85a361f1a449c153f136a8ebc3

View File

@ -15,7 +15,7 @@ QEMUFLAGS := -display gtk
ifeq ($(OSARCH), amd64) ifeq ($(OSARCH), amd64)
QEMUHWACCELERATION = -machine q35 -enable-kvm QEMUHWACCELERATION = -machine q35 -enable-kvm
QEMUMEMORY = -m 4G QEMUMEMORY = -m 4G
else ifeq ($(OSARCH), i686) else ifeq ($(OSARCH), i386)
QEMUHWACCELERATION = -machine q35 -enable-kvm QEMUHWACCELERATION = -machine q35 -enable-kvm
QEMUMEMORY = -m 4G QEMUMEMORY = -m 4G
else ifeq ($(OSARCH), aarch64) else ifeq ($(OSARCH), aarch64)
@ -43,7 +43,7 @@ QEMUFLAGS += -device vmware-svga -M q35 \
-audiodev pa,id=pa1,server=/run/user/1000/pulse/native \ -audiodev pa,id=pa1,server=/run/user/1000/pulse/native \
-machine pcspk-audiodev=pa1 \ -machine pcspk-audiodev=pa1 \
-device AC97,audiodev=pa1 -device AC97,audiodev=pa1
else ifeq ($(OSARCH), i686) else ifeq ($(OSARCH), i386)
QEMUFLAGS += -M q35 \ QEMUFLAGS += -M q35 \
-usb \ -usb \
-usbdevice mouse \ -usbdevice mouse \

View File

@ -7,7 +7,7 @@ TESTING = 0
# Operating system name. # Operating system name.
OSNAME = Fennix OSNAME = Fennix
# OS architecture: amd64, i686, aarch64 # OS architecture: amd64, i386, aarch64
OSARCH = amd64 OSARCH = amd64
# Kernel version. # Kernel version.
@ -51,8 +51,8 @@ MLIBC = 0
ifeq ($(OSARCH), amd64) ifeq ($(OSARCH), amd64)
COMPILER_ARCH = amd64-elf- COMPILER_ARCH = amd64-elf-
QEMU_ARCH = x86_64 QEMU_ARCH = x86_64
else ifeq ($(OSARCH), i686) else ifeq ($(OSARCH), i386)
COMPILER_ARCH = i686-elf- COMPILER_ARCH = i386-elf-
QEMU_ARCH = i386 QEMU_ARCH = i386
else ifeq ($(OSARCH), aarch64) else ifeq ($(OSARCH), aarch64)
COMPILER_ARCH = aarch64-elf- COMPILER_ARCH = aarch64-elf-
@ -61,8 +61,8 @@ endif
ifeq ($(OSARCH), amd64) ifeq ($(OSARCH), amd64)
TC_COMPILER_ARCH = x86_64-fennix- TC_COMPILER_ARCH = x86_64-fennix-
else ifeq ($(OSARCH), i686) else ifeq ($(OSARCH), i386)
TC_COMPILER_ARCH = i686-fennix- TC_COMPILER_ARCH = i386-fennix-
else ifeq ($(OSARCH), aarch64) else ifeq ($(OSARCH), aarch64)
TC_COMPILER_ARCH = aarch64-fennix- TC_COMPILER_ARCH = aarch64-fennix-
endif endif

@ -1 +1 @@
Subproject commit 0c10aac7dfff54209686b439726aa4e05c0e1773 Subproject commit fc97b09d6ed2540fc53592a8ae0fa905beac3f28

View File

@ -37,10 +37,10 @@ clone_all:
mkdir -p cross mkdir -p cross
mkdir -p qemu mkdir -p qemu
mkdir -p build-binutilsamd64 mkdir -p build-binutilsamd64
mkdir -p build-binutilsi686 mkdir -p build-binutilsi386
mkdir -p build-binutilsarm64 mkdir -p build-binutilsarm64
mkdir -p build-gccamd64 mkdir -p build-gccamd64
mkdir -p build-gcci686 mkdir -p build-gcci386
mkdir -p build-gccarm64 mkdir -p build-gccarm64
mkdir -p build-toolchain-binutils64 mkdir -p build-toolchain-binutils64
mkdir -p build-toolchain-gcc64 mkdir -p build-toolchain-gcc64
@ -52,10 +52,10 @@ __clone_all_no_qemu:
git clone https://github.com/Fennix-Project/gcc.git gcc git clone https://github.com/Fennix-Project/gcc.git gcc
mkdir -p cross mkdir -p cross
mkdir -p build-binutilsamd64 mkdir -p build-binutilsamd64
mkdir -p build-binutilsi686 mkdir -p build-binutilsi386
mkdir -p build-binutilsarm64 mkdir -p build-binutilsarm64
mkdir -p build-gccamd64 mkdir -p build-gccamd64
mkdir -p build-gcci686 mkdir -p build-gcci386
mkdir -p build-gccarm64 mkdir -p build-gccarm64
mkdir -p build-toolchain-binutils64 mkdir -p build-toolchain-binutils64
mkdir -p build-toolchain-gcc64 mkdir -p build-toolchain-gcc64
@ -73,8 +73,8 @@ do_binutils64:
make all -j$(shell nproc) && make install make all -j$(shell nproc) && make install
do_binutils32: do_binutils32:
cd build-binutilsi686 && \ cd build-binutilsi386 && \
../binutils-gdb/configure --target=i686-elf --prefix="$(CROSS_DIR)" --with-sysroot --disable-werror && \ ../binutils-gdb/configure --target=i386-elf --prefix="$(CROSS_DIR)" --with-sysroot --disable-werror && \
make all -j$(shell nproc) && make install make all -j$(shell nproc) && make install
do_binutilsarm64: do_binutilsarm64:
@ -88,8 +88,8 @@ do_gcc64:
make all-gcc -j$(shell nproc) && make install-gcc -j$(shell nproc) make all-gcc -j$(shell nproc) && make install-gcc -j$(shell nproc)
do_gcc32: do_gcc32:
cd build-gcci686 && \ cd build-gcci386 && \
../gcc/configure --target=i686-elf --prefix="$(CROSS_DIR)" --enable-languages=c,c++ --without-headers && \ ../gcc/configure --target=i386-elf --prefix="$(CROSS_DIR)" --enable-languages=c,c++ --without-headers && \
make all-gcc -j$(shell nproc) && make install-gcc -j$(shell nproc) make all-gcc -j$(shell nproc) && make install-gcc -j$(shell nproc)
do_gccarm64: do_gccarm64:
@ -117,12 +117,12 @@ do_toolchain_gcc64:
do_toolchain_binutils32: do_toolchain_binutils32:
cd build-toolchain-binutils32 && \ cd build-toolchain-binutils32 && \
../binutils-gdb/configure --target=i686-fennix --prefix="$(CROSS_DIR)/toolchain" --with-sysroot --enable-shared --disable-werror && \ ../binutils-gdb/configure --target=i386-fennix --prefix="$(CROSS_DIR)/toolchain" --with-sysroot --enable-shared --disable-werror && \
make all -j$(shell nproc) && make install make all -j$(shell nproc) && make install
do_toolchain_gcc32: do_toolchain_gcc32:
cd build-toolchain-gcc32 && \ cd build-toolchain-gcc32 && \
../gcc/configure --target=i686-fennix --prefix="$(CROSS_DIR)/toolchain" --enable-languages=c,c++ --enable-shared --without-headers && \ ../gcc/configure --target=i386-fennix --prefix="$(CROSS_DIR)/toolchain" --enable-languages=c,c++ --enable-shared --without-headers && \
make all-gcc -j$(shell nproc) && \ make all-gcc -j$(shell nproc) && \
make all-target-libgcc -j$(shell nproc) && \ make all-target-libgcc -j$(shell nproc) && \
make install-gcc -j$(shell nproc) && \ make install-gcc -j$(shell nproc) && \

View File

@ -12,11 +12,9 @@
<div style="position: relative; top: 40%; transform: translateY(-40%);"> <div style="position: relative; top: 40%; transform: translateY(-40%);">
<h1 class="on-background-text move-to-middle gradienttext glowtext">Fennix</h1> <h1 class="on-background-text move-to-middle gradienttext glowtext">Fennix</h1>
<h4 class="on-background-text move-to-middle glowtext">Operating System from scratch made in C and C++</h4> <h4 class="on-background-text move-to-middle glowtext">Operating System from scratch made in C and C++</h4>
<button class="button round-border-med hdrbtn" style="backdrop-filter: blur(10px); cursor: pointer;" <button class="button round-border-med hdrbtn" style="backdrop-filter: blur(10px); cursor: pointer;" onclick="window.location.href='https://github.com/Fennix-Project/Fennix/releases'">Download Stable
onclick="window.location.href='https://github.com/Fennix-Project/Fennix/releases'">Download Stable
Version</button> Version</button>
<button class="button round-border-med hdrbtn" style="backdrop-filter: blur(10px); cursor: pointer;" <button class="button round-border-med hdrbtn" style="backdrop-filter: blur(10px); cursor: pointer;" onclick="window.location.href='https://github.com/Fennix-Project/Fennix/actions/workflows/makefile.yml'">Download
onclick="window.location.href='https://github.com/Fennix-Project/Fennix/actions/workflows/makefile.yml'">Download
Unstable Version</button> Unstable Version</button>
</div> </div>
</div> </div>
@ -34,14 +32,10 @@
</div> </div>
<div class="header" style="padding-bottom: 250px; padding-left: 0px; backdrop-filter: blur(40px);"> <div class="header" style="padding-bottom: 250px; padding-left: 0px; backdrop-filter: blur(40px);">
<div style="padding-top: 25px;"> <div style="padding-top: 25px;">
<img alt="GitHub Workflow Status" <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Fennix-Project/Fennix/Build%20OS?style=for-the-badge" onclick="window.location.href='https://github.com/Fennix-Project/Fennix/actions/workflows/makefile.yml'">
src="https://img.shields.io/github/workflow/status/Fennix-Project/Fennix/Build%20OS?style=for-the-badge"
onclick="window.location.href='https://github.com/Fennix-Project/Fennix/actions/workflows/makefile.yml'">
<img alt="GitHub" src="https://img.shields.io/github/license/Fennix-Project/Fennix?style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Fennix-Project/Fennix?style=for-the-badge">
<img alt="GitHub repo size" <img alt="GitHub repo size" src="https://img.shields.io/github/repo-size/Fennix-Project/Fennix?style=for-the-badge">
src="https://img.shields.io/github/repo-size/Fennix-Project/Fennix?style=for-the-badge"> <img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/Fennix-Project/Fennix?label=Repo%20Stars&style=for-the-badge">
<img alt="GitHub Repo stars"
src="https://img.shields.io/github/stars/Fennix-Project/Fennix?label=Repo%20Stars&style=for-the-badge">
</div> </div>
<div> <div>
<h1 class="gradienttext" style="font-size: 50px;">About</h1> <h1 class="gradienttext" style="font-size: 50px;">About</h1>
@ -49,20 +43,14 @@
<tbody> <tbody>
<tr> <tr>
<th> <th>
<iframe src="https://discord.com/widget?id=887406812612157451&theme=dark" width="350" <iframe src="https://discord.com/widget?id=887406812612157451&theme=dark" width="350" height="500" allowtransparency="true" frameborder="0" sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"></iframe>
height="500" allowtransparency="true" frameborder="0"
sandbox="allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"></iframe>
</th> </th>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<div style="padding-top: 100px; font-size: 35px;"> <div style="padding-top: 100px; font-size: 35px;">
Hello!<br> Hello!<br> This is my Operating System from scratch, my goal is to make a fully functional Operating System with a GUI and a lot of features.<br> I'm working on this project alone, but I'm open to any kind of help, if you want to help
This is my Operating System from scratch, my goal is to make a fully functional Operating System with a me, you can contribute to the project on GitHub.<br> I have a Discord server too &#8594<br>
GUI and a lot of features.<br>
I'm working on this project alone, but I'm open to any kind of help, if you want to help me, you can
contribute to the project on GitHub.<br>
I have a Discord server too &#8594<br>
</div> </div>
</div> </div>
@ -71,21 +59,14 @@
<h1 class="gradienttext" style="padding-top: 100px; font-size: 50px;">Compiling Instructions</h1> <h1 class="gradienttext" style="padding-top: 100px; font-size: 50px;">Compiling Instructions</h1>
<div style="text-align: left; margin-left: 10px; margin-right: 10px;"> <div style="text-align: left; margin-left: 10px; margin-right: 10px;">
<h4>Requirements</h4> <h4>Requirements</h4>
First of all, you need to install the required packages to build the cross-compiler, bootloader, OS, First of all, you need to install the required packages to build the cross-compiler, bootloader, OS, etc.
etc.<br> <br>
<hr color="#292929"> <hr color="#292929">
<b>&#x2022; Ubuntu 22.04</b><br> <b>&#x2022; Ubuntu 22.04</b><br> For cross-compiler:<br>
For cross-compiler:<br> <code class="panel">sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libzstd-dev libisl-dev autoconf m4 automake gettext gperf dejagnu guile-3.0 guile-3.0-dev expect tcl autogen tex-common sphinx-common git ssh diffutils patch
<code <i class="fa-solid fa-clipboard" style="cursor: pointer;" title="Copy to clipboard" onclick="CopyToClipboard('sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libzstd-dev libisl-dev autoconf m4 automake gettext gperf dejagnu guile-3.0 guile-3.0-dev expect tcl autogen tex-common sphinx-common git ssh diffutils patch');return false;"></i></code><br> For bootloader:<br>
class="panel">sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libzstd-dev libisl-dev autoconf m4 automake gettext gperf dejagnu guile-3.0 guile-3.0-dev expect tcl autogen tex-common sphinx-common git ssh diffutils patch <code class="panel">sudo apt-get install make gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 mingw-w64
<i class="fa-solid fa-clipboard" style="cursor: pointer;" title="Copy to clipboard" onclick="CopyToClipboard('sudo apt install build-essential bison flex libgmp3-dev libmpc-dev libmpfr-dev texinfo libzstd-dev libisl-dev autoconf m4 automake gettext gperf dejagnu guile-3.0 guile-3.0-dev expect tcl autogen tex-common sphinx-common git ssh diffutils patch');return false;"></i></code><br> <i class="fa-solid fa-clipboard" style="cursor: pointer;" title="Copy to clipboard" onclick="CopyToClipboard('sudo apt-get install make gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 mingw-w64');return false;"></i></code><br> For QEMU you'll have to follow this page <a href="https://wiki.qemu.org/Hosts/Linux" target="_blank">here</a><br> For OS:<br>
For bootloader:<br>
<code
class="panel">sudo apt-get install make gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 mingw-w64
<i class="fa-solid fa-clipboard" style="cursor: pointer;" title="Copy to clipboard" onclick="CopyToClipboard('sudo apt-get install make gcc-mingw-w64-x86-64 gcc-mingw-w64-i686 mingw-w64');return false;"></i></code><br>
For QEMU you'll have to follow this page <a href="https://wiki.qemu.org/Hosts/Linux"
target="_blank">here</a><br>
For OS:<br>
<code class="panel">sudo apt-get install xorriso mtools genisoimage ovmf nasm doxygen <code class="panel">sudo apt-get install xorriso mtools genisoimage ovmf nasm doxygen
<i class="fa-solid fa-clipboard" style="cursor: pointer;" title="Copy to clipboard" onclick="CopyToClipboard('sudo apt-get install xorriso mtools genisoimage ovmf nasm doxygen');return false;"></i> <i class="fa-solid fa-clipboard" style="cursor: pointer;" title="Copy to clipboard" onclick="CopyToClipboard('sudo apt-get install xorriso mtools genisoimage ovmf nasm doxygen');return false;"></i>
</code><br> </code><br>
@ -94,10 +75,8 @@
<div style="text-align: left; margin-left: 10px; margin-right: 10px;"> <div style="text-align: left; margin-left: 10px; margin-right: 10px;">
<h4 style="padding-top: 50px;">Building The Cross-Compiler</h4> <h4 style="padding-top: 50px;">Building The Cross-Compiler</h4>
The cross-compiler is used to compile the OS, the bootloader and the kernel.<br> The cross-compiler is used to compile the OS, the bootloader and the kernel.<br>
<hr color="#292929"> <hr color="#292929"> All you have to do is to write this command in the terminal:<br>
All you have to do is to write this command in the terminal:<br> <code class="panel">make tools</code><br> You'll have to wait a while, but when it's done, you can jump to the next step.<br>
<code class="panel">make tools</code><br>
You'll have to wait a while, but when it's done, you can jump to the next step.<br>
</div> </div>
<div style="text-align: left; margin-left: 10px; margin-right: 10px;"> <div style="text-align: left; margin-left: 10px; margin-right: 10px;">
@ -105,39 +84,27 @@
If you want to build different architecture, use other QEMU binary or change kernel name you can find in If you want to build different architecture, use other QEMU binary or change kernel name you can find in
<code class="panel">Makefile.conf</code> file.<br> <code class="panel">Makefile.conf</code> file.<br>
<hr color="#292929"> <hr color="#292929">
<code class="panel">DEBUG</code> &#x2022; If it's set to <code class="panel">1</code>, the kernel will <code class="panel">DEBUG</code> &#x2022; If it's set to <code class="panel">1</code>, the kernel will be compiled in debug mode.<br>
be compiled in debug mode.<br>
<code class="panel">TESTING</code> &#x2022; Enable unit testing.<br> <code class="panel">TESTING</code> &#x2022; Enable unit testing.<br>
<code class="panel">OSNAME</code> &#x2022; The name of the kernel. This can be anything.<br> <code class="panel">OSNAME</code> &#x2022; The name of the kernel. This can be anything.<br>
<code class="panel">OSARCH</code> &#x2022; The architecture of the kernel. Supported values are: <code <code class="panel">OSARCH</code> &#x2022; The architecture of the kernel. Supported values are: <code class="panel">amd64</code> <code class="panel">i386</code> <code class="panel">aarch64</code>.<br>
class="panel">amd64</code> <code class="panel">i686</code> <code class="panel">aarch64</code>.<br>
<code class="panel">KERNEL_VERSION</code> &#x2022; The version of the kernel. This can be anything.<br> <code class="panel">KERNEL_VERSION</code> &#x2022; The version of the kernel. This can be anything.<br>
<code class="panel">BOOTLOADER</code> &#x2022; The bootloader to be used. If set to <code <code class="panel">BOOTLOADER</code> &#x2022; The bootloader to be used. If set to <code class="panel">other</code>, the bootloader will be <a href="https://github.com/limine-bootloader/limine" target="_blank">Limine</a> for 64-bit, or
class="panel">other</code>, the bootloader will be <a with <a href="https://www.gnu.org/software/grub/" target="_blank">GRUB</a> if 32-bit. <code class="panel">lynx</code> it's still under development.<br>
href="https://github.com/limine-bootloader/limine" target="_blank">Limine</a> for 64-bit, <code class="panel">COMPILER_PATH</code> &#x2022; The path of the cross compiler. If you want to use your own cross compiler, change it to the path of the compiler.<br>
or with <a href="https://www.gnu.org/software/grub/" target="_blank">GRUB</a> if 32-bit. <code
class="panel">lynx</code> it's still under development.<br>
<code class="panel">COMPILER_PATH</code> &#x2022; The path of the cross compiler. If you want to use
your own cross compiler, change it to the path of the compiler.<br>
<code class="panel">LIMINE_FOLDER</code> &#x2022; The path of the Limine bootloader.<br> <code class="panel">LIMINE_FOLDER</code> &#x2022; The path of the Limine bootloader.<br>
<code class="panel">QEMU_PATH</code> &#x2022; Qemu path. If you want to use the one you have installed <code class="panel">QEMU_PATH</code> &#x2022; Qemu path. If you want to use the one you have installed in your system, change it to /usr/bin/qemu-system- (do not include x86_64 or i386, it will be added automatically)
in your system, change it to /usr/bin/qemu-system- (do not include x86_64 or i386, it will be added <br> That's all you can change in this file.<br>
automatically)<br>
That's all you can change in this file.<br>
</div> </div>
<div style="text-align: left; margin-left: 10px; margin-right: 10px;"> <div style="text-align: left; margin-left: 10px; margin-right: 10px;">
<h4 style="padding-top: 50px;">Building The Operating System</h4> <h4 style="padding-top: 50px;">Building The Operating System</h4>
The fun part!<br> The fun part!<br>
<hr color="#292929"> <hr color="#292929"> Now that you have the cross-compiler, you can build the OS.<br> There are a few commands that you can use to compile the OS:<br>
Now that you have the cross-compiler, you can build the OS.<br>
There are a few commands that you can use to compile the OS:<br>
<code class="panel">make build</code> &#x2022; Builds the entire OS and creates an ISO image.<br> <code class="panel">make build</code> &#x2022; Builds the entire OS and creates an ISO image.<br>
<code class="panel">make run</code> &#x2022; Same as <code class="panel">make build</code> but starts <code class="panel">make run</code> &#x2022; Same as <code class="panel">make build</code> but starts the QEMU too.<br>
the QEMU too.<br>
<code class="panel">make clean</code> &#x2022; Clean all files (object files, ISO, etc...).<br> <code class="panel">make clean</code> &#x2022; Clean all files (object files, ISO, etc...).<br>
<code class="panel">make doxygen</code> &#x2022; Generate the documentation in directory <code <code class="panel">make doxygen</code> &#x2022; Generate the documentation in directory <code class="panel">doxygen-doc</code>.<br>
class="panel">doxygen-doc</code>.<br>
</div> </div>
</div> </div>
@ -145,12 +112,8 @@
<h1 style="font-size: 50px;" class="gradienttext">Running With Other Virtual Machines</h1> <h1 style="font-size: 50px;" class="gradienttext">Running With Other Virtual Machines</h1>
<hr color="#292929"> <hr color="#292929">
<div style="text-align: left; margin-left: 10px; margin-right: 10px;"> <div style="text-align: left; margin-left: 10px; margin-right: 10px;">
&#x2022; On VirtualBox and VMware, you can use the ISO image to run the OS.<br> &#x2022; On VirtualBox and VMware, you can use the ISO image to run the OS.<br> &#x2022; HDD/SSD are not required.<br> &#x2022; The minimum RAM required is 4G. You can run with lower memory, but sometimes can cause issues (I don't know
&#x2022; HDD/SSD are not required.<br> why).<br> &#x2022; UEFI required. BIOS sometimes doesn't work properly.<br> &#x2022; Serial Port (COM1) is recommended.<br>
&#x2022; The minimum RAM required is 4G. You can run with lower memory, but sometimes can cause issues
(I don't know why).<br>
&#x2022; UEFI required. BIOS sometimes doesn't work properly.<br>
&#x2022; Serial Port (COM1) is recommended.<br>
</div> </div>
</div> </div>
@ -158,8 +121,7 @@
<h1 style="font-size: 50px;" class="gradienttext">Reporting Issues</h1> <h1 style="font-size: 50px;" class="gradienttext">Reporting Issues</h1>
<hr color="#292929"> <hr color="#292929">
<div style="text-align: left; margin-left: 10px; margin-right: 10px;"> <div style="text-align: left; margin-left: 10px; margin-right: 10px;">
You can report bugs or crash issues to <a You can report bugs or crash issues to <a href="https://github.com/Fennix-Project/Fennix/issues/new?assignees=&labels=bug&template=bug_report.md&title=">Issues
href="https://github.com/Fennix-Project/Fennix/issues/new?assignees=&labels=bug&template=bug_report.md&title=">Issues
tab</a>.<br> tab</a>.<br>
</div> </div>
</div> </div>