среда, 21 июля 2010 г.

Nokia N900 - освобождаем место в rootfs

Каждый счастливый пользователь N900 рано или поздно становится несчастливым - потому что заканчивается место на rootfs. Из-за этого становится невозможным установить новое приложение или обновить систему.
Просьба прочитать всю инструкцию до конца перед тем как что-то делать, особенно примечания!



Очистка состоит из двух шагов. Итак, приступим.

Шаг №1 - для пользователей.
С помощью стандартного диспетчера приложений удалите неиспользуемые темы (да, они довольно много места занимают) и приложения.

Шаг №2 - для продвинутых.
Частенько в rootfs пишется всякая хрень, которая может спокойно лежать где-нибудь в другом месте. С помощью симлинков все это можно "перевезти", например, в /home.
Ладно, начнем. У вас должен быть установлен rootsh, чтобы иметь права суперпользователя. Установить можно с помощью стандартного диспетчера приложений - задайте в поиск "rootsh" (без кавычек)...
Каждое действие я подробно комментирую. Комментарий к каждой команде располагается сразу после нее. Команды выполняются в XTerminal'е. А вы как хотели?) графический интерфейс с бантиками-рюшечками-многократными предупреждениями "а уверены ли вы?.." оставим юзерам. Здесь, как и во всех linux-системах, предполагается, что если вы заходите в консоль с правами рута, то вы знаете что делаете.. или точно выполняете инструкции того, кто знает хД. Итак... приступаем!

sudo gainroot

получаем права рута. если кто не знает, что такое рут - либо поищите в инете, либо не беритесь за это дело.. хД

mkdir -p /home/usr/share/fonts

создаем директорию, куда будем перевозить неиспользуемые шрифты - арабский и китайский. Их можно удалить, но вдруг пригодится когда-нибудь.. поэтому оставим. Директории лучше называть так, как они названы в системе (на всякий случай, чтобы потом можно было все вернуть, если что-то пойдет не так. Тьфу-тьфу-тьфу =) )

mv /usr/share/fonts/arabic /home/usr/share/fonts && ln -s /home/usr/share/fonts/arabic /usr/share/fonts

перемещаем арабские шрифты и создаем симлинк на них. Теперь если будет обращение к /usr/share/fonts/arabic, то оно будет... перенаправлено на /home/usr/share/fonts/arabic. Если непонятно - почитайте в инете про символические ссылки в linux-системах.
ЗЫ: если кто не знает, символ & можно поставить, нажав клавишу Fn (в среднем ряду самая крайняя слева, с синей стрелочкой =) ) и Ctrl (прямо над Fn). Откроется окошко с дополнительными символами, там... найдете ;)

mv /usr/share/fonts/chinese /home/usr/share/fonts && ln -s /home/usr/share/fonts/chinese /usr/share/fonts

аналогичным образом перевозим китайские шрифты

mkdir -p /home/var/lib

создаем еще одну папку

mv /var/lib/apt /home/var/lib && ln -s /home/var/lib/apt /var/lib

перемещаем /var/lib/apt и создаем симлинк

mv /var/lib/dpkg /home/var/lib && ln -s /home/var/lib/dpkg /var/lib

аналогично предыдущему

mkdir -p /home/var/cache

делаем еще одну папку

mv /var/cache/apt /home/var/cache && ln -s /home/var/cache/apt /var/cache

опять перемещаем, все как и раньше

mkdir -p /home/usr/lib/locale

создаем очередную папку...

mv /usr/lib/locale/locale-archive /home/usr/lib/locale && ln -s /home/usr/lib/locale/locale-archive /usr/lib/locale

и снова перемещаем...

Кроме того, можно перенести темы. Вот так:

mv /usr/share/themes /home/usr/share && ln -s /home/usr/share/themes /usr/share

папку /home/usr/share мы уже создали, в самом начале.Но будьте готовы к тому, что после перезагрузки тема слетит на дефолтную! У меня, например, слетело все кроме обоев рабочего стола (логично, потому что они находятся в /home/user/.backgrounds).

Вот таким вот образом можно обойти малое количество места в rootfs. После проделанных процедур у меня освободилось около 60 мегабайт.

ПРИМЕЧАНИЯ. ПЕРЕД ТЕМ КАК ЧТО-ТО ДЕЛАТЬ, ЧИТАТЬ ОБЯЗАТЕЛЬНО!! Если вы не учтете некоторые моменты, вы можете испортить свое устройство до такой степени, что ему понадобится перепрошивка!
1. Конечно, руки чешутся перенести все это барахло не в /home, а в /home/user/MyDocs, ибо там аж целых 27 Гб (или около того), но есть одно "но" - раздел отформатирован в другой файловой системе. Из-за этого симлинки могут не работать, мол, файл недоступен. И как минимум вы лишитесь возможности устанавливать/удалять приложения. Проверено мной на собственном опыте. Поэтому - переносим все в /home.
2. Странно, но если сначала воспользоваться командой mv, а потом ln, а не mv ... && ln -s ..., то опять же файл счиается недоступным. Во всяком случае, у меня было так. Почему - хз. Вывод - делаем как написано, mv ... && ln -s ...
3. Что касается тем. Переносить их пока не рекомендую! Причина вот в чем. Лично у меня даже после применения моей любимой темы оформление поменялось лишь частично, например цветовая схема на экране ввода блок-кода осталась дефолтной. Возможно скоро я найду решение, в таком случае дополню статью, а пока - темы советую не трогать!
4. На всякий случай - инструкция "как вернуть все обратно" - на случай, если что-то вдруг не получится или будет работать неправильно. На этот раз комментарии писать не буду, скажу лишь, что с помощью этих команд мы удаляем созданные симлинки, перемещаем все обратно и удаляем ненужные больше папки из /home. Перед тем как что-то делать, получите права рута командой sudo gainroot. В первую очередь мы возвращаем обратно темы, если вы их не переносили, этого делать не нужно!

rm /usr/share/themes
mv /home/usr/share/themes /usr/share


Далее... если вы не переносили темы, начинайте отсюда.

rm /usr/lib/locale/locale-archive
mv /home/usr/lib/locale/locale-archive /usr/lib/locale

rm /var/cache/apt
mv /home/var/cache/apt /var/cache

rm /var/lib/dpkg
mv /home/var/lib/dpkg /var/lib

rm /var/lib/apt
mv /home/var/lib/apt /var/lib


Если вдруг понадобится вернуть на место арабские и китайские шрифты (ну, мало ли. Хотя и так должны работать.)

rm /usr/share/fonts/arabic
mv /home/usr/share/fonts/arabic /usr/share/fonts
rm /usr/share/fonts/chinese
mv /home/usr/share/fonts/chinese /usr/share/fonts


Чтобы удалить ненужные теперь директории из /home :

rm -r /home/usr
rm -r /home/var


Учтите, что удалять их можно только если они пусты! Узнать это можно с помощью команды ls -a, например

ls -a /home/usr

Либо переместиться в эту папку командой cd и применить ls -a :

cd /home/usr
ls -a


И в том, и в другом случае вы можете удалить папку только если команда ls -a покажет следующее:

. ..

С этим вроде все.
5. И наконец, самое главное.
Все описанные в статье действия были проделаны автором статьи над своей любимой Nokia N900. У автора все работает корректно, тьфу-тьфу-тьфу. (Исключая только описанную выше особенность с темами.)
Тем не менее, АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСТВЕННОСТИ В СЛУЧАЕ ПОВРЕЖДЕНИЯ ВАШЕГО УСТРОЙСТВА! Вы все делаете по собственному желанию, на свой страх и риск. Вы можете задавать здесь свои вопросы, но НИКАКИЕ ПРЕТЕНЗИИ НЕ ПРИНИМАЮТСЯ! Вы БЫЛИ ПРЕДУПРЕЖДЕНЫ о возможном неблагоприятном исходе. Вероятность такого исхода невелика, но ТЕМ НЕ МЕНЕЕ. ДЕЙСТВИЯ В КОНСОЛИ ОТ ИМЕНИ РУТА, ОСОБЕННО НЕ ОСОЗНАВАЕМЫЕ ПОЛЬЗОВАТЕЛЕМ, МОГУТ ПРИВЕСТИ К НЕОБХОДИМОСТИ ПЕРЕПРОШИВКИ! ПОЖАЛУЙСТА, БУДЬТЕ ВНИМАТЕЛЬНЫ ПРИ ВЫПОЛНЕНИИ ДАННЫХ ИНСТРУКЦИЙ! Повторюсь, я проделала все это над своим аппаратом, у меня все работает. Поэтому в случае чего - ВСЯ ОТВЕТСТВЕННОСТЬ ЛЕЖИТ ИСКЛЮЧИТЕЛЬНО НА ВАС. Я никакой ответственности не несу.


ВАЖНОЕ ДОПОЛНЕНИЕ!
Нормальная работа устройства нарушилась. Вот как:
Ставила gcc с помощью apt-get. Сначала вылетела ошибка касательно каталога /home/var/lib, была решена сменой прав доступа на 700. Под конец apt-get опять выдал ошибку, теперь уже относительно /home/var/cache. К сожалению, на этот каталог я права не поменяла... в итоге - аппарат потерял сеть, не видит симку вообще. Попыталась перезагрузить - уходит в бесконечный ребут. Походу, тут теперь только перепрошивка поможет... И кто знает, что случилось бы, если б на /home/var/cache были установлены права 700. Поэтому подумайте, нужно ли вам это ДО того как что-либо делать. Дело в том, что раньше все работало норм, в том числе и установка прог через диспетчер программ, обновление списка репозиториев и т.д. Короче, эта инструкция относится скорее к списку рискованных, так что решайте сами...

Первоначально статья была написана мной для Hack World. Оригинал статьи находится здесь.