Re: Some Hurd and Mach programming questions
> > Why would PCI bus have to be in the kernel? Why would you need support
> > for a disk device in the kernel?
> The first thing that springs to mind is that if you lack a disk device
> you may have some difficulty in loading the server which provides it, in
> paging it in or out, etc..
The code and data that lies on the paging path must be wired in physical
memory. This is already an issue for the default pager program, and the
issue is essentially the same for any driver code living outside the kernel
that is involved in the drivers necessary accessing the disk.
The notion here is that the essential pieces for booting would be loaded by
the boot loader (we use GRUB), and the multiboot spec was designed with
such things in mind. This concept is already expressed in how we boot the
Hurd now: the kernel has disk drivers but no filesystem format support; the
boot loader loads both the kernel and the first program files that will run
into physical memory, and tells the kernel where to find them. The first
program file (currently /boot/serverboot in the Hurd) knows about
filesystem formats and reads the other programs from the filesystem. In
similar fashion, I would envision the boot loader's script instructing it
to load the kernel, the driver programs/libraries, and the filesystem
program, all into physical memory before starting the kernel. (The same
thing would apply even for just using dynamically-loadable kernel modules
for device drivers, which is a much simpler case in all other ways being