Используйте USB-накопитель с файлом, чтобы выбрать запись GRUB 2

Если это единственный процесс, записывающий в каталог, вы можете создать временный файл, извлечь файлы не в подробном режиме, а затем просмотреть те, у которых время изменения новее, чем у временного файла

напр.

MYTMP=$(mktemp)
tar --skip-old-files --extract --file=2019-02-10.tar.gz
find. -cnewer $MYTMP
rm $MYTMP
0
16.09.2021, 20:44
2 ответа

Если вы прервете процесс загрузки в меню выбора GRUB 2 и перейдете в оболочку, вы сможете просмотреть список подключенных устройств, выполнив команду ls.

В моем случае USB-накопитель был (hd0,msdos1).

Сначала я изменил файл /boot/grub/grub.cfg, добавив в него следующее:

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
# =================== BEGIN MODIFICATION ===================
if [ -s (hd0,msdos1)/grub_boot_config ]; then
  set next_entry=0;
fi
# =================== END MODIFICATION ===================
if [ "${initrdfail}" = 2 ]; then
   set initrdfail=
elif [ "${initrdfail}" = 1 ]; then
  ...

где next_entry=0— это значение $prefix/grubenv, если бы я запустил sudo grub-reboot 0.

Это работает, но не сохраняется при обновлении ядра, так как выполняется пересборка/boot/grub/grub.cfg

Затем я изменил /etc/grub.d/00_header, добавив следующее:

cat << EOF
if [ -s \$prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
EOF
# =================== BEGIN MODIFICATION ===================
cat << EOF
# =================== BEGIN MODIFICATION ===================
if [ -s (hd0,msdos1)/grub_boot_config ]; then
  set next_entry=0;
fi
# =================== END MODIFICATION ===================
EOF
# =================== END MODIFICATION ===================
cat <<EOF
if [ "\${initrdfail}" = 2 ]; then
   set initrdfail=
elif [ "\${initrdfail}" = 1 ]; then
  ...

и выпустил sudo update-grub, который затем сгенерировал/boot/grub/grub.cfg

В результате, если USB-флешка подключена и содержит файл grub_boot_config(, он может быть пуст )в корне, тогда (hd0,msdos1)/grub_boot_configзавершится успешно и установит next_entry=0.

Следующим шагом по улучшению будет включение0(или любой другой элемент меню, который должен быть загружен в )в файле, и сценарий должен прочитать его и установить для него next_entry, а также заставить его искать этот файл на каждом диске, а не только (hd0,msdos1).

В любом случае получается, что /boot/grub/grub.cfgочень устойчив к опечаткам, так что маловероятно, что вы сломаете свою систему, выполнив эти модификации (это я тестировал на чистой ВМ ).

0
24.09.2021, 11:22

Раньше существовала программа Multisystem. Я вижу, что это все еще рядом. Обычно это программное обеспечение, которое позволяет устанавливать несколько дистрибутивов на USB-накопитель. Способ, которым вы могли бы использовать его (, и я использовал его ), заключается в том, чтобы использовать его для загрузки с grub (USB-накопителя ). Более новый инструмент, который я вижу, называется Ventoy, но я им не пользовался. Похоже, там такой же подход. По сути, у меня был GRUB в кармане. В противном случае я загружался в Windows. У меня не было специально установлено grub (), и я также выполнял двойную загрузку, используя USB-накопитель для загрузки в Debian. Есть более чистые способы сделать это, но я думаю, что это было бы проще.

0
16.09.2021, 22:22

Теги

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