ไม่สามารถบูตเดเบียนไม่สามารถเปลี่ยนแปลงอะไรได้ด้วย efibootmgr


2

หลังจากอัพเดตเคอร์เนล (Debian Stable / Jessie) ระบบของฉันจะไม่บูต ฉันกลับไปที่มันด้วยการติดตั้ง Ubuntu และตัวโหลด Ubuntu จะให้ฉันบูตเดเบียน

ดังนั้นตอนนี้ฉันพยายามรับเดเบียนเพื่อซ่อมแซมกระบวนการบู๊ต แต่ดูเหมือนว่า efibootmgr ไร้สมรรถภาพ:

นี่คือสถานะปัจจุบัน:

# efibootmgr -v

BootCurrent: 0000
No BootOrder is set; firmware will attempt recovery
Boot0000* Ubuntu    HD(1,800,fa000,c865d688-f250-471e-9d54-bad998d64e31)File(\EFI\ubuntu\grubx64.efi)RC
Boot0001* UEFI Onboard LAN IPv6 ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(MAC(74867a15fbd5,0)030d3c000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000RC
Boot0002* UEFI Onboard LAN IPv4 ACPI(a0341d0,0)PCI(1c,0)PCI(0,0)MAC(MAC(74867a15fbd5,0)RC
Boot0004* Windows Boot Manager  HD(1,800,fa000,c865d688-f250-471e-9d54-bad998d64e31)File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...d...............
Boot2001* EFI USB Device    RC

และฉันคิดว่าสิ่งนี้จะแก้ไขได้:

# grub-install /dev/sda

Installing for x86_64-efi platform.
efibootmgr: Could not set variable Boot0003: No such file or directory
efibootmgr: Could not prepare boot variable: No such file or directory
Installation finished. No error reported.

แต่จริงๆแล้วมันดูเหมือนว่า efibootmgr ไม่สามารถเปลี่ยนแปลงอะไรได้เลย

# efibootmgr -t 10
efibootmgr: Could not set Timeout: No such file or directory

มีอะไรบางอย่างที่กระหน่ำและดูเหมือนว่านี่อาจเป็นปัญหาในตอนแรกไม่มีใครรู้ว่าอะไร?

อย่างที่ฉันบอกว่า Ubuntu จัดการติดตั้งได้ดีบนระบบเดียวกันดังนั้นฉันลังเลที่จะเชื่อว่ามันเป็นคอมพิวเตอร์มากกว่า Debian ที่เสีย


นี่คือ strace ของคำสั่ง timeout ที่ล้มเหลว:

มีข้อผิดพลาดบางอย่างในตอนท้าย (ไม่มีพื้นที่เหลือบนอุปกรณ์ ??)

root@dell-3521:/home/john# strace efibootmgr -t 10
execve("/bin/efibootmgr", ["efibootmgr", "-t", "10"], [/* 47 vars */]) = 0
brk(0)                                  = 0xcff000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc3cfd1c000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=126215, ...}) = 0
mmap(NULL, 126215, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fc3cfcfd000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libpci.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0%\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=52448, ...}) = 0
mmap(NULL, 2147632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc3cf8f1000
mprotect(0x7fc3cf8fc000, 2097152, PROT_NONE) = 0
mmap(0x7fc3cfafc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7fc3cfafc000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \"\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=109144, ...}) = 0
mmap(NULL, 2204200, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc3cf6d6000
mprotect(0x7fc3cf6f0000, 2093056, PROT_NONE) = 0
mmap(0x7fc3cf8ef000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7fc3cf8ef000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64-linux-gnu/libefivar.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000!\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=63520, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc3cfcfc000
mmap(NULL, 2159576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc3cf4c6000
mprotect(0x7fc3cf4cd000, 2093056, PROT_NONE) = 0
mmap(0x7fc3cf6cc000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7fc3cf6cc000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\34\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1738176, ...}) = 0
mmap(NULL, 3844640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc3cf11b000
mprotect(0x7fc3cf2bd000, 2093056, PROT_NONE) = 0
mmap(0x7fc3cf4bc000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a1000) = 0x7fc3cf4bc000
mmap(0x7fc3cf4c2000, 14880, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc3cf4c2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220:\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=84856, ...}) = 0
mmap(NULL, 2189928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc3cef04000
mprotect(0x7fc3cef18000, 2093056, PROT_NONE) = 0
mmap(0x7fc3cf117000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7fc3cf117000
mmap(0x7fc3cf119000, 6760, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc3cf119000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14664, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc3cfcfb000
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fc3ced00000
mprotect(0x7fc3ced03000, 2093056, PROT_NONE) = 0
mmap(0x7fc3cef02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fc3cef02000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc3cfcfa000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc3cfcf9000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc3cfcf8000
arch_prctl(ARCH_SET_FS, 0x7fc3cfcf9700) = 0
mprotect(0x7fc3cf4bc000, 16384, PROT_READ) = 0
mprotect(0x7fc3cef02000, 4096, PROT_READ) = 0
mprotect(0x7fc3cf117000, 4096, PROT_READ) = 0
mprotect(0x7fc3cf6cc000, 4096, PROT_READ) = 0
mprotect(0x7fc3cf8ef000, 4096, PROT_READ) = 0
mprotect(0x7fc3cfafc000, 4096, PROT_READ) = 0
mprotect(0x60e000, 4096, PROT_READ)     = 0
mprotect(0x7fc3cfd1e000, 4096, PROT_READ) = 0
munmap(0x7fc3cfcfd000, 126215)          = 0
access("/sys/firmware/efi/efivars/", F_OK) = 0
statfs("/sys/firmware/efi/efivars/", {f_type="SYSFS_MAGIC", f_bsize=4096, f_blocks=0, f_bfree=0, f_bavail=0, f_files=0, f_ffree=0, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
uname({sys="Linux", node="dell-3521", ...}) = 0
access("/sys/firmware/efi/vars/new_var", F_OK) = 0
openat(AT_FDCWD, "/sys/firmware/efi/vars/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
brk(0)                                  = 0xcff000
brk(0xd28000)                           = 0xd28000
fcntl(3, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
fcntl(3, F_SETFD, FD_CLOEXEC)           = 0
getdents(3, /* 159 entries */, 32768)   = 12872
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
open("/sys/firmware/efi/vars/Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var", O_RDONLY) = 3
read(3, "B\0o\0o\0t\0000\0000\0000\0000\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 2084
read(3, "", 2012)                       = 0
close(3)                                = 0
open("/sys/firmware/efi/vars/Boot0001-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var", O_RDONLY) = 3
read(3, "B\0o\0o\0t\0000\0000\0000\0001\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 2084
read(3, "", 2012)                       = 0
close(3)                                = 0
open("/sys/firmware/efi/vars/Boot0002-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var", O_RDONLY) = 3
read(3, "B\0o\0o\0t\0000\0000\0000\0002\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 2084
read(3, "", 2012)                       = 0
close(3)                                = 0
open("/sys/firmware/efi/vars/Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var", O_RDONLY) = 3
read(3, "B\0o\0o\0t\0000\0000\0000\0004\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 2084
read(3, "", 2012)                       = 0
close(3)                                = 0
open("/sys/firmware/efi/vars/Boot2001-8be4df61-93ca-11d2-aa0d-00e098032b8c/raw_var", O_RDONLY) = 3
read(3, "B\0o\0o\0t\0002\0000\0000\0001\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 2084
read(3, "", 2012)                       = 0
close(3)                                = 0
access("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c/data", F_OK) = -1 ENOENT (No such file or directory)
open("/sys/firmware/efi/vars/new_var", O_WRONLY) = 3
write(3, "T\0i\0m\0e\0o\0u\0t\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2084) = -1 ENOSPC (No space left on device)
umask(0)                                = 022
umask(022)                              = 0
chmod("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e0980/", 021371157541) = -1 ENOENT (No such file or directory)
chmod("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e0980/attributes", 021371157541) = -1 ENOENT (No such file or directory)
chmod("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e0980/data", 021371157541) = -1 ENOENT (No such file or directory)
chmod("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e0980/guid", 021371157541) = -1 ENOENT (No such file or directory)
chmod("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e0980/raw_var", 021371157541) = -1 ENOENT (No such file or directory)
chmod("/sys/firmware/efi/vars/Timeout-8be4df61-93ca-11d2-aa0d-00e0980/size", 021371157541) = -1 ENOENT (No such file or directory)
close(3)                                = 0
write(2, "efibootmgr: ", 12efibootmgr: )            = 12
write(2, "Could not set Timeout", 21Could not set Timeout)   = 21
write(2, ": ", 2: )                       = 2
write(2, "No such file or directory\n", 26No such file or directory
) = 26
exit_group(14)                          = ?
+++ exited with 14 +++

คำตอบ:


3

ฉันทั้งสองได้ยินรายงานและกรณีที่เห็นซึ่งเนื้อหา NVRAM (ที่เก็บefibootmgrคำสั่งบูตและรายการบูต) เสียหายทำให้การเปลี่ยนแปลงเพิ่มเติมยากหรือเป็นไปไม่ได้ การแก้ไขเดียวที่ฉันรู้คือการใช้ตัวเลือกของเฟิร์มแวร์เพื่อรีเซ็ตการตั้งค่าทั้งหมดเป็นค่าเริ่มต้น นี้ควรล้างทุกรายการออกจาก NVRAM ซึ่งจะทำให้คอมพิวเตอร์ของคุณ unbootable จนกว่าคุณจะมีบางสิ่งบางอย่างในตำแหน่งสำรองชื่อไฟล์ ( EFI/BOOT/bootx64.efi) หรือคุณใช้สื่อที่ถอดออกได้ (เช่นดิสก์การติดตั้ง Ubuntu) คุณสามารถใช้ดิสก์ฉุกเฉินหรือบูตโหลดเดอร์สำรองเพื่อบูตระบบปฏิบัติการและเพิ่มรายการที่คุณต้องการกลับมาได้

ที่กล่าวว่าฉันไม่สามารถเป็นบวก 100% ว่าคุณกำลังประสบปัญหานี้ อาการเรียงกัน แต่อาจเป็นไปได้ว่าคุณกำลังประสบปัญหาอื่นซึ่งในกรณีที่พยายามกู้คืนข้อมูลที่ฉันเพิ่งแนะนำไปจะใช้เวลานานซึ่งอาจทำให้เรื่องแย่ลง คุณจะต้องตัดสินใจด้วยตัวเองว่ามันคุ้มค่ากับความเสี่ยงหรือไม่


อาจไม่จำเป็นต้องใช้ดิสก์สำหรับบูตฉุกเฉิน หลังจากล้างรายการบูตคุณสามารถบู๊ตลงในเชลล์ EFI และสร้างรายการบูตที่คุณต้องการโดยใช้bcfgคำสั่ง (ชนิดhelp bcfg)
โยกย้าย

หรือถ้าbcfgไม่พร้อมใช้งานคุณสามารถเรียกใช้ตัวจัดการการเริ่มระบบของคุณหรือเคอร์เนล EFISTUB โดยตรง (รวมถึงอาร์กิวเมนต์บรรทัดคำสั่ง) เสมอตราบใดที่ชื่อไฟล์ลงท้ายด้วย. FEI (และหากไม่สามารถเปลี่ยนชื่อได้)
โยกย้าย

1

ดูเหมือนว่าการรวมกันของ Windows จะทำให้ระบบและฮาร์ดแวร์ของ Dell เป็นขยะ:

http://www.c0le.org/2014/12/dual-booting-debian-jessie-and-windows.html

ทุกครั้งที่คุณบู๊ต Windows (ฉันไม่เคยทำ! มันเกิดขึ้นโดยบังเอิญ!) มันพยายามเพิ่ม bootloader ของมันเอง

สิ่งที่ดูเหมือนจะแก้ไขคือการทำสิ่งนี้ในพรอมต์คำสั่งของ Windows!:

( Win+ Xจากนั้นพร้อมรับคำสั่ง (ผู้ดูแลระบบ))

bcdedit /set {bootmgr} path \EFI\debian\grubx64.efi

เห็นได้ชัดว่าสิ่งนี้ทำให้ Windows ใช้ bootloader ด้วงของเดเบียน

จากนั้นเมื่อ Windows พยายามไขสิ่งต่าง ๆ มันจะขันเกลียวขึ้นเพื่อให้ทำงานได้!

กองเปื้อนเลือด


ในขณะที่คำตอบของคุณเป็นเรื่องตลกคำตอบอื่น ๆ อาจมีประโยชน์มากกว่าโดยทั่วไป
โยกย้าย
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.