-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Questions about Fiwix #78
Comments
Thank you very much!, I really appreciate your words.
Yes, I know the ELKS project. It helped me a lot when I implemented the UNIX socket interface in Fiwix. As you can see, the code is heavily influenced by ELKS and by very early Linux kernel versions as well.
You are very welcome.
First of all, and as stated here, it's not expected that you use the compiler of your system to compile a totally different kernel. I recommend you to build a generic cross-compiler (I use GCC 4.7.4) and use that compiler to build the Fiwix kernel. That said, the Fiwix code is pretty strict to ANSI C89, so as long as the macOS C compiler complies with ANSI C89, it shouldn't have much problems. Perhaps the inline assembly parts are not supported in the macOS CC?. In these cases we can include In fact, we already have included some
I'm really interested. One of my goals is to have X11 running on FiwixOS. As you might know, I'm targeting to run FiwixOS on old PCs (386, 486 and Pentium) with networking capabilities. After completing the UNIX socket implementation, I wanted to start including a simple NIC driver (RTL8139?), and a simple TCP/IP stack. Unfortunately, I have to be sincere here, despite I'm an syadmin, I'm not an expert in low level networking at kernel level. That's why I thought this would be a good exercise to increase my knowledge on TCP, IP, ARP, ICMP, etc.
I think Fiwix could benefit from your current TCP/IP stack implementation on ELKS. We'll have to include a list of
I'm not an expert in licensing. I'm open to change the Fiwix kernel license if this can attract people to this project, as long as this doesn't affect other projects like Boostrappable that depends of Fiwix. I believe @rick-masters might bring more information on this.
You mean the FiwixOS user land packages?. If so, it's all in the Installation CDROM. Mount that CDROM and you will find a script called
Is a pleasure for me to see people enjoying Fiwix as much as I do. |
Sorry -
All the inline ASM should compile fine. I was more worried about the other aspects of the build mechanism, including other non-gcc/binutil tools, of which I haven't looked at closely yet.
I completely agree! It is quite refreshing reading Fiwix sources with very few With regards to Fiwix Instead of:
use
Then modify |
This is a great idea, I've never had satisfied with the excessive amount of The only thing that worries me with this new implementation, is if I'll be able to continue activating debug for a particular code. I mean, now I just add the line Also, I don't understand the syntax of the line |
Yes. According to the rules of variadic macros, this particular method effectively replaces the entire line of code with nothing, resulting in no code produced when debug is off.
I see. I had thought, seeing the master Makefile that
Then, instead of using All-in-all, I like your idea of keeping the kernel sources easy to read, with very few explicit I'm going to continue to play with Fiwix and will look further into cross-compiling on macOS, thank you! |
Yes, that could be done without the more complex debug.h described above by just passing |
This is interesting, I've never heard of it before. The problem is that the page says "Variadic macros became a standard part of the C language with C99.", which presumably GCC will compile regardless of |
If you are using variadic macros, does that mean that GCC and macOS CC are the only compilers you use on ELKS and your code is not C89 strict? |
Good point, I had forgotten Fiwix can be compiled with a compiler other than Speaking of which, I just added |
You don't need to touch the Makefile to use your cross compiler. I use the following command:
|
ELKS can't use macOS That said, its nice to not have a project depend on a specific compiler. Given that Fiwix doesn't use GCC extensions and keeps x86 ASM in (very few) .S files, it seems that all that is needed is a compiler that produces ELF .o output, along with a few (incompatible) linker options. For ELKS, we have to build the GCC |
It does look like TCC supports variadic macros as a C99 extension. I'm not sure whether using variadic macros breaks the |
If you are having problems linking the kernel with You'll not have 64bit offsets (EXT2 filesystems bigger than 4GB) but you'll be able to play with Fiwix quickly. |
Very cool - that worked! (Using I'm also downloading |
I'm assuming the ATA raw disk image is EXT2 format, right? We can't write/mount EXT2 on macOS. We got around this problem on ELKS by writing the mfs (Minix Filesystem) tool that allows creating MINIX filesystems from scratch on any OS. (I didn't say it was easy to build operating systems on macOS, right?! :) |
You don't need to update the flat ATA disk raw image every time you changed the Fiwix kernel. Just use something like this:
|
Yes, it's EXT2, but beware because it uses revision level 0. That is the original EXT2 without any kind of features.
Heh 😃 |
Fiwix is booting, built on macOS! Very nice. How does the QEMU Using the I understand the Fiwix applications are all being built on Fiwix itself? And then is the output EXT2 image created through QEMU running I suppose in order to give the Microwindows port a test run I'll still need to figure a way to get its source files (or cross-compiled binaries) onto a compatible Fiwix filesystem... I suppose I could try using my Thanks for your help. Getting Fiwix running using macOS is proving lots easier than I had thought. |
I think I get it now, since Fiwix doesn't depend on any non-standard boot mechanism (and doesn't include its own boot code), the QEMU I haven't found the script that adds a boot loader to the ATA raw disk image, I'll look at that stuff in a bit. |
Fiwix is a Multiboot Specification v1 compliant (GRUB loader v1 also called GRUB legacy). When you use the
Yes, FiwixOS is what it's called a self-hosted operating system. All the packages has been built under FiwixOS (including the kernel, of course).
The ATA raw disk image is created on my Host OS (Fedora Linux) using the simple command |
First, I don't think porting your Microwindows will be trivial. I'd be really surprised if it is. Also, Fiwix supports Minix v1 and v2 filesystems. Just need to activate the option |
The ATA raw disk image was created using the Installation CDROM and installing FiwixOS there. |
That's pretty amazing. Especially building
I see. So that command actually only creates a 1GB hole (read as effectively zeros) and then the Installation CDROM actually writes the filesystem onto it in one of Fiwix's kernel-supported formats.
I see, truly self-hosted, including building the images themselves. Wow.
Ok, I'll try that.
Microwindows can run without a keyboard or mouse by configuring it run by only requiring /dev/fb0 in 32/24/16 bpp, with almost no dependencies. I definitely want to try that. Do you support the Linux framebuffer Microwindows has a couple of drivers for the keyboard (scancode mode for full keyboard control w/shift keys etc) and a basic ASCII mode for systems without scan code keyboards. It's got its own self-contained MS or Logitech mouse driver that can run on the serial port, which I think QEMU can possibly redirect into from the host mouse. So I think we can get it running quickly.
ELKS only supports Minix v1. The only real benefit here would be to allow creating Fiwix images directly from macOS without running Fiwix itself on QEMU to create the images. I'll look at your suggested approach and learn how you've done it. The other problem with Minix v1 could be the 14-character max filename, which sometimes causes problems these days. |
Not yet, basically because I've not found a software that can use the framebuffer and do not requires a basic TCP/IP stack. |
How can an application get the size (width, height, stride) and address of the VESAFB framebuffer? The Microwindows driver then just All we really need is the hardware address of the framebuffer, the rest could be provided manually. |
No application is using the framebuffer. I only use it to have a better console experience. The only graphic applications that run on FiwixOS (like DOOM) are using the SVGAlib. |
You can use |
Microwindows implements two APIs, a Win32-compatible and an X11-like (Nano-X). The former doesn't require any sockets as the application main loop is compiled into the "win32" app. Nano-X is normally compiled separately using a named FIFO to communicate between multiple applications and Nano-X but we also support linking the application into the server. Thus, both APIs can work by drawing directly into a mmap-ed framebuffer.
I see. I'll just have to dig up how SVGAlib gets the framebuffer address, unless it's not using the framebuffer.
Yes - but the application normally opens /dev/fb0, then does a single |
Minix v2 supports up to 30-character filenames, but that's not much either. |
Here's a sample of how Microwindows uses /dev/fb0 to gain access:
After this, [EDIT: Oops! I was incorrect: an |
SVGAlib doesn't use the framebuffer, and if you want to try the software using this library, you cannot boot the kernel using the framebuffer console, but the VGA text console. That is, without the parameter
I'm sorry, there are no ioctls implemented for the framebuffer. |
This is exactly what I was trying to say, but my English is not as good as I wanted.
I completely agree.
That would save a lot of time of implementation.
Looks like a good plan. |
I'll play around with getting the framebuffer mapped in the fb driver. Given that macOS doesn't have the ability to read or write EXT2 virtual filesystems at all, how do you recommend getting source (or binary) files onto and off the root or other mounted Fiwix filesystem easily? Also, is there a sample Makefile that might be used for cross-compiling user mode executables outside of a running Fiwix? Or is the idea to always use Fiwix for compiling all applications? |
Since Fiwix also supports the ISO9660 filesystem, you might want to consider using that media to import software to your FiwixOS system, by using macOS tools to create CDROM images. And then you might use the Minix filesystem to export them out. Minix v2 would be specially useful as it supports 30-character filenames and up to 1GB of filesystem size. Another alternative is to use the Paragon Software driver.
I used cross-compiling long time ago, in the very early stages of the FiwixOS, when I was creating a self-hosting operating system. Once the system was self-hosting capable, I no longer used that path. For best results build your software under FiwixOS 3.3, or under an old Linux distro with kernels 2.0 or 2.2 since Fiwix is system call mostly compatible with those kernels. I regularly test the compatibility using the old RedHat Linux 4.2 and 5.2 distributions (both with Linux 2.0.x kernels), and also RedHat Linux 6.2 with kernel 2.2.x. I recommend you to statically link your binaries, to avoid dragging a lot of Linux libraries to FiwixOS. |
@ghaerr You'll want to use my fork which supports ext2 rev 0 and a couple other fixes/features: Downloadable here: We use this in live-bootstrap to build an ext2 for booting Fiwix: This is the program that creates the file system: |
Thanks @rick-masters, with a little hack to the CMakeLists.txt file, I was able to get your version of lwext4 compiled on macOS! Also got I'd like to use the Is |
This could potentially be very easy to use, but its a paid program; it says to support EXT2 but I am bit worried about exactly the difference(s) between the V0 and later version of EXT2 filesystem. Is the Fiwix EXT2 V0 incompatible with later versions of EXT2? Unfortunately, I am not much familiar with EXT2, although I am very familiar with MINIX v1. The idea of doing development on a Fiwix MINIX v1 filesystem is quite possible, except I am not sure how to convert or create the Fiwix 3.3 ATA Raw disk image into a MINIX filesystem, from which I could use my ELKS In some sense it might be good to figure a way to create a full image of Fiwix 3.3 binaries from a template of such on a host operating system, as then it would be possible to generate a specific distribution based on the users needs or set of source code being worked on. On the other hand, this may not be in the goals of Fiwix. Sorry for all the trouble; it seems that tools supporting filesystem formats of self-hosted systems are in fact another subtle dependency not always realized when not running Linux. |
Good news! After fooling around a bit with ELKS
This should allow for quick creation of arbitrary source trees to be mounted and compiled within Fiwix. The kernel can be compiled outside and use the QEMU |
Also got all Microwindows Win32 API libraries and most applications compiled and linked, without too many issues. Will report small list of unimplemented Fiwix kernel features later. Rewriting screen driver now for Fiwix, and will attempt mapping framebuffer address into process space hopefully tomorrow. I'm impressed with the very full development environment all ported and running on Fiwix. Things are a bit slow compiling on QEMU though, but no strange errors at all. Turns out it is quicker to just mount an MINIX v2 filesystem and compile there than to copy source to Fiwix root EXT2 filesystem. |
The revision level 0 of the EXT2 filesystem is the original EXT2, it don't has any extra feature. For instance, the very next version of EXT2 introduced the sparse superblock after seeing that so many copies of it resulted on a lot of disk space lost on big filesystems. Over time, they have included more and more new features, but Fiwix only supports V0. I can interact easily with the Fiwix filesystem from my Fedora because any Linux system supports all EXT2 versions. The problem here is that you are using a macOS. But Minix v2 can be of help for you since you made your own driver.
Yes, with only 64MB of size in the root filesystem you won't be able to do any type of development. GNU Toolchain, Bash, system tools, etc. all them weight 500MB at least. You'll need 1GB which means, you need Minix v2. |
Sounds like you may have found another method, but here are my answers: Sorry, I don't know about the tools you mentioned. I think they may be test tools. If I remember correctly, I couldn't find any simple command line tools in the project that could be used out-of-the-box. I found that surprising since it seemed like it wouldn't have been too hard for the project to include those. I just ended up writing my own program. The make_fiwix_initrd.c program is probably your best bet as an example for how to use the library. Unfortunately, the author of lwext4 does not appear to be maintaining the project. My Issues and PRs haven't received any attention. |
Thanks @mikaku and @rick-masters for all your help. I'm trying to call
It seems that the physical (or perhaps already mapped kernel virtual address?) for the framebuffer is 0xfd00000. I'm looking to map that address (or its predecessor with the real VESA hardware address?) into the process address space, at any available address. The
Any thoughts on how to proceed? Thank you! |
I also don't yet understand this code in
Are the kernel virtual addresses already mapped into the user process space, and/or does Fiwix keep seperate page tables for kernel and user mode? I suppose if 0xFD000000 is already mapped into the process space, perhaps it only needs to be given read/write permission for the user page table entry for the same address. I must admit I don't yet understand Fiwix enough to know how the system actually runs regarding virtual/physical address mappings etc. |
I am guessing here that Instead, something like It seems strange that 0xFD000000 would always be the VESA FB address; does multiboot setup protected mode page table entries for a kernel mode framebuffer address before passing control to Fiwix? Because the kernel/multiboot.c code just copies the address, which always seems to be 0xFD000000 to video.address, and doesn't create a Fiwix page table entry for it that I can see. Sorry for all the questions! I hope to learn a bit more and will then get a graphical windowing environment running on Fiwix. |
Yes, Fiwix memory subsystem is not as good as we all would want, and there is no documentation either. Please, keep in mind that this is a kernel made by only one person (mostly). I 'd like to rewrite the memory subsystem and fix some pending problems with RAMdisk drives and other aspects, but sometimes it's difficult to have a good window of spare time to do it with calm. The framebuffer is mapped in a way that is not expected to be in the user address space. As I stated above, the only way for a user program to write to the I think the function I cannot answer all your questions quickly because there are some parts of the kernel that I forgot how I implemented them and it forces me to re-read and test de code to refresh my memory, which wants time. |
Don't worry about that, I am already very impressed with what you have produced. Excellent job!!! I am really enjoying Fiwix, and find the coding very straightforward and well written.
I have spent a couple more hours looking at code, and actually the memory and paging subsystem seems quite understandable, although of course complex. It is just taking me a bit of time myself to come to speed with 32-bit protected mode paging and memory management.
Yes, it seems so, but I have a couple ideas below on how this might get done.
I am thinking of the following: it seems that normally, the kernel virtual addresses (KVA) start at 0xC0000000 (PAGE_OFFSET), and user addresses at 0x10000 up to 0x4000000 (MMAP_START) which includes the heap, and Thus, yes it does seem there is not a good space to map the framebuffer address, but I am thinking it could be placed as a normal In this way, a vma region would get allocated for the 16MB framebuffer in the normal mmap user address space, but get immediately marked present using the values from the existing kernel framebuffer page table entries. Thus, something like this:
The new function
That's ok, thank you very much for your help! I am enjoying learning by using your project :) |
Great news! Microwindows running on Fiwix!! Microwindows.on.Fiwix.movI got the framebuffer mapping working using the idea above. At the moment no mouse and no keyboard, but hey, kind of neat :) The VMA region mapped for the framebuffer needs unmapping before the process exits, and it seems that the kernel fb_close routine is not automatically called on the open framebuffer file descriptor. I've worked around that problem but will report back more issues. One can also see the fbcon cursor on the left side of things. This can all be worked around with some more ioctls. Continuing to port Microwindows drivers over to Fiwix. |
Status Update I finished with a full port of Microwindows to Fiwix, and now both Win32 and Nano-X APIs are working, along with the mouse and keyboard. It's only tested on QEMU, and with a few exceptions, most demo programs are working well. I must say, it's been a pleasant experience working with both the Fiwix kernel and very complete development environment! Things Added
Things not finished
Potential Kernel Issues Found
Wishlist
For testing, QEMU was setup to pass through the host mouse as a MS mouse, which is then decoded again by the Microwindows mouse driver on /dev/ttyS0. This was done using the following QEMU invocation:
With a bit more work, the X11->Nano-X libraries could be built, which would allow for some X11 programs to run. But this isn't very feasible until we get Nano-X client/server running and X11 headers and other X11 client GUI source on Fiwix. All-in-all, pretty cool! More screenshots and/or screencasts available if wanted. |
This is ... well, I don't have words to express how I feel right now. Amazing!, really amazing!. Good Job Gregory! Fiwix is pronounced as 'few weeks' because that should be the average time you need to learn how it works (and start tinkering). Definitely, you and @rick-masters made this name a good choice! :-)
Are those ioctls fully compatible with Linux?
Yes it does: Lines 73 to 77 in 5bb7de7
Hmm, you're right. I think this ioctl only works in the VGA console (vgacon) but in fbcon, it doesn't takes the cursor into account.
Yes, I know this issue. There are still some VT100 ANSI sequences not supported.
FIFOs (named pipes) are fully supported.
The header
I don't know. Where is the screen shot?
Sure, as long as we can have a graphic environment, the number of packages will increase a lot. It will be just a matter to start porting packages.
Just add a new entry in the script
Perhaps your cross compiler was built without libgcc. I recommend you to go to https://wiki.osdev.org/GCC_Cross-Compiler and rebuild a new one.
QEMU under Linux includes the option
I'ld love to see
I guess that the lack of pty makes impossible to have a terminal under Microwindows/Nano-X. That's another pending feature for the near future. In all, you did an incredible progress in just a few days. Congratulations!!! |
I was going to ask what Fiwix stood for! :)
No. For the first round, I punted as it was enough work figuring out how to map an existing KA into a user VA. Yes, the ioctls should be made compatible. That's a bit more of a problem for me as, while adding (header) files to the kernel would be easy since they're in the Fiwix repo, I haven't yet figured out how to add files to the C library and/or non-repo /usr/include distribution, and don't want to go through a full distribution "make" to create a runtime image during a fast development cycle. This will be more of a problem given my preferred non-Linux (macOS) development environment. IMO, what is needed to solve this problem would be the ability to (somehow) add (header?) files to a host-based repo, from which there could be a way to very quickly generate an entire FiwixOS disk image. This is exacerbated by the need to compile everything on a running Fiwix QEMU installation. I have some ideas on this regarding a dual-mechanism to create Fiwix images (both self-hosted and host-hosted) but I'm not sure that's within the goals of Fiwix. More on this later if your are interested.
Hmm, that does seem to. There's still a problem, when SIGINT is generated from ^C to exit Microwindows, it seems
If you know which ones are required, I can implement them. It would be nice to have
Great! I'll change the compilation for Nano-X to client/server and see what happens :) That will be a big improvement.
You're saying both methods of reading directories should be supported... I'll check into that.
I further debugged this, and its failing in the PCF font decoder... not sure exactly why yet, will report more soon. I suspect something to do with
I'm looking for that, where is it? I found make_media.sh and install.sh in FiwixOS repo? I haven't yet tried building a system using FiwixOS scripts, not sure that'll work on macOS anyways.
Nano-X has xeyes running under X11 compatibility layer... I will compile this up after reviewing X11 issues later.
Yes - the terminal demos had to be temporarily removed from the Microwindows build. Not a big deal at the moment, as Nano-X doesn't have a good terminal emulator anyways.
Thanks. In years past, I had worked hard on Microwindows such that it could be ported with very few dependencies. After getting a live usermode framebuffer, things progressed quickly. Microwindows isn't really a desktop GUI environment. It's place in the universe is a full windowing system on small devices or bare hardware. At this point, it is very useful to get Fiwix up to speed with some basics for graphics. I have been thinking of rewriting Microwindows to produce a compositor-based solution. But even then, the problem of what API to bring over is a topic for long discussion, as there are so many, they're all large and very complicated, and mostly incompatible! That might be one of the reasons I like small systems. |
Chased this down: yes,
After more reading of Fiwix's memory management, page handling and mmap implementation, I now realize a far better solution will be to use I'm in the process of rewriting the Fiwix framebuffer and Microwindows drivers for this now.
I think I can "punt" on this and include the linux-compatible frameuffer header files in the Fiwix source along with the rewritten framebuffer map/unmap handling, and use a MIcrowindows driver that for the time being assumes 1024x768. That will allow a Fiwix distribution to automatically place the updated kernel header files in the proper locations in the FiwixOS distribution. After that, I can update the Microwindows and Fiwix drivers to become fully Linux-compatible so that other framebuffer-based graphics applications or libraries should be portable to Fiwix. |
Yes, Fiwix memory management is not very well designed. Moreover, people from the #boostrappable project have problems because the RAMdisk drives are taking memory from the user space, instead of using memory above PAGE_OFFSET. I mean, Fiwix can have two virtual memory splits 3/1 and 2/2 (user/kernel). All the memory above is not used. If you need a big RAMdisk (e.g. 1500MB), your best path is go to 2/2 and you'll have around 400MB for user space regardless if your system has 4GB of physical memory. I plan to rewrite how RAMdisk drives memory are used and take advantage of the unused memory. I hope our code will not collide. :-)
That would be fantastic because X11 porting could take advantage of this. Regarding to add the header files in the C library, this is something I do very often. As you might know FiwixOS uses the Newlib C v4.3 with my changes in After the inclusion the UNIX domain socket and other new system calls, I have added new headers and functions in the C library, so the sources in the current Installation CDROM are already outdated. Let me know if you want to be able to push PRs into the C library, and I'll create the repository. |
Yes, that would be useful for creating the Linux
It seems pretty straight-forwardly designed to me, but I'm still only a week into it :) Can you explain in a bit more detail what the problem is here? It seems to me that MultiBoot first loads the optional initrd into physical RAM just after the kernel text/data (just before kpage_dir). Then So how is initrd taking up user space virtual addresses? Aren't all the initrd addresses in KVA? |
Initially the Fiwix kernel only had the virtual memory split 3/1 (3GB user / 1GB kernel) and so the maximum available physical memory was 1GB, regardless if your PC had more memory. In this case the RAMdisk drives or the initrd were limited to a maximum of around 950MB, but if you tried to use all the memory, you cannot even login to the system because there would not be enough memory for the user applications. In #34, @rick-masters suggested a patch to increase the limit of the size in the initrd images to be more than 1GB, which is a requirement for their Bootstrappable project. But somehow we agreed that the patch was a bit tricky. So, in my to attempt to fix this, I presented a new path, the support to have the virtual memory split 2/2 (2GB user / 2GB kernel) with the new kernel option Recently though, people in the Bootstrappable project complained that with very large initrd files (let's say 1.5GB) they only have around 450MB for user, even when the system has 4GB of physical memory. They ask if there would be a change to use the unused 2GB of physical memory for the initrd files and the rest for the user space. I've been testing several (old) Linux kernel versions 2.0, 2.2 and 2.4 and none of these versions is capable to have a RAMdisk drive bigger than 950MB, even when the system has 2GB of physical memory. I continue thinking how can I implement this in a decent way (no tricky) but so far I'm failing on this. It's interesting to see that modern Linux kernels have other different memory splits like 2.5GB/1.5GB and 1GB/3GB, to solve this kind of problems. |
Yes, I know is very annoying. It forces me to keep refreshing the screen with CTRL+L all the time.
The |
Hi @mikaku,
This isn't an issue, but rather some quick questions about your project. First off, wow, what a nice project!! Very impressive how you've built such a straightforwardly-coded UNIX-like kernel, I find the sources easy to read and understand, which isn't always the case for complex kernels :)
I'm the maintainer over at ELKS, which is a Linux kernel, C library and applications for 8086 and compatible CPUs in real mode, running a segmented architecture. I was thinking it might be fun to jump in and contribute to Fiwix. However, my development environment is macOS. Do you think that might be much of an issue, substituting say
x86_64-linux-musl-gcc
for CC? I thought to ask before diving in to see what you think might be other gotcha's in the kernel build. We had the same issue at ELKS 3 years ago, but now the entire kernel, C lib, applications and images can all be built on macOS.It's pretty cool how you've got a framebuffer console and /dev/fb running. I was thinking it might be fun to port over Microwindows or Nano-X over, which, now that Fiwix has UNIX sockets, should run easily directly on top of 16/24/32bpp framebuffer, and could use serial mouse rather than a dedicated kernel mouse driver. Any interest in that?
At ELKS, we have a nicely-working TCP/IP stack and application set, although in our case it runs in userland due to size constraints, which I wouldn't recommend here. But it has a nice state machine, which could possibly be somewhat easily inserted under the Fiwix socket code. Looking closer, I see it probably has the wrong license though.
Finally, is there a build script for the FiwixOS binaries, or is that all magic for the time being?
Thank you for your Fiwix project, I'm having fun reading the kernel code. Nicely done!
The text was updated successfully, but these errors were encountered: