пятница, 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 система, которая загружается, не обязательна. Можно просто ее склонировать на карточку, как это Вы уже делали.

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

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

среда, 7 января 2009 г.

Если нет нормального инета, но Вам нужно поставить свежие пакеты

Текст ниже может быть Вам интересен, если Вам приходится ставить *nix-системы без нормального интернет-канала.



Что делать, если Вы живете в регионах, и Ваш интернет обходится Вам,
например, 3р за мегабайт?
Или, Вы живете во вполне благополучной/ом, в плане сетевых технологий
Москве/в Питере, но на Вашей работе лимитированный и дорогостоящий
трафик(до сих пор частое явление)?
Что делать, если нужно поставить *nix систему с большим числом
различных программ?

Можно предварительно выкачать дома/переписать у друзей с анлимом/достать
где-то еще Debian со всеми его многочисленными дисками, но при всем моем
уважении к этой системе, даже любви(если бы не было RH, я бы сидела на Debian,
и люблю его исспользовать, когда по каким-то причинам не подходит CentOS),
не всегда устраивает тухлый софт стабильного релиза(и на сервере не всегда),
да и с нормальным инетом, не всегда возможно использование Debian backports.
Кроме того, ограничивать себя только Debian не всегда разумно и удобно.
Даже если Вы используете только Debian, выкачав все диски, таки удобно иметь
возможность поставить и пакеты из backports.

Так можно ли как-нибудь выкрутиться из этой ситуации, или *nix системы слишком
сильно привязаны ко всемирной сети?
Ответ: да, можно, только решение получается не очень удобным и красивым:


Можно выкачать необходимые пакеты на машине с дешевым инетом и скормить пакеты машине без нормального инета.

На opennet'е было интересное обсуждение, результатом которого стала совместно написанная инструкция

Можно так же посмотреть новость, которую обсуждали, возможно, для десктопа использование программки из новости удобнее всего.