На всі команди відповідь – 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 i 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.