Toro kernel

A dedicated kernel for multi-threading applications.

Sunday, June 18, 2017

Deploying a TORO guest in the Cloud

Hi folks! this weekend I deployed a TORO guest in the Scaleway's Cloud. This can be checked by connecting a VNC client to

Figure1. VNC Viewer on Windows connected to the Toro guest.

What you see is a TORO guest running on top of KVM. This example runs the ToroHello.pas which just prints a message to the screen. I am working to add more examples that use the filesystem and the network stack. Here I am writing down all the procedure to compile Toro in Ubuntu and run the example on KVM. This example, yet very simple, shows how easy is to deploy an application which is compiled within Toro kernel and run it in a VM without interference of an OS.

Friday, June 09, 2017

Testing Toro on KVM and Xen

Hi folks! These days I have been experimenting with Toro on KVM and Xen. This is still experimental work but it demonstrates how flexible Toro is. In KVM, I had very good results and ,with minor changes, Toro was running without any problem.

In Xen, I tried with an HVM guest. However, I can't go further than booting the kernel. It seems that I am getting a lot of exceptions when Toro tries to wake up the cores in the system.

I will focus on Xen in the next days. In addition, I am very interested in test Toro in Hyper-V so stay tuned!


Monday, June 05, 2017

E1000 driver is alive!

Hi folks! I spent this weekend trying to make the driver e1000 works. I started with this piece of code in 2011. I based on the code of Minix3. However, I could not go further than getting the MAC address, and then, I just gave up. I restarted last weekend and I did a great progress. I have almost the ToroPing.pas example working (see Figure 1). The key was to enable E1000_DEBUG in QEMU and put the hands in the code to understand as much as possible what the network card was doing. I will give more details about how enable debugging in QEMU in future posts.

Figure 1. ToroPing.pas running with E1000 driver.
 I will continue progressing on E1000 in the following weeks so stay tuned!


Monday, May 29, 2017

Progress on Toro Virtual Filesystem and tooling

Hi folks! the purpose of this post is to highlight the work done on Torokernel Virtual Filesystem.

Writing Operation support in VFS:
I implemented three new VFS functions: SysWriteFile(), SysCreateFile(), SysCreateDir(). I will not detail the aim of these functions which I think is obvious. However, their semantics could vary from other kernels. For example, SysCreateFile() first tries to create  a new file, if the file already exists it fails. In the case of SysCreateDir(), if the directory exists, it also returns with error.

Writing Operation support in Ext2 driver:
I added three new functions to give support to the new vfs features. These are Ext2WriteFile(), Ext2CreateFile() and Ext2CreateDirectory().

Pci unit:
I moved all the pci device detection to a new unit named Pci.pas. This makes the code in FileSystem.pas much more clear.

Tool to create an populate ext2 images in Windows 10:
To ease the filesystem manipulation, I compiled a simple version of genext2fs for Windows 10. This is a common tool in Linux system which allows to create and populate an ext2 image. In Windows 10, I could not find such a tool so I decided to port it by myself. Again, this is a simple port which may not work in all cases. However, it is working fine in my tests. You can find an user guide here.

TorowithFileSystem.pas project:
I updated this example to show the use of new vfs features. The example still relies on ToroFiles.img which is mounted and used to get /web/index.html. I updated the application to log in the directory /web/logs each time that client requests a page.  

This is more or less all the progress done in the last three months. Future work is the implementation of Continuous Integration to compile the tests examples so stay tuned!