пятница, 9 января 2009 г.

Реанимация системы, установленной на карточку для n800/n810

Если у Вас есть девайс с ОС maemo, тот же Nokia n800, Вы установили систему на карточку по такой, например инструкции:

тЫц

и у Вас однажды упала система (на карточке), главное, не расстраиваться и не паниковать!
Возможно, еще не все потеряно!
Сегодня я в третий раз подняла ОС. Прошлые два раза были связаны с проблемами с нежурналируемой ext2, сегодня я случайно закрыла терминал во время apt-get dist-upgrade, в результате получила и крах файловой системы и самой ОС (наверное, уже удалилось что-то важное, а замена не поставилась).

Внимание! все, что Вы будете делать далее, сообразуясь с инструкцией в этом блоге, Вы будете делать сами, на свой страх и риск! В этой статье могут содержаться неточности и даже ошибки! Пожалуйста, прежде чем сделать хоть что-то, думайте головой, меньше всего я бы хотела, что бы из-за какой-то ошибке в статье Вы окончательно убили свою ОС/данные/девайс.
Любые уточнения принимаются и приветствуются.


1. Устраняем проблемы в файловой системе.

Что, как правило происходит при крахе ext2, и что можно сделать?
Берем нашу карточку, вставляем в любую Linux станцию, умеющую ext2, с установленным fsck.
Лучше, конечно, десктопный Linux. Но подойдет Live-CD/Live-USB система, понятно, в компьютере нужен картридер.

Перед тем, как делать что-то с карточкой, обязательно сделайте ее образ в файл в Вашей домашней директории:

dd if=/dev/sdb2 of=~/maemo_backup.iso

Вместо sdb2 подставьте название корневого раздела на карточке. Узнать название раздела можно с помощью команды, отданной от root:

fdisk -l /dev/sd*

Команда покажет информацию по всем Вашим дискам, блочное имя которых начинается с sd. По размеру диска можно найти необходимый раздел на карточке.

Образ лучше делать с отмонтированного раздела. проверить, какие разделы смонтированы, можно с помощью команды mount

Обязательно проверьте, что образ монтируется(если крах ФС на карточке был на столько страшный, что она не монтируется, образ тоже монтироваться не будет)!

mount -o ~/maemo_backup.iso ~/tmp/

Каталог ~/tmp должен существовать!

Запускаем проверку(ВСЕГДА ОБЯЗАТЕЛЬНО ОТМОНТИРУЙТЕ ФАЙЛОВУЮ СИСТЕМУ ПРИ ВОССТАНОВЛЕНИИ С ПОМОЩЬЮ fsck!!! Проверить смонтированные ФС можно с помощью команды mount без ключей и параметров):

fsck.ext2 -p /dev/sdb2

здесь ключ -p - автоматический режим

У меня dual-boot на N800 с системой, установленной на internal flash, и там тоже есть fsck.ext2, но как показывает практика, и чтение тематических форумов/блогов, он там какой-то не такой. Лучше юзать fsck от десктопного Linux. К предустановленной системе мы еще вернемся, и используем ее как repair-cd для нормальной *nix системы :)

repair должен пройти успешно.

После проверки советую запустить повторный repair, что бы убедиться, что все ОК, с ключами -fp. Ключ -f заставит выполнить повторную проверку в любом случае:

fsck.ext2 -pf /dev/sdb2
/dev/sdb2: 36018/221312 files (1.4% non-contiguous), 219411/442400 blocks


Даже если система теперь и считает, что с файловой системой все хорошо.
Дальше читаем часть 2

В некоторых случаях автоматический repair не запускается. В этом случае, так же не стоит отчаиваться (все три случая, из которых я успешно вылезла, были именно такими, были, кажется, еще два-три случая, когда помогал fsck)

Если автоматический repair не помог, скрещиваем пальцы, еще раз пробуем смонтировать карточку(или образ), так как последствия дальнейшего уже могут быть необратимыми с большой вероятностью: все это чревато потерей данных. Посмотрите часть 3, как Вы можете вытащить данные со смонтированной ФС.

И так, что теперь делать? Можно запустить fsck с ключем -y, или ключами -fy. В этом случае, fsck сам ответит y на все вопросы, в которых не может разобраться сам.
Не советую интерактивный режим, так как fsck может задать не одну тысячу вопросов, и вчитываться в них во все практически невозможно.
Если у Вас было что-то архиценное на карточке, Вы можете повторно запустить интерактивную проверку уже с файлом образа (Вы же его сохранили, и проверили, что он сохранился верно :))? )
и попробовать вдумчиво ответить на тысячу-другую вопросов :)

Когда repair успешно закончиться (у меня, тьфу-тьфу, еще ни разу не было, что бы были проблемы с суперблоком или чем-то таким, совсем необратимым), попробуйте смонтировать карточку.
Если на карточке ничего не будет, опять же не отчаивайтесь (у меня было именно так целых три раза), а загляните в lost+found. fsck должен был накидать туда все файлы и директории, пути к которым он восстановить не смог. lost+found может выглядеть как-то так:

[root@desktop lost+found]# ls
#10001 #10581 #11195 #13399 #1446 #1550 #189698 #222 #295 #3703 #4502 #504 #5893 #6374 #6910 #7579 #8184 #9131


Что делать дальше? Больше я не могу дать каких-либо пошаговых инструкций. Вы можете только попробовать угадать, что было в директории раньше (у меня получалось:)) ),
например, вот так должна выглядеть /usr:

bin etc games include lib libexec local mysql-test sbin share src var X11R6

В крайнем случае, Вы всегда можете сравнить содержимое подозрительной директории с той системой, что у Вас на internal flash

Должны быть следующие директории на карточке:

bin boot cdrom dev etc floppy home lib lost+found media mnt opt proc root sbin srv sys tmp usr var

Директории:

boot, cdrom, floppy, mnt, opt, proc, srv, sys, tmp

Могут быть пусты(они просто должны быть в ОС, она их наполнит, в крайнем случае, сама содержимым, как /tmp и /proc). Возможно, какие-то из директорий maemo может создать и сама (не проверяла)
После перемещения файлов и директорий на их законные места, попробуйте еще раз запустить fsck, и, если все ОК, читайте часть 2.

Часть II.

Попробуйте загрузиться с флэшки.
Система либо загрузиться, либо нет. Если не загрузиться (как у меня сегодня), опять же, не отчаивайтесь! Возможно, Вы найдете решение проблемы ниже.

Использование предустановленной системы на internal flash как repair-системы

Во-первых, необходимо подгрузить модули файловой системы ext2, скорей всего, помогут такие команды (для Diablo и Chinook):

/sbin/insmod /mnt/initfs/lib/modules/2.6.21-omap1/mbcache.ko
/sbin/insmod /mnt/initfs/lib/modules/2.6.21-omap1/ext2.ko


Потом нужно смонтировать карточку:

/bin/mount /dev/mmcblk0p2 /mnt/tmp

Директория /mnt/tmp должна существовать. Создать ее можно командой:

mkdir /mnt/tmp

Команды нужно отдавать под root-ом, надеюсь, он у Вас сохранился, после переноса ОС на карточку.

После монтирования карты, нужно в нее за-chroot'ся, как буд-то при восстановлении на "настоящем компьютере" с "настоящей" Repair-OS:

/home/user # chroot /mnt/tmp


BusyBox v1.6.1 (2008-09-18 09:43:17 EEST) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/ #


Дальнейшие Ваши действия уже не могут быть описаны в данной статье, Вам нужно воспользоваться поисковыми системами и почитать про восстановление debian-систем.
Мне помогла (возможно, поможет и Вам) переконфигурация всех пакетов (видимо, я закрыла терминал, когда было не сконфигурировано что-то важное, после чего все и упало):

dpkg --configure -a


Часть III. Если ничего не получилось.

Если все-таки ничего не получилось, попробуйте сделать то же самое еще раз. Образ карточки можно взять из сохраненного Вами ранее(Вы же сохранили образ:)?), и записать его с помощью dd:

dd if=~/maemo_backup.iso of=/dev/sdb2

Возможно, Вы что-то не то сделали, например, после ручного repair и раскидывания директорий и файлов на свои законные места.

Если уж совсем ничего не получается, остаются только традиционные методы, например, попробовать восстановиться из старого бэкапа ОС (Вы же знаете, что у maemo есть возможность создавать бэакпы? Если да, и у Вас есть свежий бэкап, хочу Вас обрадовать: Вы зря читали эту статью и мучались с восстановлением ОС:)) ).

В крайнем случае, сохраняем все, что только можно, если карточка монтируется (особенно, из /home/user и /etc/), что бы потом применить эти настройки к заново установленной ОС.
Советую почитать форумы/блоги на предмет того, каким именно образом можно, например, сохранить список пакетов и установить их заново.

Перепрошивка, если у Вас есть установленная на Internal flash система, которая загружается, не обязательна. Можно просто ее склонировать на карточку, как это Вы уже делали.

З.Ы. Интересно, можно ли на карточку все-таки поставить какую-нибудь журналируемую ФС?
З.З.Ы. Если у Вас нет ничего особенно критичного из настроек ОС, лучше бросьте нафик все, и установите все заново, если чувствуете, что зависли.
Лучше обратить внимание на близких людей, чем возиться неделю с тупой линуксовой железкой :))

Надеюсь, что кому-то эта статья помогла...

Комментариев нет: