Does a LibC os exist?

I think there is a problem with some of your assumptions. You are correct in saying that you don't need a kernel for an OS, but anything that can run applications can statically compile in libc.

See : http://www.superfrink.net/athenaeum/OS-FAQ/os-faq-libc.html

For example, it is possible to use printf as long as you compile that function for your os. So, you can use MenuetOS as long as you build libc for it.

Now there exists a small version of libc at http://pdclib.rootdirectory.de/ which some embedded system can use.

In this way any small OS can be considered an OS for running libc.


The reason that you're not finding a name for this is that it's not an operating system -- it's the absence of an operating system. Often this is called something like "bare-metal" programming.

The general idea of bare-metal programming is that there is a small bit of general-purpose code -- a "bootloader" -- that sets up the memory controller and other hardware things on the board, and then that transfers control to your program. (Operating systems also have bootloaders, so in that sense your program is replacing the operating system.) Uboot is a fairly common open-source bootloader, so that might be a good place to start looking for information.

One of the tricky bits about bare-metal programming is that, since there isn't an operating system in place to handle any of the hardware communication, you have to think about "what does a printf actually mean as far as what data goes to what peripheral?" and "how do I make it go there?" Again, some bootloaders provide support for this sort of thing, though it's not always trivial to connect it all up. Again, Uboot is a good example.

Meanwhile, the C library itself is actually going to be provided by your compiler, rather than the bootloader.

(I should also add, as a name note: The company I work for makes a series of bare-metal and Linux compilers, known as Sourcery CodeBench. For CodeBench, the bare-metal versions are generally named after the ABI specification they use for linking programs, so the "ELF" or "EABI" versions are all bare-metal compilers, and I think that's a pretty common way of referring to this sort of thing, so you'll see that sort of name around as well.)


Basically a kernel is not needed, but if you are searching for an minimal os http://wiki.osdev.org/Projects could be a point to start. there are a lot of hobby and semi professional projects out their that support basic things and have a small footprint. Also there are some good tutorials to write it yourself. You also need to consider that drivers etc are need for simple things like network or serial I/O .

Also The linux kernel is always a good start( some time ago there was a linux distro that was just about 20MB)