A dedicated unikernel for microservices

Sunday, December 11, 2016

Full Ping Implementation in Toro

Hi folks!,
last weekend I spent some time on Toro. My weekend project was to make Toro sends and receives ICMP packets. I started by coding a new test named ToroPing.pas which first sends an ICMP packet, and then waits for the response. At the beginning, this was not working. But, after fixing several bugs in the Network.pas and ne2000.pas, I have the test working quite well. I already pushed all the code and the test. If you try, you will get something like the next picture:

Basically, ToroPing just sends an ICMP packet to a fixed IP, i.e., When the host responds, ToroPing informs that the ping has been responded and sends a new packet. This is done every 2 second. 
The example is very simple, however, it shows that the network stack is working better.



Thursday, December 08, 2016

Pong from Toro

Hi folks, last days I have been spending some time in the network stack of Toro. It is a piece of code that I am scare to touch because most the time it does not work and I cannot figure out why. So I spent some time getting the good environment for testing and a lot of patient. As a result, I fixed a bug in the ne2000 driver and in the network stack so at least I have toro kernel answering pings. I will continue in this way doing more testing on the network stack. The code is there I just have to get so time to make it work. Enjoy the screenshots! ;)

Figure 1. Toro on QEMU detecting the network stack
Figure 2. I improved the serial console debug. Now it shows more interested info.

Figure 3. TORO VM answering pings

Sunday, October 30, 2016


Hi folks, I committed the new script CloudIt.sh which is meant to unify the way than an application is compile within Toro and then run in a VM. The script accepts one parameter which is the name of a fpc application. For example, the following figure shows the use of the script to compile and run the ToroHello.pas

Figure 1
The script compiles the application within the Toro kernel (see Figure 2), and then, it generates a .img that can be run in a Qemu VM (see Figure 3).

Figure 2

Figure 3
To get the needed parameters to create the Qemu instance, the script looks for a .qemu which is named with the same name than the application, e.g., ToroHello.qemu. Such a file only contains the needed parameters to pass to qemu.  

The idea in ClouidIt.sh is to show Toro as a unikernel, in this case, for the fpc compiler. It enables a fpc programmer to compile an application within the kernel and then run it in a VM instance. To go further with this approach, Toro should be able to run in an hypervirsor like Xen. This remains a very interesting future work! :)  

Monday, April 18, 2016

Compiling and Testing TORO on Windows 10


Hi folks, I just fixed some bugs to compile Toro by using fpc-2.6.4, and to simulate it in Windows 10 by using qemu. I present some tips to do it.


I am currently using MIGW64 to compile TORO from the command line.  It is only necessary to run make in the toro-code/tests, and then, run the corresponding .sh file to compile the example, e.g., ToroHello.sh by invoking ./ToroHello.sh. The last commits fix any problem during the compilation. The outputting screen should look like in the picture. The needed tools for the compilation are MINGW64 for the make, Nasm for the compilation of the bootloader and fpc-2.6.4 for the build.pas. Once all installed, run the procedure presented above.  


The debugging works well by using the last version of qemu. After installed it, it is only necessary to invoke the corresponding .sh by passing the -e argument, e.g., ./ToroHello.sh -e. By doing so, we get a pretty TORO outputing saying that he is alive.