Debian / Grub2: Переміщення кореневого розділу на новий диск?


30

Хтось має пропозицію, як перенести кореневий розділ на новий диск і встановити grub2 для завантаження на цьому диску? Здається, мені не пощастило вказувати grub-mkconfig, що саме я хочу зробити (наприклад, chroot'int у мій новий корінь просто заплутує всі сценарії).

Передумови: Я запускаю Debian Squeeze в безголовому NAS з низькою потужністю. Моя поточна настройка /на sda0і /bootна sde0(з CF - карти): мені потрібен окремий , /bootтому що sd[a-d]потрібно робити з уповільненим спіном вгору. Тепер я знайшов старий 2,5-дюймовий диск IDE, який можна використовувати як /включення, /bootщоб дозволити мені відкручувати всі великі диски вниз.

Що я спробував В основному я пішов

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot

Потім я спробував

chroot /mnt/newroot
update-grub

Але це не вдалося, коли граб запитав, чи встановлено root. Тоді я зробив напівсердечну спробу налаштування /mnt/newroot/grub/grub.cfgпошуку зображення ядра sdf5, після чого a grub-install --root-directory=/mnt/newroot /dev/sdf. Але це щойно приземлило мене підказкою на рятування, коли я спробував завантажитися sdf.

Мій план резервного копіювання - просто перевстановити, тому питання про бонус (для цього немає жодних галочок): Що мені робити, щоб конфігурація lvm2 та mdadm була налаштована? Чи все це зберігається у файлових системах (і це буде автоматично виявлено), чи мені потрібно брати його самостійно?

Рішення (дякую Мацею П'єхотці): Як зазначає Мацей, мені потрібно належним chroot, щоб усі інструменти для шрифту працювали. Для довідки, ось як я це зробив:

janus@nasguld:/mnt/newroot$ sudo cp -ax / /mnt/newroot
janus@nasguld:/mnt/newroot$ sudo cp -ax /boot /mnt/newroot

Усі файли тепер скопійовані (див. Тут для обговорення стратегій копіювання). Виправте новий, etc/fstabщоб вказати на новий корінь:

janus@nasguld:/mnt/newroot$ diff -u etc/fstab.old  etc/fstab
    -UUID=399b6a6d-c067-4caf-bb3e-85317d66cf46 /     ext3 errors=remount-ro         0 1
    -UUID=b394b614-a977-4860-bbd5-7862d2b7e02a /boot ext3 defaults                  0 2
    +UUID=b9d62595-e95c-45b1-8a46-2c0b37fcf153 /     ext3 noatime,errors=remount-ro 0 1

І, нарешті, встановити dev, sysі procдо нового корені і Chroot:

janus@nasguld:/mnt/newroot$ sudo mount -o bind /dev /mnt/newroot/dev
janus@nasguld:/mnt/newroot$ sudo mount -t proc none  /mnt/newroot/proc
janus@nasguld:/mnt/newroot$ sudo mount -t sysfs none /mnt/newroot/sys
janus@nasguld:/mnt/newroot$ sudo parted /dev/sdb set 5 boot on 
janus@nasguld:/mnt/newroot$ sudo chroot .

Зараз ми вписані в майбутній корінь саме так, як це буде виглядати. За словами Maciej, було б нормально просто зателефонувати grub-install, але я update-grubпершим ознайомився зі сформованим /boot/grub/grub.cfgперед встановленням завантажувача. Я не впевнений, що він буде автоматично оновлений?

root@nasguld:/# update-grub
root@nasguld:/# grub-install /dev/sdb

Опублікуйте вміст /etc/default/grubта точну стенограму від update-grub.
Жил "ТАК - перестань бути злим"

(Думки після додавання розчину): Це може бути на самому ділі , що проблема полягала в тому , що я не оновлював /etc/fstabв chroot(це відповідало б update-grubскаржачись , що «\ не встановлено»). Якби я це робив ще раз, я спробував би спершу, не намагаючись монтувати спеціальні файлові системи в chroot.
Янусь

лише зауваження: не забудьте відключити / mnt / newroot перед перезавантаженням!
Джакомо Тесіо

Ось інструкції щодо переміщення кореневого розділу / нового диска nvme, зберігаючи / home на hdd. lucasmanual.com/blog/…
Лукас

Відповіді:


20

Змонтуйте основні файлові системи та скопіюйте / модифікуйте файли під час хронування:

  • / dev ( mount -o bind /dev/ /path/to/chroot/dev)
  • / proc ( mount -t proc none /path/to/chroot/proc)
  • / sys ( mount -t sysfs none /path/to/chroot/sys)

IIRC, який працював на мене під час встановлення Grub 2 в арку та багато разів на Gentoo. Тоді після chroot /path/to/chrootкомандувати було просто:

grub-install /dev/<boot_disk>

Станом на lvm2 (і я вірю, але я не використовував його) конфігурація зберігається на диску. Існує конфігурація, яку слід прочитати, щоб виявити пристрої. Якщо припустити, що ваші пристрої знаходяться у звичайних місцях ( /dev/sd*або /dev/hd*), тут не повинно виникнути проблем.


PS. Я б не довіряв простому процесору живої системи, оскільки є кілька місць, де це може піти не так:

  • Забули змінити /etc/fstabта інші корисні файли
  • Файли змінювалися під час доступу
  • Справа зі сміттям ( /tmpтощо)

Спасибі. Отже, ви говорите, що я роблю неохайний chroot :) Я спробую це з правильним chroot. cp -axповинен бути штраф (можливо , після падіння на одного користувача рівень виконання) в відповідно до цієї старої HOWTO: tldp.org/HOWTO/Hard-Disk-Upgrade/copy.html
Янус

Працював шарм! Дуже дякую за допомогу.
Янусь

1
@Janus: Я б скопіював дані з дистрибутива Live, щоб бути в безпечному режимі. Я радий, проте це спрацювало.
Maciej Piechotka

Мені довелося це робити update-grubраніше install-grub.
Aryeh Leib Taurog

3

ви можете встановити grub з живого дистрибутива без хронізації:

grub-install /dev/hda --root-directory=/mnt/guest/

Спасибі. Я не впевнений, що це спрацює тут: наскільки я це розумію, grub-installлише оновлюються файли зображень grub та пише MBR: Зокрема, grub.cfgне оновлюється. Як я коментував вище, монтаж спеціальних грядок може бути надмірним, але я все ще думаю, що chroot - це спосіб оновити grub.cfgпростим способом?
Янус

Так, це не працювало і для мене. Ви повинні дістатись update-grubдо роботи, а цього немає --root-directoryчи щось, ні?
Мітар

0

BTW, якщо ви додаєте розділ (як Windows), на якому ви не хочете, щоб grub писав а в завантажувальному секторі, але ви хочете, щоб grub знав про це, коли комп'ютер завантажується, ви можете повторно сканувати розділи та генерувати новий файл grub.cfg, використовуючи команду grub_mkconfig, як описано нижче в термінальному сеансі

cd / boot / grub

sudo cp grub.cfg ./grub.cfg.old

sudo grub_mkconfig -o ./grub.cfg

Тепер, коли ви завантажите свій поточний Linux-розділ (у якого груб завантажувався), він тепер дізнається про інший розділ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.