Как добавить другие онлайн-аккаунты?

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все BIOS имеют переупорядочивание того, как они представляют диски, так что диск, который вы загрузили, всегда является «первым» диском, и это то, что ожидают некоторые загрузчики (например, Microsoft) (т. е. все будет работать неправильно, если вы попытаетесь подключиться к Windows, если окажется, что диск, содержащий Windows, не является «первым», как указано в BIOS). Вы не получаете эту проблему при загрузке с компакт-диска, потому что CD обрабатываются отдельно от жестких дисков и не меняют порядок. Существует также тот факт, что на диске может быть более одного внутреннего диска, поэтому вы можете выбрать, из какого из них вы хотите загрузиться.

Чтобы добавить к этому Ubuntu, изменение в grub-mkconfig, так что параметр GRUB_TIMEOUT в файле / etc / default / grub игнорируется, если не обнаружена другая ОС (при этом предполагается, что если у вас нет другой ОС, ваш компьютер должен загружаться быстрее, не дожидаясь grub, если вы не удерживаете клавишу shift). В приведенном ниже решении рассматриваются все эти проблемы, и я надеюсь, что у вас есть достаточно комментариев, чтобы было ясно, что делается.

Запустите gksudo gedit /boot/grub/custom.cfg и скопируйте и вставьте в него следующее:

# Set grub's timeout to 5 secons. By setting it here we are overriding any
# settings for the timeout in /etc/default/grub. This is to be sure that we get
# a five second timeout even if Ubuntu's grub-mkconfig thinks it's the only
# Operating System and disables showing of the menu.
timeout=5 

insmod regexp

# Grab just the drive portion of $prefix, to determine what drive we booted
# from.
# The third parameter in the following command is a regular expression which
# says to capture just the "hdX" portion of a prefix like
# "(hd1,msdos5)/boot/grub". Note that the parentheses in the regular expression
# denote what needs to be captured (like in  perl and most other regular
# expression engines), they're not the parentheses that denote a device in grub.
regexp --set=current_drive '(hd.)' "$prefix"

# Loop through all drives (but not partitions)
for drive in *; do

  # If the drive is the same as the one we're booted from just continue on to
  # the next without creating a menu entry for it.
  if [ "$drive" = "(${current_drive})" ]; then
    continue
  fi

  # Make a menu entry with the device name of the drive in the title
  menuentry "Chainload $drive" "$drive" {
    drive="$2"
    root="$drive"

    # Swap the drive currently designated as (hd0) with the drive we want to
    # chainload. Thus the drive we are about to chainload will appear to be the
    # first drive to the bootloader we chainload.
    drivemap -s "(hd0)" "$drive"

    chainloader +1
  }
done
[d3 ] Затем просто сохраните файл, и все готово.

Когда вы загружаете, если есть другие диски, доступные для загрузки в цепочку, вы увидите записи меню для них (а если нет, вы выиграли «т). Элемент меню по умолчанию останется неизменным, что означает, что Ubuntu должен загружаться по умолчанию, и до этого произойдет 5-секундный тайм-аут. Поскольку вы редактируете /boot/grub/custom.cfg, а не /etc/grub.d/40_custom, вам даже не нужно запускать update-grub.

1
задан 20 October 2012 в 21:18

0 ответов

Другие вопросы по тегам:

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