йаУзелок

Добрые люди подсказали, что "No space left on device" означает ещё и то, что кончились т.н. айНоды (iNodes). В них хранится какая-то системная информация файловой системы. К сожалению, это можно исправить только пересозданием файловой системы. Чем и придётся заняться. Копируем всю файловую систему на внешний диск. Причём с сохранением всех прав на файлы и без символьных ссылок (например /usr/portage/distfiles и /var/tmp) и /mnt/exthdd, которые сами ссылаются на внешний диск. Поищем нужные опции программы cp:
man cp
Нам нужны:

-p Сохраняет исходные параметры файла, такие как владелец, группа, права доступа (включая suid и sgid биты), время последней модификации и время последнего доступа к файлу. В случае, если установка владельца или группы приводит к ошибке, suid и sgid биты сбрасываются. (Заметим, что впоследствии исходный файл и его копия могут иметь разное время последнего доступа, так как операция копирования является доступом к исходному файлу).

-R Копировать каталоги рекурсивно; правильно обрабатывать ситуации, когда попадаются объекты, не являющиеся обычными файлами или каталогами. (Так, копией FIFO или специального файла будет также являться FIFO или специальный файл).

-P Не разименовывает никакие символьные ссылки, ни заданные в списке параметров, ни встретившиеся во время рекурсивного копирования. Просто копирует их как символьные ссылки.

-v Чтоб всё-всё видеть))

Очевидно также, что не нужно копировать /proc и /dev.

Поэтому попробуем так:

cp /{bin,boot,etc,home,lib,opt,root,sbin,sys,usr,var} -RPpv /mnt/exthdd/rover

Я так понимаю, /dev, /proc, /tmp создадутся автоматически. Пишем:

df -i

Сейчас на корневом разделе 198400 айнодов. С таким числом заполняется 56% диска. Значит придётся увеличить их число раза в 2 при создании новой файловой системы. Хотя, почему обязательно Ext3? Попробую-ка создать ReiserFS. В ней, говорят айНоды динамически создаются. И ориентация на кучу мелких файлов не помешает - дерево портежей ведь и есть большая куча мелких файлов.

Загружаемся с Minimal Live CD, монтируем внешний диск, создаём новую ReiserFS на жёстком диске и подключаем его.

mkdir /mnt/exthdd
mount /dev/sda1 /mnt/exthdd
mkreiserfs /dev/hda1
mount /dev/hda1 /mnt/gentoo
cd /mnt/exthdd/rover
cp * -RPpv /mnt/gentoo

Попробуем загрузиться. А поддержку-то в ядре выключили! Рэйзер не заработает((
Снова грузимся с CD и делаем:
mount /dev/hda1 /mnt/gentoo
mount -t proc none /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
chroot /mnt/gentoo /bin/bash
mount /dev/sda1 /mnt/exthdd
env-update
source /etc/profile

Теперь делаем дело. Точнее все дела:
grub //Заново установим GRUB
emerge reiserfsprogs
cd /usr/src/linux
make menuconfig
make clean && make && make modules_install
mv /boot/linux-2.6.25-gentoo-r7 /boot/linux-2.6.25-gentoo-r7.old
cp ./arch/x86/boot/bzImage /boot/linux-2.6.25-gentoo-r7

Ядро чистилось/собиралось/ставилось ровно 1 час.
Ну что, ребут?
reboot

Так вот. До конца опять не загрузилась. Хоть файловую систему теперь видит. Надо создать в папке /dev пару ссылок на устройства, без которых консоь не запустится:

mknod -m 660 console c 5 1
mknod -m 660 null c 1 3

Так должно получиться. Блин, говорит, что фаловая система не ext2! Ясен пень! А он её e2fsck-ом проверяет! Меняем fstab...

"Ура! Заработало!" (с) Кот Матроскин

Кстати, теперь занято не 56%, а всего 40%. Ине определённо нравится эта файловая система! Пытаемся снова установить Иксы. Осталось всего 40 пакетов.

Ну всё, спокойной ночи.





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