GRUB: Error 28: Selected item cannot fit into memory
These are the commands I type into the grub shell:
Code:
grub> root (hd0,1) Code:
-rw-r--r-- 1 root root 3.6M Jun 10 05:34 initrd.img-2.6.18-4-686 I don't have a lot of RAM, but it is 64 MB. It should be enough to fit the initrd, as you can see. I can run LiveCDs, so there is nothing wrong with my hardware. I've also successfully booted the machine using LILO (before my kernel upgrade). I've been having some issues with not being able to find the root file system with LILO, so I thought I'd give GRUB a shot. That's the story so far. Any help would be appreciated, Tylo |
Grub is much bigger than Lilo. It has to occupy the memory if it is interpreting your command in real time.
Also it seems you are picking vmlinuz in the / directory and the initrd from the /boot directory. The kernel could expand in size too. Lastly I think you also need to specify the "root=/dev/hdax" in the kernel statement to tell the kernel where to find the other system files. |
Re:
Quote:
I am fairly certain it the memory issue has something to do with my low RAM combined with my use of a Damn Small Linux live CD I am using to try and fix my problem. However, I did find out that if I reboot the computer and let GRUB run off of the MBR, then I get no memory issues. The bad news is, I still have a problem. The ProblemHere is my new /boot/grub/menu.list Code:
# By default, boot the first entry I've tried passing the kernel both init=/initrd.img & init=/boot/initrd.img-2.6.18-4-686. Both end up with a cannot execute initrd.img error (or cannot execute initrd.img-2.6.18-4-686 depending on what i set init equal to). Any thoughts as to what I can try next? |
If Lilo works why go with Grub?
I am not sure if the initrd can be passed via the kernel statement in Grub as I haven't seen one done it that way. May be it was possible when initrd was a lot smaller. What is the version of your Grub? DSL still using an older Grub to reduce the distro's footprint and that is not as robust as the later version, say 0.97. At one time I tried to boot every system with the oldest Grub I could find which was 0.94 from DSL. I gave up because it was nowhere as successful as 0.97. You can try using a bootable Grub floppy loaded with a more recent Grub, since you know how to boot a Linux manually already. I did find different version of Grub behave slightly different. |
Quote:
Quote:
Quote:
|
Seem to me you are streching the 64Mb ram to the limit Linux not expecting.
Grub is definitely having a trouble to execute the initrd statement after the kernel statement has been successfully accepted. Lilo did not boot either claiming a difficulty to loading the system files. In the age when even 2Gb ram costs no more than a 400Gb hard disk or an average mobo there seems little point to exhaust the capability of Linux coping with such a small amount of ram. If you manage to get a system on it the distro has to be very small and very old, nothing like a modern Linux. |
Re:
Quote:
Part of me finds it very surprising that GRUB and files of these sizes: Code:
-rw-r--r-- 1 root root 3.6M Jun 10 05:34 initrd.img-2.6.18-4-686 |
1) boot your system with a livecd.
2) chroot into you system stored on the hard drive(s). 3) run "update-grub". 4) reboot. If you _still_ have problems, my only other guesses are a) not enough ram or b) your hard drive is partitioned wrong (possibly by an old-school partitioner) causing the MBR to be smaller than it really should for modern systems to boot properly. |
Quote:
|
WRT both Lilo and grub above (note you can only use one or the other and must remove whichever application you don't want) I think you should specify the location and name of the the respective vmlinuz and initrd.img instead of using the symlink. This becomes very relevant later when upgrading the kernel because you want access to the old kernel in case it goes pear shaped.
WRT to grub modify the menu.lst to: title Bonzai-<kernel-version> root (hd0,1) kernel /boot/vmlinuz-<kernel-version> root=/dev/hda2 ro initrd /boot/initrd.img-<kernel-version> Note the ro on the end of the kernel line. Memory is not relevant as this does not relate to extended memory (64MB) but relates to your system memory. This is the one area of computing that has never developed and is the same as it was when the first pc's came out in the late 80's. I have a laptop with 32MB and it boots these kernels fine. |
Quote:
Quote:
|
Quote:
Quote:
|
If you follow my steps I mentioned before it will cause Grub to automagically reconfigure your menu.lst file according to your system and the installed kernels. I am 99.9% certain this will solve your problem! Just give it a shot, and make sure you chroot into your sytem from the livecd before running update-grub.
|
Quote:
First I'd like to appologize for more or less blowing off this post earlier. I read update-grub as some command that I had already tried before (they are starting to blur together :scratch: ) I used your method, but do _still_ have problems. Quote:
Code:
# menu.lst - See: grub(8), info grub, update-grub(8) Bad news is, I am still getting cannot execute /init and Kernel panic - not syncing: No init found, Try passing init= option to kernel errors whenever I try to boot either of the other two kernels. Note: I believe the 2.6.18-4-486 was an accidental install on my part and should probably be disreguarded. |
Is the initrd.img-2.6.18-4-486 actually located in the boot directory? You say that you installed the 2.6 kernel by accident. Check to see whether you have module-init-tools installed. If you haven't then install it see;
Upgrade to 2.6 kernel This may explain why you are getting init errors. |
All times are GMT -5. The time now is 01:10 AM. |