Pesan ini terjadi ketika meninggalkan menu Grub dan sebelum layar splash Ubuntu.
Bagaimana cara saya memperbaiki masalah untuk menghapus pesan?
Dan apa artinya itu?
error: Diskfilter writes are not supported
Sistem boot dan sepertinya berfungsi dengan baik.
Jawaban:
Ini BUG!
Ini adalah bug yang muncul di versi terbaru dari Ubuntu Server LTS (Ubuntu Server 14.04 LTS), ketika Anda membuat partisi boot (atau partisi root, ketika partisi boot tidak ada) di dalam LVM atau partisi RAID .
Anda bisa mendapatkan info lebih lanjut tentang bug ini di Ubuntu Launchpad: Bug # 1274320 "Kesalahan: penulisan diskfilter tidak didukung" .
Pembaruan: Bug ini sudah diperbaiki di Ubuntu Server 14.04 dan beberapa versi Ubuntu yang lebih baru. Mungkin, Anda hanya perlu berlari
apt-get upgrade
.Mengapa bug ini terjadi?
Ketika sistem boot, GRUB membaca (
load_env
) data di/boot/grub/grubenv
. File ini disebut Blok Lingkungan GRUB .Dari Manual GRUB:
Perilaku ini dapat ditemukan di
/etc/grub.d/00_header
(update-grub
menggunakan file ini untuk menghasilkan/boot/grub/grub.cfg
file):Masalahnya adalah
save_env
pernyataan itu hanya berfungsi pada instalasi sederhana (Anda tidak bisa menjalankansave_env
disk RAID atau LVM). Dari manual GRUB:Fitur GRUB recordfail menggunakan
save_env
pernyataan untuk memperbarui status recordfail (lihat Bantuan Ubuntu - Grub 2 , bagian "Boot Terakhir Gagal atau Boot ke Mode Pemulihan"). Namun, dalam Ubuntu 14.04 (dan dalam versi Debian terbaru),save_env
pernyataan (di dalam fitur recordfail) digunakan bahkan jika GRUB diinstal dalam LVM atau RAID.Mari kita lihat garis dari 104 hingga 124 di
/etc/grub.d/00_header
:GRUB melewatkan fitur recordfail dengan benar ketika menggunakan sistem file yang tidak didukung (btrfs, zfs, dll), tetapi tidak melewatkan LVM dan RAID setiap saat .
Bagaimana GRUB melindungi dirinya dari penulisan di dalam RAID dan LVM?
Untuk membaca / menulis dengan benar di sistem file, GRUB memuat modul yang sesuai.
GRUB menggunakan modul diskfilter (
insmod diskfilter
) di partisi RAID, dan modul lvm di partisi LVM.Mari kita lihat implementasi baca / tulis dari modul diskfilter :
Saya menempelkan kode di sini (baris dari 808 ke 823). Peringatan yang ditunjukkan dalam pertanyaan ini muncul di baris 821:
The
grub_diskfilter_read
fungsi diimplementasikan (dan GRUB dapat membaca filesystem RAID). Namun,grub_diskfilter_write
fungsi ini menimbulkanGRUB_ERR_NOT_IMPLEMENTED_YET
kesalahan.Mengapa menggunakan
quick_boot=0
memecahkan masalah? Dan mengapa itu solusi yang salah?Jika Anda melihat sekali lagi dalam
/etc/grub.d/00_header
kode, Anda akan melihat bahwa fitur recordfail hanya digunakan saatquick_boot=1
. Jadi, mengubahquick_boot
dari 1 ke 0 menonaktifkan fitur recordfail, dan menonaktifkan menulis di partisi RAID / LVM.Namun, itu juga akan menonaktifkan banyak fitur lainnya (jalankan
grep \$quick_boot /etc/grub.d/*
dan Anda akan melihat). Terlebih lagi, jika suatu hari Anda mengubah/boot/grub
direktori Anda ke luar RAID / LVM, fitur recordfail masih akan dinonaktifkan.Singkatnya, solusi ini tidak perlu menonaktifkan fitur, dan itu tidak umum.
Apa solusi yang benar?
Solusi yang benar harus mempertimbangkan menonaktifkan
save_env
pernyataan ketika GRUB berada di dalam partisi LVM atau RAID.Satu tambalan diusulkan dalam sistem Debian Bug Tracker untuk mengimplementasikan solusi ini. Itu dapat ditemukan di: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=754921
Gagasan di balik tambalan ini adalah:
grub-probe --target=abstraction "${grubdir}"
perintah untuk mendapatkan modul abstraksi seperti apa yang digunakan GRUB untuk membaca / menulis file di/boot/grub
direktori;diskfilter
ataulvm
, lewatisave_env
pernyataan recordfail dan tulis komentar yang sesuai dalam/boot/grub/grub.cfg
file;# GRUB lacks write support for /dev/md0, so recordfail support is disabled.
Bagaimana cara menerapkan solusi yang benar?
Jika Anda tidak ingin menunggu tambalan ini diterapkan oleh orang-orang Ubuntu / Debian dalam kode resmi, Anda dapat menggunakan tambalan saya
00_header
:sumber
00_header
file yang berfungsi. Saya tidak akan menonaktifkanquick_boot
untuk membuatnya pergi.00_header
file yang diedit (seperti yang disarankan di sini) tidak berfungsi. Saya tahu itu hanya karena itu bekerja untuk saya (dan untuk Rarylson Freitas) tidak berarti itu akan berhasil untuk semua orang. Tetapi apakah Anda memastikan untuk memberikan izin yang tepat untuk yang lama dan yang baru00_header
dan untuk dijalankanupdate-grub
? (Jika Anda baru saja mengedit00_header
di tempatnya, tidakchmod
diperlukan, tetapiupdate-grub
tetap diperlukan.)Saya pikir kesalahan ini terjadi karena penyerbuan atau partisi LVM .
Untuk perbaikan sementara untuk masalah ini:
Sunting :
/etc/grub.d/10_linux
Menggantikan
'quick_boot="1"' with 'quick_boot="0"'
Kemudian :
sumber