GNU/Linux >> Belajar Linux >  >> Ubuntu

Kesalahan Zfs Grub-probe Gagal Mendapatkan Jalur Kanonik /dev/disk_name?

Latar Belakang:

  • Ubuntu Xenial
  • ZFS diinstal untuk disk sistem (jadi, Anda tahu:rpool/ROOT)
  • Sistem berjalan dengan baik, tetapi ketika kernel diperbarui, grub-probe kesalahan gonggongan yang disebutkan di atas
  • Saya lebih suka tidak melakukan reboot sekarang

Ada diskusi di sini tentang grub-probe dan bagaimana seharusnya "menjadi lebih baik", tetapi ini membantu sampai itu terjadi. Saya mendapat ide dari diskusi itu.

Lebih detail:contoh lengkap kesalahan (untuk sistem saya) terlihat seperti:

/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.

Ini terkubur dalam banyak detail yang muncul dari perintah apt untuk menginstal driver grafis (tapi itu tidak penting).

Disk ini sesuai dengan salah satu partisi ZIL saya. Saya menambahkan ZIL dan cache setelah penginstalan selesai, jadi saya kira itu sebabnya saya tidak melihat masalah sebelumnya. Saya belum mem-boot ulang, dan itulah mengapa saya melihat masalahnya sama sekali. Ya, Anda dapat mem-boot ulang untuk memperbaiki semua ini, tetapi dengan asumsi Anda tidak ingin melakukannya, baca terus:

Jika saya melihat di /dev, saya melihat tautan ke semua disk ZFS saya yang terlihat seperti:

lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD10EARS-00Y5B1_WD-WMAV51436394-part1 -> sdc1
lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4MK86SWX7-part1 -> sdd1
lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4N1085683-part1 -> sde1
lrwxrwxrwx  1 root     root           4 Sep 16 23:31 ata-WDC_WD2500JS-22MHB0_WD-WCANK4053187-part1 -> sda1

… tetapi terutama tidak ada untuk partisi ZIL.

Saya dapat menguji situasi dengan menjalankan:

$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.

Jadi pertanyaannya adalah:bagaimana cara memperbaiki masalah ini jadi grub-probe berperilaku?

Jawaban yang Diterima:

Ada variabel lingkungan yang memperbaikinya. Masalah dari bacaan saya tampaknya adalah bahwa Grub menyukai gagasan 'mendukung' zfs tetapi bukan gagasan untuk memperbaiki masalah yang terkait dengan zfs di Grub. Khususnya penanganan kesalahannya yang buruk dalam hal menemukan sesuatu.

Misalnya, alat grub yang dikirimkan bersama Ubuntu 16.x akan gagal menemukan /boot pada volume ZFS tanpa campur tangan pengguna, dan kemudian dengan senang hati menulis beberapa (tetapi tidak semua) file yang diperlukan keluaran dari utilitas apa pun yang Anda gunakan ke /boot folder yang baru saja dikatakan tidak dapat ditemukan.

Bagaimanapun…

http://list.zfsonlinux.org/pipermail/zfs-discuss/2016-June/025765.html

To check if you have commit (should see full paths):

ZPOOL_VDEV_NAME_PATH=1 zpool status

If so you can do:

ZPOOL_VDEV_NAME_PATH=1 grub-whatevs ....

Anda dapat meneruskan variabel sebagai input ke utilitas grub yang diperlukan, atau Anda dapat menetapkannya sebagai variabel shell di .bashrc atau .profile root atau semacamnya dengan…

export ZPOOL_VDEV_NAME_PATH=YES

Variabel menyebabkan zpool melaporkan path lengkap, daripada path relatif /dev ke disk yang mungkin atau mungkin tidak berfungsi dengan baik dengan zfs. Utilitas Grub memeriksa status zpool untuk kumpulan zfs untuk menemukan disk yang berisi mereka. Oleh karena itu, mengubah keluaran status zpool memperbaiki grub.

Terkait:Bagaimana cara menghapus entri EFI yang tidak perlu dari GRUB?

Saya setuju bahwa pengguna tidak harus berurusan dengan ini, mengacu pada komentar femulator. Solusi sebenarnya? Sama seperti setiap proyek open source lainnya yang mendekam dalam bug yang tidak pernah diperbaiki. Garpu, perbaiki sendiri, dan berhenti menggunakan proyek sumber/perpustakaan/apa pun. Cara FOSS "menembak" seseorang, dengan kata lain;). Rupanya Debian mengetahui bug khusus ini tujuh tahun lalu.

Ini adalah satu-satunya hal yang menghentikan saya untuk berhasil memigrasi kumpulan boot FreeBSD RaidZ ke Ubuntu. Jika ada orang lain yang mencoba hal serupa, prosesnya relatif sederhana, selama Anda memahami ZFS dengan cukup baik untuk mengabaikan bagian dokumentasi dari Grub dan zfsonlinux yang salah (seperti menyetel dataset root Anda agar tidak di-automount, eh…? Bagaimana tepatnya apakah itu akan boot?). Agak ironis bahwa Ubuntu menunjukkan dalam dokumen mereka bahwa boot loader adalah 'fitur' Linux yang paling tidak aman, yang menurut saya benar, tetapi dalam hal ini juga merupakan kelemahan mencolok Ubuntu. Saya akan membutuhkan satu atau dua jam untuk memigrasi kumpulan BSD ZFS ke OS lain jika saya dapat melakukannya menggunakan utilitas Sun/Solaris yang benar-benar berfungsi. Masalahnya adalah saya harus menggunakan utilitas Linux (seperti Grub) yang tidak (atau hampir tidak) berfungsi di beberapa titik, jadi ada kesalahan selama dua hari lainnya yang saya habiskan untuk memperbaikinya. Ubuntu akan jauh lebih baik jika tidak memerlukan grub untuk boot…


Ubuntu
  1. Linux:Perbedaan Antara /dev/console , /dev/tty Dan /dev/tty0?

  2. Bagaimana cara menyandikan base64 /dev/random atau /dev/urandom?

  3. Linux:Perbedaan antara /dev/console , /dev/tty dan /dev/tty0

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Seberapa Portabel /dev/stdin, /dev/stdout Dan /dev/stderr?

  3. gema atau cetak /dev/stdin /dev/stdout /dev/stderr

  1. Kapan Menggunakan /dev/random Vs /dev/urandom?

  2. Bagaimana Membungkam Sepenuhnya Cronjob Ke /dev/null/?

  3. Kubuntu Menunjukkan Kesalahan Saat Masuk (file:///usr/share/sddm//themes/breeze/main.qml:no File Atau Direktori Tersebut)?