Hello all,

I posted about this problem a while ago but now I have more information.

6.5 SP2 IR1.

The problem: Booting from CD results in a video mode with far more lines and
column than booting PXE. PXE is always 80x25, on many different hardware
types. I want it to be like the CD.

Theoretically, the video mode is controlled by the vga= parameter on the
kernel's command line. For PXE, the kernel command line comes from <imaging
server>\sys\tftp\cmds, various files therein. Here are the contents of a
typical file:

KERNEL boot/linux
APPEND initrd=boot/initrd vga=0x314 install=tftp://$TFTPIP/boot
rootimage=/root PROXYADDR=$PROXYADDR TFTPIP=$TFTPIP splash=silent

Notice the vga= parameter.

I can modify this vga parameter any way I like, without effect. I have

- removing the parameter entirely
- setting it to ask
- setting it to vga_ask
- setting it to single-digit numbers e.g. 1, 2
- setting it to other 0x3nnn options
- setting it to extended

It should be possible for anybody to replicate this simply by changing the
vga parameter in one of your CMD files and booting that particular PXE
option. I suggest using "ask" as it is the one that would give the most
visibly obvious evidence of working or not working.

The boot loader for PXE appears to be linld.com. So, I took my PXE
materials and Novell's linld (to ensure same version) and ran them from DOS.
When I run them from DOS, the vga= parameter DOES have an effect; it behaves
exactly as it should.

So, the situation appears to be that linld launched via PXE ignores the vga
parameter while linld launched manually from DOS does not, on the same

Working with linld under DOS yielded some interesting information. The text
files specifying the kernel command line parameters for PXE are not actually
in anything remotely like the format linld requires. Having KERNEL and
APPEND keywords is more characteristic of other boot loaders. If you run
linld without parameters under DOS, it gives you very terse command line
information, which is as follows:

LINLD v0.97
LINLD [image=<file>] [initrd=<file>] [vga=vgamode] [cl=<kernel cmdline>]
vgamode: ask,extended,normal or dec/oct/hex number

Use quotes: "cl=..." if you need spaces in cmdline
Use cl=@filename to take cmdline from file

So compared to the CMD file provided for PXE, what linld would really want
is this:

linld image=boot/linux initrd=boot/initrd vga=0x314 cl=@params.txt

where params.txt would contain:


(It's worth noting that things are actually even slightly more complicated,
because the variables used in the CMD file (e.g. $PROXYADDR) don't actually
work; I have not found any way to use variables on the command line.)

All this tells me that before Novell launches linld, it is internally
processing the contents of these CMD files and spitting out a command line
that linld can really work with. My experience indicates that the vga
parameter is being incorrectly handled in this process.

I cannot figure out where the DOS environment that must exist during the PXE
boot process is coming from. (There must be a DOS environment, because
linld is a DOS Linux launcher.) It was easy to tell with the old preworx
materials, because you could see the .bin files which were nothing but
images of DOS boot floppies; it was even possible to open them in
third-party PXE utilities. I see no comparable files in the current boot
materials. The only other interesting file is loadlin.dnx, but I suspect it
is not involved because the old preworx process had DNX files as well and
they served a different purpose. Consequently I can't look at what is
happening when linld is launched, so I can't get any further in trying to
figure out the problem.

I would be very interested to know whether anybody out there can get their
PXE materials to respond sensibly to vga=ask.

If you can, I'd be interested to know the dates and times of all the backend
NLMs, in case my problem is due to incorrect updating/version mismatch.

If anybody can shed light on the innards of what happens when linld is
launched during PXE boot, I would love to know.