Coder Social home page Coder Social logo

klange / toaruos Goto Github PK

View Code? Open in Web Editor NEW
6.1K 257.0 475.0 71.39 MB

A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.

Home Page: https://toaruos.org/

License: University of Illinois/NCSA Open Source License

Makefile 0.44% Shell 0.26% Assembly 0.84% C 98.39% Python 0.07% Dockerfile 0.01%
operating-system toaruos operating-systems c c-library compositor window-manager baremetal os bootloader

toaruos's People

Contributors

adamdicarlo avatar fabiensiron avatar farseer2 avatar fluxer avatar gerow avatar gil0mendes avatar graphitemaster avatar ivoah avatar jozefnagy1133 avatar klange avatar lioncash avatar martica avatar patricklucas avatar peter-harliman avatar shawnanastasio avatar srjek avatar stevej avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

toaruos's Issues

GUI dont running.

Hi, after make system, i create .img file with image-builder/create-image.sh after this process i type sudo qemu-system-i386 toaru-disk.img and qemu show me grub, i select Graphical Mode but nothing happened and restart system and i see grub again, what's wrong ?

Installation / Setup Wizard

Now that we have working disk writes, we need a setup or installation tool.

It should be able to:

  • Run on first boot for production images.
  • Create a default user.
  • Setup timezone offsets (not currently supported anywhere).
  • Walk through the UI / controls.

In the future, we should build a full installation wizard that can be run from a bootable ISO to:

  • Format a disk.
  • Install files from a compressed archive.
  • Proceed with the setup above.

newlib no longer builds

Host: Arch Linux x86_64, all packages up to date

newlib just stopped building recently, and I think it might be because it requires an old version of autoconf (currently have 2.69)

This is what comes out of the build script: https://gist.github.com/4593932

GCC build error

While compiling GCC, after removing/updating any legacy build dependencies, I keep stumbling upon the error shown in the screenshot. I attempted to fix it many ways, but I keep on getting this error (marked in white).

error

Mouse not working

Hi,
i booted up the system with qemu 2.0 yesterday and the mouse wont work anymore. Not sure if it is the qemu 2.x (also installed 2.1 to verify). But since you are only doing "ps2" port things, it should work. Will try to set up a qemu 1.x to verify if there is something "new" in qemu.

Memory leak in syscall_chdir

Hi,
you have a memory leak here in the function syscall_chdir(). You do a kopen() get a fs_node_t but you dont free() it:

static int sys_chdir(char * newdir)
{
char * path = canonicalize_path(current_process->wd_name, newdir);
fs_node_t * chd = kopen(path, 0);
if (chd) {
if ((chd->flags & FS_DIRECTORY) == 0) {
return -1;
}
free(current_process->wd_name);
current_process->wd_name = malloc(strlen(path) + 1);
memcpy(current_process->wd_name, path, strlen(path) + 1);
return 0;
} else {
return -1;
}
}

Brgds
C.

ATAPI Drivers

ATAPI drivers are required to read data from the CD drive.

Support Alt+F4 everywhere

Some applications lack a clear way to be closed, especially ones without titlebars. We should support Alt+F4 either at the compositor level or through something else (perhaps through the panel, like we do with some other window management functionality).

Toolkit Todo List

  • Integrate with graphics library
  • Include support for multiple windows
  • Add objects for:
    • Menus
    • Labels
    • Sliders
    • Scrollbars
    • Checboxes / Radio Buttons
    • Input boxes
    • Tabviews?
  • Add support for graphical themes?
  • Need to integrate with font engine (freetype2 + shmemfonts)

TCP: Reordering

Sometimes TCP packets come in in the wrong order. The stack needs to account for this.

ISO / CD Filesystem Support

The kernel lacks support for a filesystem read from directly from a CD.

Either, support an emulated Unix-like file system on the CD, or support enough to load a memdisk without having to use the bootloader.

x86-64 Port

ToaruOS has been x86 32-bit only for quite some time. A half-hearted attempt at an ARM port was made in 2013, but was not completed. Porting to x86-64 would provide an opportunity to discover and fix size issues, built out the general port infrastructure that Toaru's build tools have been lacking, and also provide an environment where all of the general-purpose drivers (mouse/keyboard/video) continue to function.

Things to think about:

  • Where are we making bad assumptions about pointer sizes?
  • What can we do to make the build scripts support multiple target architectures?
  • How can we make process structures more generic?
  • Where do we make assumptions about memory layout that may no longer be true as we move to higher-half with x86-64?

Build a better sub-second timing API

Currently, the only way to get accurate sub-second timing information is through the uptime interface, which is disturbingly wrong (though slightly interesting from a plan9 perspective...)

There are several places where sub-second timing information would be useful:

  • Ensuring smooth animations in the compositor.
  • Support double clicks properly.
  • Video playback.

One of the POSIX timing APIs should be fully implemented with at least millisecond accuracy, but preferably microsecond accuracy (which is currently lacking). May require general upgrades to timekeeping.

Message Passing

The kernel needs an efficient and safe message passing system for use in services.

1.0.0 Tracking Ticket

  • GCC port
  • Audio device drivers
  • Audio subsystem
  • ATAPI CD support (CD filesystem?)
  • Network stack
  • New wallpaper and character assets
  • Networking samples (telnet, etc.)
  • SDL backend + port
  • Stable ext2 writes
  • Dynamic loader
  • Finish Python port
  • Toolkit (Python?)
  • VFS permissions (basic)

Remove old boot logging

There are like 3 different methods for logging in the kernel, and some of them are never, ever used because they only print visible log messages to the serial line... before serial is enabled.

Get rid of the stored log – just make debug_print store to a temporary buffer until the VFS is available – and kill the boot log – it hasn't served a purpose since the kernel terminal was removed.

Fix const correctness for strings

There's plenty of const correctness issues throughout the kernel, but starting with static strong declarations would get us pretty far.

Network Tracking Ticket

This is a task list ticket for tracking progress on the network stack.

  • Packet construction
    • Ethernet frames
    • IPv4 headers
    • UDP packets
      • UDP packet checksums
    • TCP packets
  • Core protocol support
    • ARP
    • DHCP
      • DHCP packet construction
      • DHCP packet interpretation (options)
    • DNS
      • Request generation
      • Response parsing
    • IRC
    • Telnet
  • Userspace interface

Support VirtualBox's BGE device in lfbvideo driver

It has a different PCI device ID, but is compatible with the eixsting driver:

18:15 <sortie>         bool is_qemu_bga = id.vendorid == 0x1234 && id.deviceid == 0x1111;
18:15 <sortie>         bool is_vbox_bga = id.vendorid == 0x80EE && id.deviceid == 0xBEEF;

I'm pretty sure the "Eldritch Horror" fallback means we already support these devices, but inefficiently (and possibly dangerously).

Forgot -I flag

You forgot -I./kernel/include on line 156 of the Makefile.

I cant build, help please.

I'm following this page to build kernel,

But when I execute ./.build-travis.sh, here is what happens:

bekir@ubuntu:~/klange/osdev$ sudo ./.build-travis.sh 
/home/build/osdev/toolchain ~/klange/osdev
~/klange/osdev
   CC   ./gui/ttk/lib/ttk-core.cIn file included from ./gui/ttk/lib/ttk-core.c:10:0:
./gui/ttk/ttk.h:7:19: fatal error: cairo.h: No such file or directory
compilation terminated.
   CC   ./gui/ttk/lib/ttk-core.c
/home/bekir/klange/osdev/userspace/gui/ttk/lib/ttk-core.o 1
['i686-pc-toaru-gcc', '-std=c99', '-U__STRICT_ANSI__', '-O3', '-m32', '-Wa,--32', '-g', '-I.', '-I/home/build/osdev/toolchain/local/i686-pc-toaru/include/freetype2', '-I/home/build/osdev/toolchain/local/i686-pc-toaru/include/cairo', '-I/home/build/osdev/toolchain/local/i686-pc-toaru/include/pixman-1', '-c', '-o', '/home/bekir/klange/osdev/userspace/gui/ttk/lib/ttk-core.o', './gui/ttk/lib/ttk-core.c']
Traceback (most recent call last):
  File "build.py", line 220, in <module>
    source_obj.run()
  File "build.py", line 108, in run
    raise Exception
Exception
make: *** [.userspace-check] Error 1
bekir@ubuntu:~/klange/osdev$ 

Slow Pipes

Pipe support is extremely slow. Fix this.

glogin improvements

There are several things that could use improvement in glogin:

  • Text input boxes need cursor when highlighted (preferably with blink)
  • Entire interface needs mouse support
  • The clock in the corner doesn't update (it's only a date, so this is pretty minor, but if you're logging in around midnight you might notice)
  • Yutani doesn't focus the login window when it is the only window (after logging out)
  • Add additional controls to login screen, such as "shut down"
  • Make design things configurable (transparency, layout, logo, etc.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.