Skip to content

Releases: mkilgore/protura

Version 0.9.1

20 Jul 01:06
Compare
Choose a tag to compare
Version 0.9.1 Pre-release
Pre-release

The biggest changes this release is the new framebuffer console, and the new extra program gbemuc, a Gameboy emulator. There is also 2048.gb located in /home/mkilgore that you can run to try out gbemuc. Beyond that, a brief list of notable changes are below:

  1. /dev/fb0 - Has ioctl() calls to turn the console display on and off, along with gain access to the framebuffer's memory
  2. The event API and /dev/keyboard which uses it - userspace can use it to get (mostly) direct keyboard events.
  3. The ktest infrastructure was added, which introduces a bunch of new automated testing to the kernel.
  4. The new user_check API, which lets the kernel correctly check that a provided userspace pointer is valid when reading from or writing to it (We previously did this, but it was broken with the addition of demand paging).
  5. The ATA driver was rewritten, and now works on real hardware.
  6. There is now a new uapi set of headers - only headers in the uapi directory are exported to userspace, the rest are kernel only.
  7. Most of the block-cache, inode-cache, mount, and sync logic were rewritten and should work well now without any deadlocks or other issues.
  8. Fixes some issues with the ext2 driver in relation to different disk settings.
  9. Added proper user permissions checks for the filesystem. This also includes the addition of chmod, chown, and su to our coreutils.
  10. Added support for multiboot2 in addition to multiboot (With this change, GRUB can now provide us with a framebuffer).
  11. Added support for the "Bochs Graphics Adapter", which lets us get graphics in most VM settings (Though if GRUB provides it to it, it doesn't matter as much).

And also a variety of small bug fixes that can be found in the commit history.

To run, download the disk image corresponding to your VM software: disk.img for QEMU (raw disk image), disk.vdi for VirtualBox, and disk.vhd for Hyper-V. Attach it as an IDE/ATA drive, and the rest of the settings should be more or less fine. For real hardware you'll want to copy the contents of disk.img to an ext2 partition and then boot with multiboot2 using GRUB.

Version 0.7.1

29 Nov 23:00
Compare
Choose a tag to compare
Version 0.7.1 Pre-release
Pre-release

This fixes writing to the IDE drive on Hyper-V, the IDE driver was checking for the wrong status flag when writing sectors, resulting in a infinite loop. To remedy this we're now both checking the correct status flag, and also have a 50ms timeout on status checks to ensure we don't get stuck indefinitely.

Version 0.7.0

29 Nov 20:18
Compare
Choose a tag to compare
Version 0.7.0 Pre-release
Pre-release

Relevant changes in this release:

1.Basic TCP support has been added. Retransmission and closing a TCP socket is not yet implemented.
2. A fair amount more testing and stability fixes.
3. EXT2 support has had some major fixes, and lots of tests have been added.
4. IDE DMA now works on VirtualBox
5. E1000 support added, and RTL8139 adjusted
6. Console now supports almost all VT102 escape codes, and includes a fair amount of tests.
7. Console support switching to multiple vt's via alt+n
8. Keyboard support rewritten. keymap.c describes what each key does when various modifiers are in place, and makes various keys like arrow keys work in the console.
9. A VHD image was added, which can be used in Hyper-V.

Version 0.6.0

06 Oct 02:41
Compare
Choose a tag to compare
Version 0.6.0 Pre-release
Pre-release

The biggest visible addition here is that the console now understands a decent amount of the VT100 escape codes, along with terminfo support for Protura. The result is that vim can now be run from the console.

Getty was also updated to have /etc/issue support - the default /etc/issue now lists the usernames and passwords for the default users.

Version 0.5.0

28 Sep 03:50
Compare
Choose a tag to compare
Version 0.5.0 Pre-release
Pre-release

Relevant changes in this release:

ps: Only show kernel tasks with -k
tty: release controlling tty when season leader dies
keyboard: swap scancode from \b to 0x7F
palloc: Correctly ignore the high pages we don't support
Make trace the default log level

Version 0.4.0

26 Sep 01:41
Compare
Choose a tag to compare
Version 0.4.0 Pre-release
Pre-release
  • Add uname() support
  • Add gcc to images
  • General improvements to network stack, UDP, IP, ARP are fairly solid, but some more architectural changes are necessary before TCP is possible.
  • Add ktest - kernel testing framework
  • Various small fixes (see git log)

Note: Images have logins for root/rootroot and mkilgore/password.

Version 0.3.0

31 Aug 00:17
Compare
Choose a tag to compare
Version 0.3.0 Pre-release
Pre-release

The biggest change is the addition of MBR partition table support. That has allowed the creation of partitioned images with GRUB already installed, so with that the disk.img and new disk.vdi (For VirtualBox) are bootable on their own.

This change also includes some basic EXT2 fixes, along with some small networking fixes that allow ping to work again.

Version 0.2.1

25 Aug 04:26
Compare
Choose a tag to compare
Version 0.2.1 Pre-release
Pre-release

Fix: Instead of using the internal DB for ncurses (Which doesn't seem to work very well), we now compile tic for the host via our ncurses sources before cross-compiling, which allows us to use the external database.

Version 0.2.0

25 Aug 00:23
Compare
Choose a tag to compare
Version 0.2.0 Pre-release
Pre-release

Precompiled binaries of Protura (kernel and basic OS filesystem). The disk image includes all of the coreutils, along with ed and vim (gcc and the binutils are not currently included as they take too long to compile on Travis CI).

The easiest way to run it is via qemu. And example (somewhat complicated) setup can be seen in the ./scripts/tmux_debug.sh script, but the basics is to pass the kernel via the -kernel flag, and then mount ./disk.img as the first IDE drive. Currently, the in-kernel VT controlling the screen doesn't understand VT100 escape sequences, so to run vim you will need to connect via a serial connection on COM2 so that your terminal displaying the serial connection can render vim for you. How to do this is also in the ./scripts/tmux_debug.sh script.

It is possible to run via VirtualBox, getting it set-up is a little convoluted due to the OS not yet supporting a partitioned disk, meaning GRUB cannot be directly installed on the disk. You can, however, put the kernel the GRUB on a separate ISO, use that to boot the kernel, and then convert the disk.img into a VDI image via VBoxManage convertfromraw, and mount it as the first IDE drive. Eventually we will generate/release a full VDI image for VirtualBox.