All Projects → nothotscott → VisualOS

nothotscott / VisualOS

Licence: MIT License
x86-64 UEFI operating system with the goal of eliminating command lines

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
C++
36643 projects - #6 most used programming language
Makefile
30231 projects
python
139335 projects - #7 most used programming language
awk
318 projects

Projects that are alternatives of or similar to VisualOS

Build
Armbian Linux build framework
Stars: ✭ 1,827 (+9035%)
Mutual labels:  operating-system, uefi
Minimal
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.
Stars: ✭ 1,014 (+4970%)
Mutual labels:  operating-system, uefi
FoxOS
The FoxOS main repository
Stars: ✭ 48 (+140%)
Mutual labels:  operating-system, uefi
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (+460%)
Mutual labels:  operating-system, uefi
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (+135%)
Mutual labels:  operating-system, uefi
SnowFlake
Technology is free, SnowFlakeOS
Stars: ✭ 38 (+90%)
Mutual labels:  operating-system, uefi
aero
Aero is a new modern, experimental, unix-like operating system following the monolithic kernel design. Supporting modern PC features such as long mode, 5-level paging, and SMP (multicore), to name a few.
Stars: ✭ 407 (+1935%)
Mutual labels:  operating-system, uefi
WindowsIoTEverywhere
Images & drivers to get WIndows 10 IoT running on off-the-shelf tablets, mini-pcs, and various computers.
Stars: ✭ 23 (+15%)
Mutual labels:  operating-system
nachos
Nachos XMU操作系统课程实验
Stars: ✭ 31 (+55%)
Mutual labels:  operating-system
KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-20%)
Mutual labels:  operating-system
clr-boot-manager
Kernel & Boot Loader Management
Stars: ✭ 101 (+405%)
Mutual labels:  uefi
archcraft-os.github.io
// Source : Website
Stars: ✭ 47 (+135%)
Mutual labels:  operating-system
edk2-nightly
Unofficial EDK2 nightly build
Stars: ✭ 20 (+0%)
Mutual labels:  uefi
UefiVarMonitor
The runtime DXE driver monitoring access to the UEFI variables by hooking the runtime service table.
Stars: ✭ 105 (+425%)
Mutual labels:  uefi
sysprog
Systems Programming course
Stars: ✭ 21 (+5%)
Mutual labels:  operating-system
operatingsystem
操作系统复习:知识整理
Stars: ✭ 17 (-15%)
Mutual labels:  operating-system
nightingale
A small operating system where I experiment and learn osdev.
Stars: ✭ 86 (+330%)
Mutual labels:  operating-system
apex
Apex RTOS - A (somewhat) Linux compatible real time operating system
Stars: ✭ 15 (-25%)
Mutual labels:  operating-system
NightOS
A highly secure, performant and robust operating system for the future 🌔 🚀
Stars: ✭ 15 (-25%)
Mutual labels:  operating-system
infinity
A secure, modern and intelligent operative system
Stars: ✭ 27 (+35%)
Mutual labels:  operating-system

VisualOS

VisualOS is a x86-64 operating system with a "microish kernel" that aims to remove the need for command line interfaces. This project loosely follows along Poncho's youtube series. This operating system is designed to be somewhat POSIX compatible.

Purpose

I've personally felt command line interfaces are a primitive means of interfacing with a computer. Command lines aren't user friendly since users are expected to memorize arguments and flags and each program's unique syntax. Users also frequently have to repeat themselves when combining tasks (i.e mkdir foo && ls) Command lines aren't friendly for computers either, since programs have to parse and sanitize the user's input through a single interface. This OS was a shower thought about the possibilty to evolve pass the archaic constraints command lines impose on computer enthusiasts. As such, I thought it would be a fun project to develop an OS as a proof of concept of my idea. I am not an experience OS developer however, so I've come to learn and I'm sure there's many better ways of implementing my idea.

What's a "microish kernel"

I coined the term "microish-kernel" to mean: a hybrid kernel who, on a spectrum ranging from monolithic-like to microkernel-like, lies at the microkernel extreme but isn't truly a microkernel. The difference with VisualOS is, the scheduler, memory management, and file system reside in kernelspace. These services in a traditional microkernel reside in userspace. Besides those, VisualOS's drivers, applications, and servers execute in userspace like a normal microkernel.

Included dependencies

The following are included and minimally modified to adapt to the build process and the VOS runtime

Build

A Unix-like environment is required to build VisualOS. The following systems have been tested: WSL, Linux, MacOS
Make sure the following tools are installed on the Unix-like system

  • python3
  • gcc suite or clang suite
  • nasm
  • mtools

Installing the required tools can be done by executing sudo ./install_tools.sh for debian-based systems or systems that use the apt package manager. Simply execute ./main.py to automatically build. Use ./main.py -h for a list of more granular build options and execute ./main.py -r to run a qemu instance of VisualOS. Note: python3 main.py can be executed natively on Windows if on PowerShell and traversed to the correct WSL UNC path. The script will automatically re-execute itself in WSL.

Features

  • stivale2 boot protocol kernel
  • Included libc for both kernel and userspace
  • Kernel and Userspace syscall translation layer. Read more here.

Features in progress

  • Symmetric Multiprocessing

Upcoming Features

  • First userspace programs and drivers
  • Scripting (Lua or perhaps my own language)

Planned Visual Features

  • Programs will use a built-in GUI framework. Standard IO will redirect to GUI. User input will strictly through GUI fields.
  • Programs that need to access other programs can only do so through libraries that should be bundled with the program in question.
  • Programs are encouraged to save user settings in a file that avoids asking them for input that will likely be the same the next time they go to run it.
  • Drives will mount similar to Windows, but present themselves as $n/your/files.txt where n is the drive number.
  • Programs will work best in C++, since my library will be object oriented.

Lua (not released)

Lua is the primary scripting language of this OS. Lua easily integrates with the C language and is lightweight. Lua scripts will provide a simplified means of running programs nativley. Lua is also far simpler then shell scripting and can be adapted for many situations. I plan lua scripts to look like the following:

local gui = vos.Gui:CreateWindow()
local layout = gui:SetLayout("STACK")
local addDeviceToList = function(device, isConnected)
	if device:GetType() == "DISK" and device:GetMedium() == "USB" then
		local label = vos.Gui:CreateComponent("LABEL")
		label.Text = tostring(device)
		layout:AddComponent(label)
	end
end

for i,device in pairs(vos.Devices:GetDevices()) do
	addDeviceToList(device, true)
end
vos.Devices.DeviceInserted:connect(addDeviceToList)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].