 My name is Andréo Meide, and I'm based in Brazil, and I'm a kernel engineer at Collabra, an open source consultancy. So today, I want to share some tips and tricks from my kernel development workflow that I have in Arch Linux. And this is an overview of the things I'm gonna show here, it's kind of a tutorial. And first of all, I use Arch Linux for both professional and personal use. For professional use, I found very handy to have a lot of very up-to-date packages. And as part of Arch philosophy, they are very close to mainline, so maintainers rarely apply packs to each. And for instance, if I want to boot a custom kernel, I don't need to change anything in the user space, everything will be ready to run my custom kernel from mainline. And also, in this tutorial, I will be showing how to use a virtual machine because booting your own custom kernel requires some time, and it's very painful to reboot your machine just to check if your print is working. And so also, I found very useful to have a different root of us. So I can do some experimental changes on all the stack, and I do not risk breaking my system. But if you want to use the same root of us of your installation on your testing, I recommend you checking the tool called Virtumi that is a wrapper around Kimu. And one more thing that I found very useful for Arch Linux is the Keep It Simple philosophy. And on my workflow, I try to apply this principle as well. So for my workflow, I just need two additional tools that is the Arch install scripts that you provide the same scripts that you use on a installation disk to install a new Arch Linux and Kimu that will provide the virtualization. And first of all, we need somewhere to store our root of us. And for this, I create a file of five gigas. I used to create because in that way, I can have a spare file that will grow as need. It won't be using five gigas from storage. After that, I format this file to have the X24 file system. And then I just mount this file in a directory. After that, we can use the backstrap that is the same script that you use in Arch Linux installation to create the all directories and install some basic old software there. If your system is up to date, you can use the flag dash C. So instead of downloading the package all again, you just use the cache from the whole system. And after that, your root of S is complete in less than two minutes. Also, this useful, you may be useful as well to install an editor like VIN or and the ACP clients as well. And using backstrap and the cache flag, you won't need to download anything from the internet. So it's a very easy and fast setup. And since the root of S is mounted, we can easily copy or SSH key there. And also we can use chruch to change the root password. And if you are always going to log in as root, you can use system, you can change the system, the configuration. So you can always also log in in the root user. Those steps will help us in the future to make the use of the virtual machine easier. And now for using Kimu. These are the flags that I use. The first flag is HDA. That is to sign to tell Kimu where is my disk. And then I use the kernel flag to specify the path of my compiled kernel. In this talk, I am not covering how to compile your own custom kernel. But if you want, you can also use this flag with your current installed kernel of your system that is probably located on somewhere in boot, the boot directory. And also I use the append flag to use some kernel parameters. For instance, the root parameter tells us tell to the kernel where it can find the root in which disk is the root of S. So here is the first disk, the SDA. We use, we send also the parameter ridge write because we want to change the root of S. And with console TTI-SO, you can tell to the kernel on where it should display the output and the shell when it boots. Some useful flags as well is the flag M. So you can specify how much memory do you want to give to your guest. Enable KVM will make a huge difference on your performance. And remember to enable virtualization on your BIOS menu on your motherboard. And also I like to use with a flag no-graph. So Kimo, you just run as a console application like VIN. And also use the SMP. You can specify how many cores do you want to give to your guests. If you want to use networking inside your machine, for instance, if you want to use Git clone or use Pacman to get a new software, you can easily enable it by just starting your DHCP client that you stole here. I'm using DHCP CD for that. So copying and pasting files is another efficient way to share some files with the guest. So what I do is I create a share folder. In order to do that, you need to be sure that your kernel has some models enabled, like mainly in models that are related to the 9P sharing protocol. And after that, in the Kimo flags, I will add two devices, a file system device and then a VTIO 9P device. So you use this flag to choose which director you want to share. In this example, I'm sharing a director name files inside my home director of the user. And the name of the virtual device will be shared folder. And then inside the guest FS tab file, you just need to add this line for the shared folder device and specify where do you want to be, where do you want the multi-point to be inside your guest. During your testing, you may be required to use some graphical applications. And I know two ways of doing that. My favorite one is the first I want to show, that is the SSH Fort, but you can also use the Kimo display. So in order to use the SSH Fort, first you need to install the open SSD server on your guest and initiate the dialogue. You can find it on the open SSH package. And then you change some configuration on the SSH configuration file. Namely, you permit the root loading and also you say yes for X11 forwarding. For the Kimo flags, you need to create a basic network card. And here we forward the port, you need to forward some ports, so you don't mess with the host ports. Here I am forwarding the port one, three, three, seven to the port 22. So basically this is the setup. And then if you run SSH dash X root as local host, and then you specify your port, and just by doing that on your guest machine, you will be able to run graphical applications. Here's an example, on the left side, I have my host, my request machine. And then on the right side, I will use SSH. And then after doing that, I can all the XLock graphical application. And now, if you want a more complete graphical solution, you can run a whole compositor inside your virtual machine. For that, the first thing you do is to remove the no graphic update option on Kimo flags. And then after that, you need to install some kind of compositor. Here I'm using Weston because it's very lightweight. So I install the package of X-Waylon and Weston. And then after that, you need to configure your Weston to run on X-Waylon. And so you need to create this file on your home folder and say XLock X-Waylon equals true. Then you just run Weston on the command line and the Weston environment will appear. You can use your mouse to open the terminal. And inside there, you can call the graphic application that you want. When you are done, you just hold control out and backspace and the Weston will close. And this is a very basic setup using Kimo display. Here you won't have support for clipboard, for sharing the same clipboard or multi-monitor support. If you want to do that, I recommend you to use the FlipManager. That is a front-end for Kimo with Liby Verge. And then you can have a very nice graphical experience. Okay, and that's it. This is how I spawn new virtual machines if I need to do some testing. And also sharing files with my virtual machine running graph complications. And as you can see, it requires almost no new program. Everything is a command line application. So it's very easy to create some batch scripts. Here is the link for a GitHub repository where I store my scripts. And also here's a link of our blog post at the Colabra website where you can find more detailed explanation of my talk. And thanks for watching. And now I would like to hear if you also have some tips of kernel development workflow. Thank you.