← Back to list

Fixing Ubuntu After a Corrupted libc.so.6: How I Recovered My System

Introduction

Sourabh Panchal · 2024-11-15 12:17 · 1 claps · 2.8 min read
#ubuntu-22-04 #ubuntu #libc #helping-others
Open on Medium ↗
Wiki topics: 🔓 · Open Source

Fixing Ubuntu After a Corrupted **libc.so.6: How I Recovered My System**

Introduction

Recently, while working on a kernel project (related to Kali NetHunter), I ran into an issue that completely crashed my Ubuntu 22.4 LTS system. I had attempted to update the glibc (GNU C Library) during kernel compilation, but something went wrong, and my Ubuntu installation refused to boot properly afterward. This post walks you through the issue I faced and how I recovered my system using a Live USB. Hopefully, it can save someone else a lot of time and frustration!

The Problem: Corrupted libc.so.6 and System Crash

The problem started when I was compiling a custom kernel for my Kali NetHunter. During the process, I encountered errors related to glibc versions:

clang: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.36' not found

Since the required versions of glibc (2.36 and 2.38) weren’t available in my default repositories, I decided to manually upgrade the glibc package. Unfortunately, something went wrong during the installation, and my system crashed after I rebooted. I could no longer boot into Ubuntu, and I was greeted by a fatal error related to the core libc.so.6 file.

Symptoms

  • Ubuntu failed to boot.
  • The system was essentially unusable without a working glibc.
  • The CPU has been disabled by the guest operating system. Power off or reset the virtual machine.

The Solution: Fixing libc.so.6 Using a Live USB

Thankfully, Ubuntu provides powerful recovery tools through a Live USB environment, which I used to fix the corrupted libc.so.6 file. Here’s a step-by-step guide that outlines the process of recovering from a corrupted glibc on Ubuntu.

Step-by-Step Recovery Process

1. Boot from a Live USB

I booted into the Ubuntu Live USB environment, selected “Try Ubuntu without installing,” and opened the terminal using Ctrl+Alt+T.

2. Mount the Root Partition

First, I identified my root partition (in my case, it was /dev/sda1) and mounted it:

sudo mount /dev/sda1 /mnt

I then mounted other essential system directories:

sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run

3. Download a New libc.so.6 File

Next, I downloaded the correct version of glibc (libc6) from the Ubuntu Packages website for my system (Ubuntu 22.4 LTS, 64-bit). After downloading the .deb package, I extracted it:

dpkg -x libc6_*.deb /mnt/tmp_libc6

4. Replace the Corrupted libc.so.6

I copied the fresh libc.so.6 file from the extracted folder into the correct location on my system:

sudo cp /mnt/tmp_libc6/lib/x86_64-linux-gnu/libc.so.6 /mnt/lib/x86_64-linux-gnu/

Then, I set the correct permissions:

sudo chmod 755 /mnt/lib/x86_64-linux-gnu/libc.so.6

5. Fixing DNS and pty Allocation Issues in chroot

When I tried to enter the chroot environment, I ran into two common issues:

  • DNS resolution failure: This prevented apt from working.
  • Pseudo-terminal (pty) allocation failure: This affected package management tools.

Fixing DNS Resolution:

I copied my Live USB’s DNS configuration into the chroot environment:

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

Fixing pty Allocation:

To fix the pty allocation error, I mounted devpts:

sudo mount --bind /dev/pts /mnt/dev/pts

6. Enter the chroot Environment

After the fixes, I was able to enter chroot successfully:

sudo chroot /mnt

7. Reinstall glibc

Inside the chroot, I reinstalled libc6 to ensure everything was properly restored:

sudo apt-get install --reinstall libc6

8. Exit chroot and Reboot

Finally, I exited the chroot, unmounted the directories, and rebooted:

exit
sudo umount /mnt/dev/pts
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/run
sudo umount /mnt
sudo reboot

The Outcome

After following these steps, my Ubuntu system booted up normally, and the dreaded libc.so.6 errors were gone! This recovery process saved my system from a complete reinstallation and allowed me to continue my work.

Conclusion

If you find yourself in a situation where your Ubuntu installation is broken due to a corrupted glibc (or any critical system library), using a Live USB and chroot environment is an incredibly powerful recovery method. It allows you to repair the system without losing data or reinstalling from scratch.

If you encounter a similar issue, I hope this guide helps you out. Feel free to reach out if you have any questions or need further clarification!


메타데이터
post_id
fd9fad813fa8
slug
fixing-ubuntu-after-a-corrupted-libc-so-6-how-i-recovered-my-system-fd9fad813fa8
url
https://medium.com/@IamCOD3X/fixing-ubuntu-after-a-corrupted-libc-so-6-how-i-recovered-my-system-fd9fad813fa8
canonical_url
https://medium.com/@IamCOD3X/fixing-ubuntu-after-a-corrupted-libc-so-6-how-i-recovered-my-system-fd9fad813fa8
author_url
https://medium.com/@IamCOD3X
status
ok
fetched_at
2026-06-27 07:40:21