Hello Peter, The attached patch contains three small (although 2 of them are fundamental :) fixes for pxelinux 1. Alignment error when more than one initramfs are loaded using initrd - the alignment of the last disk is discarded in calculations but is ALWAYS present when the loading procedure is called. As a result - the second image (cpio) is not recognized. 2. On some platforms (vmware for example :), READING from the video memory in the 32bit mode is impossible (causes an exeption). Taking in to account that the scroll function in ilinux/arch/i386/boot/compressed/misc.c works using a memcpy of the video memory, when the linux bootsector is given control and the cursor is at the end of the screen (-1-2 lines) an exception is arisen and in the presence of it's handler in the bootloader the system halts. Both lilo and grub handle this situation - the cursor is always somewhere at the middle of the screen when the control is given to the linux bootsector. When using pxelinux taking in to account that the PXE bios prints out the presence of the second initramfs which causes the screen to scroll and the bug to appear :) A very simple solution - the screen is cleared before giving control to the linux bootsector (in the patch). 3. If more than one initramfs are loaded then before every "Loading..." message (but the first) an extra new line is added. A small thingy but anyway :) -- Best regards, Iouri mailto:bc-info at styx.cabel.net -------------- next part -------------- A non-text attachment was scrubbed... Name: syslinux.100-pxeroot.patch Type: application/octet-stream Size: 1178 bytes Desc: not available URL: <http://www.zytor.com/pipermail/syslinux/attachments/20070619/319ebcd4/attachment.obj>
Op 19-06-2007 om 00:31 schreef Iouri Kharon:> Hello Peter, > > The attached patch contains three small (although 2 of them are > fundamental :) fixes for pxelinuxPeter prefers patches created with git. Mmm, that is way to short. Now in other words: The syslinux source code, which includes pxelinux, is in a version control system called git. Please provide patches generated by git. Cheers Geert Stappers
Hi Geert! Tuesday, June 19, 2007, you wrote:>> The attached patch contains three small (although 2 of them are >> fundamental :) fixes for pxelinuxGS> Peter prefers patches created with git. Diff was created as -uP (old Linus style :). Ok, I'm recreate it with -up, "not compress", and include inline :). But also attach is as text (included attachment can't used for patch :). Redescription: 1. Alignment error when more than one initramfs are loaded using initrd - the alignment of the last disk is discarded in calculations but is ALWAYS present when the loading procedure is called. As a result - the second image (cpio) is not recognized. 2. On some platforms (vmware for example :), READING from the video memory in the 32bit mode is impossible (causes an exeption). Taking in to account that the scroll function in ilinux/arch/i386/boot/compressed/misc.c works using a memcpy of the video memory, when the linux bootsector is given control and the cursor is at the end of the screen (-1-2 lines) an exception is arisen and in the presence of it's handler in the bootloader the system halts. Both lilo and grub handle this situation - the cursor is always somewhere at the middle of the screen when the control is given to the linux bootsector. When using pxelinux taking in to account that the PXE bios prints out the presence of the second initramfs which causes the screen to scroll and the bug to appear :) A very simple solution - the screen is cleared before giving control to the linux bootsector (in the patch). 3. If more than one initramfs are loaded then before every "Loading..." message (but the first) an extra new line is added. A small thingy but anyway :) Best regards, Iouri mailto:bc-info at styx.cabel.net ------------------------------------- --- syslinux-3.51/runkernel.inc.orig 2007-06-11 02:51:39.000000000 +0400 +++ syslinux-3.51/runkernel.inc 2007-06-19 12:19:37.000000000 +0400 @@ -472,6 +472,14 @@ kill_motor: int 16h %endif ; +; MUST clear screen before jmp to linux boot sector: +; some configuration can't read videomemory and 'scroll' in misc.c don't work +; + mov ax,0fh + int 10h + mov ax,3 + int 10h +; ; Set up segment registers and the Linux real-mode stack ; Note: es == the real mode segment ; @@ -600,11 +608,8 @@ loadinitrd: mov es,ax push ecx ; Bytes to load - cmp dword [es:su_ramdisklen],0 - je .nopadding ; Don't pad the last initrd add ecx,4095 and cx,0F000h -.nopadding: add [es:su_ramdisklen],ecx mov edx,[HighMemSize] ; End of memory dec edx @@ -626,6 +631,11 @@ loadinitrd: mov edi,edx ; initrd load address push si mov si,crlfloading_msg ; Write "Loading " + cmp ecx,[es:su_ramdisklen] + je .firstdisk + inc si ; Skip (doubling) CRLF on non first disk + inc si +.firstdisk: call cwritestr mov si,InitRDCName ; Write ramdisk name call cwritestr -- Best regards, Iouri mailto:bc-info at styx.cabel.net -------------- next part -------------- A non-text attachment was scrubbed... Name: syslinux.3.51-pxeroot.diff Type: application/octet-stream Size: 1214 bytes Desc: not available URL: <http://www.zytor.com/pipermail/syslinux/attachments/20070619/cf6aba44/attachment.obj>
Iouri Kharon wrote:> Hello Peter, > > The attached patch contains three small (although 2 of them are > fundamental :) fixes for pxelinux > > 1. Alignment error when more than one initramfs are loaded using initrd > - the alignment of the last disk is discarded in calculations but is > ALWAYS present when the loading procedure is called. As a result - the > second image (cpio) is not recognized.Ouch.> 2. On some platforms (vmware for example :), READING from the video memory > in the 32bit mode is impossible (causes an exeption). Taking in to account > that the scroll function in ilinux/arch/i386/boot/compressed/misc.c > works using a memcpy of the video memory, when the linux bootsector is given > control and the cursor is at the end of the screen (-1-2 lines) an exception is > arisen and in the presence of it's handler in the bootloader the system halts. > Both lilo and grub handle this situation - the cursor is always somewhere at the > middle of the screen when the control is given to the linux bootsector. > When using pxelinux taking in to account that the PXE bios prints out the > presence of the second initramfs which causes the screen to scroll and the bug > to appear :) > A very simple solution - the screen is cleared before giving control to the > linux bootsector (in the patch).This is a Vmware bug. It may need reworking in Linux, I don't know, but I'm a bit reluctant to simply clear the screen in syslinux. What version(s) of Vmware has this cockup in it?> 3. If more than one initramfs are loaded then before every "Loading..." > message (but the first) an extra new line is added. A small thingy but > anyway :)That should be fixed, though. In the future, it would be better to get this as individual patches rather than all baked together. -hpa
Could you try this patch and see if it solves your multi-initrd problem? -hpa -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: diff URL: <http://www.zytor.com/pipermail/syslinux/attachments/20070620/9f2f9204/attachment.ksh>