Releases: mkilgore/protura
Version 0.9.1
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:
/dev/fb0
- Hasioctl()
calls to turn the console display on and off, along with gain access to the framebuffer's memory- The event API and
/dev/keyboard
which uses it - userspace can use it to get (mostly) direct keyboard events. - The
ktest
infrastructure was added, which introduces a bunch of new automated testing to the kernel. - 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).
- The ATA driver was rewritten, and now works on real hardware.
- There is now a new
uapi
set of headers - only headers in theuapi
directory are exported to userspace, the rest are kernel only. - Most of the block-cache, inode-cache, mount, and sync logic were rewritten and should work well now without any deadlocks or other issues.
- Fixes some issues with the
ext2
driver in relation to different disk settings. - Added proper user permissions checks for the filesystem. This also includes the addition of
chmod
,chown
, andsu
to our coreutils. - Added support for multiboot2 in addition to multiboot (With this change, GRUB can now provide us with a framebuffer).
- 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
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
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
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
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
- 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
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
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
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.