Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

Not practical. The Linux driver ABI is unstable. At best, your hypothetical microkernel will work on a subset of obsolete hardware.


sort by: page size:

Err.. loading drivers dynamically according to a stable ABI doesn't make an OS a microkernel. If the drivers all share the same address space that's a pretty conventional OS. For a microkernel you need to have separate processes for each driver. It's more robust but there's more IPC overhead.

Microkernels are more relevant now than ever, I'd love to try it out if they manage to get it to work on modern hardware.

That helps a lot. So would it just require an open standard for microkernel implementations, then, or would hardware need to change?

Monolithic kernels can have a stable ABIs for drivers, and microkernels can have unstable. It's just a development choice.

I think it would be possible to adapt some Linux drivers to run in a sandboxed capacity within a capability/microkernel system.

IIRC there was once an L4 based project that integrated with Linux.

https://en.wikipedia.org/wiki/L4Linux


A microkernel one, potentially at least.

I think it is going to be much easier to produce a formally verified Linux ABI compatible microkernel than to ever fix Linux itself at this point.

I think the infrastructure required for a microkernel would have more features than this OS. It really is incredibly barebones and that's why it is monolithic. That being said, I guess it's maybe possible.

You want a microkernel.

Couldn't this be used together with microkernels, too, since you're taking the networking out of the kernel anyway?

This driver might fit perfectly in a microkernel architecture especially with a virtio front-end

Well, it is a microkernel.

Under no circumstances, it’s a microkernel for embedded systems.

It’s like asking under what scenarios would you want to drive an ATV through New York. Technically possible, but that’s just not what it was made to do.


IMO a microkernel isn't a design worth pursuing as there will always be overhead. Instead an exokernel with a simple monolithic 'multiplexing' kernel or a language that has 100% safety (not really possible).

Since microkernels are not popular (at least not open source ones, and the closed source often don't give enough data to know) that isn't even meaningful. We would need a full-features microkernel based OS that tried to do it correctly. Otherwise it could be easier to do, but nobody tried.

Not only was it perfectly possible, microkernels have been sold commercially for decades and are extremely popular in hard real time environments where you want to be able to pre-empt a driver as though it is just another user process (which they are!).

That might still be an argument in favor of microkernels if the Linux process can't crash the machine or cause it to miss hard-real-time deadlines. Or if you can use it to confine malicious code in the Linux process.

It's not really being used as a microkernel though

Microkernel does seem the only sensible path forward. Even if the kernel is slowly rustified, going to be playing security whack-a-mole for a long time.
next

Legal | privacy