I spent a scary night yesterday trying to fix my Ubuntu installation. I was a victim for the bug related to libc6. The problem is that after updating the system, the new libc6 package was broken and it rendered the system in a total mess :((
Almost every single application is depending on the standard C library (glibc/libc6/GNU C Library). The fact that the libc6 is not functioning means the system is now totally unstable! Error message of the sort 'null pointer reference' began to show everywhere. I can't start any kind of terminal. Even logging into the Virtual Consoles failed and just thrown some 0x777FFD... addresses on me. I had no access to any package manager and I cannot undo the buggy installation. Even starting a browser to search for the problem failed! I had no other option but to restart and login using a liveCD.
After a lot of searching for the problem, I came across this bug description.
I have learnt a lot :)
To break the normal boot process you need to boot with the kernel option:
This puts you into the initial ram filesystem prompt (initramfs) just before starting the init-bottom scripts
To unpack a .deb archive:
ar -x *.deb
This leaves you with two tarball control.tar.gz and data.tar.gz. I used this to unpack the libc6 deb archive by hand and copy the necessary data.tar.gz files into their correct locations; thus replacing the buggy libc6 installation with a correct installation.
When you 'chroot' into your Ubuntu installation and get the message: 'Unable to execute /bin/bash: Permission Denied'. And even 'chroot /path/to/your/rfs /usr/sbin/apt-get' fails for the same reason. Then most probably the 'ld*' files in /lib/ and /sbin/ldconfig are not give the execute permission.
'chmod +x /lib/ld*' and 'chmod +x /sbin/ldconfig' corrected the problem.
Notice that ld* is the dynamic link loader and is needed by almost every executable file in your system. Also, 'ldconfig' is needed by dpkg, apt, aptitude and all package managers to be able to process your packaging system.