GRUB
GNU GRUB (או: גראב) היא תוכנה חופשית המשמשת כמנהל אתחול (תוכנה שעולה לפני מערכת ההפעלה ומאפשרת בחירה בין מספר מערכות הפעלה הקיימות במחשב). התוכנה מכילה מידע על שמות מערכות ההפעלה המותקנות במחשב ומיקומן בדיסקים הקשיחים ובמחיצות השונות, ומאפשרת לו לבחור עם איזו מערכת לעבוד ואיזו מערכת תעלה אחרי זמן מסוים כברירת מחדל.
![]() | |
![]() | |
מסך העלייה של גראב 0.9x | |
מפתח | פרויקט גנו |
---|---|
מחזור חיים |
1995–הווה (כ־29 שנים) ![]() |
גרסה אחרונה |
2.12-rc1 (10 ביולי 2023) ![]() |
מערכת הפעלה | חוצה פלטפורמות |
נכתבה בשפות | שפת סף, C |
סוג רישיון | הרישיון הציבורי הכללי של גנו גרסה 3+ |
קוד מקור |
https://git.savannah.gnu.org/cgit/grub.git ![]() |
קטגוריה | מנהל אתחול |
www.gnu.org/software/grub | |
![]() ![]() |
![](http://up.wiki.x.io/wikipedia/commons/thumb/1/18/GNU_GRUB_on_MBR_partitioned_hard_disk_drives.svg/220px-GNU_GRUB_on_MBR_partitioned_hard_disk_drives.svg.png)
![](http://up.wiki.x.io/wikipedia/commons/thumb/b/bb/GNU_GRUB_on_GPT_partitioned_hard_disk_drives.svg/220px-GNU_GRUB_on_GPT_partitioned_hard_disk_drives.svg.png)
GRUB נכתבה כחלק מפרויקט גנו ומופצת תחת רישיון GPL (גרסה 3 ומעלה). היא מאפשרת לבחור בין מספר רב של מערכות הפעלה שונות. על אותו מחשב (ואף על אותו הדיסק הקשיח) יכולות להיות מותקנות למשל מערכת הפעלה Windows, מספר הפצות לינוקס מערכת BSD וה-GRUB יאפשר בחירה בין כולן כאפשרויות למערכת שתופעל על ידי המחשב. GRUB משמשת בברירת מחדל כמנהל האתחול המותקן עם מגוון הפצות לינוקס כדוגמת רד-הט, סוזה, מנדריבה ואובונטו.
![](http://up.wiki.x.io/wikipedia/commons/thumb/4/45/GNU_GRUB_components.svg/300px-GNU_GRUB_components.svg.png)
boot.img
has the exact size of 446 Bytes and is written to the MBR (sector 0). core.img
is written to the empty sectors between the MBR and the first partition, if available (for legacy reasons the first partition starts at sector 63 instead of sector 1, but this is not mandatory). The /boot/grub
-directory can be located on an distinct partition, or on the /-partition.דרך הפעולה
עריכהעם אתחולו, קורא המחשב את הסקטור הראשון בדיסק הקשיח, המכונה MBR, שם כתובות הפעולות הדרושות לטעינת מערכת ההפעלה. GRUB משתמש בסקטור זה של הדיסק הקשיח על מנת לפנות למקום בו נמצאת התוכנית המאפשרת לבחור בין מערכות ההפעלה השונות, והפקודות הנדרשות לטעינתן.
GRUB לוקח שליטה על הקושחה. זה אומר שהוא צריך להתמודד עם UEFI כמו גם עם ה-BIOS.
GRUB 2 על מערכות מבוססות BIOS
עריכהGRUB 2 במערכת מבוססת BIOS שומר את כל הקבצים שלו בשלושה מיקומים שונים.
/boot/grub2/
/etc/default/grub
/etc/grub.d/
במקרה של אובונטו, מספר הגרסה אינה מופיעה בשם GRUB, אז היא תהיה
/boot/grub/
וכן בשאר המקומות בהם מופיעה מספר הגרסה.
boot/grub2/
עריכהזהו המיקום בו יותקן GRUB 2. הספרייה מכילה את קובצי הליבה של טוען האתחול. את הקבצים ניתן למצוא בעזרת הפקודה הבאה:
ls /boot/grub2/ -l
הקבצים הללו הם:
- Device.map
GRUB אינו מבין בשמות דיסקים כמו sda או vda, מכיוון שהמוסכמות הללו למתן שמות לדיסק נוצרו על ידי מנהלי ההתקן של SCSI של מערכות ההפעלה. כאשר GRUB פועל מערכת ההפעלה אינה קיימת, ולכן יש לה מוסכמה משלה לשמות דיסקים. להלן מוסכמות שמות הדיסקים של GRUB:
גרסת GRUB | מוסכמת שמות לדיסק | מַשְׁמָעוּת |
---|---|---|
1 | hd0, 0 | דיסק קשיח מספר 0 ומחיצה מספר 1 |
2 | hd0, msdos1 | דיסק קשיח מספר 0 ומחיצה מספר 1, שיש לה טבלת מחיצות MS-DOS |
2 | hd0, msdos1 | דיסק קשיח מספר 2 ומחיצה מספר 3, שיש לה טבלת מחיצות MS-DOS |
2 | hd2, gpt1 | דיסק קשיח מספר 3 ומחיצה מספר 1, שיש לה טבלת מחיצות GPT |
ב-GRUB, הדיסק הקשיח מתחיל ב-0, ומספרי המחיצות מתחילים ב-1, בעוד שמוסכמות השמות של הדיסקים והמחיצות של מערכת ההפעלה מתחילות ב-1. מכיוון שמוסכמות השמות של הדיסקים של OS ו-GRUB שונות, חייבת להיות מיפוי עבור משתמשים, וזו הסיבה שהקובץ device.map נוצר.
cat /boot/grub2/device.map
# this device map was generated by anaconda
(hd0) /dev/sda
הקובץ device.map ישמש את הפקודות כמו grub2-install כדי להבין באיזה דיסק מותקנים קובצי הליבה של GRUB. הנה דוגמה לקובץ הזה:
strace -o delete_it.txt grub2-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
cat delete_it.txt | grep -i 'device.map'
openat(AT_FDCWD, "/boot/grub2/device.map", O_RDONLY) = 3
read(3, "# this device map was generated "..., 4096) = 64
openat(AT_FDCWD, "/boot/grub2/device.map", O_RDONLY) = 3
read(3, "# this device map was generated "..., 4096) = 64
הפקודה grub2-install תקבל קלט בצורה של מוסכמות שמות הדיסקים של מערכת ההפעלה מאחר שהמשתמשים אינם מודעים למוסכמות השמות של הדיסק GRUB. במהלך הביצוע, grub2 install תמיר את מוסכמות מתן השמות של דיסק SCSI למוסכמות שמות הדיסק GRUB על ידי קריאת קובץ device.map.
- grub.cfg
זהו קובץ התצורה הראשי של GRUB. זה קובץ סקריפט ענק שנוצר על ידי הפניה לכמה קובצי סקריפט אחרים. זה הקובץ שממנו GRUB part-3 לוקח הוראות על מיקום הליבה וה-initramfs, פרמטרים של שורת הפקודה של הליבה, שם מערכת הקבצים השורש ומיקומה.
- i386-pc
ספרייה זו כוללת את כל מודולי מערכת הקבצים (מנהלי התקנים) הנתמכים ב-GRUB. כל קובצי mod.* הם המודולים. על ידי שימוש במודולים אלה, GRUB יכול לטעון את קובצי ה-קרנל ו-initramfs בזיכרון. לדוגמה, ל-boot של מערכת זו יש מערכת קבצים ext4, וכאשר מעלים קובצי vmlinuz ו-initramfs מ-boot, GRUB זקוק למודול ext4, שהוא מקבל מהקובץ ext4.mod. זה דומה ל-boot במערכת הקבצים XFS או UFS; לפיכך, הקבצים xfs.mod ו-ufs.mod קיימים ב-boot/grub2/i386-pc/. במקביל, ניתן למצוא מודולים כמו http.mod ו-pxe.mod. המשמעות היא שחלק 3 של GRUB 2 יכול לטעון את קובצי הקרנל וה-initramfs מהתקני http ו-pxe. באופן כללי, קובצי mod.* מוסיפים תכונות, לא רק התקנים. התכונות עשויות לכלול תמיכה במכשיר, תמיכה במערכת קבצים או תמיכה בפרוטוקול.
etc/default/grub/
עריכהקובץ חשוב נוסף הוא etc/default/grub/. קובץ זה משמש את GRUB כדי לקבל מהמשתמש את השינויים הקוסמטיים והליבתיים בשורת הפקודה.
cat /etc/default/grub
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="resume=/dev/mapper/root_vg-swap rd.lvm.lv=root_vg/root rd.lvm.lv=root_vg/swap console=ttyS0,115200 console=tty0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
בקובץ זה ניתן לשנות את פסק הזמן המוגדר כברירת מחדל של מסך הפתיחה של GRUB, הגופן, תפריטי המשנה ופרמטרי שורת הפקודה של ליבת ברירת המחדל כמו שם מכשיר השורש, שם מכשיר ההחלפה וכן הלאה.
/etc/grub.d/
עריכהל-GRUB 2 יש פקודה בשם grub2-mkconfig. שם הפקודה מרמז שהיא תיצור את קובץ התצורה של GRUB שנקרא grub.cfg, אשר יופנה על ידי חלק 3 של GRUB כדי להציג את מסך הפתיחה. הפקודה grub2-mkconfig ייקח תחילה את הקלטות הפרמטרים הקוסמטיים והקרנל של שורת הפקודה מ-etc/default/grub/ ויריץ את קובצי הסקריפט מהספרייה /etc/grub.d/.
קישורים חיצוניים
עריכה- אתר האינטרנט הרשמי של GRUB (באנגלית)
- מדריך לשחזור GRUB מגרסה 2
- דיון נוסף העוסק בשחזור GRUB
הערות שוליים
עריכה- ^ Babar., Hands-on Booting, Apress, 2020, ISBN 978-1-4842-5889-7