Ubuntu в USB. Загрузка с фиксированного жесткого диска?

У меня установлена ​​Ubuntu 12.04 минимальная на моем USB-накопителе; который я использую на нескольких системах в качестве портативной ОС.

Я думал edit the boot parameters, чтобы перед загрузкой основной ОС Ubuntu она показала опцию Boot from Hard Drive на 5 секунд, а затем загрузилась в Ubuntu.

Таким образом, у меня будет возможность загрузить ОС, установленную на жестком диске, без необходимости извлекать или отключать USB-накопитель Ubuntu.

Как мне отредактировать параметры загрузки, чтобы добиться этого?

3
задан 24 May 2012 в 01:16

2 ответа

1.

загрузиться в Ubuntu с USB. Открытый терминал.

2.1 Добавить запись в загрузочный жесткий диск

gksudo gedit /etc/grub.d/40_custom

добавить ниже запись. Не удаляйте ни одной строки.

menuentry "Boot From Hard disk" {
    set root=(hd0,1)
    chainloader +1
}

2.2 Изменить запись по умолчанию для загрузки

gksudo gedit /etc/default/grub

изменить GRUB_DEFAULT=0 на GRUB_DEFAULT=X здесь X - номер записи для загрузки минус один. Если вы хотите загрузить 3-ю запись в загрузчике, то X должно быть 2 (grub считает запись из zero).

Сохраните.

2.3 Измените тайм-аут для загрузки ОС по умолчанию

gksudo gedit /etc/default/grub

измените GRUB_TIMEOUT=30 на GRUB_TIMEOUT=X здесь X - количество секунд ожидания до загрузки ОС по умолчанию. (Я установил его на 3 секунды)

3.

sudo update-grub

4.

перезапустите и выберите Boot From Hard disk

0
ответ дан 24 May 2012 в 01:16

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

Чтобы добавить к этому 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

Затем просто сохраните файл, и все готово.

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

0
ответ дан 24 May 2012 в 01:16

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

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