OK sau khi lục lọi một chút, tôi thấy cách giải quyết vấn đề này ít nhất là tạm thời khá đơn giản tuy nhiên tôi không thiết lập hệ thống của mình với btrfs nên tôi không thể xác nhận cách khắc phục này.
hoặc bình luận hoặc loại bỏ dòng này:
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
hoặc là
if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env \
recordfail; fi; fi
trong tập tin này
/etc/grub.d/00_header
sau đó chạy
update-grub
Lý do không chỉnh sửa /boot/grub/grub.cfg
trực tiếp là nó sẽ bị ghi đè mỗi khi grub được cập nhật trong trường hợp này, bạn sẽ chỉ phải "làm lại" bản sửa lỗi nếu các gói chung của grub được cập nhật.
Đây là lỗi trên launchpad nếu bạn muốn thêm lỗi # 736743
Trích dẫn Colin Watson từ báo cáo lỗi
Đây thực sự là một thông báo lỗi gây hiểu lầm: những gì đang xảy ra là việc triển khai btrfs của GRUB không triển khai giao diện hook đọc tệp để trả về danh sách chặn cho mã gọi. Tôi đã đăng lên grub-devel về điều này và người bảo trì ngược dòng đã chỉ ra rằng, ngay cả ngoài các vấn đề đa thiết bị, việc viết thư cho btrfs từ GRUB về cơ bản là rất rủi ro vì:
cùng một khối có thể được sử dụng bởi nhiều ảnh chụp nhanh, mỗi cây sử dụng một khối đã cho sẽ chứa tổng kiểm tra của nó, v.v.
Tuy nhiên, btrfs dành không gian khi bắt đầu cho bộ tải khởi động. Không gian này nhiều hơn GRUB cần để tự nhúng và vì vậy chúng tôi có thể sử dụng 1KB của nó cho một khối môi trường.
Trong mọi trường hợp, đây không phải là vấn đề mới phát sinh từ việc sử dụng subvolume, cũng không ngăn chặn khả năng khởi động (bạn nhận được lời nhắc "Nhấn phím bất kỳ để tiếp tục", nhưng nếu bạn bỏ qua thì nó sẽ khởi động). Hạ cấp xuống danh sách mong muốn.
Hi vọng điêu nay co ich