Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Восстановление загрузчика grub2 - EFI  (Прочитано 64697 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн spectr

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #15 : 26 Января 2023, 09:46:24 »
так у тебя ось- гость? Система в виртуалке?
Нет, ось хостовая. На реальном железе работает.

Morisson

  • Гость
Re: Восстановление загрузчика grub2 - EFI
« Ответ #16 : 26 Января 2023, 09:54:03 »
тогда вирш ничем навредить не мог

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6840
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #17 : 26 Января 2023, 10:11:37 »
Вирш или нет, но конфиг он тебе перелопатил весь. Ошибка это или так и должно быть - не знаю. Мне все-таки кажется, что ты запутался в ОС-ях.
Но ответ уже дал выше - 40_custom. Все, что тебе нужно, в этот файл. Его никто не тронет.

Morisson

  • Гость
Re: Восстановление загрузчика grub2 - EFI
« Ответ #18 : 26 Января 2023, 10:16:20 »
virsh просто не заработает в случае не с виртуальной машиной. Он правит xml-config kvm-qemu машины.
Т.е. ровно то, что ты делаешь гуевиной virt-manager. Чтобы им сломать загрузчик- ну я так даже специально не умею.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6840
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #19 : 26 Января 2023, 10:21:49 »
Кто тогда наклепал: "root-98d1f8b1f435 -> ../dm-0"?

Оффлайн spectr

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #20 : 26 Января 2023, 10:36:22 »
Цитировать
Кто тогда наклепал: "root-98d1f8b1f435 -> ../dm-0"?
тоже этот вопрос волнует. Даже сейчас не вдаваясь в подробности кто это сделал, а как все вернуть обратно.

Но ответ уже дал выше - 40_custom. Все, что тебе нужно, в этот файл. Его никто не тронет.

(Нажмите, чтобы показать/скрыть)

Не могли бы подробнее подсказать, что именно с его помощью я должен сделать для исправления ситуации с загрузкой хостовой ОС?
Добавить новый пункт для выбора ОС, но уже с правильными параметрами загрузки. И сделать его по умолчанию?
Или я могу отредактировать существующий пункт, и привести его к правильному состоянию?
Может быть не затруднит пример синтаксиса подкинуть?
« Последнее редактирование: 26 Января 2023, 10:45:06 от spectr »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6840
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #21 : 26 Января 2023, 10:55:25 »
Надеюсь, ты прочитал и понял, что в нем написано.
Существующие пять строк не трогаешь. Добавляешь после них.
Самое простое. Из grub.cfg копируешь сюда пункт меню, которым ты загружал систему "вручную", или который тебе кажется более подходящим. Вносишь изменения, которые вносил "вручную", или которые считаешь нужными. Сохраняешь. Выполняешь "update-grub".
Ничего предыдущего это не затронет. Но зато может полностью перекроить все предыдущие настройки-параметры.
Если допустишь ошибки, то:
1. при обнаружении ошибок будет сгенерирован новый конфиг-файл, но действующим останется старый.
2. новый пункт в конце конфиг-файла, даже если ошибки не будут обнаружены, то часть конфига до ошибки обычно остается рабочей.

Если ты внимательно смотрел конфиг груба, то заметил, что блоки кода выделены специальными комментариями, по которым понятно, каким именно скриптом этот бло к создан.
Синтаксис именно тот, что ты видишь в grub.cfg.


Пользователь добавил сообщение 26 Января 2023, 15:41:52:
Цитировать
Добавить новый пункт для выбора ОС, но уже с правильными параметрами загрузки. И сделать его по умолчанию?
Да. В качестве примера, взял из своего файла, немного поправил под твои условия.
default='Ubuntu 20.04.5 LTS (20.04) (on hd2402)'; fallback='Ubuntu'; timeout=2; timeout_style=menu

  menuentry 'Ubuntu 20.04.5 LTS (20.04) (on hd2402)' --class ubuntu --class gnu-linux --class gnu --class os {
src='hd2402'; key='ro --'
key="root=LABEL=${src} ${key}"
version='-5.4.0-137-generic'
insmod gzio
search --no-floppy --set --label "${src}"
linux /boot/vmlinuz${version} ${key}
initrd /boot/initrd.img${version}
  }
Краткое описание.
default - название пункта меню, загружаемого по умолчанию.
timeout - задержка 2с, достаточно, чтобы успеть выбрать другой пункт и не сильно задерживает загрузку.
src - что искать, в данном случае метка тома второго раздела, это-же значение передается в параметр ядра "root", можно использовать UUID.
key - все параметры, передаваемые ядру.
version - версия ядра-инитрд, обычно в каталоге /boot есть симлинки, указывающие на последнюю версию ядра, если закомментировать эту строку, то будут использоваться симлинки, не нужно будет править код под каждую новую версию ядра.
« Последнее редактирование: 26 Января 2023, 15:41:52 от andytux »

Оффлайн spectr

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #22 : 30 Января 2023, 11:45:52 »
andytux, спасибо большое за развернутый ответ.
Выписал директиву из своего конфига, только с корректировкой под нужный раздел. Сделал ее по умолчанию:

default='Ubuntu 20.04.5 LTS (20.04) recommended'; fallback='Ubuntu'; timeout=2; timeout_style=menu

menuentry 'Ubuntu 20.04.5 LTS (20.04) recommended' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-119d50f5-bfbe-4cd7-a70f-d6ca540b15d1' {
   insmod part_gpt
   insmod ext2
   set root='hd0,gpt2'
   if [ x$feature_platform_search_hint = xy ]; then
     search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  119d50f5-bfbe-4cd7-a70f-d6ca540b15d1
   else
     search --no-floppy --fs-uuid --set=root 119d50f5-bfbe-4cd7-a70f-d6ca540b15d1
   fi
   linux /boot/vmlinuz-5.4.0-137-generic root=/dev/sda2 ro
   initrd /boot/initrd.img-5.4.0-137-generic
}

Далее выполнил:
$ sudo update-grub
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
Found linux image: /boot/vmlinuz-5.4.0-137-generic
Found initrd image: /boot/initrd.img-5.4.0-137-generic
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
Found linux image: /boot/vmlinuz-5.4.0-135-generic
Found initrd image: /boot/initrd.img-5.4.0-135-generic
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
/usr/sbin/grub-probe: error: cannot find a GRUB drive for /dev/mapper/root-98d1f8b1f435.  Check your device.map.
Found Ubuntu 20.04.5 LTS (20.04) on /dev/sda2
done

Команда выполнилась, но с указанием на ошибки остальных записей основного конфиг-файла.
Система стала запускаться самостоятельно!

Хотелось бы навести марафет в конфиге GRUB. Я могу просто удалить прежние директивы?
(см. содержание конфиг. файла выше по теме)

Пользователь добавил сообщение 30 Января 2023, 11:49:36:
$ df -h
Filesystem                     Size  Used Avail Use% Mounted on
udev                           7,8G     0  7,8G   0% /dev
tmpfs                          1,6G  2,3M  1,6G   1% /run
/dev/mapper/root-98d1f8b1f435  196G   14G  172G   8% /
tmpfs                          7,8G     0  7,8G   0% /dev/shm
tmpfs                          5,0M     0  5,0M   0% /run/lock
tmpfs                          7,8G     0  7,8G   0% /sys/fs/cgroup
/dev/sda1                      1,1G  5,3M  1,1G   1% /boot/efi
/dev/sdc1                      916G  4,4G  865G   1% /mnt/cloud
/dev/sdb1                      1,8T  6,6G  1,7T   1% /mnt/stuff
/dev/loop0                      64M   64M     0 100% /snap/core20/1738
/dev/loop1                      64M   64M     0 100% /snap/core20/1778
/dev/loop2                      50M   50M     0 100% /snap/snapd/17883
/dev/loop3                      92M   92M     0 100% /snap/lxd/24061
/dev/loop4                      50M   50M     0 100% /snap/snapd/17950
/dev/loop5                      92M   92M     0 100% /snap/lxd/23991
tmpfs                          1,6G     0  1,6G   0% /run/user/1000

как интерпретировать вывод df /dev/mapper/root-98d1f8b1f435, почему здесь не /dev/sda2 ?
« Последнее редактирование: 30 Января 2023, 11:49:36 от spectr »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 6840
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #23 : 30 Января 2023, 11:59:27 »
Цитировать
Я могу просто удалить прежние директивы?
Можешь.

Цитировать
как интерпретировать вывод df /dev/mapper/root-98d1f8b1f435, почему здесь не /dev/sda2 ?
Никогда не создавал себе таких проблем, поэтому не знаю.

Цитировать
linux /boot/vmlinuz-5.4.0-137-generic root=/dev/sda2 ro
Потенциальная точка отказа. У тебя несколько дисков. В другую сессию любой из них может оказаться sda и система не загрузится. Поэтому лучше здесь использовать УУИД или метку тома.
Изменится версия ядра и система не загрузится.
Про конфигурацию груба много наговорили здесь.
« Последнее редактирование: 30 Января 2023, 12:58:21 от andytux »

Оффлайн spectr

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Восстановление загрузчика grub2 - EFI
« Ответ #24 : 30 Января 2023, 12:58:05 »
Цитировать
Потенциальная точка отказа. У тебя несколько дисков. В другую сессию любой из них может оказаться sda и система не загрузится. Поэтому лучше здесь использовать УУИД или метку тома.
Изменится версия ядра и система не загрузится.
По конфигу груба много наговорили здесь.

Да, спасибо. Все предельно ясно

Пользователь добавил сообщение 30 Января 2023, 13:30:44:
Цитировать
Никогда не создавал себе таких проблем, поэтому не знаю.

в одном из запусков ОС, который останавливался на initramfs, я увидел следующие сообщения:


Здесь упоминается urbackup - система для автоматизированного создания бэкапов с веб мордой. У этой системы несколько режимов работы: режим создания снимка жесткого диска (snapshot), и режим копирования файлов куда скажут. Сейчас она работает в режиме копирования файлов, но во время настройки я пробовал и snapshot (позже такой режим работы был отключен). Возможно, тогда и случилось подмена точек монтирования и переписывание конфига grub.

Пользователь добавил сообщение 30 Января 2023, 14:31:38:
мой текущий 40_custom конфиг:
default='Ubuntu 20.04.5 LTS (20.04) recommended'; fallback='Ubuntu'; timeout=2; timeout_style=menu

menuentry 'Ubuntu 20.04.5 LTS (20.04) recommended' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-119d50f5-bfbe-4cd7-a70f-d6ca540b15d1' {
   insmod part_gpt
   insmod ext2
   set root='hd0,gpt2'
   if [ x$feature_platform_search_hint = xy ]; then
     search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  119d50f5-bfbe-4cd7-a70f-d6ca540b15d1
   else
     search --no-floppy --fs-uuid --set=root 119d50f5-bfbe-4cd7-a70f-d6ca540b15d1
   fi
   linux /boot/vmlinuz root=UUID=119d50f5-bfbe-4cd7-a70f-d6ca540b15d1
   initrd /boot/initrd.img
}
« Последнее редактирование: 30 Января 2023, 14:31:38 от spectr »

 

Страница сгенерирована за 0.046 секунд. Запросов: 25.