Why Has Novell Never Written Its Own Boot Loader?
From Network World: NetWare never ran on top of DOS. A server was booted to DOS solely to run the NetWare boot loader (a DOS program). It did not need to do that, it could have booted directly but that would have required Novell to build its own BIOS loader to initialize all of the hardware. The NetWare designers felt that there was no need to reinvent the wheel, so let DOS handle that.Novell was not the only operating system vendor to use MS-DOS as a boot loader: Microsoft did much the same for 16- and 32-bit Windows, especially from Windows 95 onwards where returning to DOS was not a standard feature. (Windows NT and its successors did not use DOS as a loader.)This paper from Drew Major et al. does not explain why they used DOS for booting but does offer insight into Novell's design philosophy:The NetWare operating system is designed specifically to provide service to clients over a computer network. This design has resulted in a system that differs in several respects from more general-purpose operating systems.I would imagine booting from DOS to be one of those differences that places convenience and simplicity over traditional OS goals.If you are interested in learning more of the design of NetWare, this paper is a good place to start.Finally, Novell did eventually write their own boot loader.1. Does a boot loader unmount the ramdisk BEFORE mounting the root file system on the hard drive?Does a boot loader unmount the ramdisk [...] ?No.Later, the kernel unmounts the ramdisk and mounts the root file system on the hard drive. And then, starts the initialization stage by executing the first process. This is wrong. The initramfs contains a program named /init. This program is executed, and is the first (user) process whilst the initramfs is still there. Indeed, it is this program that triggers any unmounting that goes on. This is the /init program used on Debian 9 Linux. Fedora has a similar system named Dracut. As you can see, the script loads modules, runs hooks, mounts the final root filesystem, and finally overlays itself with the run-init program that is to be found in the klibc-utils package. (Earlier versions used either run-init or switch_root according to what was available.) Dracut still uses switch_root. Dracut at this point has spawned an entire systemd-udevd subsystem which has run and autodetected devices and run dmons for and mounted volumes from those devices. Dmons spawned by systemd-udevd for DASDs continue to run in parallel with switch_root. The run-init program in its turn deletes the contents of the initramfs, chroots itself to the new root filesystem, opens its /dev/console, and overlays itself with whatever the init program on that filesystem is to be, which it knows from either a variable named init on the kernel command line or a default for that variable assumed by the first /init program. switch_root does much the same, albeit with some slight differences. Dracut passes it the name of the init program which it has similarly obtained from the kernel command line. As you can see, neither the kernel nor a boot loader trigger any of this. The boot loader is well out of the picture by the time that the /init program is started as process #1, and the kernel simply does what the /init program, the programs in the hooks that it spawns, and the two further programs that it overlays itself with, tell it.And no, there is no point in this process, from the moment that process #1 is started with the /init program from the initramfs onwards, where it is possible to have no filesystem mounted. There is always at least one process running, and that process must have a working directory, a root directory, and a program image file, all of which must reference vnodes from a mounted volume somewhere.You will observe that the original initramfs can only go away when the last mount point is moved off it and the last process to use it, as per-process current directory, per-process root directory, or program image file, goes away - or, as run-init and switch_root do, switches both working directory and root directory to some other volume and overlays itself with a program image from a file from some other volume. Note that the systemd people accommodate the possibility that the initramfs does not in fact go away at all, because there a programs running from images from that volume, and remains present for the lifetime of the system. So what actually happens is that both the original initramfs and the final root filesystem are both present at one point in the process, and indeed possibly from then onwards. Far from there being a point where there are zero root filesystems, there is a point where there are multiple root filesystems and then (as the references to the initramfs go away) it drops back down to one again. (Note that filesystems for /proc, /sys, /dev, /run, /dev/shm, and /dev/pts are present at the time of run-init/switch_root running, so the total count of mounted filesystems, root and otherwise, remains well above two throughout the bootstrap process. ).2. Grub doesn't see windows 10 after messy ubuntu install, win boot loader boots into grubThe info is useful but points to a to a bodge, regarding important mounting points and a possible BIOS config issue. You do need to know what you are doing when it comes to setting up Ubuntu, let alone a dual boot. The some kind of DOS on sda2 suggests you have an MBR disk and that partition points to your data file, not your W10 system so that should not even be in there as a GRUB option. For now I would concentrate on getting Windows back. Power down, disconnect your HDD (the one with Ubuntu on it), then start up and see if W10 will boot. If it does not then your MBR and maybe your BCD file are messed up. Both can be repaired externally without the need for a re-install, but that's another subject. Meanwhile I suggest have a good read of this first before attempting another dual boot installation3. what is the best way to get a SEIZED breach plug out of a muzzle loader?Sawed off