FreeBSD: перенос ОС на другой жёсткий диск

Данная статья описывает процесс переноса установленной ОС FreeBSD с одного жёсткого диска на другой. Так же изложенный материал можно использовать для создания полного бэкапа системы, но лучше для этого использовать другие средства, о которых, возможно, я расскажу в следующих постах.

Итак, второй жёсткий диск уже подключен, система работает.

Переходим в папку /mnt, создаём в ней папку backup и там 3 папки — для корневого каталога / — root, для /usr, /var и /tmp — usr, var и tmp соответственно.

Переходим в режим суперпользователя. На всякий случай устанавливаем флаг kern.geom.debugflags в значение 16, это разрешит запись в таблицу партиций при работающей системе.

Затем запускаем sysinstall И выбираем пункт «Configure», далее «Fdisk». Выбираем из списка второй хард, у меня это «ad2». Удаляем все существующие слайсы (кнопка «D») и жмём «A» для выделения всего пространства под freebsd. Выделяем появившуюся строку и жмём «S», тем самым делаем раздел загрузочным. Жмём «W» для записи изменений, отвечаем на вопрос «Yes», выбираем установку без менеджера загрузок «Standard» (если он вам не требуется). Жмём «Q» для выхода.

Переходим к пункту Label. Здесь придётся немного схитрить и сделать всё в 2 этапа из-за некоторых глюков. Чтобы будущему корневому разделу присвоить букву «a» — надо указать точку монтирования обязательно «/», что и делаем. Затем меняем её (нажав букву «M») на «/mnt/backup/root» и убираем SoftUpdates (кнопка «S» — для корневого раздела не рекомендуется включать), далее записываем изменения кнопкой «W». Выходим (кнопка «Q») и запускаем заново sysinstall (если попытаться создать сразу все разделы, то почему-то иногда может возникнуть сообщение об ошибке). Переходим опять к пункту Label и продолжаем разбиение (корневой раздел создавать заново и монтировать не надо) не забывая менять точку монтирования. Сохраняем изменения и выходим из инсталлятора.

Если предыдущие танцы с бубном не помогли и по каким-то причинам sysinstall говорит Вам, что нет такого устройства как /dev/ad2s1* или нет такого файла /mnt/backup/*, то поробоуйте запустить команду «disklabel -e /dev/ad2s1» и посмотреть появились ли там записи якобы не созданных разделов. Скорее всего появились, тогда перезагружаем систему и запускаем sysinstall — теперь он их должен увидеть.

Результат выполнения disklabel -e /dev/ad2s1:

Если Вы перезагружались, то следует подмонтировать созданные до ребута разделы (у меня был не подмонтирован только корневой раздел):

Перезагружаем систему и переходим в однопользовательский режим (при загрузке выбираем 4й пункт). Монтируем разделы командой «mount -a», монтируем созданные разделы командной:

Теперь выполняем следующую последовательность команд:

Команда pax предназначена для записи и чтения файловых архивов, а так же для копирования директорий. Параметр -p задаёт некоторые опции копирование. В частности, «e» означает «сохранять всё» (ID пользователя, группы). Флаг -X означает что при копировании указанной папки не директории имеющие разные идентификаторы устройств (device ID) не будут игнорироваться. Флаг -rw (использованный формат: pax -r -w [file …] directory) означает чтение из file и запись их в directory.

Выполняем команду mount и смотрим различия в метках примонтированных устройств:

Если буквы совпадают у разных устройств, то всё в порядке, пропускаем следующий шаг. Если нет, как в моём случае — например, устройство, подмонтированое как /tmp, имеет букву «e» (ad0s1e) на старом винчестере, а на новом — «d» (ad2s1d), то у нас есть два пути. Первый — редактировать /mnt/backup/root/etc/fstab и менять буквы у монтируемых устройств (Внимание! Цифры менять не стоит, т.к. винчестер потом будет подключен вместо старого). Второй — выполнить команду:

И отредактировать буквы у самих устройств. Лично я рекомендую Вам 1й способ, т.к. он проще и, имхо, правильней (и не придётся возиться с vi ;-) ).

Мой новый fstab выглядит так:

Свопник у меня получил букву «b». Это можно узнать выполнив уже знакомую команду «disklabel -e /dev/ad2s1».

И так, теперь последний этап — перезагружаемся и переставляем новый винчестер на место старого и пробуем запустить. Если система не запускается, то скорей всего Вы что-то напутали в файле fstab, попробуйте отредактировать его заново.

Чтобы не переставлять винчестеры заново можно попробовать указать вручную устройство корневого каталога и перемонтировать для записи командой «mount -uw /dev/ad*s1* /» (по умолчанию — только чтение), затем монтируем раздел на /usr и редактируем в любимом редакторе fstab. Я столкнулся с такой проблемой из-за того, что сразу после того, как я перекинул систему на другой винт и подключил его на место старого — у меня сдохла шина и пришлось подключать винт как ad2, а в fstab’е он уже был прописан как ad0.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: