3 ms·
> NetBSD build system allows you to build the full OS from scratch, on pretty much any host POSIX platform, while targeting any hardware architecture supported
by theamk 2y ago
> NetBSD build system allows you to build the full OS from scratch, on pretty much any host POSIX platform, while targeting any hardware architecture supported by NetBSD. All without root privileges.
That seems fairly standard to me though? Yocto, buldroot, many other embedded-oriented systems provide that and more.
- plorkyeran 2y agoIt's definitely what I would consider the basic expectations for a build system (why would you even need root to compile an OS?), but it's not something that most non-embedded-focused distributions deliver.
- musicale 2y ago> why would you even need root to compile an OS Usually it's to make it easier dealing with file system ("disk") image files, which may require root privileges to mount and use with regular programs (though FUSE and similar subsystems can help.) In a mounted filesystem, root privileges may be required to set permission bits like setuid. The NetBSD toolchain probably includes utilities to make it easy to copy data in and out of file system images, ideally concurrently and without corruption.
- cperciva 2y agoIn addition to building filesystem images, a common use of root for operating system building is to chroot into a "clean" environment to avoid environmental corruption. (In general, chroot is reserved to uid 0 due to issues with setuid binaries -- on some systems chroot can be made available to non-root users by turning off setuid behaviour.)
- Koshkin 2y agoThe option -U lets you build in the unprivileged mode.
- deaddodo 2y agoYeah, I feel like anyone making this statement hasn't done any sort of wide cross-compilation in the past, let alone of an entire OS. It should be a basic expectation, but most certainly isn't one in the real-world. Especially with stuff like GCC2 Haiku, which requires an old obscure GCC version for building ABI compatible images.
- jmmv 2y agoI didn't know about Yocto, but reading through its documentation, it looks far more complex than NetBSD's build.sh. And then, I read: > If the machine you want to use Yocto Project on to build an image (Build Host) is not a native Linux system, you can still perform these steps by using CROss PlatformS (CROPS) and setting up a Poky container. ... > With CROPS, which leverages Docker Containers, you can create a Yocto Project development environment that is operating system agnostic. You can set up a container in which you can develop using the Yocto Project on a Windows, Mac, or Linux machine. ... which is not close to what NetBSD's build system does, like at all. As for buildroot: "Buildroot is designed to run on Linux systems." (a "red flag") and the list of host dependencies to install is pretty large, which is also different from NetBSD's build. Plus Buildroot and "other embedded-oriented systems" are, well, something specifically designed to build embedded system images with Linux, not a "standard" Unix-like OS that happens to have a build system that works well for embedded. A big plus for BSD is its monorepo style of development: customizing and patching the system is trivial. With buildroot, well, you have Linux's hodgepodge style of development, so picking and choosing components is simple, but modifying any of them is hard. So what NetBSD's build system offers doesn't "seem fairly standard" to me. Definitely not the "run on pretty much any host POSIX platform", which is not common. And when you involve Docker in the picture, I also say that other systems fail the test of "all without root".