Что делает параметр --hint в команде поиска grub2?

Возможно, аналогично ответу, предложенному apolinsky, я использую вариант на screen. Ванильная команда выглядит так

screen bash -c 'long_running_command_here; echo; read -p "ALL DONE:"'

Сессия может быть отключена с помощью Ctrl ACtrl D и снова подключена в простом случае с помощью screen -r. У меня это завернуто в сценарий под названием session, который живет в моем PATH, готовый для удобного доступа:

#!/bin/bash
#
if screen -ls | awk '$1 ~ /^[1-9][0-9]*\.'"$1"'/' >/dev/null
then
    echo "WARNING: session is already running (reattach with 'screen -r $1')" >&2
else
    exec screen -S "$1" bash -c "$@; echo; echo '--------------------'; read -p 'ALL DONE (Enter to exit):'"
    echo "ERROR: 'screen' is not installed on this system" >&2
fi
exit 1

Это работает только тогда, когда вы заранее знаете, что хотите отключить программу. Он не предусматривает отключение уже запущенной программы.

14
17.02.2014, 17:43
2 ответа

--hint используется для выбора раздела при наличии нескольких совпадающих разделов. По умолчанию выбирается первый совпадающий.

Предположим, есть 2 устройства хранения с метками boot, как показано ниже

hd0,msdos1
hd1,msdos7

тогда команда :

search --set=root --label freepool --hint hd1,msdos7

выберет hd1,msdos7 вместо hd0,msdos1

9
29.04.2021, 00:42

Это не описано в Руководстве по GRUB , но есть документация, которую можно найти в самом GRUB(search --helpпо оболочке GRUB):

--hint
    First try the device HINT.
    If HINT ends in comma, also try subpartitions

--hint-ieee1275
    First try the device HINT if currently running on IEEE1275.
    If HINT ends in comma, also try subpartitions

--hint-bios
    First try the device HINT if currently running on BIOS.
    If HINT ends in comma, also try subpartitions

--hint-baremetal
    First try the device HINT if direct hardware access is supported.
    If HINT ends in comma, also try subpartitions

--hint-efi
    First try the device HINT if currently running on EFI.
    If HINT ends in comma, also try subpartitions

--hint-arc
    First try the device HINT if currently running on ARC.
    If HINT ends in comma, also try subpartitions

В чем смысл «Устройства с первой попытки»?

Вы должны понимать, что search— потенциально медленная операция.

Может быть, у вас 50 дисков, по 100 разделов на каждом, и теперь searchнужно пройти через все эти...пока он, наконец, не найдет UUID, который вы искали, с 2356-й попытки.

Или, возможно, у вас очень медленное устройство, и проверка его UUID приводит к зависанию searchна некоторое время. Есть --no-floppy, чтобы избежать наиболее распространенного случая, я думаю -, но другие устройства также могут быть медленными.

С помощью --hintвы устанавливаете устройство для проверки в первую очередь. Если подсказка была правильной, вы вообще пропускаете потенциально длительную операцию поиска. Так что это оптимизация скорости. (Вероятно, не будет заметно только с одним диском и тремя разделами)

Эффект, описанный в ответе @totti , отдающий предпочтение определенному устройству, когда есть два с одинаковым LABEL или UUID, должен быть просто побочным эффектом.

Конечно, если вы сначала проверите одно устройство, дубликат на другом устройстве не должен быть найден. Тем не менее, было бы разумнее вообще не иметь таких дубликатов. Поскольку повторяющиеся UUID (или LABEL )можно считать ошибкой конфигурации, и в случае, если --hintокажется неверным, он все равно может вернуть неправильное устройство.

1
29.04.2021, 00:42

Теги

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