בעקבות השינויים האחרונים במטרות הבחינה של הסמכות LFCS החוקית מאז 2 בפברואר 2016, אנחנו מוסיפים את הנושאים הנדרשים לסדרה LFCS שפרסמנו כאן. כדי להכין את עצמך לבחינה הזו, אתה ממוצעת לעודד לעקוב עם הסדרה LFCE גם כן.

במאמר הזה אנחנו נציג את הגראב (GRUB) ונסביר למה בוט לודר נחוץ, ואיך הוא מוסיף גיוון למערכת.
התהליך ההתחברות של לינוקס מאז שאתה לוחץ על הכפתור החשמלי של המחשב עד לקבלת מערכת מופעלת במלואה עובדת בסדרה גבוהה:
- 1. תהליך המכונה הזה שנקרא POST (בדיקת עצמית בעירה) מבצעת בדיקה כללית על הרכבים התוךעצמיים של המחשב שלך.
- 2. כשPOST מסתיים, הוא מעביר את השליטה לבוט לודר, שבעזרתו מטען את הנייד הלינוקסי (ביחד עם initramfs) לזיכרון ומבצע אותו. הבוט לודר הנמצא בשימוש המועדף בלינוקס הוא הGRand Unified Boot loader (קצת קרוב לGRUB).
- 3. הליבה בודקת וגוששת בחומרה, ואז מפעילה את התהליך הראשוני (הידוע בעיקר בשמו הכללי "init") שמשלים את תהליך ההפעלה של המערכת על ידי התחלת שירותים.
בחלק 7 של סדרה זו ("SysVinit, Upstart, and Systemd") הצגנו את מערכות ניהול השירותים והכלים שמשמשים בהם הפצות Linux מודרניות. כדאי לך לקרוא את המאמר הזה לפני שתמשיך הלאה.
היכרות עם מטען ההפעלה GRUB
שתי גרסאות עיקריות של GRUB (v1 המכונה לפעמים GRUB Legacy ו-v2) ניתן למצוא במערכות מודרניות, אם כי רוב ההפצות משתמשות ב-v2 כברירת מחדל בגרסאותיהן האחרונות. רק Red Hat Enterprise Linux 6 והשגותיה עדיין משתמשות ב-v1 כיום.
לכן, נתמקד בעיקר בתכונות של v2 במדריך זה.
ללא קשר לגרסת GRUB, מטען ההפעלה מאפשר למשתמש:
- 1). לשנות את האופן שבו המערכת מתנהגת על ידי ציון גרסאות שונות של הליבה לשימוש,
- 2). לבחור בין מערכות הפעלה אלטרנטיביות להפעלה, ו
- 3). להוסיף או לערוך את סטנזות התצורה כדי לשנות אפשרויות ההפעלה, בנוסף לדברים אחרים.
היום, GRUB מתוחזק על ידי פרויקט GNU ומתועד היטב באתר שלהם. ממליצים להשתמש ב- תיעוד הרשמי של GNU במהלך המדריך הזה.
כאשר המערכת מאתחלת, מוצגת לך מסך GRUB בקונסולה הראשית. בתחילה, תתבקש לבחור בין ליבות חלופיות (ברירת מחדל, המערכת תאתחל באמצעות הליבה האחרונה) ותוכל להזין שורת פקודת GRUB (עם c
) או לערוך את אפשרויות האתחול (על ידי לחיצה על מקש e
).

אחד הסיבות שבהן כדאי לשקול לאתחל עם ליבה ישנה היא מכשיר חומרה שהיה עובד כראוי והתחיל "להתנהג תקליט" לאחר שדרגת (ראה את קישור זה בפורומים של AskUbuntu לדוגמה).
הגדרת GRUB v2 נקראת באתחול מ- /boot/grub/grub.cfg
או /boot/grub2/grub.cfg
, בעוד ש- /boot/grub/grub.conf
או /boot/grub/menu.lst
משמשים ב- v1. אלה הקבצים אינם ישיבים לעריכה באופן ידני, אלא משתנים בהתאם לתוכן של /etc/default/grub
והקבצים שנמצאים בתוך /etc/grub.d
.
ב- CentOS 7, הנה הקובץ התצורה שנוצר כאשר המערכת מותקנת לראשונה:
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet" GRUB_DISABLE_RECOVERY="true"
בנוסף לתיעוד המקוון, ניתן גם למצוא את מדריך GNU GRUB באמצעות הפקודה info כך:
# info grub
אם אתה מעוניין באופציות הזמינות במיוחד עבור /etc/default/grub, תוכל להפעיל את קטע התצורה ישירות:
# info -f grub -n 'Simple configuration'
באמצעות הפקודה הנ"ל תגלה כי GRUB_TIMEOUT
מגדיר את הזמן בין הרגע שבו מופיע המסך הראשוני וההפעלה האוטומטית של המערכת מתחילה אלא אם יופסק על ידי המשתמש. כאשר משתנה זה מוגדר ל--1
, ההפעלה לא תתחיל עד שהמשתמש יבחר.
כאשר מספר מערכות ההפעלה או הליבות מותקנות באותו מחשב, GRUB_DEFAULT
דורש ערך של מספר שלם המציין איזו רשומת מערכת ההפעלה או הליבה במסך ההפעלה הראשוני של GRUB צריך להיות נבחרת להפעלה כברירת מחדל. רשימת הרשומות ניתן לראות לא רק במסך הפתיחה המוצג למעלה, אלא גם באמצעות הפקודה הבאה:
ב־CentOS וב־openSUSE:
# awk -F\' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg
ב־Ubuntu:
# awk -F\' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg
בדוגמה המוצגת בתמונה למטה, אם נרצה להפעיל עם גרסת הליבה 3.10.0-123.el7.x86_64 (הרשומה הרביעית), עלינו להגדיר את GRUB_DEFAULT
ל־3
(הרשומות ממוספרות פנימית מתחילות באפס) כך:
GRUB_DEFAULT=3

המשתנה האחרון בתצורת GRUB שמעניין במיוחד הוא GRUB_CMDLINE_LINUX
, שמשמש להעברת אפשרויות לליבה. האפשרויות שניתן להעביר דרך GRUB לליבה מתועדות היטב בקובץ פרמטרי ליבה וב-man 7 bootparam.
האפשרויות הנוכחיות בשרת שלי ב-CentOS 7 הן:
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
למה תרצה לשנות את פרמטרי הליבה ברירת המחדל או להעביר אפשרויות נוספות? במונחים פשוטים, יתכן שיהיו רגעים שבהם עליך לספר לליבה פרמטרי חומרה מסוימים שהיא לא תוכל לזהות באופן עצמאי, או לדרוס את הערכים שהיא תזהה.
זה קרה לי לא מזמן כאשר ניסיתי Vector Linux, שייצור מקורי של Slackware, על המחשב הנייד שלי שבן 10 שנים. לאחר ההתקנה, הוא לא זיהה את ההגדרות הנכונות לכרטיס הווידאו שלי, ולכן נאלצתי לשנות את אפשרויות הליבה שהועברו דרך GRUB כדי להפעיל אותו.
דוגמה נוספת היא כאשר עליך להעביר את המערכת למצב משתמש יחיד לביצוע משימות תחזוקה. ניתן לעשות זאת על ידי הוספת המילה single ל-GRUB_CMDLINE_LINUX
ואחר כך לאתחל:
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"
לאחר עריכת /etc/defalt/grub
, עליך להפעיל update-grub
(באובונטו) או grub2-mkconfig -o /boot/grub2/grub.cfg
(CentOS ו-openSUSE) לאחר מכן כדי לעדכן את grub.cfg
(אחרת, השינויים יאבדו בעת האתחול).
פקודה זו תעבוד על קבצי התצורה של האתחול שצוינו לעיל כדי לעדכן את grub.cfg
. שיטה זו מבטיחה שהשינויים יהיו קבועים, בעוד שהאפשרויות שמועברות דרך GRUB בזמן האתחול יישארו בתוקף רק במהלך הסשן הנוכחי.
תיקון בעיות GRUB ב-Linux
אם אתה מתקין מערכת הפעלה שנייה או אם קובץ התצורה שלך של GRUB נפגם עקב שגיאה אנושית, יש דרכים להחזיר את המערכת שלך לתפקוד ולאפשר לה להתחיל מחדש.
במסך הראשוני, לחץ על c
כדי לקבל שורת פקודה של GRUB (זכור שתמיד ניתן גם ללחוץ על e
כדי לערוך את האפשרויות המותגות ברירת המחדל לאתחול), והשתמש ב-help כדי להביא את הפקודות הזמינות בפקודת GRUB:

נתמקד ב־ls, שיציג את המכשירים והמערכות הקיימים, ונבחן מה הוא מוצא. בתמונה למטה אנו רואים כי ישנם 4 דיסקים קשיחים (hd0
עד hd3
).
רק hd0
נראה כי נחלק (ככל שניתן לראות ב־msdos1 ו־msdos2, שבהם 1 ו־2 הם מספרי המחיצות ו־msdos היא תכנון המחיצות).
כעת נבחן את המחיצה הראשונה ב־hd0
(msdos1) כדי לראות אם ניתן למצוא שם את GRUB. גישה זו תאפשר לנו לאתחול את Linux ולהשתמש שם בכלים ברמה גבוהה נוספים לתיקון קובץ התצורה או להתקין מחדש את GRUB לחלוטין אם יהיה צורך בכך:
# ls (hd0,msdos1)/
כפי שניתן לראות באזור המודגש, מצאנו את התיקייה grub2 במחיצה זו:

פעם שאנו בטוחים ש-GRUB נמצאת ב־(hd0,msdos1), בואו נגיד ל-GRUB היכן למצוא את קובץ התצורה שלה ואחר כך נכוון אותה לנסות להפעיל את תפריט האפשרויות שלה:
set prefix=(hd0,msdos1)/grub2 set root=(hd0,msdos1) insmod normal normal

כעת בתפריט של GRUB, בחרו כניסה ולחצו על Enter כדי להפעיל אותה. פעם שהמערכת הופעלה תוכלו להפעיל את הפקודה grub2-install /dev/sdX
(שנו את sdX
להתקן שברצונכם להתקין את GRUB עליו). מידע האתחול יתעדכן וכל הקבצים הקשורים יחודשו.
# grub2-install /dev/sdX
תרחישים מורכבים נוספים מתועדים, יחד עם פתרונותם המומלצים, במדריך פתרון בעיות GRUB2 של Ubuntu. המושגים המוסברים שם תקפים גם להפצות אחרות.
סיכום
במאמר זה הצגנו לכם את GRUB, ציינו איפה ניתן למצוא תיעוד המערכת באופן מקוון ולא מקוון, והסברנו כיצד לגשת לתרחיש בו המערכת הפסיקה להשיב כראוי עקב בעיה הקשורה לטוען הטעינה.
ממש מזל טוב, GRUB היא אחת הכלים המתועדים ביותר ואתם יכולים למצוא עזרה בקלות באתרים המקוונים או במסמכים שמותקנים במערכת באמצעות המשאבים ששיתפנו במאמר זה.
יש לכם שאלות או הערות? אל תהססו לפנות אלינו באמצעות טופס ההערות למטה. אנו מצפים לשמוע מכם!
Source:
https://www.tecmint.com/configure-and-troubleshoot-grub-boot-loader-linux/