Cài đặt Grub không thành công


13

Tôi đã cài đặt Debian Jessie rất tốt, nhưng sau đó tôi đã chạy apt-get update && apt-get upgrade && apt-get dist-upgrade.

Và sau khi khởi động lại, nó đã trực tiếp đến BIOS. Tôi nhận ra rằng Grub bị thiếu, vì vậy tôi đã chạy một đĩa CD trực tiếp và nhập Rescue mode, gắn phân vùng gốc của mình, + phân vùng khởi động và chạy các lệnh sau:

Grub tìm thấy hình ảnh linux:

root@debian:~# update-grub
Generating grub configuration file ...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
Found linux image: /boot/vmlinuz-4.9.0-0.bpo.3-amd64
Found initrd image: /boot/initrd.img-4.9.0-0.bpo.3-amd64
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
Found Ubuntu 16.10 (16.10) on /dev/sdb2
Adding boot menu entry for EFI firmware configuration
done

Và sau đó grub-install:

root@debian:~# grub-install /dev/sda
Installing for x86_64-efi platform.
Could not prepare Boot variable: No such file or directory
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

lsblk :

root@debian:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 223.6G  0 disk 
├─sda1   8:1    0  92.6G  0 part /
├─sda2   8:2    0 130.4G  0 part 
└─sda3   8:3    0   573M  0 part /boot/efi

Tôi đã làm gì sai sao? Có quá ít không gian trên /boot/efiphân vùng của tôi ?

root@debian:~# ls -l /boot/efi/EFI/debian/
total 120
-rwx------ 1 root root 121856 Jul 20 20:29 grubx64.efi

efibootmgr không hiển thị cài đặt Debian:

root@debian:~# efibootmgr --verbose | grep debian

Biên tập :

Tôi liên tục gặp lỗi này mỗi lần tôi thử và tạo bộ tải khởi động bằng cách sử dụng efibootmgr:

grub-install: info: executing efibootmgr -c -d /dev/sda -p 3 -w -L grub -l \EFI\grub\grubx64.efi.
Could not prepare Boot variable: No such file or directory
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

Chính xác vấn đề tương tự ở đây với máy tính xách tay ASUS.
Aubin

Câu trả lời:


33

Đã sửa lỗi efibootmgr bằng cách gắn biến Biến cho efibootmgr:

# mount -t efivarfs efivarfs /sys/firmware/efi/efivars

Và sau đó efibootmgrcho tôi lỗi về không gian:

Could not prepare Boot variable: No space left on device

Đã sửa lỗi đó bằng cách xóa các tệp kết xuất:

# rm /sys/firmware/efi/efivars/dump-*

Và sau đó chạy bình thường

update-grub 
grub-install -v --target=x86_64-efi --recheck /dev/sda

và nó đã chạy thành công!


1
Điều này làm việc cho tôi, ngoại trừ việc tôi cũng phải khởi động lại giữa bước rm /sys/firmware/efi/efivars/dump-*và chạy grub-install.
Nick ODell

0

Tôi gặp vấn đề tương tự trên Ubuntu với bo mạch chủ Asus của tôi. Tôi không tìm thấy bất kỳ tập tin kết xuất để xóa. Hoặc bất cứ điều gì lớn mà cảm thấy an toàn để xóa.

Tôi đã có thể khắc phục sự cố bằng cách khởi động lại hệ thống với efi_no_storage_paranoiatùy chọn dòng lệnh kernel. Tôi đã mất mục khởi động Ubuntu UEFI. May mắn thay, tôi vẫn có thể khởi động vào phân vùng Ubuntu của mình bằng cách đi đến lựa chọn khởi động trong cài đặt BIOS. Sau đó, tôi đã sử dụng phím "e" trong menu grub để thêm tùy chọn đó vào dòng lệnh kernel. Sau đó, tôi đã có thể hoàn thành nâng cấp hệ thống thất bại trước đây của mình bằng cách chạy apt -f install.

Nếu hệ thống ở trạng thái không khởi động được, một tùy chọn là khởi động từ thanh USB Ubuntu và khắc phục sự cố từ đó.

Nếu vấn đề xuất hiện lại sau này tôi sẽ xem xét thêm tùy chọn kernel đó vĩnh viễn vào /etc/default/grub.

Hạt nhân rất hoang tưởng về việc lấp đầy không gian biến UEFI. Nó báo cáo rằng nó đã đầy ngay cả khi còn chỗ trống. Điều này là cố ý để ngăn chặn vĩnh viễn không gian trên một số bo mạch chủ. Tôi nghi ngờ rằng với bo mạch chủ của tôi, điều này có thể quá hoang tưởng. Có thể BIOS không bắt đầu thu gom rác trừ khi không gian đầy hơn.

Trước đây tôi có thể phục hồi từ tình huống tương tự bằng cách sử dụng tiêu đề "Clear CMOS" trên bo mạch chủ của mình. Tốt để tìm một giải pháp phần mềm.


0

Cố gắng chỉ định đĩa chứa trình tải nếu đĩa của bạn không / dev / sda:

efibootmgr --create --disk /dev/nvme0n1 --part 1 --label Ubuntu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.