Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
My situation is slightly complex so i'll describe it as best i can. I have created a bootable 2.88mb floppy image, which has the kernel and busybox on it and a few other things, and its sole purpose is to mount a compressed image, then switch the root point over to that image, and then run init. This is all squeezed on to a cd.
Here's the tricky part. I have tried it on many machines - which it doesn't work on the older machines for some unknown reason. Here's the results I have gotten, ordered by machine speed:
pentium4 3ghz, 512mb ram - works perfectly.
celeron 1.7ghz, 256mb ram - works perfectly.
pentium3 650mhz, 256mb ram - works perfectly.
celeron 366mhz, 96mb ram - works perfectly.
pentium 250mhz (yes overclocked), 64-192mb ram - works up until init.
pentium 200mhz, 64mb ram - won't boot the cd (uses some weird bios).
pentium 166mhz, 64mb ram - works up until init.
Initially i thought it may be running out of ram, but i tested that theory and it's not the case. So then i decided that maybe it's all compiled for the wrong processor. But even with it all compiled for a 486, same problems. The last lines that the bootfloppy image runs are:
and that's where the machine just sits for all eternity. So i have no idea if init is actually being run on these old machines or not. I'm just looking for any suggestions on how to fix this as i have covered everything i can think of so far. Anyone else found this problem?
I believe both of the old machines that don't work are AMI bios. I can't test 2 separate 1.44mb disks as the kernel is bigger than a single floppy alone. It probably could be done but would take days of re-configuring everything just for that test which I don't have the patience for .
I'm not sure that it is with the bootdisk itself. I have tried burning it on re-writables, single writes, burning at slow and fast speeds, on different drives in different machines, using 2 different burning programs, and even turning off the floppy emulation in nero! but after all of that, it doesn't seem to be the cd itself or how i have burned it. The only thing i can narrow it down to is either pivot_root (which works perfectly on other faster machines), or init itself (which also works perfectly on other machines). So really i have no idea where to go from here.
Actually for added info, I had managed to get the cd booting on the p200 machine using smart bootmanager but it also stops at the same place. it's definitely something to do with original pentiums but no idea why.
i'm slowly narrowing this down. i have changed the compressed image to just a normal loopback image formatted to ext2. the same problem occurs so it is nothing to do with the cloop modules.
so i tried running a shell and typing the command manually. i don't have 'ls' installed on the bootdisk as it doesn't need it, but with whatever things i have on there, i can tell that the cd image has been mounted, and the folders are there, but no files (i think). yet on a pentium2 or newer, everything works fine still.
i have checked out busybox and it's compiled for 386. everything on the cd image is compiled for 486. the only thing left that i can think of is that busybox is statically linked with uclibc, so uclibc may be compiled for 686. so i will dig around for the files to re-compile that but as always i'm still open to suggestions!
edit: ok scrap that...uclibc is also 386. i guess it's time to try another kernel
Last edited by lukebeales; 02-10-2004 at 12:15 PM.
a small update as the problem is still there, but i have pinpointed exactly what it is.
first of all, i have compiled an entirely new 2.6.2 kernel which didn't fix it, and recompiled busybox to remove uclibc which also didn't fix it. the problem lies somewhere in busybox as far as i can tell. it manages to issue the pivot_root command perfectly, but then when it runs the chroot command, it spews back "illegal instruction". infact, even before pivot_root is run, it has that same error when you try to run any program from the root image from within the bootdisk.
so i'm guessing something isn't compiled for the right processor somewhere. absolutely everything is compiled for 586, including the kernel, busybox, every package, glibc, everything! so i have no idea which bit isn't working. anyway if anyone else has come across this and has a solution then please post your suggestion!
this is all being compiled on a p3-650 by the way, with the -march flag (and many others) set for everything.