מדריך לשדרוג הקרנל
מתוך הויקי של ג'נטו.
מדריך זה הוא תרגום של מדריך שדרוג הקרנל הרשמי של ג'נטו.
תוכן המדריך מוגן בזכויות יוצרים של כותבי המדריך המקורי.
התרגום בוצע באישור הרשיון שבו פורסם המסמך המקורי, Creative Commons - Attribution / Share Alike.
על התרגום חלים אותם תנאי רשיון כמו למקור התוכן. המדריך תורגם על ידי oc666.
[עריכה] הקדמה
הקרנל הוא אחד ממחלקות החבילה המעטות בפורטאג' שזקוקות למעט התערבות ידנית כדי להשלים את השדרוג. פורטאג' יוריד ויתקין את מקור הקרנל עבורך, אבל אח"כ זה תלוי בך כדי להיכנס ולקמפל את הקרנל החדש לפני ששינויים יתחילו להשפיע.
למרות שמדריך יועד לשדרוג מגרסה אחת של קרנל לאחרת, מדריך זה שימושי עבור משתמשים שעוברים מחבילת קרנל אחת לאחרת.
gentoo-sources הובא כדוגמא במסמך זה, בכל מקרה, ההוראות כאן תקפות לחבילות קרנל אחרות בעץ (הפורטאג').
[עריכה] למה לשדרג את הקרנל?
באופן כללי, שדרוג הקרנל בגירסה אחת קטנה לא יביא הבדלים גדולים. ישנם מספר סיבות לשדרוג הקרנל. אחת היא לקחת חלק מעדכון ספציפי של דרייבר; סיבה אחרת היא להיות מוגן מסיכוני אבטחה או רק לתחזק מערכת בריאה ומעודכנת.
אפילו אם תבחר לא לעדכן את המערכת בכל עדכון של גירסת קרנל, מומלץ שתעדכן את הקרנל מידי פעם. כמו כן, מומלץ לשדרג את הקרנל כאשר גירסה חדשה פותרת בעיית אבטחה.
[עריכה] התקנת הקרנל המעודכן ביותר בעזרת הפורטאג'
אתה משדרג את הקרנל שלך כמו שאתה משדרג כל חבילה - בעזרת השימוש ב-emerge. שדרוג הקרנל יקרה בד"כ בד"כ כשתרצה לעדכן את המערכת (world) שלך ברשימת העדכונים. לדוגמא:
| קוד: עדכון קרנל ברשימת העדכונים |
# emerge -Dup world Calculating dependencies ...done! [ebuild NS ] sys-kernel/gentoo-sources-2.6.9-r2 [2.6.8-r5] |
| שים לב: הסימון "NS" בפלט למעלה מציין שהקרנל יותקן ב"חור" (Slot) חדש. ז"א, הקרנל הישן יישמר, עד אשר תסיר אותו ידנית. |
תוכל לאחר מכן להתקדם ולהתקין את העדכון, כמו זה:
| קוד: שדרוג הקרנל |
# emerge -u gentoo-sources |
הקרנל יותקן לתוך תיקיית משנה ב-/usr/src, בדוגמא האחרונה, הקרנל החדש יותקן ב-/usr/src/linux-2.6.9-gentoo-r2.
[עריכה] עדכון הקישור של usr/src/linux/
ג'נטו זקוק לכך שהקישור /usr/src/linux יצביע למקור של הקרנל שהינך מריץ.
פורטאג' יוכל לעדכן את הקישור אוטומטית כאשר תתקין קרנל חדש. כל מה שתצטרך לעשות הוא להוסיף את דגל symlink למשתני ה-USE בקובץ /etc/make.conf.
| קוד: דוגמא למשתנה USE ב-etc/make.conf/ |
(הוסף את symlink) USE="symlink x86 3dnow 3dnowex X aac aalib adns alsa apache2" |
כתחליף תוכל להשתמש בחבילה app-admin/eselect כדי לעדכן את הקישור.
| קוד: שימוש ב-eselect כדי ליצור קישור |
(התקן את eselect אם אין לך את זה) # emerge eselect (הצג את רשימת הקרנלים האפשריים) Available kernel symlink targets: [1] linux-2.6.9-gentoo-r1 [2] linux-2.6.9-gentoo-r2 (Select the correct kernel) # eselect kernel set 1 |
אם תרצה בכל זאת לעשות זאת בעצמך, הדוגמא הבאה מציגה לך כיצד ליצור קישור שיצביע על linux-2.6.9-gentoo-r2:
| קוד: עדכון קישור usr/src/linux/ ידנית |
# cd /usr/src # ln -sfn linux-2.6.9-gentoo-r2 linux |
[עריכה] הגדרה, קימפול והתקנה של הקרנל החדש
לכל אפשרות שקיימת, עליך להתייחס להוראות במדריך התקנת ג'נטו בפרק קביעת תצורת הקרנל ובפרק הגדרת טוען ה-boot. להלן תיאור קצר של הפעולות הנדרשות:
[עריכה] אפשרות 1: קרנל אוטומטי בעזרת Genkernel
אם אתה משתמש ב-genkernel, תצטרך רק לחזור על השלבים שעברת במהלך התקנת הקרנל שלך בפעם הראשונה. הרץ בפשטות את genkernel בדרך הרגילה:
| קוד: הרצת gentkernel |
(עבור קרנל 2.4) # genkernel all (עבור קרנל 2.6) # genkernel --udev all |
תוכל להשתמש בפרמטרים נוספים עבור פונקציות נוספות של genkernel. לדוגמא, אם תרצה להגדיר אופציות קרנל נוספות בעזרת menuconfig ותרצה ש-genkernel יעדכן אוטומטית את הגדרות טוען האתחול גראב, אז הרץ את genkernel כדלקמן:
| קוד: הרצת genkernel עם ארגומנטים נפוצים |
# genkernel --menuconfig --bootloader=grub all |
למידע נוסף נסה את מדריך ה-Genkernel הרשמי של ג'נטו או את מדריך התקנת ג'נטו. אפשרויות רבות יכולות להיות מוגדרות בקובץ ההגדרות של Genkernel, ששמו /etc/genkernel.conf.
[עריכה] אפשרות 2: הגדרת ידנית
כדי להתחיל פתח את הכלי menuconfig בעץ מקור הקרנל:
| קוד: הרצת menuconfig |
# cd /usr/src/linux # make menuconfig |
בחר את האפשרויות הנדרשות עבור החומרה וסביבת העבודה. למידע נוסף על הגדרת קרנל ראה את קביעת תצורת הקרנל במדריך התקנת ג'נטו.
אח"כ, קמפל את הקרנל שלך והעתק אותו למחיצת האתחול. שוב, עקוב אחר ההוראות במדריך התקנת ג'נטו בפרק קביעת תצורת הקרנל. אם מחיצת האתחול נפרדת, וודא שהיא מעוגנת לפני שתעתיק את הקרנל המקומפל לספריה זו. בהעדר זה המערכת לא תאותחל עם הקרנל החדש.
| קוד: קמפול והתקנה של הקרנל החדש |
# make && make modules_install # mount /boot # cp arch/i386/boot/bzImage /boot/bzImage-2.6.9-gentoo-r2 |
לבסוף, עליך לעדכן את הגדרת טוען האתחול. הוסף הגדרה של הקרנל החדש (אל תמחק הגדרה ישנה עדיין!) והסר את העגינה של מחיצת האתחול. שוב, ראה את מדריך התקנת ג'נטו עבור הוראות מפורטות על תהליך זה.
[עריכה] התקנה מחדש של מודולים חיצוניים
אם הינך משתמש במודולי קרנל שלא כלולים בעץ מקור הקרנל, אבל מסופקים ממקור אחר בפורטאג' (כמו דרייברי ALSA ודרייברים גרפיים של NVIDIA או ATI), אז עליך להתקין אותם מחדש לאחר השדרוג. זוהי התקנה רגילה של החבילות הנוגעות בדבר. למידע נוסף, ראה את הפרק קביעת תצורת הקרנל במדריך התקנת ג'נטו.
אנו מספקים לך כלי קל (sys-kernel/module-rebuild) אשר בונה את כל מודולי הקרנל שהתקנת בעזרת איבילדים נפרדים עבור הקרנל בספריה /usr/src/linux. לאחר שהתקנת את זה, הרץ בפשטות את הפקודה module-rebuild populate כדי לעדכן את הבסיס נתונים עם כל החבילות שיצטרכו להיות מקומפלות מחדש לאחר עדכון הקרנל. ברגע שתסיים לשדרג או לקמפל את הקרנל, הרץ את module-rebuild rebuild כדי לקמפל מחדש את הדרייברים של הקרנל החדש שלך.
עבור מידע נוסף, הרץ module-rebuild ללא כל פרמטרים כדי לראות רשימה של פקודות שיכולות להיות מועברות לכלי זה.
[עריכה] אתחול מחדש לתוך הקרנל החדש
אח"כ, סגור את כל היישומים ואתחל מחדש את המערכת שלך. אם עקבת אחר ההוראות לעיל נכון, תפריט טוען האתחול (bootloader) אמור לכלול כניסה עבור הקרנל החדש. בחר את הקרנל החדש ותן למערכת לעלות.
בתקווה שהמערכת שלך עם הקרנל החדש הצליחו להיטען בהצלחה ואתה יכול להיכנס ולחזור לעיסוקיך. אם כך הדבר, השדרוג עבר בהצלחה.
אם עשית טעות והמערכת נכשלה מלעלות עם הקרנל החדש, אתחל את המערכת ובחר כניסה מטוען האתחול שעבדה לפני השדרוג. תוכל אז להתחיל מחדש מהפרק הגדרה, קימפול והתקנה של הקרנל החדש - עשה את השינויים הנדרשים כדי לתקן את השגיאה. במקרים מסוימים, תצטרך אפילו לא לאתחל כדי לעשות זאת (לדוגמא, אם פספסת דרייבר עבור התקן קול, כרטיס רשת וכו').
[עריכה] הרצת מספר קרנלים
יכול להיות ששמת לב לזה שתוכל להתקין מקורות מספר עבור הקרנל החדש, המקורות עבור הקרנל הקיים לא הוסרו. זה מאפשר לך לעבור בקלות בין הקרנלים השונים.
מעבר בין מספר קרנלים קל מכיוון שמקורות הקרנל נשארים תחת /usr/src ו-bzImage הבינארי נשאר במחיצת האתחול שלך (שמקושרת לכניסה בטוען האתחול). בכל פעם שתאתחל, תוצג לך בחירה באיזה קרנל תרצה להשתמש באתחול.
[עריכה] הסרת קרנלים ישנים
בהמשך לפרק האחרון, אולי תהיה שמח עם הקרנל החדש ולא תצטרך יותר לשמור על גירסאות הקרנל הישן. ע"מ להסיר בקלות את כל המקורות עבור קרנל מסוים חוץ מהחדש ביותר, תוכל להשתמש ביתרון של האפשרות prune אשר אפשרית באמצעות הפקודה emerge. בהמשך לדוגמא, אנחנו נשתמש בקרנל של gentoo-sources:
| קוד: קיצוץ גרסאות ישנות |
# emerge -P gentoo-sources |
ברוב המקרים, קבצים זמניים שבשימוש פעולת ההידור ישארו תחת ספרית המקור בהתאם תחת הספריה /usr/src. זה בטוח להסרה באמצעות הפקודה rm.
תוכל גם למחוק כל מודול שהיה בשימוש הקרנל הזה. זה נעשה באמצעות הסרת הספריות המתאימות תחת /lib/modules שמתייחס לגרסאות הקרנל שאתה מסיר. הזהר לא למחוק מודולים ששייכים לקרנלים שעדיין בשימוש.
לבסוף, תוכל לעגן את מחיצת האתחול (/boot) ולהסיר את קובץ/קבצי ה-bzImage עבור הקרנל/ים שאתה מסיר. תצטרך גם לערוך את הגדרות טוען האתחול כך שהקרנלים שהוסרו לא יופיעו שם יותר.
[עריכה] מתקדם: שימוש בקרנל הישן שלך config. כדי להגדיר אחד חדש
לעיתים זה אפשרי לחסוך זמן בעזרת שימוש חוזר בקובץ ההגדרות מהקרנל הישן כאשר מגדירים את הקרנל החדש. שים לב לזה שבאופן כללי זה לא בטוח - יותר מידי שינויים בין כל שחרור גירסה של קרנל אמור להיות נתיב שדרוג מהימן.
המקרה היחידי שזה מתאים זה כאשר שדרוג מגירסה אחת לגירסה אחת של הקרנל הינה שינוי גירסה קטן (revision). לדוגמא, השינוי שנעשה בין gentoo-sources-2.6.9-r1 לבין gentoo-sources-2.6.9-r2 הוא שינוי קטן מאוד, אז בד"כ זה יהיה בסדר להשתמש בשיטה זו. בכל מקרה, זה לא מתאים לשימוש בדוגמא זו לאורך מסמך זה: שדרוג מ-2.6.8 ל-2.6.9. יותר מידי שינויים בין הגירסאות והשיטה המתוארת להלן לא מציגה מספיק מידע למשתמש. לרוב המשתמש יקבל בעיות, מפני שהם ניטרלו אפשרויות שהם לא ממש רצו.
ע"מ להשתמש בקובץ config. הישן, תצטרך להעתיק אותו ואז להריץ make oldconfig. בדוגמא הבאה ניקח את ההגדרות מ-gentoo-sources-2.6.9-r1 ונייבא אותם ל-gentoo-sources-2.6.9-r2.
| קוד: שימוש חוזר בהגדרות ישנות |
# cd /usr/src/linux-2.6.9-gentoo-r2 # cp ../linux-2.6.9-gentoo-r1/.config . # make oldconfig |
בנקודה זו, אולי תישאל לגבי אפשרויות הגדרה שונות אשר השתנו בין שתי הגרסאות. ברגע שתסיים תוכל להגדר ולהתקין את הקרנל באופן רגיל ללא מעבר על תהליך ההגדרות (ה-menuconfig).
[עריכה] בעיות לאחר שדרוג קרנל
עם הפיתוח המהיר של קרנל לינוקס, זה בלתי נמנע שחלק מהשינויים שנעשו מגירסת קרנל לאחרת עלולים ליצור מספר בעיות. אם יש לך כאלה עם הגירסאות האחרונות של הקרנלים הנתמכים של ג'נטו, אז, בבקשה, דווח עליהם.
