Setara dengan pembaruan-grub untuk sistem RHEL / Fedora / CentOS?

36

Di Ubuntu (dan saya kira di Debian juga) ada skrip sistem bernama update-grubyang secara otomatis dijalankan grub-mkconfig -odengan jalur yang benar untuk file konfigurasi grub.

Apakah ada perintah serupa untuk distribusi berbasis Red Hat?

Jika tidak, bagaimana sistem mengetahui di mana file konfigurasi grub untuk memperbarui ketika versi kernel baru diinstal?

pqnet
sumber

Jawaban:

14

Tindakan spesifik yang perlu terjadi ketika paket RPM diinstal atau dihapus termasuk dalam paket RPM itu sendiri di bagian pra-instal, pasca-instal, pra-uninstall, dan pasca-uninstall.

Untuk setiap paket RPM yang diinstal, Anda dapat meminta database RPM untuk skrip persis yang disertakan dengan rpmperintah:

rpm -q --scripts <package-name>

Menjalankan perintah itu pada paket kernel untuk CentOS 6 mengembalikan antara lain:

postinstall scriptlet (using /bin/sh):
<snip>
/sbin/new-kernel-pkg --package kernel --install 2.6.32-431.17.1.el6.x86_64 || exit $?

Dari manual:

new-kernel-package - alat untuk skrip instalasi kernel

HBruijn
sumber
2
menjalankan perintah yang sama pada hasil Fedora 20 /bin/kernel-installsebagai gantinya. Harap edit jawaban Anda untuk memasukkan informasi ini untuk referensi di masa mendatang
pqnet
3
Itulah mengapa saya memulai jawaban saya dengan langkah-langkah yang diperlukan untuk mencari tahu. Saya pikir menanyakan skrip instalasi sepertinya cukup universal di dunia RPM dalam membantu Anda memahami bagaimana pembaruan kernel dilakukan. Dengan cara itu jawaban saya akan tahan terhadap ujian waktu jauh lebih baik daripada hanya memberi nama alat / perintah / skrip dukungan yang sudah Anda tunjukkan sangat rilis dan tergantung pada distribusi.
HBruijn
3
Ya @ HBruijn benar. Ada terlalu banyak variabilitas di seluruh Fedora, RHEL, dan CentOS untuk memberikan satu jawaban, lebih baik untuk menunjukkan bagaimana menemukannya.
slm
24

Setelah menganalisis skrip di Fedora, saya menyadari bahwa path file konfigurasi dibaca dari symlink /etc/grub2.conf. Baris yang benar grub2-mkconfigadalah sebagai berikut:

grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"

Seperti disebutkan dalam komentar, itu mungkin /etc/grub2.cfg, atau /etc/grub2-efi.cfgpada sistem UEFI. Sebenarnya, kedua tautan mungkin ada pada saat yang sama dan menunjuk ke lokasi yang berbeda . Tanda -euntuk readlinkakan kesalahan jika file target tidak ada, tetapi pada sistem saya keduanya ada ... Periksa perintah Anda, saya kira.

pqnet
sumber
5
Pada CentOS 7 tautan tampaknya/etc/grub2.cfg
Anthon
6
grub2-mkconfig --output = / boot / grub2 / grub.cfg tampaknya menjadi cara yang disetujui dalam manual fedora
Kendrick
1
Untuk langkah-langkah grub khusus CentOS 7 lainnya, periksa wiki resmi: wiki.centos.org/HowTos/Grub2
sshow
2
Jika Anda memiliki sistem UEFI yang Anda inginkansudo grub2-mkconfig -o "$(readlink /etc/grub2-efi.cfg)"
Craig Ringer
10

Di Fedora saya menggunakan:

grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)"

karena mengeksekusi tanpa opsi untuk readlinkmengembalikan jalur relatif, dan grub2-mkconfigmemberikan kesalahan:

$ ls -l /etc/grub2.cfg
lrwxrwxrwx. 1 root root 22 Dec 10  2015 /etc/grub2.cfg -> ../boot/grub2/grub.cfg

$ readlink /etc/grub2.cfg
../boot/grub2/grub.cfg

$ sudo grub2-mkconfig -o "$(readlink /etc/grub2.cfg)"
/usr/sbin/grub2-mkconfig: line 244: ../boot/grub2/grub.cfg.new: No such file or directory

Saya menggunakan -eopsi sehingga jika symlink tidak menyelesaikan ke file yang ada, output ditampilkan di stdout jadi saya tahu ada masalah.

Dari halaman manual untuk tautan baca:

      -e, --canonicalize-existing
          canonicalize  by  following  every symlink in every component of
          the given name recursively, all components must exist
Setaa
sumber
6

Di Fedora, symlink /etc/grub2.cfg menunjuk pada versi BIOS. Pada sistem UEFI, gunakan:

$ sudo grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

Dalam CentOS:

$ sudo grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

Secara umum, Anda bisa menggunakan:

$ sudo grub2-mkconfig -o $(readlink -f /etc/grub2-efi.cfg)

Lihat https://docs.fedoraproject.org/f27/system-administrators-guide/kernel-module-driver-configuration/Working_with_the_GRUB_2_Boot_Loader.html#sec-Editing_a_Menu_Entry

theJPster
sumber
2

edit file grub dengan viatau vim, simpan perubahan dan tutup editor dengan: wq!

Inilah yang perlu Anda jalankan untuk memperbarui grub di RedHat atau CentOS:

grub2-mkconfig -o /boot/grub2/grub.cfg
EugeneVM
sumber
0

The update-grubScript di Ubuntu sebenarnya hanya rintisan untukgrub-mkconfig , dan dapat disesuaikan dengan distro lain tanpa terlalu banyak rasa sakit. Ini dia secara keseluruhan:

#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

Ini secara efektif melakukan apa yang direkomendasikan di wiki CentOS , dan jawaban lain di sini - satu-satunya perbedaan adalah Anda perlu mengubah grubke grub2dalam perintah dan jalur output.

mwfearnley
sumber