NanoShell 3rd Edition is a preemptively multi-tasked 32-bit operating system with a windowed GUI

Overview

NanoShell

NanoShell 3rd Edition is a preemptively multi-tasked 32-bit operating system with a windowed GUI.

Be advised that this is UNFINISHED/beta-ware software and you should not expect any stability from this software.

Copyright (C) 2022 iProgramInCpp

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License only.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see the GNU licenses.

This software is licensed under the GNU General Public License V3 only.

Be warned that building this is not for the average Linux user nor is it for the faint of heart. Soon I'll work on a way to compile this in an easier way.

Goals

Note that user mode is "mysteriously" absent. This OS is entirely running in ring-0. I'm not particularly concerned with safety, any app is free to do anything. The design is NOT the best, by ANY means, so do not inspire yours from this design.

Feel free to submit issues you may have with this OS in the Issues tab. To discuss other things, join the Discord server.

  • Hello World

Primordial tasks

  • Paging and dynamic memory allocation
  • Loading an ELF at some virtual address with its own heap and executing it
  • Task Switching (concurrent threads)

User

  • A basic shell, can execute applications
  • Get a GUI running (Also in a task)
  • Applications can use the GUI API
  • Port DOOM
  • (ultimate boss) Port Mesa and Super Mario 64 (based on the DOS port, please)

Drivers

  • PS/2 Mouse and Keyboard
  • EGA Text mode
  • VBE Graphics mode (fast)
  • Bochs/QEMU debugcon (E9 hack)
  • Serial port
  • PCI
  • VirtualBox/QEMU/Bochs graphics device (not VBE)
  • VMware SVGA device
  • Sound devices (e.g. SoundBlaster 16)
  • USB

Permanent memory

  • Block storage abstraction base
  • Optional RAM disk images can be loaded and used as block devices
  • ATA device driver
  • USB stick device driver

File system

  • Root contains several files which are packed neatly into the executable
  • Mounting other file systems to the main one
  • Cleaning up after a while of not having used a certain directory page (can't apply to root or ram disks, you know why)

Build instructions

Linux build:

Not supported. Could be supported soon, but currently not supported.

Windows build:

Preparation

Create the build folder. Inside it create the folders asm, kapp, fs, nooptimiz and icons.

Create the tools directory. Download the i686-elf GCC+binutils, and extract it into tools/i686-gcc/. Also download NASM and place it inside tools/nasm so that it is reachable at tools/nasm/nasm.exe.

Make sure that make is easily accessible by opening a command prompt anywhere and typing make.

Compile tools_src/fsmaker and tools_src/icontest.

Place fsmaker.exe inside tools/. Place icontest.exe inside tools/icc/. (create the directory, if necessary)

The Moment of Truth

Run buildall.bat. It should start building. Once it's done you should have a kernel.bin in the repo root.

Installation

If you don't have grub2, install it. It's relatively easy.

Once you have a grub installed on your favorite USB drive, create a grub.cfg inside the grub directory. Add the following lines:

menuentry "NanoShell" {
	multiboot /boot/kernel.bin
	set gfxpayload=1024x768x32
	boot
}

Note that you can place your kernel image anywhere, but I prefer /boot/kernel.bin. Place your kernel image so that grub can find it, and then restart.

And you're done! You should be in NanoShell now. Type w to go to the GUI mode.

Issues
  • Use own Images / Icons

    Use own Images / Icons

    i was wondering how i can change the icons / images, when i look in the include/icons folder and select a file it says converted something how do i do that?

    opened by SpookyTabz 2
Owner
iProgramInCpp
iProgramInCpp
A 32-bit multitasking Operating System

Tangent-Kernel This is 32-bit kernel Made for tangent OS with the following features: 1. VFS 2. Basic Drivers(Screen,PIT,Keyboard) 3. Ramdisk Support

sheispeko 10 Mar 28, 2022
Simple one file header for hijacking windows version.dll for desired executable to do 3rd party modifying without dll injection.

Version-Hijack Simple one file header for hijacking windows version.dll for desired executable to do 3rd party modifying without dll injection. Usage

sneakyevil 5 Mar 31, 2022
Simple C++ sample showing how to use OpenCL v1.2 on Windows/Linux/OSX with no 3rd party SDK installs

simple_opencl This is a simple and practical C++ sample showing how to use OpenCL v1.2 on Windows/Linux/OSX with no 3rd party SDK installs required un

Rich Geldreich 29 Jun 16, 2022
A video input (V4L2) to NDI converter that works with Raspberry Pi (32-bit and 64-bit), and Intel/AMD CPUs

V4L2 to NDI V4L2 to NDI is an application that connects to attached V4L2 devices and encodes the video signal into NDI It uses the NDI library, allowi

Luke Plassman 37 Jun 21, 2022
A Christmas-Themed SHMUP for the Sega Master System; made for the "Jame Gam Christmas Edition"

winter-shooter A Christmas-Themed SHMUP for the Sega Master System; made for the "Jame Gam Christmas Edition" Resources used: Main ship sprite: https:

Haroldo de Oliveira Pinheiro 2 Dec 26, 2021
CERBERUS 2080™, the amazing multi-processor 8-bit microcomputer

CERBERUS 2080™ CERBERUS 2080™, the amazing multi-processor 8-bit microcomputer: a fully open-source project available for anyone to peruse, build, mod

The Byte Attic 66 Jun 22, 2022
Operating system project - implementing scheduling algorithms and some system calls for XV6 OS

About XV6 xv6 is a modern reimplementation of Sixth Edition Unix in ANSI C for multiprocessor x86 and RISC-V systems.

Amirhossein Rajabpour 20 May 19, 2022
Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

SynnixOS Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via Q

RaidTheWeb 40 May 27, 2022
Multi-dimensional dynamically distorted staggered multi-bandpass LV2 plugin

B.Angr A multi-dimensional dynamicly distorted staggered multi-bandpass LV2 plugin, for extreme soundmangling. Based on Airwindows XRegion. Key featur

null 18 Apr 17, 2022
Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.

Unicorn Engine Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU. Unicorn offers some unparalleled fe

lazymio 1 Nov 7, 2021
Local Privilege Escalation Edition for CVE-2021-1675

Local Privilege Escalation Edition of CVE-2021-1675/CVE-2021-34527 Local Privilege Escalation implementation of the CVE-2021-1675/CVE-2021-34527 (a.k.

Halil Dalabasmaz 329 Jun 15, 2022
minecraft bedrock edition structure finder

Minecraft Bedrock Structure Finder Minecraft bedrock edition structure finders(updating) Progress WorldSpawn Village, Stronghold, Mineshaft, DesertTem

AgNO3 16 Apr 14, 2022
C++ Premier plus 6th edition book solved exercise.

c-premier-plus-6th-edition-solved-exercise C++ Premier plus 6th edition book exercise solutions. These exercise solved by me when i learning c++, so d

Zaid Rao 1 Oct 31, 2021
IPlug "Tale" edition example (tremolo effect).

IPLUG EXAMPLE A simple tremolo audio effect plugin (AU/VST2), serving as an example for the IPlug "Tale" edition plugin framework. GETTING STARTED

null 2 Nov 22, 2021
Tesla cheat trainers for Grand Theft Auto: The Trilogy - The Definitive Edition for the Nintendo Switch.

nxGTA-Trainers This is a set of tools for cheating in Grand Theft Auto: The Trilogy - The Definitive Edition for the Nintendo Switch. While I will try

null 25 May 11, 2022
Source Code for 'Practical C++ Design, 2nd Edition' by Adam B. Singer

Apress Source Code This repository accompanies Practical C++ Design by Adam B. Singer (Apress, 2022). Download the files as a zip using the green butt

Apress 10 May 24, 2022
Randomized configurable bodies for Skyrim: Anniversary Edition

autoBody AE A SKSE Plugin for distributing CBBE and HIMBO presets throughout the gameworld Configurable through morphs.ini files (optionally created b

null 9 May 28, 2022
Crazy Eddie's GUI System Mk-2

Crazy Eddie's GUI System Mk-2 http://www.cegui.org.uk Copyright ©2004 - 2014 Paul D Turner, The CEGUI Development Team and Contributing Authors The ma

OpenTechEngine 49 Mar 24, 2022
A simple Unix like operating system from scratch.

HOS-x86 an x86 operating system written from scratch How to Build? Currently you need NASM, GCC and QEMU to build the image file. Install the packages

Jayachandra Kasarla 15 Feb 7, 2021