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

27

У меня есть два диска на моем компьютере, которые имеют следующую конфигурацию:

Drive 1: 160GB, /home
Drive 2: 40GB, /boot and /

К сожалению, диск 2 кажется умирающим, потому что попытка записи на него приводит к ошибкам, а проверка настроек SMART показывает печальное положение дел.

У меня достаточно места на диске 1, поэтому я хотел бы переместить на него разделы / и / boot, удалить диск 2 из системы, заменить диск 2 новым диском, а затем развернуть процесс.

Я полагаю, мне нужно обновить grub, и мне нужно кое-что переделать, но я довольно озадачен, как именно это сделать. Так как это мой главный компьютер, я хочу быть осторожным, чтобы не испортить вещи, чтобы я не мог загрузиться.

mlissner
источник
Это именно то, что я должен был сделать. Я написал блог с подробными инструкциями о том, как переместить корневой раздел / в / home.
Лукас

Ответы:

29

Вам нужно будет загрузиться с живого компакт-диска. Добавьте разделы для них на диск 1, скопируйте все содержимое, а затем используйте sudo blkidдля получения UUID каждого раздела. На новом диске / на диске 1 отредактируйте / etc / fstab, чтобы использовать новые UUID, которые вы только что искали.

Обновление GRUB зависит от того, является ли это GRUB1 или GRUB2. Если GRUB1, вам нужно отредактировать /boot/grub/device.map

Если GRUB2, я думаю, вам нужно смонтировать разделы так, как они будут в реальной ситуации. Например:

sudo mkdir /media/root
sudo mount /dev/sda1 /media/root
sudo mount /dev/sda2 /media/root/boot
sudo mount /dev/sda3 /media/root/home

(Конечно, заполняя любые разделы, в которые вы копировали данные)

Затем свяжите mount / proc и / dev в / media / root:

sudo mount -B /proc /media/root/proc
sudo mount -B /dev /media/root/dev
sudo mount -B /sys /media/root/sys

Теперь подключитесь к диску, чтобы вы могли принудительно обновить GRUB в соответствии с новым макетом:

sudo chroot /media/root
sudo update-grub

Вторая команда подаст одну жалобу (хотя я забыл, что это такое ...), но это нормально игнорировать.

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

MACO
источник
3
Для всех, кто просматривает это в наши дни, это не относится к настройкам EFI. Вам необходимо смонтировать /media/root/boot/efi, между прочим.
wjandrea
1
Мне нужно было sudo grub-install /dev/sdaдоsudo update-grub
Уильям Мортада
5

Если вы замените диск сразу же, вы можете использовать его dd(пробовал на моем сервере несколько месяцев назад, и он работал как чудо).

Вам также понадобится загрузочный CD.

  1. Запустить загрузочный CD
  2. Монтировать только диск 1
  3. Запустите dd if=/dev/sdb1 of=/media/drive1/backuproot.img- sdb1 является вашим /разделом root ( ). Это сохранит весь раздел в файле.
    • то же самое для /boot
  4. Выключите, замените диск, включите
  5. Беги dd if=/media/drive1/backuproot.img of=/dev/sdb1- пиши обратно.
    • то же самое для /boot

Выше создаст 2 раздела с точно таким же размером, как и раньше. Возможно, вам придется настроить grub (проверьте пост macos).

Если вы хотите изменить размеры своих разделов (как я сделал):

  1. Создайте 2 раздела на новом диске (для /и /boot; размер, что вы хотите)
  2. Смонтируйте образ резервной копии: mount /media/drive1/backuproot.img /media/backuproot/
  3. Смонтируйте пустой /раздел:mount /dev/sdb1 /media/sdb1/
  4. Скопируйте его содержимое в новый раздел (я не уверен насчет этой команды, очень важно сохранить право собственности, cp -Rне буду этого делать!) cp -R --preserve=all /media/backuproot/* /media/sdb1
    • то же самое для /boot/

Это должно сделать это.

sBlatt
источник
Оказывается, новый диск «40 ГБ», который я пытаюсь установить, меньше моего текущего диска «40 ГБ». Я подключил их обоих и загрузился в liveCD. Есть ли простой способ просто перейти от старого к новому и назвать это сделкой?
mlissner
На самом деле, я разобрался с этим вопросом. Слишком большой раздел был разделом ext4, поэтому я загрузил liveCD и использовал gparted, чтобы немного его сжать.
mlissner
4

Мое окончательное решение для этого было сочетание нескольких методов:

  1. Я подключил умирающий диск и его замену к компьютеру одновременно.
  2. Новый диск был меньше старого, поэтому я сократил разделы на старом с помощью GParted.
  3. После этого я скопировал разделы на старый диск и вставил их на новый (также используя GParted).
  4. Затем я добавил флаг загрузки в правильный раздел на новом диске, чтобы он фактически был зеркалом старого диска.

Это все работало хорошо, но мне нужно было обновить grub2 согласно инструкциям здесь .

После всего этого дела вроде бы работают.

mlissner
источник