Developer Guide
This is a installation and verification guidelines for the tools used in this project
Git
- Install and verify the version
# to install git via the terminal sudo dnf install git -y # to verify git version git --version- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
- setup and verification of username and user email
# to set username and email git config --global user.name "username" git config --global user.email "email@email.com" # to check username and email git config --global user.name git config --global user.email- the user email should be the same as the one used in GitHub account
- setup of ssh key
# to set up ssh ssh-keygen -t ed25519- this generates a private and a public file
- add the public file to the GitHub account
- it is recommended to use ssh
- Cloning a remote repository to the local device
# this is to clone a remote repository to the local disk git clone <ssh_link> - Commands
# to get changes from the remote repository and merge them to the local machine git pull # tells the status of new, changed, or unchanged files git status # adds all the newly created, modified, and deleted files into the staging area git add . # adds the specific files to the staging area git add <file_name> # commits the changes in the staging area with message git commit -m "enter the commit message" # opens an text editor (vim, nano) to write the commit message for the staging area git commit # creates a tag with a message for the commit, useful for versioning git tag -a <tag_number> -m "tag message" # pushes the specified tag to the remote repository git push origin <tag_number> # pushes the committed changes to the remote repository sometimes the main branch is also known as master git push origin main # shows the detailed information about the tag git show <tag_number> # shows all the tag that are in the repository git tag # shows the commit history git log
VIM
- Installation and Verification
# to install vim sudo dnf install vim -y #for verification and version detail vim --version- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
- To create/open a file in vim
vim <filename> - Basic Vim Keybindings
modes: i => insert mode used for text insertion v => visual mode used for text selection Esc => normal mode used for text navigation Navigation: h => left j => down k => up l => right gg => first line of the file G => last line of the file w => next word b => previous word :<line number> => move to the specified line number use of arrow keys is also supported exiting and saving vim: :q => exit (only works if file is not changed) :q! => force exit :wq => saving and exiting :w => saving the fileFor in depth vim usage please refer: Vim book converted by Tomas Vasko
Rust + Cargo + Rust Nightly
- Installing stable Rust
# command to download and run the shell script installs Rust, cargo, and Rustup and adds the path to the environment curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # to load Rust into the current shell, alternatively you could close and reopen the terminal . "$HOME/.cargo/env" - Install Rust Nightly and rust-src
# nightly provides us with experimental features, and support for unstable language support rustup install nightly # installs the rust source code, it comes with libraries that are essential for low level, bare metal programming rustup component add rust-src # to load Rust into the current shell, alternatively you could close and reopen the terminal . "$HOME/.cargo/env" - verify the installation
# shows version information for rustc which is the rust compiler rustc --version # shows the version information for cargo which is the rust package managger cargo --version # shows the current active setup rustup show- the project should use the same version throughout the development phase
- cargo : cargo 1.93.0 (083ac5135 2025-12-15)
- rustc : rustc 1.93.0 (254b59607 2026-01-19)
- rustc nightly: rustc 1.95.0-nightly (9e79395f9 2026-02-10)
- RUST NIGHTLY IMPORTANT
- DO NOT SET Rust Nightly as the default it is not recommended
# this make nightly default everywhere, not recommended rustup default nightly- instead use rust nightly when necessary i.e the project folder only as shown below:
# makes a new directory for the os mkdir my_os # navigating into that directory cd my_os # making it so that rust nightly is default only for this project folder and not the whole system rustup override set nightly - Rust commands
# a new rust project cargo new my_project # existing project as a rust project cd existing_project cargo init # compile in debug mode cargo build # compile in release mode cargo build --release # compile and run in debug mode cargo run # check if the code compiles cargo check # compile for a custom target cargo build --target <custom file to compile to> #for example if we want to compile to i686-unknown-none.json # this means using i686(32 bit architecture) # compile for bare metal programming no vendor # there is no os # as a json file cargo build --target i686-unknown-none.json # compile bare-metal + build core library cargo build -Z build-std=core --target i686-unknown-none.json # testing in QEMU qemu-system-i386 -kernel <path to the binary file that needs to be tested> # says qemu to use 32 bit architecture # telling we are testing a kernel # and providing the path to the kernel binary file qemu-system-i386 -kernel target/i686-unknown-none/debug/my_os.bin # target/<target-name>/<build-mode>/<your-binary> # syntax: creates a target folder within the main project with a sub folder and builds our binary there
Microsoft Edge
- install using Flatpak, flatpak comes installed in fedora by default
# to check the package id for the app, and if it exits flatpak search edge # install edge from flathub flatpak install flathub com.microsoft.Edge - to update edge
flatpak update com.microsoft.Edge - to uninstall edge
flatpak uninstall com.microsoft.Edge - or just use the Software application, or you could install flatpak in your disto as well
- Arch: sudo pacman -S flatpak
- Debian, Ubuntu: sudo apt install flatpak
QEMU
- Installation
sudo dnf install @virtualization -y- for other distros, OS, asd source code compilation please refer: Download QEMU
- Verification
# for 32 bit verification qemu-system-i386 --version # for 64 bit verification qemu-system-x86_64 --version - the project uses the following versions:
- qemu-system-i386 –version: QEMU emulator version 10.1.3 (qemu-10.1.3-1.fc43)
- qemu-system-x86_64 –version: QEMU emulator version 10.1.3 (qemu-10.1.3-1.fc43)
Gnome Boxes
- install using Flatpak, flatpak comes installed in fedora by default
# to check the package id for the app, and if it exits flatpak search boxes # install edge from flathub flatpak install flathub org.gnome.Boxes - to update GNOME boxes
flatpak update org.gnome.Boxes - to uninstall GNOME boxes
flatpak uninstall org.gnome.Boxes - or just use the Software application, or you could install flatpak in your disto as well
- Arch: sudo pacman -S flatpak
- Debian, Ubuntu: sudo apt install flatpak
- or it can be installed from dnf
# to search for the application dnf search gnome-boxes # to install the application sudo dnf install gnome-boxes - after installation
- open the application
- click on the + icon on the top left corner of the screen
- either choose your iso or browse and download the ones available from the app
- select the firmware, memory, and storage specifications
- set up the virtual machine
LibreOffice
- Install from dnf
# to search for the application dnf search libreoffice # to install the application sudo dnf install libreoffice- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
- to check the installation
libreoffice # or libreoffice --version
Google Docs, Drive, Mail, Meet, Sheet, Slides
- open Microsoft Edge
- create a Google account or sign in
- search for the service that needs to be used use it
Github
- open Microsoft Edge
- search for GitHub
- create a account or sign in
- add a ssh key : mentioned in git section
- create a repository, or for a repository and start using the service
Apostrophe
- install using Flatpak, flatpak comes installed in fedora by default
# to check the package id for the app, and if it exits flatpak search apostrophe # install apostrophe from flathub flatpak install flathub org.gnome.gitlab.somas.Apostrophe - to update GNOME apostrophe
flatpak update org.gnome.gitlab.somas.Apostrophe - to uninstall GNOME apostrophe
flatpak uninstall org.gnome.gitlab.somas.Apostrophe - or just use the Software application, or you could install flatpak in your disto as well
- Arch: sudo pacman -S flatpak
- Debian, Ubuntu: sudo apt install flatpak
- or it can be installed from dnf
# to search for the application dnf search apostrophe # to install the application sudo dnf install apostrophe- just use flatpak
Microsoft Project
- Open windows virtual machine in a virtualization software like GNOME Boxes or use a windows based machine
- Open the browser
- Search for office customization tool
- Customize the file and export it as Configuration.xml
- Create a folder named office
- Move the file to the office folder
- Again search for office deployment tool in the browser
- run the office deployment tool as administrator
- extract the files at the office folder created earlier
- Delete all the files created by office deployment tool not the one created through customization tool
- open command prompt as administrator in the folder and type
setup.exe/configure configuration.xml - after installation login with the email provided by the university/any other email having proper ms project access
Notepad++
- Open a browser
- browse to notepad++
- select the version needed
- download based on the architecture that is required
HTML, CSS, JS
- no need to install HTML, CSS, JS
- create a file with the correct extentions such as index.html, style.css, scripts.js
- and make the webpage
NASM (Netwide Assembler)
- install NASM
sudo dnf install nasm - verify installation
nasm --version-
the version used in this project is : NASM version 2.16.03 compiled on Jul 24 2025
- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
-
GCC
- install gcc
sudo dnf install gcc -y - verify gcc version
gcc --version-
the project uses: gcc (GCC) 15.2.1 20260123 (Red Hat 15.2.1-7)
- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
-
GDB (The GNU Project Debugger)
- install gdb
sudo dnf install gdb -y - verify gdb version
gdb --version-
the project uses: GNU gdb (Fedora Linux) 17.1-1.fc43
- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
-
DD
- install dd
sudo dnf install dd -y - verify dd version
dd --version-
the project uses: dd (coreutils) 9.7
- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
-
MAKE
- install make
sudo dnf install make -y - verify make version
make --version-
the project uses: GNU Make 4.4.1
- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
-
Binutils
- install binutils
sudo dnf install binutils -y - verify binutils version
as --version ld --version-
the project uses: GNU assembler version 2.45.1-4.fc43; GNU ld version 2.45.1-4.fc43
- for debian and ubuntu replace dnf with apt
- for arch replace dnf with pacman -S
-