Я установил дистрибутив Linux на компьютер друга. Он не знает, как очень хорошо использовать Linux или даже Windows, и я бы хотел, чтобы это было как можно проще. Когда я установил GRUB, он обнаружил раздел восстановления, который HP установил для него, и свою первую Windows в списке.

После некоторого поиска в Google и просмотра файлов руководства и конфигурации grub я все еще не могу понять, как скрыть раздел от GRUB. Я посмотрел на 30_osprober , но не увидел четкого способа исключить ОС.

Кто-нибудь может указать мне правильное направление для исключения ОС / раздела из меню GRUB?

3 ответа3

5

Я следовал инструкциям из этого поста (в 6 разделе)

GRUB 2 найдет и создаст пункт меню для раздела восстановления Windows (Vista). По крайней мере, в Vista название меню совпадает с обычным рабочим разделом Vista, единственное отличие заключается в обозначении раздела. Чтобы удалить раздел Восстановления из меню:

  • Сделайте резервную копию существующего /etc/grub.d/30_os-prober , удалите исполняемый бит из резервной копии, чтобы он не запускался во время обновлений, и откройте оригинал для редактирования (раздел начинается в строке 134):

    sudo cp /etc/grub.d/30_os-prober /etc/grub.d/30_os-prober.original  && sudo chmod -x
    

    /etc/grub.d/30_os-prober.original

    gksu gedit +83 /etc/grub.d/30_os-prober &
    
  • Определите точное название и раздел восстановления Windows. Они могут быть расположены в /boot/grub/grub.cfg file . Добавьте запись ниже. В этом примере пункт меню появился как «Windows Vista (загрузчик) (на /dev /sda1)». Убедитесь, что вы выбрали правильный раздел, так как заголовок может совпадать для обычного и восстановительного заголовков. Содержимое $LONGNAME и ${DEVICE} должно быть точным содержимым между кавычками в меню для раздела восстановления:

    for OS in ${OSPROBED} ; do
    DEVICE="`echo ${OS} | cut -d ':' -f 1`"
    LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
    LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
    BOOT="`echo ${OS} | cut -d ':' -f 4`"
    
    if [ -z "${LONGNAME}" ] ; then
     LONGNAME="${LABEL}"
    fi
    
    # Added to remove Windows Recovery
    if [ "$LONGNAME" = "Windows Vista (loader)" ] && [ "${DEVICE}" = "/dev/sda1" ] ; then
    continue
    fi
    # End Added
    

Сохраните файл, затем запустите:

sudo update-grub

Вместо Vista мне пришлось подумать о Windows 7 (метод тот же) и все заработало.

1

// РЕДАКТИРОВАТЬ // Изменено из-за правок (клянусь, это изменилось во время набора текста)

Грязное решение - отредактировать grub.cfg, но это должно происходить каждый раз, когда происходит обновление ядра.

В grub v2:(ПРИМЕЧАНИЕ ЭТО НЕ РЕКОМЕНДУЕТСЯ)

vim /boot/grub/grub.cfg

Правильный способ сделать это - отредактировать /etc/grub.d/30_os-prober(, как вы упомянули) и сказать ему игнорировать определенные разделы, хорошее руководство можно найти здесь.

Грязное решение №2 может заключаться в запуске сценария, который закомментирует эту строку из grub.cfg для вашего собеседника.

0

В файл /etc /default /grub вы можете добавить

GRUB_OS_PROBER_SKIP_LIST со списком разделенных пробелами UUID @ path_to_device

например GRUB_OS_PROBER_SKIP_LIST = 12345 @/dev/sda1

чтобы OS_PROBER пропускал эти файловые системы.

Вы можете получить список UUID из lsblk -fs

Подробнее о GRUB_OS_PROBER_SKIP_LIST.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .