🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

SuSe Linux kernel panic on boot

Started by
4 comments, last by Omid Ghavami 16 years, 9 months ago
Hi! I'm in great need of some assistance from you Linux pros! I'm a beginner so bear with me please! I'm running SuSe Linux Enterprise Desktop 10.1. I've had no troubles with it until now. The problem showed up after updating my OS with the online updater (This was not the first update, I had performed successful updates earlier). I can now no longer boot Linux. Right at the beginning of the boot sequence, perhaps 1-2 seconds in, I get: /bin/bash: error while loading shared libraries: libreadline.so.5: cannot open shared object file: No such file or directory followed by Kernel panic and then the system locks up. I managed to boot the system using the installation CD to investigate the situation. The file libreadline.so.5 does exist, in two different places (two different versions). I have one version in /lib/ which references libreadline.so.5.1 and one in /usr/local/lib/ which references libreadline.so.5.2. The package manager installed 5.1 for me, and I manually compiled and installed 5.2. I don't know if this is important but it was not causing any problems before I performed this online update. The package manager tells me that some of the patches from the update are *broken*. I did not manage to re-install nor delete these patches. I did a bit of trial and error, installing and re-installing patches and packages, to no avail. I somehow ended up with two kernels, I can't boot with any of them. I would appreciate any help I can get to solve this problem. Let me know if any additional information is required. Thanks in advance
Best regards, Omid
Advertisement
I'm no expert too. But you might need to create a link called libreadline.so.5
to the 5.1 or 5.2 file.

Good luck.

EDIT: I see the the file does exist so maybe the link is just borken?
Try putting "/usr/local/lib" as a new line into /etc/ld.so.conf.

/usr/local stuff is not in the standard search path default (I think).

Or next time: Install the library into /usr instead of /usr/local, by using "./configure --prefix=/usr" instead of "./configure".
(Anyways compiling yourself is usually not the way to go.), just in case you do it again. Be sure not to install two version of the same library at the same time ... this can easily screw up everything, especially if it something vital.
Hi!

Thanks for the replies guys. I checked ld.so.conf and the appropriate paths are already present it that file.
After reading some more about the boot sequence, I'm suspecting that the error occurs before the root drive is even mounted. Perhaps I should be looking inside the initrd. Any thoughts on that?

Quote:
Or next time: Install the library into /usr instead of /usr/local, by using "./configure --prefix=/usr" instead of "./configure".
(Anyways compiling yourself is usually not the way to go.), just in case you do it again. Be sure not to install two version of the same library at the same time ... this can easily screw up everything, especially if it something vital.


Good advice, thank you [smile]
Best regards, Omid
Quote: Original post by Omid Ghavami
I managed to boot the system using the installation CD to investigate the situation. The file libreadline.so.5 does exist, in two different places (two different versions). I have one version in /lib/ which references libreadline.so.5.1 and one in /usr/local/lib/ which references libreadline.so.5.2. The package manager installed 5.1 for me, and I manually compiled and installed 5.2. I don't know if this is important but it was not causing any problems before I performed this online update.


It's quite possible that your hand-rolled libreadline.so.5.2 is not binary compatible with the system-supplied libreadline.so.5.1. This did not cause a problem before reboot because (a) whatever boot-sequence apps use that library already have the 5.2 version open, so plopping a new file won't affect them, or (b) ldconfig had not been run to reprime the shlib cache.

If you boot from your rescue CD and mount your root partition manually, then chroot to that partition, are there errors? Do you get the same problem after manually removing or renaming the 5.2 library?

--smw

Stephen M. Webb
Professional Free Software Developer

Hi guys!

Thanks for your time! I eventually managed to fix it. It was indeed my manually installed readline which had caused the problem. The reason there were no errors earlier was that initrd had not been altered until that particular online update. The update created a new initrd which then used the latest versions of libreadline and libhistory located in /usr/local/lib, and it did so using dynamic linking which then caused the problem since /usr/local/lib doesn't exists in the ramdisk image.
In order to solve it I removed the new versions (static linking also worked, but that didn't quite feel like a longterm solution) and created a new initrd using mkinitrd and everything seems to work now [smile]

Once again thanks for helping me out!
Best regards, Omid

This topic is closed to new replies.

Advertisement