UR4QTP: записная книжка 

На главную

МикроHowTo

Перенос системы на новый носитель

(Если на старом стало тесно…)

Предполагается, что загрузчиком служит GRUB.

  1. Подключить новый носитель. Пусть он будет, к примеру, /dev/sda.
  2. Если он не размечен, создаём и форматируем нужные разделы. К примеру, swap и reiserfs.
  3. Монтируем раздел, на который хотим перенести систему. Например, в /mnt.
  4. Командой

    #: cp -ax / /mnt

    переносим систему с корневого раздела / на смонтированный в /mnt новый носитель. С помощью указанных опций команда копирования понимает, что нужно переносить, а что – нет (к примеру, файлы устройств – не нужно).
  5. На новом носителе отредактировать файлы /boot/grub/menu.lst и /etc/fstab.
  6. Выключить, установить новый носитель на место старого, загрузиться с первого (загрузочного) дистрибутивного диска в режиме восстановления (rescue). Попробовать установить загрузчик. Если получилось, то процесс закончен. Можно переходить к проверке работы системы на новом диске.
  7. Если загрузчик установить не удалось («Загрузчик не может быть установлен, код ошибки 1» или при запуске в командной строке «grub: Error opening terminal: bterm»), можно скачать образ диска с SuperGrub здесь, записать его на диск, загрузиться с него и выбрать в меню GRUBLinux (AUTO). Загрузчик должен установиться, что можно проверить, перезагрузившись без CD.
  8. Если расположение разделов на новом носителе не совпадает с таковым на старом, то в /boot/grub/menu.lst в начале файла необходимо подправить комментарий, который не совсем комментарий, а также и образец для системы при обновлении. Там нужно описать разделы, как они расположены по-новому. Без этого действа ближайшее следующее обновление ядра поменяет menu.lst в соответствии со старыми комментариями, и загрузка с нового раздела опять может стать невозможной.


2010-03-13



(О новых реалиях и подробнее…)


С некоторых пор загрузчиком в Debian GNU/Linux служит GRUB 2. Настройка загрузчика должна производиться не изменением файла /boot/grub/menu.lst, ручные настройки нужно осуществлять в файле /etc/default/grub. После внесения изменений в конфигурационный файл нужно выполнить команду

#: update-grub

На основе /etc/default/grub будет сформирован файл /boot/grub/grub.cfg, который и будет использоваться загрузчиком в своей работе.

Какой загрузчик используется в системе, можно узнать командой

#: grub-install --version

Ещё «удобств» добавляет «внезапно» всплывший UUID. «Машина ехала, колёса тёрлися…»


Итак, пробуем жить в новых условиях…

  1. Командой

    #: fdisk -l

    смотрим, что у нас в наличии на текущий момент. У меня оказалось два раздела:

  2. Отключаем питание, присоединяем накопитель, на который планируется «переезд». Разумеется, после включения при загрузке компьютер должен его опознать, никаких конфликтов с уже установленным оборудованием быть не должно.
  3. Вновь командой

    #: fdisk -l

    смотрим, что у нас изменилось. Должен появиться второй накопитель:

    У меня он, как видно, получил имя /dev/sdb, разделов на нём нет.
  4. Для создания, редактирования или удаления разделов используем тот же fdisk:

    #: fdisk /dev/sdb

    Новый раздел создаётся командой n, которая предложит указать тип раздела (p – primary), номер раздела (1 – первый), начальный сектор раздела (можно с начала свободной области, как предлагается), конечный сектор раздела или его размер (я указал +36,3G, оставив свободный 1 ГБ для раздела подкачки). Тип раздела должен быть 83, если это не так, то нужно изменить тип командой t. Командой a раздел делается загрузочным.
  5. Аналогичным образом на оставшемся свободном месте создаётся раздел подкачки (swap, тип 82). Чтобы все изменения вступили в силу, нужно выполнить команду w.

    Таким образом, на новом накопителе таблица разделов повторяет таковую старого диска, что должно нам несколько облегчить «переезд». Но в принципе, это не обязательно, и новый диск может иметь другую разметку, просто потом придётся дольше повозиться с загрузчиком.
  6. На вновь созданном первом разделе нового накопителя нужно создать файловую систему:

    #: mkfs -t ext3 /dev/sdb1

    В выводе команды мы видим UUID, присвоенный файловой системе.
  7. Раздел подкачки:

    #: mkswap /dev/sdb2

    В выводе команды мы видим UUID, присвоенный области подкачки.
  8. Монтируем раздел, на который хотим перенести систему. Например, в /mnt:

    #: mount /dev/sdb1 /mnt

  9. Командой

    #: cp -ax / /mnt

    переносим систему с корневого раздела / на смонтированный в /mnt новый носитель. С помощью указанных опций команда копирования понимает, что нужно переносить, а что – нет (к примеру, файлы устройств – не нужно).
    Процедура может занять довольно длительное время, особенно если у вас какой-нибудь древний джабахан, как у меня :-).
  10. Во избежание многочисленных «радостей» в жизни нужно присвоить вновь созданной на новом диске файловой системе такой же UUID, какой был на старой. Наверняка есть способ заставить нормально работать загрузчик и с новым UUID, но, потратив несколько часов времени на разные эксперименты, я такой способ не нашёл. Поэтому:

    #: tune2fs /dev/sdb1 -U старый_UUID

    К этому моменту я уже в процессе экспериментов отсоединил старый диск и присоединил на его место новый. Загрузился с первого дистрибутивного диска в режиме восстановления системы (Advanced options → Rescue mode), новый диск (как и старый раньше, он теперь /dev/sda), вернее, его раздел (/dev/sda1) смонтировал в качестве корневой файловой системы и выполнил

    #: tune2fs /dev/sda1 -U c960cb38-1f7a-433b-9e86-f01ad162485e

    В /etc/fstab внёс исправленный UUID для раздела подкачки:

    С помощью tune2fs изменить UUID у раздела подкачки нельзя, на загрузку системы этот раздел не влияет, поэтому оказалось проще внести изменения в /etc/fstab.
  11. В режиме восстановления системы выбираем установку загрузчика, указываем раздел (/dev/sda). Перезагружаем компьютер, вынув дистрибутивный диск. Всё должно работать. Возможно, переустановка загрузчика и не нужна, но я забыл попробовать.

2015-11-14…2015-11-15


МикроHowTo

На главную

 UR4QTP: записная книжка