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.

You might also like...
Local Privilege Escalation Edition for CVE-2021-1675
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.

minecraft bedrock edition structure finder

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

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

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

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

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

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

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

A simple Unix like operating system from scratch.
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

Comments
  • macOS build/run support

    macOS build/run support

    Since the build system already uses clang, compiling it on my M1 MacBook Air was relatively easy. These are the changes I had to make for a successful build.

    After these changes, building was done with: LD=ld.lld arch -x86_64 make

    However, it triple faults on boot.

    opened by atipls 6
  • 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
  • Add EXT2 support, make FS more reliable.

    Add EXT2 support, make FS more reliable.

    This PR (which I'll also merge) heavily changes the file system code. Note that this removes any FAT32 support that NanoShell had. Don't worry -- I'll add it back.

    opened by iProgramMC 0
Releases(v1.00)
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 6 Oct 19, 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 30 Sep 14, 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 52 Dec 30, 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
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 22 Dec 22, 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 42 Oct 28, 2022
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 84 Dec 14, 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 21 Nov 7, 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