LINUX.ORG.RU
ФорумAdmin

Установить загрузчик на клонированную систему?

 , , , ,


0

1

Всем привет. Копаю тему клонирования «живой» системы (Debian в qemu с BIOS).
* нашёл двайвер dattobd, позволяющий создавать снапшоты разделов;
* с помощью sfdisk точно переносится структура разделов;
* dd клонирует разделы посекторно (на момент создания снапшота) на новые разделы;

Осталась проблема - загрузчик. Копирование MBR с одного диска на другой делает GRUB неработоспособным: переводит в rescure-режим.
Хотел сделать то же самое на EFI-системе, но dattobd (похоже, но не точно) не работает на ней.

Можно ли установить/восстановить/корректно перенести загрузчик на выключенную систему без chroot в неё?
Может быть, есть альтернативы GRUB, которые позволяют это делать?...

Нашёл решение:
Вариант 1: установка GRUB на sda1
Вариант 2: syslinux
В обоих случаях нужно ещё слонировать первые 440 байт MBR.



Последнее исправление: An12 (всего исправлений: 3)

dd клонирует их содержимое…

Во-первых, dd клонирует всё, а не «содержимое».

Во-вторых, что мешает добавить сюда ещё MBR. Глядишь, тогда-бы не понадобился твой второй пункт.

А если ЕФИ-загрузчик, то он переносится простым копированием файлов.

andytux ★★★★★
()

Можно ли установить/восстановить/корректно перенести загрузчик на выключенную систему без chroot в неё?

  1. подключить диск к другой включенной системе и настроить MBR через grub явным образом указывая /boot раздел и устройство для MBR
  2. п.1 но c liveusb
MirandaUser2
()

Копирование MBR с одного диска на другой делает GRUB неработоспособным: переводит в rescure-режим.

в MBR прописывается расположение grub на /boot разделе. Если ФС на /boot поменялась, то может понадобится перезапись MBR.

MirandaUser2
()

сколь помню загрузчик с современных фс не влезает в 446 байт кода MBR. поэтому делают 2 фазную загрузку где в 446 байт впихивают мелки загрзчик первой фазы, а сразу после первого сектора оставляют MBR gap пустое место для загрузчика второй фазы.
т.е. надо копировать не только MBR-сектор но и содержимое MBR gap.

имхо на клонированной системе лучше при форматировании оставлять в начале пустое место под MBR gap и пинать GRUB из клонированной системы на прописывание себя в загрузку.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)

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

sda - диск исходной системы
sdb - целевой

Действия следующие:

0) в исходной системе удаляю GRUB из MBR, устанавливаю на его место syslinux (extlinux). Другой вариант - установить GRUB на sda1. В обоих случаях раздел sda1 был помечен как активный (влияет это на загрузку или нет, не проверял);

1) снимаю инфу о разделах на /dev/sda:
sfdisk -d /dev/sda > sda.txt

2) восстанавливаю эти разделы на /dev/sdb:
sfdisk /dev/sdb < sda.txt

3) посекторно копирую все разделы c данными из /dev/sda на /dev/sdb (ПСЕВДОКОД, на самом деле, копировал из снапшотов блочных устройств, созданных через dattobd):

for i in 1 2 5; do
dd if=/dev/sda$i of=/dev/sdb$i bs=1M
done

4) создаю на /dev/sdb SWAP-раздел с тем же UUID, что на /dev/sda

5) клонирую первые 440 байт из sda на sdb:
dd if=/dev/sda bs=440 of=/dev/sdb count=1

Выключаю виртуалку, гружу её со второго диска.

An12
() автор топика
Последнее исправление: An12 (всего исправлений: 1)