Apakah itu GRUB: Panduan Lengkap untuk Pengurus But GNU

Kemaskini terakhir: 14 Oktober 2025
Pengarang TecnoDigital
  • GRUB ialah pengurus but GNU yang memilih dan memuatkan sistem pengendalian, menyokong BIOS/UEFI dan Multiboot.
  • GRUB 2 menambah modul, sokongan sistem fail yang dipertingkatkan, carian UUID dan menu/terminal grafik.
  • Konfigurasi diuruskan melalui /etc/default/grub dan 40_custom, menjana semula dengan update-grub atau grub2-mkconfig.
  • Keselamatan: GRUB lindungi kata laluan, gunakan penyulitan LUKS dan mempunyai dasar kata laluan yang kukuh.

Ilustrasi umum tentang GRUB

Jika anda telah memasang GNU/Linux pada komputer anda atau menggunakan pelbagai sistem pengendalian, anda mungkin pernah mendengar tentang GRUB. Ia merupakan program kecil tetapi berkuasa yang anda lihat sebelum sistem anda dibut, membolehkan anda memilih apa yang hendak dimuatkan. Walaupun ia sering tidak disedari, peranannya adalah penting untuk memulakan sistem pengendalian dan menyerahkan kawalan kepada kernel dengan lancar.

Dalam dunia boot PC, GRUB telah menjadi standard de facto kerana kuasa dan fleksibilitinya. Dilahirkan dalam projek GNU, ia kini merupakan pengurus boot yang paling meluas dalam GNU/Linux , serasi dengan pelbagai seni bina dan sistem fail, mesra pengguna untuk pemula, dan pada masa yang sama pisau Swiss Army bagi mereka yang memperhalusi setiap perincian proses boot.

Apakah GNU GRUB dan untuk apa ia?

GNU GRUB (GNU GRand Unified Bootloader) ialah pengurus berbilang but: perisian yang dijalankan oleh firmware (BIOS atau UEFI) apabila komputer dihidupkan untuk memilih dan memuatkan sistem pengendalian. Ia membolehkan pengguna memilih item menu, menghantar parameter ke kernel, but dari rangkaian dan juga berinteraksi dengan konsol untuk menyelesaikan masalah tertentu.

Ia digunakan terutamanya dalam pengedaran GNU/Linux, walaupun ia juga telah digunakan oleh sistem lain seperti Solaris pada x86. Pada sistem UEFI moden , firmware memuatkan secara langsung fail boleh laku GRUB yang terletak dalam partition sistem EFI (ESP) , dengan syarat ia didaftarkan dalam NVRAM; dalam BIOS/MBR, GRUB menempati sektor awal cakera dan berterusan dari situ.

Di luar menu biasa, GRUB mematuhi Spesifikasi Multiboot, yang bermaksud ia boleh boot kernel yang serasi dengan lancar . Dan sebaik sahaja kernel berada dalam memori, GRUB menyerahkan kawalan dan tugasnya selesai, yang bukan satu tugas yang mudah.

Skrin Pilihan But GRUB

Lembaran teknikal dan data projek

GRUB merupakan sebahagian daripada ekosistem GNU dan diedarkan sebagai perisian percuma di bawah lesen GNU GPL v3 atau yang lebih baharu . Pembangunannya adalah sumber terbuka, dengan repositori rasmi, penjejak pepijat dan laman web, serta komuniti yang sangat aktif.

Ia ditulis terutamanya dalam C dan pemasang, dan berjalan pada beberapa platform: IA-32, x86-64 dan PowerPC, antara lain. Cawangan semasa ialah GRUB 2 (pelaksanaan semula "GRUB Legacy" yang bersejarah). Versi stabil terkini yang dikeluarkan ialah 2.12 (20 Disember 2023). Jika anda ingin menyemak versi tempatan anda, anda boleh menjalankan: grub-install --version dan anda akan melihat rantai yang sepadan.

Sedikit sejarah dan evolusi

GRUB bermula sebagai inisiatif oleh Erich Stefan Boleyn dalam konteks GNU Hurd dan mikrokernel Mach. Untuk menyelesaikan perbezaan dalam kaedah but, Spesifikasi Multiboot telah dicipta, yang memudahkan pemuat but dan kernel "bercakap dalam bahasa yang sama." Pada tahun 1999, Gordon Matzigkeit dan Yoshinori Okuji menerajui penerimaannya sebagai pakej rasmi Projek GNU.

Sekitar tahun 2002, sekumpulan penyelidik Jepun telah memulakan PUPA (Preliminary Universal Programming Architecture) dengan matlamat untuk menulis semula GRUB agar lebih mantap dan modular. Usaha ini menghasilkan GRUB 2 , manakala versi sebelumnya dikenali sebagai "GRUB Legacy" (yang versi 0.97nya dikemas kini terakhir pada tahun 2005). Dari tahun 2007 dan seterusnya, beberapa pengedaran telah berhijrah ke GRUB 2, dan menjelang akhir tahun 2009, sebahagian besarnya telah memasukkannya secara lalai.

Gambar rajah proses but GRUB

Bagaimana untuk boot komputer anda dengan GRUB (BIOS dan UEFI)

Apabila anda menghidupkan PC anda, perisian tegar menjalankan pemeriksaannya (RAM, jam, peranti, susunan but) dan mencari pemuat but. Pada sistem dengan BIOS/MBR, kawalan dihantar ke Rekod But Induk (MBR), 512 bait awal cakera. GRUB dibahagikan kepada peringkat: Peringkat 1 (kod minima dalam MBR), Peringkat 1.5 (dalam sektor kemudian, merapatkan untuk memahami sistem fail) dan Peringkat 2 (menu dan fungsi lanjutan). Dalam GRUB 2, "1.5" itu tidak lagi wujud; kini terdapat imej tertentu seperti boot.img, core.img dan modul (*.mod) yang digabungkan mengikut pemasangan.

  Linux 6.14: Apa yang Baharu, Penambahbaikan Keselamatan dan Sokongan Perkakasan

Dalam UEFI, prosesnya lebih langsung: firmware melaksanakan binari GRUB EFI daripada partition EFI , dengan syarat ia dipasang dan didaftarkan dengan betul. Dalam kedua-dua kes, GRUB memaparkan menu atau konsol, memuatkan kernel yang dipilih, dan kemudian memindahkan pelaksanaan kepadanya.

Spesifikasi dan keserasian berbilang but

GRUB melaksanakan Multiboot, membolehkan kernel yang serasi dibut tanpa "helah" tertentu. Tambahan pula, untuk sistem yang tidak menyokongnya (seperti Windows atau DOS ), ia menawarkan pemuatan berantai, menyasarkan sektor pertama partition tempat pemuat butnya berada.

Keserasian sistem failnya sangat luas: Btrfs, ext2/3/4, FAT12/16/32, exFAT, HFS/HFS+, ISO9660, Nilfs2, NTFS, ReiserFS, ZFS, ROMFS, JFS, XFS , antara lain. Ia juga boleh membaca daripada volum LVM dan tatasusunan RAID, satu kelebihan yang ketara apabila struktur storan adalah kompleks.

Ciri dan Fungsi yang Ditampilkan

  • Antara muka menu Terminal interaktif yang boleh dikonfigurasikan dan sangat fleksibel, dengan pelengkapan automatik Tab dan pintasan gaya Bash.
  • Sokongan dari LBA (Pengalamatan Blok Logik) untuk mengatasi had BIOS klasik dan membaca melebihi 1024 silinder.
  • Kapasiti untuk but rangkaian (PXE/TFTP) dan terminal jauh, berguna dalam senario pengurusan berpusat.
  • Penyahmampatan automatik dan pengecaman berbilang format boleh laku.
  • Penyimpanan berterusan pembolehubah dengan save_env/load_env y grub-editenv (apabila platform membenarkannya).
  • Semua pengesanan RAM, kebebasan geometri cakera, dan mekanisme carian mengikut label dan UUID.
  • Sokongan grafik untuk menu dan latar belakang, dan reka bentuk modular yang mengekalkan core.img kecil dan memuatkan modul mengikut keperluan.

Terminologi utama: peranti, sekatan dan laluan

GRUB menamakan cakera dan partition dengan cara tersendiri. Cakera pertama biasanya (hd0), partition pertama (hd0,1) Dalam GRUB 2 (ingat: dalam GRUB 2, penomboran bermula pada 1; dalam Legacy, ia bermula pada 0). Untuk merujuk kepada keseluruhan cakera, partition diabaikan: (hd0).

Untuk menunjukkan fail, peranti digabungkan dengan laluan: (hd0,1)/ruta/al/archivo. Ia juga menyokong senarai sekatan (senarai blok) apabila perlu menunjukkan lokasi tepat pada cakera fail yang tidak kelihatan seperti itu dalam sistem fail, contohnya (hd0,1)+1 untuk sektor pertama partition, berguna dengan chainloader +1.

"Sistem fail root" dalam GRUB tidak sama dengan "/" dalam Linux. Ia hanyalah partition root dari mana GRUB akan membaca failnya ; sebaik sahaja kernel Linux mengambil alih, ia mentakrifkan root sebenarnya sendiri, dan semua perkara lain dalam GRUB menjadi tidak relevan.

Antara Muka GRUB

GRUB menawarkan tiga paparan utama. Yang paling biasa ialah menu , dengan entri yang telah dikonfigurasikan terlebih dahulu; anda boleh menavigasi dengan kekunci anak panah, but dengan Enter, mengedit entri dengan "e", atau membuka konsol dengan "c".

Editor input membolehkan anda mengubah suai baris dengan pantas (tambah dengan "o/O", edit dengan "e", padam dengan "d") dan, jika semuanya kelihatan betul, but dengan "b". Ia sesuai untuk menguji parameter kernel tanpa menyentuh fail.

Konsol ini merupakan mod yang paling berkuasa: ia menyokong pelengkapan automatik kontekstual, pintasan penyuntingan dan semua arahan dalaman GRUB untuk mencari cakera, memuatkan kernel/initrd atau memuatkan rantai. Jika fail konfigurasi hilang atau rosak, GRUB akan melancarkan anda di sini supaya anda boleh menyelesaikan masalah secara manual.

Mesej ralat biasa

Ralat boleh muncul pada peringkat awal (lebih terhad) atau semasa memuatkan menu dan modul (lebih deskriptif). Berikut ialah himpunan kod perwakilan yang mungkin dipaparkan oleh GRUB, diparafrasa untuk kejelasan :

  • 1: Laluan tidak sah atau bukan mutlak; 2: Jenis fail tidak sah (bukan fail biasa); 3–4: Data/pengepala rosak semasa penyahmampatan; 5: meja partition rosak atau tidak sah.
  • 6: ketidakserasian Tahap1/Tahap2; 7: Memuatkan di bawah 1 MB tidak disokong; 8: Cuba untuk but tanpa memuatkan kernel; 9: Kegagalan but tidak diketahui.
  • 10: Ciri berbilang but tidak disokong; 11: Peranti tidak dikenali; 12: Peranti tidak sah; 13: Format boleh laku yang tidak disokong.
  • 14: Sistem fail menghalang keseluruhan fail daripada dibaca; 15: fail tidak dijumpai; 16: Struktur sistem fail tidak konsisten.
  • 17: Tidak boleh melekapkan partition yang dipilih; 18: Silinder di luar julat yang disokong oleh BIOS (biasa pada pemacu yang lebih lama); 19: Initrd sebelum kernel.
  • 20: Modul sebelum kernel multiboot; 21: Cakera yang dipilih tidak wujud; 22: Pembahagian tidak wujud; 23: Ralat mentafsir nombor.
  • 24: Akses kepada blok di luar partition; 25: Ralat baca cakera; 26: Terlalu banyak pautan simbolik; 27: Perintah tidak diketahui.
  • 28: Item tidak muat dalam ingatan; 29: Ralat tulis cakera; 30: Hujah tidak sah; 31: Fail tidak sejajar dengan sektor (ReiserFS, use notail).
  • 32: Pengesahan diperlukan; 33: Peranti bersiri tidak dikonfigurasikan; 34: Tiada sektor percuma untuk Peringkat 1.5 selepas MBR (konflik dengan EZ-BIOS atau partition bermula terlalu awal).
  Kesilapan yang memendekkan jangka hayat PC anda dan cara mengelakkannya

Perintah GRUB Asas

Dalam konsol anda boleh menjalankan arahan interaktif yang sangat berguna. Sebagai contoh, boot memulakan yang terakhir dimuatkan (kernel atau pemuat rantai), dan chainloader <archivo> memuatkan sektor atau fail daripada rantaian; pintasan biasa untuk Windows ialah chainloader +1.

displaymem memaparkan penggunaan memori mengikut BIOS, yang berguna jika anda tidak pasti RAM yang dikesan. Dengan initrd <archivo> anda menentukan imej cakera RAM awal yang diperlukan oleh kernel.

Untuk memasang ke MBR daripada konsol GRUB Legacy, anda gunakan install dengan laluan ke tahap1, tahap2 dan, secara pilihan, ke fail konfigurasi. Hari ini dalam GRUB 2, dari sistem, ia adalah perkara biasa untuk digunakan grub-install dan menjana semula menu dengan update-grub/grub2-mkconfig.

Perintah itu kernel menentukan binari kernel dan parameternya, sebagai contoh: kernel /vmlinuz root=/dev/sda5Ia biasanya didahului oleh root (hdX,Y) o rootnoverify untuk menetapkan partition dari mana GRUB akan membaca.

Fail konfigurasi dan arahan

Dalam GRUB Legacy menu berada di dalamnya /boot/grub/menu.lst o grub.conf, dengan arahan seperti color, default, fallback, hiddenmenu, password, timeout, splashimage dan blok title dengan pesanan untuk setiap sistem.

Contoh klasik (diparafrasa) akan termasuk bahagian Linux dengan root (hd0,2), kernel dengan beliau parameter akar=/…, Dan boot; dan satu lagi untuk Windows dengan rootnoverify (hd0,1) y chainloader +1.

Dalam GRUB 2 fail yang dijana secara automatik ialah /boot/grub/grub.cfg. Ia tidak disyorkan untuk mengeditnya dengan tangan; sebaliknya, ia diselaraskan /etc/default/grub (nilai seperti GRUB_TIMEOUT, GRUB_DEFAULT, dsb.) dan entri tersuai ditambah dalam /etc/grub.d/40_custom. Kemudian ia dilaksanakan update-grub o grub2-mkconfig untuk menjana semula menu.

Perbezaan utama antara GRUB Legacy dan GRUB 2

  • Fail konfigurasi pergi dari menu.lst/grub.conf a grub.cfg, dengan sintaks dan arahan yang diperbaharui dan penjanaan automatik melalui grub-mkconfig.
  • Penomboran partition bermula pada 1 dalam GRUB 2 (dalam Legacy ia bermula pada 0).
  • Kegigihan pembolehubah dengan save_env/load_env dalam beberapa konfigurasi.
  • Pengesanan laluan yang lebih baik dan cari dengan UUID/tag; lebih banyak sistem fail disokong.
  • Bacaan terus daripada LVM dan RAID.
  • Grafik terminal dan menu, dan imej yang disusun semula: Peringkat 1.5 hilang; boot.img, core.img dan modul dinamik (*.mod).

Keselamatan dan pengerasan dengan GRUB

Pengurus but yang kurang selamat adalah penapis. Jika seseorang yang mempunyai akses fizikal boleh mengedit parameter kernel atau melancarkan entri yang berbeza, ia akan melumpuhkan langkah keselamatan anda secara berkesan . Itulah sebabnya adalah dinasihatkan untuk melindungi GRUB dengan kata laluan dan melaksanakan amalan terbaik.

Tetapkan satu kata laluan yang kuat untuk mengehadkan pengubahsuaian kemasukan atau akses konsol. Dalam GRUB 2, gunakan nama pengguna dan kata laluan dengan grub-mkpasswd-pbkdf2 dan konfigurasikan peraturan yang sepadan dalam skrip /etc/grub.d/.

Ia juga termasuk penyulitan cakera menggunakan LUKS , supaya walaupun seseorang mencuri komputer, mereka tidak akan dapat membaca data tersebut. Ia juga memastikan bahawa dasar kata laluan sistem adalah ketat untuk mengurangkan serangan brute-force.

Urus sejarah log anda dengan bijak : log yang memberi petunjuk kepada penyerang harus diminimumkan atau dipusatkan dengan kawalan akses; log yang membantu mengaudit percubaan berniat jahat harus diagregatkan dan dianalisis di lokasi yang selamat.

Untuk mengesan sistem lain yang dipasang dan menjana entri secara automatik, pasang os-proberIa akan menjimatkan masa anda dan mengelakkan ralat semasa mencipta semula menu.

  Bagaimana untuk mendayakan Boot Selamat selepas kemas kini BIOS

Pemasangan dan penyelenggaraan

Jika anda tidak memasang GRUB semasa pemasangan distro anda, anda boleh melakukannya kemudian. Dalam GRUB 2, dari sistem, jalankan sudo grub-install /dev/sdX (ganti dengan cakera anda) dan kemudian sudo update-grub o sudo grub2-mkconfig -o /boot/grub/grub.cfgAnda akan melihat menu pada but seterusnya.

Daripada konsol GRUB Legacy, prosedur klasik adalah untuk menunjukkan akar dan menjalankan pemasangan: root (hd1,0) seguido de setup (hd1,0) untuk partition pertama cakera kedua, atau setup (hd1) jika anda menunjuk ke MBR cakera kedua itu.

Edit terus /boot/grub/grub.cfg Ini bukan idea yang baik dalam GRUB 2, walaupun secara teknikalnya mungkin. Laluan yang disyorkan adalah untuk berubah /etc/default/grub, gunakan /etc/grub.d/40_custom untuk kandungan sendiri dan penjanaan semula.

Soalan praktikal dan jalan pintas yang berguna

Bagaimana untuk mengetahui partition boot pada /dev/sda? Pada sistem BIOS/MBR: sudo fdisk -l /dev/sda (lihat asterisk untuk "Boot"). Dalam GPT/UEFI: lsblk -o NAME,FSTYPE,PARTTYPE,PARTFLAGS,MOUNTPOINT dan cari partition EFI (FAT32, taip EF00/flags esp). Juga sudo efibootmgr -v memaparkan entri but yang direkodkan.

Bagaimanakah cara saya mendapatkan UUID partition? dengan blkid o lsblk -f. Sebagai contoh: sudo blkid /dev/sda2 mengembalikannya UUID dan metadata lain.

Bagaimanakah saya boleh membuat GRUB 2 menunggu 10 saat sebelum memasukkan masukan lalai? Menyelaraskan /etc/default/grub dengan GRUB_TIMEOUT=10 (dan, jika berkenaan, GRUB_TIMEOUT_STYLE=menu) dan melaksanakan sudo update-grub o grub2-mkconfig.

Perintah GRUB Legacy untuk memasang pada partition pertama cakera kedua? Buka konsol dan jalankan: root (hd1,0) dan kemudian setup (hd1,0). Jika anda mahukan MBR, ia akan menjadi setup (hd1).

Langkah untuk menukar konfigurasi GRUB 2? 1) Edit /etc/default/grub (mis., GRUB_DEFAULT, GRUB_TIMEOUT), 2) tambah entri /etc/grub.d/40_custom jika anda memerlukannya, 3) jana semula dengan update-grub/grub2-mkconfig, 4) but semula dan uji.

Di mana untuk meletakkan menu tersuai dalam GRUB 2? En /etc/grub.d/40_custom (atau fail sendiri dalam /etc/grub.d/ dengan kebenaran yang sepatutnya). Jangan sekali-kali mengedit dengan tangan /boot/grub/grub.cfg kecuali dalam keadaan kecemasan.

Di manakah entri disimpan dalam GRUB Legacy? En /boot/grub/menu.lst o grub.conf, mengikut pengedaran.

Bagaimanakah saya boleh mengakses konsol GRUB daripada menu? Tekan kekunci "c" dalam GRUB 2 atau Legacy. Untuk mengedit entri tertentu, tekan "e". Kedua-dua pintasan ini sangat berguna apabila anda perlu mendiagnosis masalah dengan pantas.

Contoh pilihan biasa

Pemilihan but lalai: GRUB_DEFAULT=0 inning pertama bermula; dengan GRUB_DEFAULT=saved mengingati konfigurasi terakhir yang digunakan. Selepas perubahan, jana semula konfigurasi.

Menunggu masa: GRUB_TIMEOUT=4 melaraskan kelewatan menu; dengan 0 bermula tanpa berhenti; dalam beberapa senario anda boleh menyembunyikan menu dengan GRUB_TIMEOUT_STYLE=hidden untuk permulaan yang lebih bersih.

Kemas kini menu: pada Debian/Ubuntu dan derivatif, sudo update-grub; pada orang lain, sudo grub2-mkconfig -o /boot/grub/grub.cfg. Pastikan anda mempunyai os-prober dipasang jika anda ingin mengesan sistem lain secara automatik.

Walaupun GRUB juga muncul dalam konteks di luar GNU/Linux, ingat bahawa ia bukanlah perkhidmatan sokongan. Jika masalah anda khusus untuk Windows, perkara paling praktikal untuk dilakukan ialah pergi ke forum yang dikhaskan untuk sistem tersebut untuk mendapatkan bantuan yang tertumpu.

GRUB telah berkembang daripada menu but mudah kepada persekitaran pra-sistem sebenar, yang mampu but berbilang sistem pengendalian, mengurus cakera kompleks dan membantu anda memulihkan sistem hanya dengan beberapa arahan. Dengan konfigurasi yang betul dan sedikit pengerasan (kata laluan GRUB, penyulitan LUKS, dasar dan log utama yang diurus dengan baik), anda akan mempunyai proses but yang mantap, fleksibel dan, yang paling penting, terkawal.

Kit But UEFI
Artikel berkaitan:
UEFI Bootkit: Bootkitty pada Linux dan warisan BlackLotus