Ideas for FreeLdr
Posted: Fri Dec 21, 2018 12:32 am
valerius
Joined: 03 Apr 2005
Posts: 50
Location: Elizovo, Kamchatka, Russia
Posted: Wed May 09, 2007 8:08 am
For FreeLdr, it would be desirable to have the following features:
1) To have possibility to see debug messages from MicroFSD and FreeLdr. If we will output these messages
to screen, then, when the system boots, the messages appear wery quickly and are quickly erased by kernel'
and servers' messages. It is also posiible to output these messages to comm port, but nowadays, there are
many computers without a comm port. So, an idea suggests itself, to have a feature like "dmesg" command
for Linux kernel, or the one like "copy devibms506$ con" in OS/2. In other words, we could make a log buffer,
which exists over all the osFree boot process, and which can be examined later.
For collecting all messages from different places, I suggest to have a log server, which maintains a log buffer
and collects messages from other servers. This log server must to be included in Personality Neutral Services.
Also, I propose some mechanism for collecting messages from loader and microfsd's. I propose a log buffer
to be created by boot partition's MicroFSD. The messages are output to the buffer by microfsd itself. A microfsd
includes a special log() function which outputs messages to the buffer. When a FreeLdr is started by microfsd,
a pointer to the log buffer is passed to the loader -- in some register, or right after FileTable structure (to be
defined). And, along with the buffer, a pointer to the log() function is passed. When the multiboot kernel starts,
the buffer is passed to multiboot kernel. I propose to pass it as ordinary multiboot module in mods[] list. When
L4 kernel is started, it starts sigma0 and root servers. The root server starts log server. Then log server acquires
the log buffer and continues logging messages to it. The question remains, how to collect messages from kickstart
and L4 kernel, and is this needed really?
2) I want to have the possibility for the loader to load ordinary OS/2 kernel (os2krnl). For that, there can be two
possibilities: a) the possibility to exchange multiboot kernel support to custom kernel (like os2krnl) support. This
variant is to divide the loader into two parts: general and custom. The custom part is different for multiboot
kernels and custom kernels, like OS/2 one. The general part is common. b) and different variant -- to base the
loader solely on Multiboot standard. I.e., the loader loads a multiboot kernel, which can be a Linux kernel or
kickstart for L4 microkernel. For custom kinds of kernels, like OS/2 kernel, a special multiboot kernel can be
created. It relocates itself to the address within 1st megabyte (conventional memory), switches back to the real
mode and starts IBM's os2ldr, which, in turn, starts OS/2 kernel. For this, the OS/2 kernel specific multiboot
kernel must have FileTable and BPB structures passed from freeldr. For this, I propose to pass these structures,
along with log buffer, in mods[] array, in the end of it.
The problem for multiboot kernel is that some kernels, like Linux one, doesn't understand these additional
modules (FileTable, BPB and log buffer). The question is: how to make the kernels, which are not aware of
them, to be not confused by these structures? -- I propose to add these structures to the very end of mods[]
list. Linux kernel understands only two modules -- the Linux kernel itself and the Initrd (am I right?). And
kickstart understands only 3 first modules (the L4 kernel, sigma0 server and the root server). The next modules
are ignored by kickstart, they are only passed in the Kernel Interface Page by bootinfo structure. Then, the
root server and other servers (like log server) can obtain other modules from the bootinfo structure.
Any comments, suggestions?
_________________
WBR,
Valery V. Sedletski
Joined: 03 Apr 2005
Posts: 50
Location: Elizovo, Kamchatka, Russia
Posted: Wed May 09, 2007 8:08 am
For FreeLdr, it would be desirable to have the following features:
1) To have possibility to see debug messages from MicroFSD and FreeLdr. If we will output these messages
to screen, then, when the system boots, the messages appear wery quickly and are quickly erased by kernel'
and servers' messages. It is also posiible to output these messages to comm port, but nowadays, there are
many computers without a comm port. So, an idea suggests itself, to have a feature like "dmesg" command
for Linux kernel, or the one like "copy devibms506$ con" in OS/2. In other words, we could make a log buffer,
which exists over all the osFree boot process, and which can be examined later.
For collecting all messages from different places, I suggest to have a log server, which maintains a log buffer
and collects messages from other servers. This log server must to be included in Personality Neutral Services.
Also, I propose some mechanism for collecting messages from loader and microfsd's. I propose a log buffer
to be created by boot partition's MicroFSD. The messages are output to the buffer by microfsd itself. A microfsd
includes a special log() function which outputs messages to the buffer. When a FreeLdr is started by microfsd,
a pointer to the log buffer is passed to the loader -- in some register, or right after FileTable structure (to be
defined). And, along with the buffer, a pointer to the log() function is passed. When the multiboot kernel starts,
the buffer is passed to multiboot kernel. I propose to pass it as ordinary multiboot module in mods[] list. When
L4 kernel is started, it starts sigma0 and root servers. The root server starts log server. Then log server acquires
the log buffer and continues logging messages to it. The question remains, how to collect messages from kickstart
and L4 kernel, and is this needed really?
2) I want to have the possibility for the loader to load ordinary OS/2 kernel (os2krnl). For that, there can be two
possibilities: a) the possibility to exchange multiboot kernel support to custom kernel (like os2krnl) support. This
variant is to divide the loader into two parts: general and custom. The custom part is different for multiboot
kernels and custom kernels, like OS/2 one. The general part is common. b) and different variant -- to base the
loader solely on Multiboot standard. I.e., the loader loads a multiboot kernel, which can be a Linux kernel or
kickstart for L4 microkernel. For custom kinds of kernels, like OS/2 kernel, a special multiboot kernel can be
created. It relocates itself to the address within 1st megabyte (conventional memory), switches back to the real
mode and starts IBM's os2ldr, which, in turn, starts OS/2 kernel. For this, the OS/2 kernel specific multiboot
kernel must have FileTable and BPB structures passed from freeldr. For this, I propose to pass these structures,
along with log buffer, in mods[] array, in the end of it.
The problem for multiboot kernel is that some kernels, like Linux one, doesn't understand these additional
modules (FileTable, BPB and log buffer). The question is: how to make the kernels, which are not aware of
them, to be not confused by these structures? -- I propose to add these structures to the very end of mods[]
list. Linux kernel understands only two modules -- the Linux kernel itself and the Initrd (am I right?). And
kickstart understands only 3 first modules (the L4 kernel, sigma0 server and the root server). The next modules
are ignored by kickstart, they are only passed in the Kernel Interface Page by bootinfo structure. Then, the
root server and other servers (like log server) can obtain other modules from the bootinfo structure.
Any comments, suggestions?
_________________
WBR,
Valery V. Sedletski