Записи. Переустановка пакетов для восстановления потерянных файлов в ubuntu 

11 лет назад

Досталось мне перенести с систему с умирающего жёсткого диска на новый. В следствии проблемы с чтением некоторых файлов и папок на уже покрывающемся плохими секторами диске, перенести всю систему не представлялось возможным.

Всё что можно перешло на новый диск аналогичной структуры, Внеся корректировки в файл /etc/fstab, загрузчик даже смог стартовать и передать управление системе, но она выпала в осадок, заявив, что: "Что вы мне тут не..." В общем было ясно что ей для счастья нехватает самого дорого.

Пробуем завестись через chroot подключив диск вторым к работающей системе:

 
mount /dev/sdd1 /mnt 
mount --bind /proc /mnt/proc 
mount --bind /dev /mnt/dev 
chroot /mnt /bin/bash

Но и тут слышим посыл по адресу, что таких-то библиотек нехватает. Не страшно, переносим их с работающей системы, вставляя в нужные места. После какого-то места переключить оболочку на новую систему удалось.

Что делать дальше? Сеть, она как бы есть, но одновременно с этим её. Создаётся ощущение что пациент живой, может даже руками двигать, но ничего не видит. По этой причине меняем адрес сервера с пакетами, с доменного имени, на простой адрес. И о чудо, оттуда он начинает видить файлы. Значит можно приступить к попытке переустановить пакеты по одному:

 
#!/bin/bash 
for pkg in `dpkg --get-selections | awk '{print $1}' | egrep -v '(dpkg|apt|mysql|mythtv)'` ; do apt-get -y --force-yes install --reinstall $pkg ; done

Запустив это и подождав кучу времени пока все переустановится (более 14 часов) система смогла самостоятельно запуститься, но не все пакеты смогли настроиться и сеть опять работала только по прямым адресам, а по именам ничего видеть не желала. Хотя программы nslookup и dig, спокойно могли видеть и говорить ip адреса прячущиеся за именами хостов. Из этогоможно было понять, что проблема не в глазах, а где-то в мозгах.

Воспользовавшись программой strace, вариант запуска: strace ping ya.ru удалось заметить, что система не может найти файл /lib/i386-linux-gnu/libnss_dns.so.2, точнее файл был, но он был ссылкой на пустое место, и пригнав сиё чудо с живой системы, больной прозрел.

Несмотря на такой успех, оставалась проблема с тем, что не все пакеты стоят, и основная проблема возникала при попытке выпонить конфигурирование. На что выдавались схожие ошибки:

iconv_open ("UTF-8//IGNORE", "ISO-8859-1"): Недопустимый аргумент или unsupported conversion from iso-8859-1 to utf-8

Было ясно, что скорее всего отстутствуют файлы с кодировками. Но попытки найти отвечающий за них пакет не увенчались успехом, поэтому пришлось применить уже упомяную тут программу strace, с параметром -o filename, в который и была выведена вся информация об обращениях к системе конфигуратором. Что показало что нету файлов в папке: /usr/lib/i386-linux-gnu-gconv куда они незамедлительно прибыли из живой системы и случилось чудо, к больному вернулся дар менять кодировки на лету, что позволило ему закончить настройку пакетов.

Надеюсь на этом большинство болячек было залечено и больного можно называть уже вполне здоровым, хотя шрамы могут ещё где-нибудь показаться. Для профилактики было применено ещё 2 метода проверки и лечения системы:

 
dpkg --get-selections "*" >myselections   # Запоминаем текущие пакеты 
debconf-get-selections > debconfsel.txt   # Запоминаем специфически настройки пакетов заданные пользователем 
 
dselect update                            # Обновляем информацию о пакетах 
debconf-set-selections < debconfsel.txt   # Восстанавливаем настройки 
dpkg --set-selections <myselections       # Возвращаем список установленных пакетов 
apt-get -u dselect-upgrade                # или dselect install, выполняем обновление отмеченных пакетов. 

И для полного слияния с системой:

 
dpkg-reconfigure -phigh -a                # Заставляем переконфигурировать все пакеты (операция может занять час и больше времени)

Надеюсь этот опыт пригодится в последующей жизни, а также поможет кому-то оживить упавшую из-за плохого диска систему.

 


Авторизация



Поиск на сайте или перейди на страницу поиска