Intereting Posts
(Linux Mint-17) Не удается подключиться к беспроводной сети Как Wget с условием подмножества + генерировать CHM / … электронную книгу? Как записать iptables с ядра 3.9.0? Как правильно назначить функцию, содержащую связанные команды, псевдониму в .bashrc? Как отправить ключ анонимно на сервер через tor из командной строки? Почему Debian недооценивает пространство, доступное при установке Qt? Debian больше не загружается как открыть несколько экземпляров терминала в gnome-desktop? Как удалить разрешения Linux на файлы для отправки по электронной почте пользователю Windows Linux-оболочка отстает от одного шага Какие области могут иметь переменные оболочки? Подключение к беспроводному маршрутизатору команда не найдена с использованием sudo в скрипте Ограничить доступ к файлам только для добавления Невозможно выполнить печать из fluxbox, если я не впервые вхожу в систему с другим WM

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

Есть ли у кого-нибудь предложение о том, как переместить корневой раздел на новый диск и настроить grub2 для загрузки на этом диске? Кажется, мне не повезло, что grub-mkconfig хочет, что я хочу сделать (например, chroot'int в мой новый корень просто смущает все скрипты).

Фон Я запускаю Debian Squeeze на безголовом маломощном NAS. Моя текущая настройка – / sda0 и /boot на sde0 (CF-карта): мне нужна отдельная /boot потому что sd[ad] нужно делать отложенное раскручивание. Теперь я нашел старый 2,5-дюймовый диск IDE для использования в качестве / include /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): Как указывает Мачей, мне нужно сделать правильный 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 

Установите основные файловые системы и скопируйте / измените файлы, а chrooting:

  • / 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 to /path/to/chroot была просто:

 grub-install /dev/<boot_disk> 

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


PS. Я бы не стал доверять простой cp живой системы, поскольку есть несколько мест, где это может пойти не так:

  • Забыл изменить /etc/fstab и другие полезные файлы
  • Файлы, измененные во время доступа
  • Обработка мусора ( /tmp и т. Д.)

вы можете установить grub из live-дистрибутива без chrooting:

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

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

cd / boot / grub

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

sudo grub_mkconfig -o ./grub.cfg

Теперь, когда вы загружаетесь из своего текущего раздела Linux (который загружал grub), он теперь узнает о другом разделе.