我知道有吨涉及的问题GRUB问题,但我有一个特定问题,很长时间无法解决。
我的硬盘是使用布局谷氨酰胺磷酸酶格式(不是膜生物反应器- 请参阅下面的列表)。我有两个 64 位操作系统:
问题是,在一次系统升级之后(我不确定是 Debian 还是 Windows 升级的问题),GRUB 在启动时停止显示,使 Windows 成为默认启动项。要启动我的 Debian,我使用 GRUB 命令提示符,使用Debian 的 LiveCD:
grub> root=(hd0,6)
grub> linux /vmlinuz-4.3.0-1-amd64 root=/dev/sda8
grub> initrd /initrd.img-4.3.0-1-amd64
grub> boot
到目前为止我尝试过的
我尝试用很多不同的方法解决这个问题:
grub
我删除了所有名称中带有字符串的软件包并安装了grub-efi-amd64
依赖于以下项的包(其中包括):grub-common
,grub2-common
,grub-efi-amd64-bin
。结果所有这些包都已安装。- 我做了以下更改
/etc/default/grub
(如@gilles'回答这问题)然后跑了update-grub
命令(或者update-grub2
是update-grub
单行 bash 脚本的符号链接):GRUB_HIDDEN_TIMEOUT_QUIET=false
,GRUB_HIDDEN_TIMEOUT=
,GRUB_TIMEOUT=10
。
- 我关掉 Windows 快速启动和冬眠。
grub-install --target=x86_64-efi && update-grub
诊断信息
我的主板是技嘉 GA-Z77-D3H和UEFI 双 BIOS™, 意思就是 (引用)“它具有 BIOS 兼容模式 - 内置启动菜单为每个设备显示两个条目,一个带有 UEFI 前缀,一个不带有”. 无论是在 UEFI 模式还是在 BIOS 传统模式下启动都不起作用。
efibootmgr
命令结果:root@mycomp:/home/me# efibootmgr BootCurrent: 0007 Timeout: 1 seconds BootOrder: 0002,0003,0004,0005,0000,0007 Boot0000* Windows Boot Manager Boot0002* UEFI: ST1000DM003-9YN162 Boot0003* Hard Drive Boot0004* CD/DVD Drive Boot0005* Removable Drive Boot0007* UEFI: USB USB Hard Drive
parted
命令结果:root@mycomp:/home/me# parted /dev/sda print Model: ATA ST1000DM003-9YN1 (scsi) Disk /dev/sda: 1000GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 316MB 315MB ntfs Basic data partition hidden, diag 2 316MB 420MB 105MB fat32 EFI system partition boot, esp 3 420MB 555MB 134MB Microsoft reserved partition msftres 4 555MB 268GB 268GB ntfs Basic data partition msftdata 5 268GB 805GB 537GB ntfs Basic data partition msftdata 6 805GB 806GB 500MB ext4 msftdata 7 806GB 830GB 24,4GB ext4 msftdata 8 830GB 838GB 8000MB ext4 msftdata 9 838GB 853GB 15,0GB ext4 msftdata 10 853GB 863GB 10,0GB linux-swap(v1) 11 863GB 1000GB 137GB ext4 msftdata
/etc/fstab
内容(我归零唯一唯一标识符为了保护隐私,请参见下文):root@mycomp:/home/me# cat /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda8 during installation UUID=00000000-0000-0000-0000-000000000000 / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda6 during installation UUID=00000000-0000-0000-0000-000000000000 /boot ext4 defaults 0 1 # /boot/efi was on /dev/sda2 during installation UUID=0000-0000 /boot/efi vfat defaults 0 1 # /home was on /dev/sda11 during installation UUID=00000000-0000-0000-0000-000000000000 /home ext4 defaults 0 2 # /tmp was on /dev/sda9 during installation UUID=00000000-0000-0000-0000-000000000000 /tmp ext4 defaults 0 2 # /usr was on /dev/sda7 during installation UUID=00000000-0000-0000-0000-000000000000 /usr ext4 defaults 0 2 # swap was on /dev/sda10 during installation UUID=00000000-0000-0000-0000-000000000000 none swap sw 0 0 # CD-ROM /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 # Added for Google Chrome (see: https://unix.stackexchange.com/questions/116400/google-chrome-no-space-on-rootfs-partition) /usr/opt /opt none bind 0 0 # C: Windows partition UUID=0000000000000000 /media/Windows/C ntfs ro 0 0 # D: Windows partition UUID=0000000000000000 /media/Windows/D ntfs ro 0 0
fdisk -l
结果:root@mycomp:/home/me# fdisk -l Device Start End Sectors Size Type /dev/sda1 2048 616447 614400 300M Windows recovery environment /dev/sda2 616448 821247 204800 100M EFI System /dev/sda3 821248 1083391 262144 128M Microsoft reserved /dev/sda4 1083392 524290047 523206656 249,5G Microsoft basic data /dev/sda5 524290048 1572866047 1048576000 500G Microsoft basic data /dev/sda6 1572866048 1573842943 976896 477M Microsoft basic data /dev/sda7 1573842944 1621499903 47656960 22,7G Microsoft basic data /dev/sda8 1621499904 1637124095 15624192 7,5G Microsoft basic data /dev/sda9 1637124096 1666420735 29296640 14G Microsoft basic data /dev/sda10 1666420736 1685952511 19531776 9,3G Linux swap /dev/sda11 1685952512 1953523711 267571200 127,6G Microsoft basic data
引用到
msinfo32
Windows 系统信息,我的系统BIOS mode
是UEFI
。
如果您需要更多信息来诊断我的问题,请在评论中提出您的请求。
更新
我删除了grub-efi-amd64
已安装所有依赖项的软件包grub-pc
现在,只有当我在 BIOS 模式下启动时,GRUB 才能成功加载。以下命令:
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
显示BIOS
,但我仍然想以 UEFI 模式启动!
有用的网址
可能有帮助的链接:
答案1
问题是 EFI 是 bios-init,你必须选择 efi 映像(windows 或 linux-grub)
如果您不设置 grub,它将启动默认的安全启动,因此进入 bios 并禁用安全启动。
此后...Grub 将正确更新。(正确启动后)
现在知道您讨厌 ubuntus 的“自动魔法”(好吧,好吧)但为了理解起见您仍然可以根据这些设置进行逆向工程......
EFI Boot = 在固件(bios)中设置
- 启动类型 = uefi
- 第一次启动 = 选择 EFI:磁盘和 EFI:启动(Windows 启动管理器)或(Debian/Ubuntu/Etc...)
蛴螬=应该efi [此处输入磁盘名称]
或者它们的某种组合...现在您可以通过 Root -> kernel、ramdisk 等安装 grub...并且 windows 应该是 hd0,1...2... efi/boot 或者某些 windows 引导加载程序。
设置强制 BIOS 扫描启动 - 或 Debian。
引导修复。
https://sourceforge.net/projects/boot-repair-cd/
- 制作活动磁盘
- 开机直播。
- 连接到互联网。
- 按“Go”键
... 应该管用。
答案2
这里有这么多的分区!
“GRUB 在启动时停止显示,使 Windows 成为默认启动项。”
表示(可能)Windows 已更改启动标志。
从您的parted
输出来看,分区 2 正在启动。这是 /boot/grub 所在的位置吗?...看起来 sda6 是您的 nix 安装的 /boot 分区?
使用cfdisk
或类似命令来确保启动标志分区是 /boot/grub 所在的分区。
我不认为重新安装 grub 有什么坏处:
grub-install /dev/sda && update-grub && shutdown -r now
答案3
要使grub2
菜单显示在uefi
系统上,您只需添加一个菜单项efibootmgr
:
sudo efibootmgr --create --disk /dev/xxxx --part 1 --write-signature --loader /EFI/Manjaro/grubx64.efi --label "MANJARO" --verbose
你应该安装电喷分区下的
/boot/efi
&文件在此挂载点下将为您提供path
上述--loader
指向的正确信息grubx64.efi
。代替
--disk
xxxxx& 分区号--part
与您的实际电喷设备。
在双启动系统上将显示类似以下内容:
[stuart@manjaro ~]$ efibootmgr
BootCurrent: 0003
Timeout: 10 seconds
BootOrder: 0003,0000,0001
Boot0000* Windows Boot Manager
Boot0001 Hard Drive
Boot0003* MANJARO
- 这Manjaro Architect ISO如果写成图像USB
(即
dd
)可以启动UEFI 模式&在初始菜单上有一个搜索选项电喷加载器。这可用于启动您的系统以运行上述efibootmgr
命令。如果菜单选项不是出现意味着你已经从USB在MBR 模式。