30 марта 2010 г.

Не монтируется корень

Если Вы читали мой прошлый пост, то в конце я предложил перезагрузиться смело, если у Вас 1 винт, или же их несколько, но они все системы IDE или SATA. В моей системе есть и такие и такие жесткие диски. Поэтому возникает маленькая проблемка, решение которой я Вам сейчас и расскажу.

В Archlinux используется UDEV, который занимается определением устройств. Если в системе каких-то устройств несколько, то при загрузке они могут поменяться местами, т.е изменятся символьные представления в каталоге /dev. Это не критично, если попутанные устройства не относятся к загрузке. Однако, в случае с винтами, лучше сделать некоторые телодвижения.

Если оставить все как есть, то умный инсталятор Arch пропишет в /etc/fstab все разделы по символьным устройствам. К примеру, у нас вышла такая конфигурация
/dev/sda1 /boot ext2 default 0 0
/dev/sda2 swap swap default 0 0
/dev/sda3 / ext3 default 0 1
/dev/sda5 /home ext3 default 0 1

Однако при загрузке, udev может спутать винт /dev/sda с другим, поэтому система может посчитать, что Ваш корень находится на другом винте, например, /dev/sdb. Такое часто происходит, потому нужно позаботиться о правильном указании еще на стадии установки. В противном случае придется вручную монтировать корень, или перезагружаться несколько раз, чтобы система угадала, где корень.

Чтобы избежать таких последствий, нужно прямо в /dev/fstab прописать монтирование дисков по UUID. Это уникальный идентификатор для каждого диска. Тут уж никак не перепутаешь. По первой не знал как это сделать удобно в консоли и переписывал с другого виртуального терминала длиннющий UUID по буквам. Но нет ничего невозможного.

Сначала нужно примонтировать изготовленный в ходе инсталяции корневой раздел.(в дальнейшем считаем, что систему поставили на sda)
#mount /dev/sda3 /mnt
Даем команду blkid
Она выведет сведения обо всех установленных винтах в системе. Но нам то нужно об одном. Потому:
#blkid /dev/sda1
/dev/sda1: LABEL="filearchive" UUID="9eb6a07d-90e6-47c9-8b31-34c17f058be7" TYPE="ext3"
#blkid /dev/sda1 >> /mnt/etc/fstab
Повторить для всех винтов.

В итоге, в файле fstab новой системы у нас окажутся UUID всех используемых разделов жесткого диска. В принципе, для /boot не критично, он монтируется до запуска UDEV. Но для пущей важности лучше указать и его.

Из полученых строчек в fstab нужно взять UUIDы, и подставить их на нужное место. Копирование в nano Контрл-U Контрол-K.
/dev/disk/by-uuid/9eb6a07d-90e6-47c9-8b31-34c17f058be7 /boot ext2 default 0 0
Вот такое дело должно получиться в итоге.

1 комментарий:

  1. Лично я, как начинающий web-мастер, не мог справится с файлами в протоколе FTP, перерыл кучу сайтов на эту тематику, нашел, на мой взгляд наиболее простое решение на таком сайте.

    ОтветитьУдалить