У кого-нибудь есть предложения, как перенести корневой раздел на новый диск и настроить 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
Но это не удалось с grub, спрашивающим, был ли установлен root. Затем я предпринял нерешительную попытку настройки, /mnt/newroot/grub/grub.cfg
чтобы найти образ ядра sdf5
, а затем - grub-install --root-directory=/mnt/newroot /dev/sdf
. Но это просто вызвало у меня подсказку о спасении, когда я попытался загрузиться с sdf
.
Мой план резервного копирования - просто переустановить, так что бонусный вопрос (без галочек для этого): что мне нужно сделать, чтобы получить доступ к моим конфигурациям lvm2 и mdadm? Все ли это хранится в файловых системах (и будет ли оно автоматически обнаружено), или мне нужно взять его самому?
Решение (спасибо Maciej Piechotka): Как указывает Maciej, мне нужно правильно выбрать chroot для работы всех инструментов grub. Для справки, вот как я это сделал:
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
жалобой на то, что «\ not mount»). Если бы я сделал это снова, я бы сначала попытался, не удосужившись смонтировать специальные файловые системы в chroot.Ответы:
Монтируйте базовые файловые системы и копируйте / изменяйте файлы во время хроматирования, например:
mount -o bind /dev/ /path/to/chroot/dev
)mount -t proc none /path/to/chroot/proc
)mount -t sysfs none /path/to/chroot/sys
)IIRC, который работал для меня при установке Grub 2 в arch и много раз на Gentoo. Тогда после chroot
/path/to/chroot
команде было просто:Начиная с lvm2 (и я верю Madm, но я не использовал его) конфигурация хранится на диске. Существует конфигурация, которую следует прочитать, чтобы обнаружить устройства. При условии, что ваши устройства находятся в стандартных местах (
/dev/sd*
или/dev/hd*
), проблем не должно быть.PS. Я бы не стал доверять простым cp живой системы, так как есть несколько мест, где она может пойти не так:
/etc/fstab
и другие полезные файлы/tmp
и т. Д.)источник
cp -ax
должен быть штраф (возможно , после падения на однопользовательский уровень выполнения) в соответствии с этой старой HOWTO: tldp.org/HOWTO/Hard-Disk-Upgrade/copy.htmlupdate-grub
раньшеinstall-grub
.вы можете установить grub из дистрибутива без рутирования:
источник
grub-install
только обновляет файлы образа grub и пишет MBR: в частности,grub.cfg
не обновляется. Как я прокомментировал выше, монтирование специальных каталогов может быть излишним, но я все еще думаю, что chroot - это способ обновленияgrub.cfg
простым способом?update-grub
к работе, а этого нет--root-directory
или что-то, нет?Кстати, если вы добавляете раздел (например, Windows), в который вы не хотите, чтобы grub записывал в загрузочный сектор, но вы хотите, чтобы grub знал об этом при загрузке компьютера, вы можете повторно просканировать разделы и сгенерировать новый файл grub.cfg с помощью команды grub_mkconfig, как показано ниже в терминальной сессии
Теперь, когда вы загрузитесь с вашего текущего раздела Linux (у которого была grub-загрузка), он теперь будет знать о другом разделе.
источник