Hi Peter, (at least I hope it is you, who gets this mail) I have a problem while booting over the netwoork using PXELINUX. When I use a initrd smaller or equal 16 MB, everything works fine, but when I increase the size, the system doesn't boot. In case of a 32 MB initrd (same content, just bigger), I get the error-message, that the system couldn't mount root. From 64 MB on, the system just reboots during the download of the initrd. The kernel is compiled to support RAM-disks of this size. So I was wondering, if there is a size limit for the initrd or if I'm doing something wrong. In case of the later, I would appreciate any suggestions or hints. Thanks in advance, regards _tom ........................................................... Mit freundlichem Gru? / kind regards Thomas D?tsch Siemens AG E-mail: thomas.duetsch at siemens.com
Hi, Duetsch Thomas <thomas.duetsch at siemens.com> schrieb am 21.10.02 16:09:01:> I have a problem while booting over the netwoork using PXELINUX. > When I use a initrd smaller or equal 16 MB, everything works fine, but when > I increase the size, the system doesn't boot. In case of a 32 MB initrd > (same content, just bigger), I get the error-message, that the system > couldn't mount root. From 64 MB on, the system just reboots during the > download of the initrd. The kernel is compiled to support RAM-disks of this > size.Are you really sure? Perhaps ramdisk_size=64000 could help The linux kernel has a default size for this. Which kernel did you try?> So I was wondering, if there is a size limit for the initrd or if I'm doing > something wrong. > In case of the later, I would appreciate any suggestions or hints.There was a wraparound bug in pxelinux, AFAIR this was at 32 MB. So 16 MB should have been no problem. Which version do you use? Regards, Josef ______________________________________________________________________________ Nur noch ein E-Mail-Postfach, aber alle alten Adressen behalten? Kein Problem! WEB.DE FreeMail als Kommunikationszentrale: http://freemail.web.de/?mc=021125
Hi, I did compiled the kernel with support for up to 256 MB of RAM disk (that is the intended size). It is a 2.4.9-31 kernel from Redhat. The pxelinux version I'm using is 1.76 from kernel.org. I only seem to have problems, when the initrd file I'm downloading exceeds a certain filesize (somewhere between 8 and 12MB). I did build a diskimage which was originally 128 MB but did contain very little data, so it was only about 1 MB, when gzipped. Everything worked fine with that and I had a running system with a 128 MB RAM disk as "/", but as soon as I start packing data in the image file and the gzipped file exceeds a certain size, I first get the error message "Couldn't find valid RAM disk image starting at 0." and then a kernel panic. When I increase the file size, I don't even get there, but the system reboots while downloading the image file. I don't know what to make out of it. My DHCP and my TFTP server work fine (I use the TFTP recommended on your web site). BTW, are you German (because of your email adress)? Because if you are, it might be easier to write in German, because thats where I'm from as well. Regards, _tom -----Original Message----- From: Josef Siemes [mailto:jsiemes at web.de] Sent: Montag, 21. Oktober 2002 10:55 To: syslinux at zytor.com; Duetsch Thomas Subject: Re: [syslinux] Size limit for initrd in PXELINUX? Hi, Duetsch Thomas <thomas.duetsch at siemens.com> schrieb am 21.10.02 16:09:01:> I have a problem while booting over the netwoork using PXELINUX. > When I use a initrd smaller or equal 16 MB, everything works fine, butwhen> I increase the size, the system doesn't boot. In case of a 32 MB initrd > (same content, just bigger), I get the error-message, that the system > couldn't mount root. From 64 MB on, the system just reboots during the > download of the initrd. The kernel is compiled to support RAM-disks ofthis> size.Are you really sure? Perhaps ramdisk_size=64000 could help The linux kernel has a default size for this. Which kernel did you try?> So I was wondering, if there is a size limit for the initrd or if I'mdoing> something wrong. > In case of the later, I would appreciate any suggestions or hints.There was a wraparound bug in pxelinux, AFAIR this was at 32 MB. So 16 MB should have been no problem. Which version do you use? Regards, Josef ____________________________________________________________________________ __ Nur noch ein E-Mail-Postfach, aber alle alten Adressen behalten? Kein Problem! WEB.DE FreeMail als Kommunikationszentrale: http://freemail.web.de/?mc=021125
Hi, Duetsch Thomas <thomas.duetsch at siemens.com> schrieb am 21.10.02 22:53:03:> I did compiled the kernel with support for up to 256 MB of RAM disk (that is > the intended size). It is a 2.4.9-31 kernel from Redhat. > The pxelinux version I'm using is 1.76 from kernel.org.seems ok. I just tried it with pxelinux 1.76, Kernel 2.4.19 and a 64M initrd filesystem. If I put few data in it I get a size of ~32M (don't know why, the original filesystem only has 3,5 M allocated - but that's a different problem). This works. I filled it up with /dev/urandom-data, and the compressed initrd gets up to ~61M. This also works.> I only seem to have problems, when the initrd file I'm downloading exceeds a > certain filesize (somewhere between 8 and 12MB). > I did build a diskimage which was originally 128 MB but did contain very > little data, so it was only about 1 MB, when gzipped.So the problem seems to be somewhere else. Maybe you could try a newer kernel? I seem to recall that older 2.4-kernels had problems with big initrd's. But you should have seen the 'Ready.'-prompt from pxelinux, regardless from the kernel version. What tftp server do you use? Did you try to tftp the initrd from some commandline tool? There are tftp-hpa versions that can't deal with big files (>32M - this is a point where the tftp block count wraps to 0). BTW, I haven't used tftp-hpa with my tests, but an IBM tftp server.> BTW, are you German (because of your email adress)? Because if you are, it > might be easier to write in German, because thats where I'm from as well.I'm german, but as long as we cc: the list it would be better to stick to english ... Regards, Josef ________________________________________________________________ Keine verlorenen Lotto-Quittungen, keine vergessenen Gewinne mehr! Beim WEB.DE Lottoservice: http://tippen2.web.de/?x=13
Hi, I tried some other stuff and it seems to be a problem of my hardware, because it works on a standart PC. I'm using a special server which has only 512 KB of free memory in the first 1 MB instead of 640 KB. So that's probably were the problem is. Do you know how much memory pxelinux.0 needs, and if there is a way to get it to work within the space that I have left? Is there an (compile) option to tell pxelinux to use only the first 512 KB and not to rely on the BIOS information. Just in case the BIOS provides incorrect information. If there is no such option available, do you think there is a way to change the soure code, so that it would work. And if there is, do you have any idea, were to start looking? Oh, and regarding the "don't know why" thing, did you init your image with zeros before making the filesystem? That helped to pack it down on my system. Regards, _tom -----Original Message----- From: Josef Siemes [mailto:jsiemes at web.de] Sent: Dienstag, 22. Oktober 2002 07:53 To: syslinux at zytor.com; Duetsch Thomas Subject: Re: [syslinux] Size limit for initrd in PXELINUX? Hi, Duetsch Thomas <thomas.duetsch at siemens.com> schrieb am 21.10.02 22:53:03:> I did compiled the kernel with support for up to 256 MB of RAM disk (thatis> the intended size). It is a 2.4.9-31 kernel from Redhat. > The pxelinux version I'm using is 1.76 from kernel.org.seems ok. I just tried it with pxelinux 1.76, Kernel 2.4.19 and a 64M initrd filesystem. If I put few data in it I get a size of ~32M (don't know why, the original filesystem only has 3,5 M allocated - but that's a different problem). This works. I filled it up with /dev/urandom-data, and the compressed initrd gets up to ~61M. This also works.> I only seem to have problems, when the initrd file I'm downloading exceedsa> certain filesize (somewhere between 8 and 12MB). > I did build a diskimage which was originally 128 MB but did contain very > little data, so it was only about 1 MB, when gzipped.So the problem seems to be somewhere else. Maybe you could try a newer kernel? I seem to recall that older 2.4-kernels had problems with big initrd's. But you should have seen the 'Ready.'-prompt from pxelinux, regardless from the kernel version. What tftp server do you use? Did you try to tftp the initrd from some commandline tool? There are tftp-hpa versions that can't deal with big files (>32M - this is a point where the tftp block count wraps to 0). BTW, I haven't used tftp-hpa with my tests, but an IBM tftp server.> BTW, are you German (because of your email adress)? Because if you are, it > might be easier to write in German, because thats where I'm from as well.I'm german, but as long as we cc: the list it would be better to stick to english ... Regards, Josef ________________________________________________________________ Keine verlorenen Lotto-Quittungen, keine vergessenen Gewinne mehr! Beim WEB.DE Lottoservice: http://tippen2.web.de/?x=13
Hi, well the system starts up just fine, the Intel Boot Agent (Version 4.0.17) gets its IP address from the DHCP and then it continues as follows: PXELINUX 1.76 2002-08-27 Copyright (C) 1994-2002 H. Peter Anvin UNDI data segment at: 000862F0 UNDI data segment size: 94B0 UNDI code segment at: 0008F7A0 UNDI code segment size: 2020 PXE entry point found (we hope) at 8F7A:0106 My IP address seems to be C0A80004 192.168.0.4 ip=192.168.0.4:192.168.0.1:192.168.0.1:255.255.255.0 TFTP prefix: Trying to load: pxelinux.cfg/C0A80004 ... Trying to load: pxelinux.cfg/C Trying to load: pxelinux.cfg/default boot: linux Loading vmlinuz-2.4.9-31................ Loading initrd.gz.......................... Depending on how big the initrd.gz-file is, the system then behaves as described earlier. Regarding the rest of your email, changing anything in the soucre code seems to make not much sense, so I either get happy with the current pxelinux or I will have to think of another way to get my system up and running with a 256 MB RAM disk. Lets see, what I can come up with. Thanks for your help, and please let me know, if you have any new ideas what to do. Regards, _tom -----Original Message----- From: H. Peter Anvin [mailto:hpa at zytor.com] Sent: Dienstag, 22. Oktober 2002 12:37 To: Duetsch Thomas Cc: Josef Siemes; syslinux at zytor.com Subject: Re: [syslinux] Size limit for initrd in PXELINUX? Duetsch Thomas wrote:> Hi, > > I tried some other stuff and it seems to be a problem of my hardware, > because it works on a standart PC. I'm using a special server which hasonly> 512 KB of free memory in the first 1 MB instead of 640 KB. So that's > probably were the problem is. Do you know how much memory pxelinux.0needs,> and if there is a way to get it to work within the space that I have left?It needs about 384K, however, that's after the PXE stack takes it's share, and some PXE stacks require several hundred kilobytes. What does PXELINUX say about the addresses of things right when it starts up. In fact, could you list the ENTIRE output of PXELINUX, from the very beginning? I should have asked for that from the very start, silly me...> Is there an (compile) option to tell pxelinux to use only the first 512 KB > and not to rely on the BIOS information. Just in case the BIOS provides > incorrect information.No. PXELINUX uses as little memory it can and has no dynamic allocation.> If there is no such option available, do you think there is a way tochange> the soure code, so that it would work. And if there is, do you have any > idea, were to start looking?Not really. All the buffers in PXELINUX are allocated statically, and it would require major surgery on the code to eliminate any of them. I've been trying to shuffle the buffers so that less critical buffers end up near the end. It certainly explains the "load the kernel slightly then stop" problem -- the first thing of the kernel that gets loaded is the real mode portion (at 0x50000) and if that corrupts the PXE code then, well, you're hosed. -hpa
Hi, sorry for taking so long, but I needed to come up with a workaround and haven't had much time. I tried 2.0-pre11 and still have the same behaviour as before. I was able to get some more differentiated information for the different image sizes. The first time it doesn't work is at an image size somewhere between 12288000 and 12582912 bytes. In this case, I get the "Couldn't find valid RAM disk image starting at 0."-message after the kernel started. Then, somewhere between 13312000 and 13824000 bytes, the image is downloaded and the next thing I get is: Ready Uncompressing Linux.. ran out of input data --System halt At 14848000 bytes, the screen just goes crazy. Strange colors and special characters start blinking all over the place. Well, and after that, the system just reboots. I hope that helps in some way. Bye, _tom -----Original Message----- From: H. Peter Anvin [mailto:hpa at zytor.com] Sent: Dienstag, 22. Oktober 2002 16:38 To: Duetsch Thomas Cc: Josef Siemes; syslinux at zytor.com Subject: Re: [syslinux] Size limit for initrd in PXELINUX? Duetsch Thomas wrote:> Hi, > > well the system starts up just fine, the Intel Boot Agent (Version 4.0.17) > gets its IP address from the DHCP and then it continues as follows: > > PXELINUX 1.76 2002-08-27 Copyright (C) 1994-2002 H. Peter Anvin > UNDI data segment at: 000862F0 > UNDI data segment size: 94B0 > UNDI code segment at: 0008F7A0 > UNDI code segment size: 2020 > PXE entry point found (we hope) at 8F7A:0106 > My IP address seems to be C0A80004 192.168.0.4 > ip=192.168.0.4:192.168.0.1:192.168.0.1:255.255.255.0 > TFTP prefix: > Trying to load: pxelinux.cfg/C0A80004 > ... > Trying to load: pxelinux.cfg/C > Trying to load: pxelinux.cfg/default > boot: linux > Loading vmlinuz-2.4.9-31................ > Loading initrd.gz.......................... > > Depending on how big the initrd.gz-file is, the system then behaves as > described earlier. >This looks normal. I don't think this has anything to do with the 512K memory issue. This might be an issue with the memory overwrite bug just described; please try 2.00-pre9. -hpa
I'm not sure about that, because when the diskimge is big enough, it doesn't even get to the kernel. It resets the machine while still downloading the image. My guess is, that some of the already downloaded data gets overriden if the image exceeds a certain size. And the bigger the image is, the more gets overridden. That would perhaps explain the worse behaviours for larger files. Well, but I seem to have a nice workaround. I get a small Linux system up and running with PXELINUX and then get the big image and mount that as root. A direct download would be nicer, but this works also pretty fine up to now. But I'll definitly give 2.0-pre14 a go. Thanks _tom -----Original Message----- From: H. Peter Anvin [mailto:hpa at zytor.com] Sent: Donnerstag, 24. Oktober 2002 16:18 To: Duetsch Thomas Cc: syslinux at zytor.com Subject: Re: [syslinux] Size limit for initrd in PXELINUX? Duetsch Thomas wrote:> Hi, > > sorry for taking so long, but I needed to come up with a workaround and > haven't had much time. > I tried 2.0-pre11 and still have the same behaviour as before. > I was able to get some more differentiated information for the different > image sizes. > The first time it doesn't work is at an image size somewhere between > 12288000 and 12582912 bytes. In this case, I get the "Couldn't find valid > RAM disk image starting at 0."-message after the kernel started. > Then, somewhere between 13312000 and 13824000 bytes, the image isdownloaded> and the next thing I get is: > > Ready > Uncompressing Linux.. > > ran out of input data > > --System halt > > At 14848000 bytes, the screen just goes crazy. Strange colors and special > characters start blinking all over the place. > > Well, and after that, the system just reboots. > I hope that helps in some way. > Bye, >This *definitely* sounds more like a kernel bug than a SYSLINUX bug. I believe the kernel you're running has known bugs in the decompression routine; you may want to try an up-to-date 2.4 kernel. -hpa