Вопрос: Как вы неразрушимо Проверьте, установлен ли grub2 в загрузочном секторе или загружен ли цепочкой grub1 без перезагрузки?


Мы обновляем несколько систем от Debian Lenny до Squeeze, и я хотел бы убедиться, что я не пропустил никаких установок grub2. По умолчанию Squeeze chain-boot-load от grub1 и вам нужно запустить upgrade-from-grub-legacy обновить. Поэтому я хотел бы иметь возможность удаленно проверить, не установлен ли grub2 в загрузочном секторе диска без перезагрузки и без перезагрузки загрузочного сектора.

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


6
2018-04-13 04:39


Источник




Ответы:


Я наткнулся на ответ в исходном пакете grub2 debian. Оказывается, для этого требуется дамп bootsector - поэтому может быть полезен отдельный упакованный скрипт. Вот сценарий (просто обертка вокруг официальной функции), который расскажет вам, установлен ли grub2 в загрузочном секторе. Его можно легко модифицировать для аналогичного использования.

#!/bin/bash
set -e

if [ "$UID" -ne "0" ]; then
  echo Must be run as root
  exit 99
fi

scan_grub2()
{
  if ! dd if="$1" bs=512 count=1 2>/dev/null | grep -aq GRUB; then
    # No version of GRUB is installed.
    echo Grub could not be found
    return 1
  fi

  # The GRUB boot sector always starts with a JMP instruction.
  initial_jmp="$(dd if="$1" bs=2 count=1 2>/dev/null | od -Ax -tx1 | \
                 head -n1 | cut -d' ' -f2,3)"
  [ "$initial_jmp" ] || return 1
  initial_jmp_opcode="${initial_jmp%% *}"
  [ "$initial_jmp_opcode" = eb ] || return 1
  initial_jmp_operand="${initial_jmp#* }"
  case $initial_jmp_operand in
    47|4b|4c|63)
      # I believe this covers all versions of GRUB 2 up to the package
      # version where we gained a more explicit mechanism.  GRUB Legacy
      # always had 48 here.
      return 0
    ;;
  esac

  return 1
}

if scan_grub2 "/dev/sda"; then
  echo Found grub 2
else
  echo Did not find grub 2
  #Uncomment the next line to upgrade
  #upgrade-from-grub-legacy
fi

4
2018-04-15 03:50