Live data from Hacker News

Boot Naked Linux

nick.zoic.org

1–10 of 60 posts

Re: Boot Naked Linux

#2
You may also want to build and run busybox for your tiny userspace.

Other things you may want to experiment with is gen_init_cpio.c from linux kernel tree. It makes creating initramfs file structure easier from scripts.

And finally if sys/isolinux is also fun to use for minimal boot images.

Re: Boot Naked Linux

#3
I... fail to see the point of running just one process.

If it's just a PoC, then:

1) I remember seeing a linux firewall/gateway set up to run with just the kernel, without any userspace at all. Completely unhackable.

2) To print some text or run a simple program, I belive DOS without a memory manager would be even faster.

3) It takes 1s to boot linux, but an ordinary PC takes 10s to get to that linux. Even U-boot on ARM takes some seconds to load a kernel.

BTW, if anyone knows any current platform that can XiP a linux kernel, please share.

Re: Boot Naked Linux

#4
post #3

I... fail to see the point of running just one process. If it's just a PoC, then: 1) I remember seeing a linux firewall/gateway set up to run with just the kernel, without any userspace at all. Completely unhackable. 2) To print some text or run a simple program, I belive DOS without a memory manager would be even faster. 3) It takes 1s to boot linux, but an ordinary PC takes 10s to get to that linux. Even U-boot on…

Wouldn't this be useful for embedded types of applications where you have a very specific task you want to do and you want to do it now.... like that firewall example?

Re: Boot Naked Linux

#7
post #3

I... fail to see the point of running just one process. If it's just a PoC, then: 1) I remember seeing a linux firewall/gateway set up to run with just the kernel, without any userspace at all. Completely unhackable. 2) To print some text or run a simple program, I belive DOS without a memory manager would be even faster. 3) It takes 1s to boot linux, but an ordinary PC takes 10s to get to that linux. Even U-boot on…

Embedded devices or other SoC situations, certain limited scope situations where docker is undesirable/unnecessary, etc.

Re: Boot Naked Linux

#8
post #3

I... fail to see the point of running just one process. If it's just a PoC, then: 1) I remember seeing a linux firewall/gateway set up to run with just the kernel, without any userspace at all. Completely unhackable. 2) To print some text or run a simple program, I belive DOS without a memory manager would be even faster. 3) It takes 1s to boot linux, but an ordinary PC takes 10s to get to that linux. Even U-boot on…

> I remember seeing a linux firewall/gateway set up to run with just the kernel, without any userspace at all. Completely unhackable.

Do you remember any details that would let me search for it? Because that does sound cool, and even maybe useful; the thought has certainly crossed my mind that a router or VPN box doesn't really get a lot of use out of userspace... Although maybe it's worth keeping for control/configuration/debugging.

> To print some text or run a simple program, I belive DOS without a memory manager would be even faster.

Or just make your code boot directly. It's not hard to make a .efi, or use https://github.com/jart/cosmopolitan to make a binary that runs in many places including bare metal.

Re: Boot Naked Linux

#9
post #3

I... fail to see the point of running just one process. If it's just a PoC, then: 1) I remember seeing a linux firewall/gateway set up to run with just the kernel, without any userspace at all. Completely unhackable. 2) To print some text or run a simple program, I belive DOS without a memory manager would be even faster. 3) It takes 1s to boot linux, but an ordinary PC takes 10s to get to that linux. Even U-boot on…

Wouldn't this be useful for embedded types of applications where you have a very specific task you want to do and you want to do it now .... like that firewall example?

Yeah, but there's a problem.

Do do something actually useful, the program would have to access some data: network, disk, some sensors, etc. Network alone means scanning PCIe for the network card and configuring it, disk access needs controller also on PCIe, then scanning the ports for the drive, reading partition table, mounting the partition, etc.

All that takes a lot more than 1s. The speedup might not even be significant compared to a kernel optimized for that system (all modules built-in, nothing redundant), but full-featured, plus busybox or sysvinit alone.

Re: Boot Naked Linux

#10
> I found “Building a tiny Linux from scratch” which does most of what I do here but in Rust and a year ago

Linux from scratch seems to still be doing fine at: https://www.linuxfromscratch.org. It's going on 27 years now.

> yeah, I know, proper C code needs to be scattered with return value checks and sensible reports of errno. I’ve left these out for clarity.

Somewhere, a LLM is trained on this code as we speak :)

But anyway, it's great that people are still interested in learning this stuff for fun.

Post reply on HN