grub2 загружает grub.cfg из неправильного диска во время начальной загрузки после движущейся OS к другому диску

Мой ноутбук первоначально имел M.2 ssd на 128 ГБ и HDD на 1 ТБ. Система настроена как двойная загрузка с окнами./boot/efi раздел находится на/dev/nvme0m1p1, и исходный корневой раздел находится на/dev/sda3.

Я архивировал изображение оригинала nvme0n1, подкачал nvme0n1 для M.2 ssd. на 1 ТБ и клонировал исходное изображение к новому ssd. Результат состоял в том, что я мог загрузиться или к окнам или к/dev/sd3 версии человечности, после того как клонирование было завершено.

Я затем создал новый ext4 раздел, nvme0n1p6 и клонировал/dev/sda3 раздел к нему. Я действительно забывал изменять раздел UIDD после клонирования и в первый раз, когда я выполнил обновление-grub2. Я впоследствии изменил раздел UIDD, использующий gparted, повторно выполнил обновление-grub2 и проверил, что это нашло изображение на новом UIDD для/dev/nvme0n1p6.

После проведения 6 часов, находя я вставил пробел в UIDD = оператор в/etc/fstab нового изображения, которое я смог загрузить в то новое изображение (мои навыки корректуры могут стоять улучшение). После того как то изображение было загружено, я выполнил обновление-grub2 снова для перемещения выбора для новой человечности к вершине и значению по умолчанию в новом grub.cfg.

Наконец к проблеме: После перезагрузки меню личинки, которое отображено, все еще grub.cfg исходной/dev/sda3/boot/grub папки.

копирование grub.cfg, сгенерированного для/nvme0n1p6 к/sda3, позволяет новому grub.cfg быть отображенным на последующих начальных загрузках.

переименование grub.cfg файла на/sda3 заставляет личинку останавливаться в командной строке на перезагрузке. Выход из командной строки заставляет окна OS загружаться. Я могу исправить проблему с живым образом USB, который разрешает мне восстанавливать допустимый grub.cfg на/sda3.

Я подозреваю, что команда личинки обновления не является единственной командой, которую я должен выполнить. Мое предположение - то, что изображения, сохраненные на/nvme0n1p1, должны быть обновлены. Это выполняется путем выполнения какой-то установки личинки?

0
задан 22 December 2019 в 18:44

2 ответа

Теперь, когда у меня Ubuntu с новым SSD-накопителем M.2, я рассмотрю метод, который я использовал для замены 128 ГБ SSD, содержащего установленный grub загрузчик с двойной загрузкой на nvme0n1p1, на SSD на 1 ТБ в ноутбуке, который имеет один Порт M.2. Для ясности большая часть Windows 10 находится на различных разделах nvme0, а ubuntu изначально находился на разделе жесткого диска на sda3. При загрузке nvme0n1p1 монтируется в / boot / efi.

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

    б. Записать образ на другой диск, внутренний или внешний. Я использовал:

    dd if = / dev / nmve0n1 | gzip -c> pathToOtherDeviceFolder / nvme0n1.img

    Параметр -c заставляет gzip записывать в стандартный вывод, который затем направляется в файл.

  2. Тестовая загрузка с USB-накопителя, содержащего живое изображение, ubuntu live или gparted live. Позже у меня возникли проблемы, потому что я не тестировал живое изображение с внешними мониторами, которые я обычно использую, когда ноутбук отключен от ноутбука.Потребовалось несколько дней, чтобы попытаться выполнить следующие шаги без подключенного внешнего дисплея, поскольку именно отсутствие внешнего дисплея (или Ethernet) препятствовало загрузке живого USB-накопителя, а не результат следующих шагов. Я не помню, как подключал Ethernet для успешной загрузки, но мог бы вместе с внешними дисплеями. В любом случае есть зависимость живых изображений, которую я не понимаю, но могу обойтись. После загрузки убедитесь, что вы можете смонтировать диск, содержащий образ, который хотите переместить.

  3. Выключите питание и замените исходный твердотельный накопитель M.2 на новый.

  4. Переместить изображение на новый nvme0n1

    a. Загрузитесь с живого USB-диска. (Вы это уже проверили)

    b. смонтируйте диск, содержащий образ, который вы хотите переместить. (Опять же, проверено)

    c. переместите изображение на новый nvme0n1. Я использовал:

    gunzip -c pathToOtherDeviceFolder / nvme0n1.img | dd of = / dev / nvme0n1

    И снова gunzip записывает на стандартный вывод, который передается на dd для записи на новое устройство.

  5. Переместить ubuntu в новый раздел на новом nvme0n1 Здесь я решил перезагрузиться в исходный образ ubuntu на sda3. Это не проблема, потому что новый nvme0n1 является клоном оригинала. Я не знаю ни одной причины, по которой эти шаги нельзя было предпринять, продолжая работать в среде USB live, хотя у меня нет опыта в этом.

    а. создайте новый раздел ext4 на nvme0n1 с помощью gparted или другого инструмента. В дальнейшем я буду называть этот раздел nvme0n1p6.

    б. клонировать образ ubuntu на / dev / sda3 (в моем случае) на / dev / nvme0n1p6. Я использовал: dd if = / dev / sda3 of = / dev / nvme0n1p6

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

  6. Подготовьте новый на nvme0n1p6 к работе.

    а. смонтировать / dev / nvme0n1p6. Я использовал / mnt в качестве точки монтирования.

    б. измените / etc / fstab, чтобы смонтировать UIDD для nvme0n1p6 как /. Обратите внимание, что nvme0n1p1 все еще нужно смонтировать как / boot / efi. Убедитесь, что измененная запись правильно отформатирована. Дополнительное место после UIDD = стоило мне еще нескольких часов размышлений о том, что я сделал не так.

    с. Сейчас nvme0n1p6 можно размонтировать, но, кажется, я пропустил этот шаг.

  7. Если все еще выполняется с живого USB-диска, перезагрузитесь в исходный образ ubuntu (мой находится на / dev / sda3).

  8. обновите параметры меню grub:

sudo update-grub2

Следите за исходным образом, Найдены и добавлены образ Windows и новый образ ubuntu на nvme0n1p6.

  1. перезагрузитесь и в меню загрузки grub выберите новый образ ubuntu.

  2. В новом образе запустите:

    a. sudo grub-install Это изменяет файлы grub на / boot / efi (/ dev / nvme0n101), чтобы посмотреть на / dev / nvme0n1p6 / boot / grub, а не это место на sda3 для grub меню, grub.cfg.

    б. `sudo update-grub ' Заменит клонированный /boot/grub/grub.cfg новым файлом, в котором новый образ сверху и по умолчанию, а исходный образ на sda3 как альтернативный выбор.

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

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

0
ответ дан 22 December 2019 в 21:41

Правовая оговорка: Я могу быть полностью неправым.

От Вашей информации, у Вас, кажется, есть одна установка Windows и одна установка Ubuntu на Вашем жестком диске (/dev/sda3). Давайте назовем эту установку жесткого диска H. Теперь, необходимо было переместить установку на SSD, и таким образом Вы создали новый раздел SSD и клонировали Вашу установку жесткого диска на том, что раздел SSD (я скорее сделаю новую установку, но это вне темы к Вашему вопросу). Давайте назовем эту установку SSD S.

проблема AFAIK - то, что Вы не устанавливали личинку вообще после завершающейся установки S. Так, установленная личинка в Вашей системе все еще принадлежит установке H [1]. Таким образом это все еще использовало бы эти grub.cfg существующий в установке H.

, Чтобы заставить личинку использовать grub.cfg от Вашей установки S, необходимо будет установить личинку от S до раздела EFI.

Начальная загрузка до установки S и выполненный:

$ sudo grub-install dummy
$ sudo update-grub

Сообщенный мне, если я неправильно понял Ваш сценарий, или если Вы сталкиваетесь с ошибками с командами.

<час>

Ссылки:
, Как действительно копает загрузчик EFI, находят корректный boot.cfg?

0
ответ дан 22 December 2019 в 23:43

Другие вопросы по тегам:

Похожие вопросы: