На все команды ответ – Segmentation fault
                            Вчера, после не удачной попытки компиляции из исходников и установки новой версии GLibC, получил ответ на любые команды в виде сообщения:
Segmentation fault
Так как я знаю то, что причина поломки системы состоит в неправильно установленной библиотеке GLibC, значит её необходимо переустановить. А раз необходимые нам команды не работают, значит придётся воспользоваться LiveCD.
А теперь приступим к исправлению этой ситуации.
1. Запустим систему с LiveCD/USB и откроем терминал.
Нам нужен именно терминал, поэтому иксы запускать нет необходимости.
Примечание: Образ DebianLiveCD мы возьмём для
i386отсюда или дляamd64отсюда.
Далее все команды мы будем выполнять в консоли.
2. Подготовка chroot окружения.
Посмотрим на таблицу разделов для того, чтобы узнать как именуется раздел с корнем файловой системы который мы будем чинить.
sudo fdisk -l
                            На экран должна будет выведена примерно такая таблица:
Устр-во Загр Начало Конец Блоки Id Система /dev/sda1 104863742 156301311 25718785 5 Расширенный /dev/sda2 * 104863744 125835263 10485760 83 Linux /dev/sda3 150001664 156301311 3149824 82 Linux своп / Solaris /dev/sda4 125837312 149999615 12081152 83 Linux
В моём случае корень расположен на разделе sda2.
Примонтируем раздел с корнем файловой системы и еще несколько важных директорий:
sudo mount /dev/sda2 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys  /mnt/sys
                            Попробуем перейти в среду chroot:
sudo chroot /mnt
                            И увидим сообщение - Segmentation fault, что предсказуемо. Тогда переустановим GLibC вручную.
3. Скачаем библиотеку GlibC.
glibc-2.13-1 на самом деле виртуальный пакет, а предоставляет он libc6, значит скачивать мы будем его.
Скачиваем libc6:
sudo apt-get download libc6
                            Теперь в текущей директории лежит файл libc6_2.13-38_i386.deb.
4. Распаковка библиотеки в корень системы назначения.
Отступление: Для тех кто пока не знает, deb пакет - это всего лишь обычный архив файлов, содержащий файлы, предназначенные для установки в систему, а так же некоторые служебные файлы, необходимые для того чтобы эту установку сделать гибкой. При помощи программы ar упаковано в один файл:
- Архив 
control.tar.gz, содержащий скрипты, написанные майнтенером пакета, использующиеся при установке/удалении пакета, а так же другие служебные файлы. - Архив 
data.tar.gz, содержащий двоичные файлы программы, ради которой создан пакет. - Файл 
debian-binary. 
4.1 Для Debian-based систем.
Используем dpkg с параметром -x, чтобы просто распаковать но не устанавливать. Распакуем в корень сломавшейся системы:
sudo dpkg -x libc6_2.13-38_i386.deb /mnt
                            4.2 Для не Debian-based систем.
Распакуем в текущую директорию 3 файла: control.tar.gz, data.tar.gz и debian-binary.
sudo ar vx libc6_2.13-38_i386.deb
                            Распакуем содержимое data.tar.gz в корень сломавшейся системы:
sudo tar zxvf  data.tar.gz -C /mnt
                            5. Проверяем
sudo chroot /mnt
                            Если сообщений об ошибках нет, значит ошибка Segmentation fault исправлена и теперь мы в chroot окружении.
6. Завершение
Выходим из chroot:
exit
                            Отмонтируем ранее примонтированные разделы:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
                            Перезагрузим компьютер:
sudo reboot
                            После проделанных манипуляций ранее сломанная система запустится в стандартном режиме, так как будто она и не ломалась.
Если эта статья помогла вам, пожалуйста, оставьте комментарий ![]()
Спасибо за прочтение!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.