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

Любой текстовый редактор способен открыть .mbox. Помимо текстовых редакторов Mozilla Thunderbird также может их открыть.

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

18 ответов

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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.

4
ответ дан 25 May 2018 в 11:02
  • 1
    Спасибо, что поделились этим. Даже жесткие комментарии достаточно, чтобы объяснить, что происходит в фоновом режиме, я хотел бы что-то воскликнуть. Требование состоит в том, чтобы всякий раз, когда Ubuntu будет загружаться .. Он будет остановлен на 5 секунд и попросит погоду загрузиться в Ubuntu или загрузиться с физического жесткого диска, имеющего любые окна OS OS / MAC или linux. Пожалуйста, предположите, что порядок загрузки BIOS - 1)CD_Drive 2)USB_Device 3)HDD – Z9iT 5 June 2012 в 18:08
  • 2
    Интересно, какая будет более безопасная и fail_safe тренировка. Либо этот вариант, либо как ответил virpara – Z9iT 5 June 2012 в 18:13
  • 3
    «Требование состоит в том, чтобы всякий раз, когда Ubuntu будет загружаться .. Он остановится на 5 секунд и попросит погоду загрузиться в Ubuntu или загрузиться с физического жесткого диска, имеющего любые окна OS OS / MAC или linux.» – Jordan Uggla 6 June 2012 в 00:45
  • 4
    Извините, я случайно нажал Enter, чтобы попытаться добавить новую строку в свой комментарий, что я хотел написать: «Требование состоит в том, чтобы всякий раз, когда Ubuntu загружается .. Он будет остановлен на 5 секунд и попросит погоду загрузиться Ubuntu или загрузку с физического жесткого диска, имеющего любые окна OS OS / MAC или linux. & Quot; Это то, что делает мое решение. Способ, которым он "спрашивает " является предоставление стандартного меню grub. Как вы хотите, чтобы он представил этот вариант? Насколько лучше решение, ответ virpara на самом деле не работает, а мой. – Jordan Uggla 6 June 2012 в 00:52
  • 5
    @Jordan Uggla: SYSLINUX или EXTLINUX обеспечивают более легкое решение того, что ищет OP? Вы, очевидно, знаете об этом больше, чем я. Как вы думаете? – Chris 6 June 2012 в 08:02

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 25 July 2018 в 18:47

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 31 July 2018 в 13:18

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 2 August 2018 в 00:56

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 4 August 2018 в 16:26

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 6 August 2018 в 01:06

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 7 August 2018 в 18:33

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 10 August 2018 в 07:13

Это на самом деле гораздо более сложный сценарий, чем кажется на первый взгляд из-за раздражающей тенденции, что почти все 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

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

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

4
ответ дан 15 August 2018 в 19:13
  • 1
    Спасибо, что поделились этим. Даже жесткие комментарии достаточно, чтобы объяснить, что происходит в фоновом режиме, я хотел бы что-то воскликнуть. Требование состоит в том, чтобы всякий раз, когда Ubuntu будет загружаться .. Он будет остановлен на 5 секунд и попросит погоду загрузиться в Ubuntu или загрузиться с физического жесткого диска, имеющего любые окна OS OS / MAC или linux. Пожалуйста, предположите, что порядок загрузки BIOS - 1)CD_Drive 2)USB_Device 3)HDD – Z9iT 5 June 2012 в 18:08
  • 2
    Интересно, какая будет более безопасная и fail_safe тренировка. Либо этот вариант, либо как ответил virpara – Z9iT 5 June 2012 в 18:13
  • 3
    «Требование состоит в том, чтобы всякий раз, когда Ubuntu будет загружаться .. Он остановится на 5 секунд и попросит погоду загрузиться в Ubuntu или загрузиться с физического жесткого диска, имеющего любые окна OS OS / MAC или linux.» – Jordan Uggla 6 June 2012 в 00:45
  • 4
    Извините, я случайно нажал Enter, чтобы попытаться добавить новую строку в свой комментарий, что я хотел написать: «Требование состоит в том, чтобы всякий раз, когда Ubuntu загружается .. Он будет остановлен на 5 секунд и попросит погоду загрузиться Ubuntu или загрузку с физического жесткого диска, имеющего любые окна OS OS / MAC или linux. & Quot; Это то, что делает мое решение. Способ, которым он "спрашивает & quot; является предоставление стандартного меню grub. Как вы хотите, чтобы он представил этот вариант? Насколько лучше решение, ответ virpara на самом деле не работает, а мой. – Jordan Uggla 6 June 2012 в 00:52
  • 5
    @Jordan Uggla: SYSLINUX или EXTLINUX обеспечивают более легкое решение того, что ищет OP? Вы, очевидно, знаете об этом больше, чем я. Как вы думаете? – Chris 6 June 2012 в 08:02

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 counts из zero).

Сохраните его.

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

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

перезапустить и выбрать Boot From Hard disk [ ! d14]

2
ответ дан 25 May 2018 в 11:02
  • 1
    Это было бы полезно, только если он запрашивает «Загрузка с первого жесткого диска», и если в течение 5 секунд ответа не будет, то ubuntu будет загружен с USB-накопителя. Вышеприведенный ответ звучит неплохо, однако в этом случае ключевое требование в 5 секунд опущено. – Z9iT 4 June 2012 в 18:05
  • 2
    @ Z9iT 5 sec delay before the default OS boots, уже описанный в 2.3 – virpara 4 June 2012 в 18:39
  • 3
    В меню будут отображаться как загрузка с первого жесткого диска, так и запись Ubuntu, установленная grub2, с выделенным выбранным значением по умолчанию. После таймаута grub2 продолжит установку по умолчанию, указанную выше. Я думаю, что это, вероятно, так близко, как вы доберетесь до того, что описано. – John S Gruber 4 June 2012 в 20:19
  • 4
    2.1: Я лично предпочитаю использовать /boot/grub/custom.cfg. Это не требует запуска update-grub после этого, не прерывает update-grub, если вы случайно добавляете код с синтаксической ошибкой и не нуждаетесь в каком-либо заголовке (просто введите код, который вы хотите в файл). set root=(hd0,1) неверно, поскольку A: (hd0,1) - это раздел, а не диск и B: при загрузке с USB (hd0) будет USB-накопитель, а не внутренний диск. 2.3: В то время как это хорошо для upstream grub и других дистрибутивов с использованием grub (например, Debian), grub-mkconfig Ubuntu будет игнорировать GRUB_TIMEOUT, если он считает, что это единственная ОС. – Jordan Uggla 6 June 2012 в 01:00

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 25 July 2018 в 18:47

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 31 July 2018 в 13:18

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 2 August 2018 в 00:56

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 4 August 2018 в 16:26

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 6 August 2018 в 01:06

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 7 August 2018 в 18:33

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 10 August 2018 в 07:13

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 counts из zero).

Сохранить.

2.3 Изменить таймаут для загрузки в значение по умолчанию os

gksudo gedit /etc/default/grub

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

3.

sudo update-grub

4.

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

2
ответ дан 15 August 2018 в 19:13
  • 1
    Это было бы полезно, только если он запрашивает «Загрузка с первого жесткого диска», и если в течение 5 секунд ответа не будет, то ubuntu будет загружен с USB-накопителя. Вышеприведенный ответ звучит неплохо, однако в этом случае ключевое требование в 5 секунд опущено. – Z9iT 4 June 2012 в 18:05
  • 2
    @ Z9iT 5 sec delay before the default OS boots, уже описанный в 2.3 – virpara 4 June 2012 в 18:39
  • 3
    В меню будут отображаться как загрузка с первого жесткого диска, так и запись Ubuntu, установленная grub2, с выделенным выбранным значением по умолчанию. После таймаута grub2 продолжит установку по умолчанию, указанную выше. Я думаю, что это, вероятно, так близко, как вы доберетесь до того, что описано. – John S Gruber 4 June 2012 в 20:19
  • 4
    2.1: Я лично предпочитаю использовать /boot/grub/custom.cfg. Это не требует запуска update-grub после этого, не прерывает update-grub, если вы случайно добавляете код с синтаксической ошибкой и не нуждаетесь в каком-либо заголовке (просто введите код, который вы хотите в файл). set root=(hd0,1) неверно, поскольку A: (hd0,1) - это раздел, а не диск и B: при загрузке с USB (hd0) будет USB-накопитель, а не внутренний диск. 2.3: В то время как это хорошо для upstream grub и других дистрибутивов с использованием grub (например, Debian), grub-mkconfig Ubuntu будет игнорировать GRUB_TIMEOUT, если он считает, что это единственная ОС. – Jordan Uggla 6 June 2012 в 01:00

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

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