如何将新的操作系统引导项添加到 GRUB2 菜单?

Mat*_*ley 21 partitioning boot grub2 dual-boot

我对 Linux 还很陌生,但在过去的几天里,我自己尝试了一下。我正在尝试一些不同的发行版,只是为了对不同的版本有所了解,这是唯一真正让我挂断电话的事情。

我从 Windows 7 开始,然后我安装了 Ubuntu 13.10(完美运行),然后我安装了 Linux Mint。但是,我没有办法启动 Linux Mint,而这正是我想要完成的。我的目标是在启动时出现的 Grub2 菜单上有一个 Linux Mint 菜单条目,与 Ubuntu 和 Windows 7 菜单条目(以及我尚未使用的其他一些菜单条目,如高级 Ubuntu 选项子菜单和memtest 菜单项)。


如果需要任何此类信息,以下是 GParted 分区表中的一些信息以及部分bootinfoscript输出:

来自 GParted 的分区信息和描述:

  1. /dev/sda1 是一个 101.94 MiB 的主分区,带有 fat16 文件系统,标志为“diag”
  2. /dev/sda2是一个 11.29 GiB 的主分区,带有 ntfs 文件系统,带有“boot”标志和“RECOVERY”标签。根据/boot/grub/grub.cfg,这是 Windows 7 加载程序所在的位置。从当前的 Grub2 菜单启动到 Windows 7 没有问题。
  3. /dev/sda3是一个 275.12 GiB 的主分区,带有带有“OS”标签的 ntfs 文件系统。这个分区保存了我最初在 Windows 上制作的所有文件,尽管有些文件是通过使用 Ubuntu 程序保存的(到目前为止,跨操作系统编辑文件没有任何问题,但如果出于某种原因,请告诉我这是否不好)。
  4. /dev/sda4是一个 171.01 GiB 的扩展分区。此分区当前已安装。除了 Ubuntu 13.10 和 Linux Mint 16 的逻辑分区之外,它还包含交换分区:
    • /dev/sda5是一个 58.79 GiB 的逻辑分区,带有 ext4 文件系统,其中包含 Linux Mint 16 的安装。在 GParted 中,它说这个文件系统的挂载点是/. 这是唯一具有非空挂载点条目的分区。我不知道该怎么做,而且我目前也不知道如何启动当前驻留的 Linux Mint 16。
    • /dev/sda6是一个带有“linux-swap”文件系统的 19.56 GiB 分区(我认为它被认为是主分区?)。这是在我安装 Ubuntu 时自动创建的,但是当我在尝试安装 Linux Mint 16 时遇到一些问题时,我手动将其大小增加了大约 10 GB。据我所知,Linux Mint 16 目前已成功安装,但我不知道不知道如何像我之前说的那样启动它。此分区当前已安装。
    • /dev/sda7是一个具有 ext4 文件系统的 36.41 GiB 逻辑分区,其中包含 Ubuntu 13.10。Ubuntu 13.10 运行良好,这就是我目前正在编写此问题的内容。此分区当前已安装。

这是bootinfoscript输出(它很长,包括grub.cfg文件以及sudo fdisk -l已在此处发布的信息 - 然而,由于字符限制,必须省略一些):

                  Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    in partition 94 for .
 => Syslinux MBR (4.04 and higher) is installed in the MBR of /dev/sdb.

sda1: __________________________________________________________________________

    File system:       vfat
    Boot sector type:  Dell Utility: FAT16
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /DELLBIO.BIN /DELLRMK.BIN /COMMAND.COM

sda2: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /bootmgr /Boot/BCD

sda3: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  Windows 7
    Boot files:        /Windows/System32/winload.exe /ubuntu/winboot/wubildr 
                       /ubuntu/winboot/wubildr.mbr

sda4: __________________________________________________________________________

    File system:       Extended Partition
    Boot sector type:  -
    Boot sector info: 

sda5: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  -
    Boot sector info: 
    Operating System:  Ubuntu 13.10
    Boot files:        /boot/grub/grub.cfg /etc/fstab

sda6: __________________________________________________________________________

    File system:       swap
    Boot sector type:  -
    Boot sector info: 

sda7: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  Grub2 (v1.99)
    Boot sector info:  Grub2 (v1.99) is installed in the boot sector of sda7 
                       and looks at sector 648107560 of the same hard drive 
                       for core.img. core.img is at this location and looks 
                       in partition 94 for .
    Operating System:  Linux Mint 16 Petra
    Boot files:        /boot/grub/grub.cfg /etc/fstab


============================ Drive/Partition Info: =============================

Drive: sda _____________________________________________________________________

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1                  63       208,844       208,782  de Dell Utility
/dev/sda2    *        212,992    41,172,991    40,960,000   7 NTFS / exFAT / HPFS
/dev/sda3          41,172,992   618,134,175   576,961,184   7 NTFS / exFAT / HPFS
/dev/sda4         618,139,646   976,771,071   358,631,426   5 Extended
/dev/sda5         694,501,376   817,790,975   123,289,600  83 Linux
/dev/sda6         935,753,728   976,771,071    41,017,344  82 Linux swap / Solaris
/dev/sda7         618,139,648   694,499,022    76,359,375  83 Linux

"blkid" output: ________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/sda1        3030-3030                              vfat       DellUtility
/dev/sda2        76C2AD13C2ACD89F                       ntfs       RECOVERY
/dev/sda3        B864AE8864AE4948                       ntfs       OS
/dev/sda5        5832ede3-f357-427e-ac67-b2157b5ba6e1   ext4       
/dev/sda6        24a1b8d2-d3a0-4b3f-b48e-9a3f5bab16c2   swap       
/dev/sda7        520dfeb8-758e-47c0-97de-a0a8cb8b4866   ext4

================================ Mount points: =================================

Device           Mount_Point              Type       Options

/dev/sda3        /media/matt/OS           fuseblk    (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda5        /                        ext4       (rw,errors=remount-ro)
/dev/sda7        /media/matt/520dfeb8-758e-47c0-97de-a0a8cb8b4866 ext4       (rw,nosuid,nodev,uhelper=udisks2)


=========================== sda5/boot/grub/grub.cfg: ===========================
Bootinfoscript
--------------------------------------------------------------------------------
#
# DO NOT EDIT THIS FILE
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
set default="0"

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
 else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
    insmod part_msdos
    insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
else
  search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

/\/\/\/\/\ EDITED OUT MORE THEME INFO /\/\/\/\/\/\

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-5832ede3-f357-427e-ac67-b2157b5ba6e1' {
recordfail
    load_video
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos5'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
    else
      search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
    fi
    linux   /boot/vmlinuz-3.11.0-15-generic root=UUID=5832ede3-f357-427e-ac67-b2157b5ba6e1 ro   acpi_backlight=vendor dell_laptop.backlight=0 quiet splash $vt_handoff
    initrd  /boot/initrd.img-3.11.0-15-generic
}

/\/\/\/\/\/\/\/ I MANUALLY OMITTED THE UBUNTU ADVANCED OPTIONS SUBMENU FROM HERE BECAUSE THERE Was >30000 CHARACTERS /\/\/\/\/\/\/

--class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-35-generic-advanced-5832ede3-f357-427e-ac67-b2157b5ba6e1' {
    recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
        else
          search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
        fi
        echo    'Loading Linux 3.8.0-35-generic ...'
        linux   /boot/vmlinuz-3.8.0-35-generic root=UUID=5832ede3-f357-427e-ac67-b2157b5ba6e1 ro   acpi_backlight=vendor dell_laptop.backlight=0 quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.8.0-35-generic
    }
    menuentry 'Ubuntu, with Linux 3.8.0-35-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-35-generic-recovery-5832ede3-f357-427e-ac67-b2157b5ba6e1' {
    recordfail
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
        else
          search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
        fi
        echo    'Loading Linux 3.8.0-35-generic ...'
        linux   /boot/vmlinuz-3.8.0-35-generic root=UUID=5832ede3-f357-427e-ac67-b2157b5ba6e1 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.8.0-35-generic
    }
    menuentry 'Ubuntu, with Linux 3.8.0-19-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-19-generic-advanced-5832ede3-f357-427e-ac67-b2157b5ba6e1' {
    recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
        else
          search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
        fi
        echo    'Loading Linux 3.8.0-19-generic ...'
        linux   /boot/vmlinuz-3.8.0-19-generic root=UUID=5832ede3-f357-427e-ac67-b2157b5ba6e1 ro   acpi_backlight=vendor dell_laptop.backlight=0 quiet splash $vt_handoff
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.8.0-19-generic
    }
    menuentry 'Ubuntu, with Linux 3.8.0-19-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.8.0-19-generic-recovery-5832ede3-f357-427e-ac67-b2157b5ba6e1' {
    recordfail
        load_video
        insmod gzio
        insmod part_msdos
        insmod ext2
        set root='hd0,msdos5'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
        else
          search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
        fi
        echo    'Loading Linux 3.8.0-19-generic ...'
        linux   /boot/vmlinuz-3.8.0-19-generic root=UUID=5832ede3-f357-427e-ac67-b2157b5ba6e1 ro recovery nomodeset 
        echo    'Loading initial ramdisk ...'
        initrd  /boot/initrd.img-3.8.0-19-generic
    }
}

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry 'Memory test (memtest86+)' {
    insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
else
  search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
fi
linux16 /boot/memtest86+.bin
}
menuentry 'Memory test (memtest86+, serial console 115200)' {
insmod part_msdos
insmod ext2
set root='hd0,msdos5'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos5 --hint-efi=hd0,msdos5 --hint-baremetal=ahci0,msdos5  5832ede3-f357-427e-ac67-b2157b5ba6e1
else
  search --no-floppy --fs-uuid --set=root 5832ede3-f357-427e-ac67-b2157b5ba6e1
fi
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda2)' --class windows --class os $menuentry_id_option 'osprober-chain-76C2AD13C2ACD89F' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos2'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos2 --hint-efi=hd0,msdos2 --hint-baremetal=ahci0,msdos2  76C2AD13C2ACD89F
    else
      search --no-floppy --fs-uuid --set=root 76C2AD13C2ACD89F
    fi
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
--------------------------------------------------------------------------------

=============================== sda5/etc/fstab: ================================

--------------------------------------------------------------------------------
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sdb5 during installation
UUID=5832ede3-f357-427e-ac67-b2157b5ba6e1 /               ext4    errors=remount-ro 0     1
# swap was on /dev/sdb6 during installation
UUID=24a1b8d2-d3a0-4b3f-b48e-9a3f5bab16c2 none            swap    sw              0       0
--------------------------------------------------------------------------------


=========================== sda7/boot/grub/grub.cfg: ===========================

--------------------------------------------------------------------------------
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
set default="0"

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
else
  menuentry_id_option=""
fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}

if [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos
insmod ext2
set root='hd0,msdos7'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7  520dfeb8-758e-47c0-97de-a0a8cb8b4866
else
  search --no-floppy --fs-uuid --set=root 520dfeb8-758e-47c0-97de-a0a8cb8b4866
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

/\/\/\/\/\/\/ EDITED OUT SOME DEBIAN/MINT THEME INFO HERE /\/\/\/\/\/\/\

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="$1"
    if [ "$1" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ ${recordfail} != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
if [ "$linux_gfx_mode" != "text" ]; then load_video; fi
menuentry 'Linux Mint 16 Cinnamon 64-bit, 3.11.0-12-generic (/dev/sda7)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    gfxmode $linux_gfx_mode
    insmod gzio
    insmod part_msdos
    insmod ext2
    set root='hd0,msdos7'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7  520dfeb8-758e-47c0-97de-a0a8cb8b4866
    else
      search --no-floppy --fs-uuid --set=root 520dfeb8-758e-47c0-97de-a0a8cb8b4866
    fi
    linux   /boot/vmlinuz-3.11.0-12-generic root=UUID=520dfeb8-758e-47c0-97de-a0a8cb8b4866 ro   quiet spl

Exp*_*ens 24

您可以尝试update-grub查看它是否会检测到 Linux Mint。这应该检查以查看安装了哪些操作系统。

或者,您可以尝试从 live USB(或 LiveCD)启动并在grub-install /dev/sda安装了硬盘的情况下运行。这将重新安装 GRUB,并应再次检查其他操作系统。