My name is Fabien Siron. I am a student in last year of software engineering at EPITA. I live in Paris, France and I am open to new opportunity in my speciality.

My last year speciality at EPITA is Génie Informatique des Systèmes Temps Réel et Embarqués (GISTRE), in english Embedded and Real time computing. I am also root and manager of the GISTRE laboratory.

Please, take a look at aboutme and portfolio.

Bios, be modern, interract with a 1975 firmware !

Let's try to get a simple bios working in qemu

Some history The BIOS is the famous non-volatile firmware of an IBM compatible PC. The name comes from a part of the CP/M operating system of IBM (1975). But actual bios look more like the IBM PC XT one (1983). Project background In a school project, the goal was to do a full 64-bit x86 bootloader. As a bonus, a student could implement a tiny bios which is both a simple and interesting task as it’s virtualized under Qemu/KVM. [Read More]

Netlink overview and its strace parsers

What is netlink, how an strace parser is written

This project is part of the Google Summer of Code 2016. I strongly advise you to take a look at this program. Background This API appared in Linux 2.0 (1996) as an IOCTL but was rewritten for Linux 2.2 (1998) as a socket address family. So, Netlink is almost 20 years old. The original API was made by Alexey Kuznetsov. But what is Netlink? Netlink socket family is a Linux kernel interface used for inter-process communication (IPC) between both the kernel and userspace processes, and between different userspace processes, in a way similar to the Unix domain sockets. [Read More]

x86 interrupts

How intel architecture handles interrupts.

Let’s see how x86 interrupts work. Interrupts There are three types of interrupts: Exceptions: synchronous with program execution. Exemple: division by zero or invalid address access. hardware interrupts: asynchronous with program execution. They are generated by devices external to the CPU. Exemple: key pressed software interrupts: synchronous with program execution. They are generated by x86 instructions such as int or syscall. Exemple: int 0x80 - syscall [Read More]
kernel  x86 

How does a debugger work?

Let's show the internals of a debugger...

In this post, the main goal is to understand how a debugger (like gdb) works. In that purpose, the exemples will be based on my personnal toy debugger Edb (Easy DeBugger). Because of few bugs in the x86_64 version, the article is based on the i386 (32 bits) version. How to handle i386 and x86_64 I wanted my debugger to be able to debug 32 and 64 bits x86 programs. [Read More]

Be protected !

A quick tour of multiboot, segmentation and intel protected mode.

Grub/Multiboot Grub is compatible with multiboot which is a boot standard for 32-bits OS. This standard needs two things: A 32-bits executable OS A multiboot header in the 8192 first bytes of the OS. There are actually two versions of multiboot, the first one was made in 1995 by Bryan Ford ad Erich Stefan Boleyn. The second one corrected some issue of the first one. I choose the first multiboot version just because it’s the one that is the most commonly used. [Read More]
kernel  memory  x86