לינוקס מגפיים

כפי שמתברר, אין הרבה לתהליך האתחול:

1. מנהל אתחול מוצא תמונת הקרנל על הדיסק, טוען אותו לזיכרון, ומתחיל אותו.
2. הקרנל לאתחל את ההתקנים ומנהלי ההתקנים STI.
3. הקרנל עולה על מערכת הקבצים השורש.
4. הקרנל מתחיל init קרא ללוח זמנים.
5. init מגדיר את שאר התהליכים בתנועה.
6. התהליכים האחרונים שמתחיל init כחלק מרצף האתחול מאפשר לך להיכנס למערכת.

זיהוי כל שלב בתהליך האתחול הוא רב ערך בקביעת בעיות אתחול והבנה של המערכת כולה. זה מתחיל, אפס את מטעין אתחול, המהווה את המסך הראשוני או הפקודה תקבל לאחר המחשב עושה את הכוח על הבדיקה העצמית, לשאול איזו מערכת הפעלה לרוץ. לאחר שתבצע בחירה, מנהל האתחול מפעיל את הליבה של לינוקס, ומספק שליטה על המערכת אל הקרנל.

יש דיון מפורט של הקרנל במקומות אחרים בספר זה שממנו המאמר זה הלקוח. מאמר זה דן שלב אתחול ליבה, השלב שבו הליבה מדפיסה חבורה של הודעות על הווה החומרה במערכת. הקרנל מתחיל init רק לאחר שהוא מציג הודעה ומכריזה כי הקרנל יש רכוב מערכת קבצים שורש:

VFS: Mounted שורש (ext2 מערכת קבצים) לקריאה בלבד.

זמן קצר לאחר מכן, האם אתה רואה את הודעה על פתיחת init, ואחרי ההפעלה שירות הודעות מערכת, ובסופו אתה מקבל כניסה מהירה של מיין חלק.

הערה : ביום רד האט לינוקס, הערה init הוא ברור במיוחד, כי זה "מברך" לך "Red Hat לינוקס." כל ההודעות יראו הצלחה או כישלון בסוגריים בצד ימין של המסך.

רובו של הפרק זה עוסק בinit, בגלל זה הוא איפה חלק מרצף האתחול יש לך את השליטה ביותר.
init

אין שום דבר מיוחד על init. זהו לוח זמנים בדיוק כמו כל האחרים במערכת לינוקס, ואתה תמצא אותו ב/ sbin יחד עם קבצים בינאריים מערכת אחרות. המטרה העיקרית של init היא להתחיל ולעצור תוכניות אחרות ברצף מסוים. כל מה שאתה צריך לדעת זה איך הרצף הזה עובד.

ישנן וריאציות שונות מעט, אבל רוב ההפצות הלינוקס להשתמש בסגנון V המערכת שנדון כאן. הפצות מסוימות משתמשות בגרסה פשוטה יותר שדומות לinit BSD, אבל אתם צפויים להיתקל בזה.

Runlevels

בכל זמן נתון במערכת לינוקס, סט של תהליכים מסוימים בסיס הוא פועל. מצב זה של המכונה נקרא רמת הריצה שלו, והוא מסומן עם מספר מ0 6 דרך. מערכת מבלה את רוב הזמן מועבר במגע מיני ברמת ריצה אחת. עם זאת, כאשר אתה סוגר את המכונה למטה, מתגי init לרמת ריצה שונה על מנת סיים את שירותי מערכת בשנה באופן מסודר ולספר את הקרנל כדי לעצור. עם זאת, רמת ריצה נוספת היא למצב משתמש יחיד שיידון בהמשך.

הדרך הקלה ביותר כדי לקבל להתמודד על runlevels היא לבחון את קובץ תצורת init, / etc / inittab. חפש קו בצורה הבאה:

id: 5: initdefault:

קו זה אומר שרמת ריצת ברירת המחדל במערכת היא 5. כל הקווים בקובץ inittab לקחת טופס זה, עם ארבעה שדות מופרדים על ידי נקודתיים המתרחשות לפי הסדר הבא:
# מזהה ייחודית (מחרוזת קצרה, כגון מספר זיהוי בדוגמא הקודמת)
# מספר רמת הריצה הישים (ים)
# Init כי צריך לנקוט בפעולה (בדוגמא הקודמת, הפעולה היא להגדיר את רמת ריצת ברירת המחדל ל5)
# הפקודה לביצוע (אופציונלי)

אין פקודה לביצוע בדוגמא הקודמת initdefault בגלל פקודה לא הגיונית בהקשר של קביעת רמת ריצת ברירת המחדל. תסתכל קצת יותר למטה בinittab, עד שתראו קו כזה:

l5: 5: לחכות וכו ':/ / rc.d / RC 5

קו זה מעוררים ביותר של תצורת המערכת ושירותים דרך * RC. D וספריות init.d. אתה יכול לראות כי init מוגדר לבצע פקודה בשם / etc / rc.d / RC 5 5 כאשר ברמת הריצה. פעולת ההמתנה אומרת מתי ואיך init הפקודה פועלת: להפעיל RC כאשר נכנסים רמת הריצה 5 5 פעם אחת, ולאחר מכן להמתין לפקודה זו כדי לסיים לפני שתעשה כל דבר אחר.

ישנן מספר פעולות שונות בנוסף לinitdefault ולחכות, במיוחד בנוגע לניהול צריכת חשמל, והעמוד (5) inittab המדריך אומר לך את כל עליהם. את אלה שאתה סיכוי טוב ביותר למפגש שמוסבר בסעיפים הבאים.

respawn

פעולת respawn גורמת init להריץ את הפקודה הבאה, ואם פקודת ביצוע גימורים, כדי להפעיל אותו שוב. אתה צפוי לראות משהו דומה לשורה זו בקובץ inittab שלך:

1: 2345: tty1 sbin / mingetty :/ respawn

תוכניות גטי לספק התחברות הנחיות. השורה הקודמת היא לקונסולה הווירטואלית הראשונה (/ dev / tty1), אחד שאתה רואה כשאתה לוחץ ALT או שליטה-Alt-F1 F1. פעולת respawn מביאה בחזרה הפקודה הכניסה לאחר שתצא.

ctrlaltdel

פקדי הפעולה ctrlaltdel מה המערכת עושה כשאתה לוחץ CONTROL-ALT-DELETE על קונסולה וירטואלית. ברוב המערכות, זה איזה סוג של פקודת אתחול מחדש באמצעות פקודת הכיבוי.

sysinit

פעולת sysinit היא הדבר הראשון שצריך לרוץ init כאשר הוא מתחיל לעלות, לפני כניסה לכל runlevels.

כיצד תהליכים בrunlevels להתחיל

כעת אתה מוכן ללמוד איך init מפעיל את שירותי המערכת, ממש לפני שהוא מאפשר לך להיכנס. כזכור, קו inittab זה ממוקדם יותר:

l5: 5: לחכות וכו ':/ / rc.d / RC 5

קו קטן זה מעורר תוכניות רבות אחרות. RC הוא הקיצור של פקודות הפעלה, ותוכל לשמוע אנשים מתייחסים לפקודות כמו תסריטים, תוכניות או שירותים. אז, איפה פקודות אלה, בכל מקרה?

לרמת הריצה 5, בדוגמה זו, את הפקודות הן כנראה גם בקובץ / etc / rc.d / rc5.d או / etc / rc5.d. רמת הריצה 1 שימושים, השימושים rc1.d רמת ריצת 2 rc2.d, וכן הלאה. אתה עלול למצוא את הפריטים בספריית GMT rc5.d:

S10sysklogd S20ppp S99gpm
S12kerneld S25netstd_nfs S99httpd
S15netstd_init S30netstd_misc S99rmnologin
S18netbase S45pcmcia S99sshd
S20acct S89atd
S20logoutd S89cron

פקודת 5 RC מתחילה תוכניות בספריית רמת ריצה זו על ידי הרצת פקודות GMT:

S10sysklogd הבית
S12kerneld הבית
S15netstd_init הבית
S18netbase הבית

S99sshd הבית

שים לב לטיעון בתחילה כל פקודה. S בפקודת פירוש שם שצריך להפעיל את הפקודה במצב התחלה, ואת המספר (00 דרך 99) קובע היכן ברצף RC מתחיל את הפקודה.

RC *. פקודות D הם סקריפטים הפגז שמתחילים בדרך כלל בתוכניות / sbin או / usr / sbin. בדרך כלל, אתה יכול להבין מה אחת מהפקודות למעשה אין מלהסתכל על התסריט עם פחות או זימונית תכנית אחרת.

אתה יכול להתחיל באחד מהשירותים הללו ביד. לדוגמה, אם אתה רוצה להפעיל את תוכנת שרת האינטרנט httpd באופן ידני, להפעיל S99httpd התחלה. בדומה לכך, אם אי פעם תצטרכו להרוג את אחד מהשירותים כשהיא במכונה, אתה יכול להריץ את הפקודה בRC *. ד ספרייה בטענה להפסיק (S99httpd תחנה, למשל).

חלק * D RC. ספריות המכילות פקודות להתחיל עם K (עבור "להרוג", או לעצור את המצב). במקרה זה, RC פועל בפקודה בטענה התחנה במקום בבית. אתה סיכוי טוב ביותר למפגש פקודות K בrunlevels זה לסגור את המערכת.

הוספה והסרה של שירותים

אם ברצונך להוסיף, למחוק או לשנות את שירותים ב*. ספריות D RC, אתה צריך לקחת מבט קרוב יותר על הקבצים שבפנים. רישום ארוך מגלה מבנה כזה:

lrwxrwxrwx. . . S10sysklogd -> .. / init.d / sysklogd
lrwxrwxrwx. . . S12kerneld -> .. / init.d / kerneld
lrwxrwxrwx. . . S15netstd_init -> .. / init.d / netstd_init
lrwxrwxrwx. . . S18netbase -> .. / init.d / NetBase

את הפקודות בשנה RC *. ד ספרייה הן למעשה קישורים סמליים לקבצים בספריית init.d שנה, בדרך כלל בקובץ / etc או / etc / rc.d. קישורים אלה כדי הפצות לינוקס מכילים את אותו הם יכולים להשתמש באותם תסריטי אתחול לכל runlevels. אמנה זו היא בשום פנים ונחיצות, אבל לעתים קרובות עושה אותו ארגון לקל יותר.

כדי למנוע אחת מהפקודות בספריית init.d מלפעול ברמת ריצה מסוימת, אתה עלול לחשוב על הסרת הקישור הסמלי בRC המתאים *. ספריית D. זה עושה את העבודה, אבל אם אתה עושה טעות ואי צריך לשים את הקישור אחורי במקום, אולי יש לך בעיה לזכור את שמו של הקישור המדויק. לכן, אתה לא צריך להסיר קישורים ב* rc ספריות D, אלא, להוסיף קו תחתון (_) לתחילת שם הקישור כזה.:

_S99httpd S99httpd MV

בזמן אתחול, RC מתעלם _S99httpd כי זה לא להתחיל עם S או ק 'יתר על כן, שמו המקורי הוא עדיין ברור, ויש לך גישה מהירה לפקודה אם אתה בעת צרה וזקוק כדי להפעיל אותו ביד.

כדי להוסיף שירות, עליך ליצור תסריט כמו האחרים בספריית init.d ולאחר מכן להפוך את קישור סמלי בRC הנכון *. ד הספרייה. הדרך הקלה ביותר כדי לכתוב תסריט היא לבחון את התסריטים כבר בinit.d, ליצור עותק של אחד שאתה מבין, ולשנות את העותק.

בעת הוספת שירות, ודא שאתה בוחר מקום מתאים ברצף האתחול כדי להפעיל את השירות. אם השירות מתחיל מוקדם מדי, זה לא יכול לעבוד, עקב התלות בחלק השירות אחר. עבור שירותים שאינם חיוניים, רוב מנהלי מערכות מעדיפים מספרים ב90s, לאחר שרוב השירותים שCAM עם המערכת.

בדרך כלל מגיעות עם הפצות לינוקס פקודה דרושה להפעלה ולהשבית את שירותים ב* RC. ספריות D. לדוגמה, בדביאן, הפקודה היא עדכון-rc.d, ובRed Hat Linux, הפקודה היא chkconfig. ממשקי משתמש גרפיים זמינים גם כן. באמצעות תוכניות אלו מסייעת לשמור על ספריות הפעלה עקביות ועוזר עם שדרוגים.

רמז: אחת בעיות ההתקנה של לינוקס הנפוצות ביותר הוא XFree86 שרת מוגדר כהלכה באותה השנה סרטים לסירוגין, מה שהופך את המערכת לבלתי שמישה על קונסולה. כדי להפסיק את ההתנהגות הזאת, אתחול למצב משתמש יחיד ולשנות רמת הריצה שלך או שירותי רמת ריצה. חפש משהו המכיל XDM, GDM או KDM ב* RC שלך. ספריות D, או / etc / inittab שלך.

השליטה init

לפעמים, אתה צריך לתת לי init בעיטה קטנה להגיד את זה כדי לעבור runlevels, כדי לחזור ולקרוא את קובץ inittab, או רק כדי לסגור את המערכת. בגלל init הוא תמיד התהליך הראשון במערכת, STI תהליך זיהוי הוא תמיד 1.

אתה יכול לשלוט בעם init telinit. לדוגמה, אם ברצונך לעבור לרמת הריצה 3, להשתמש בפקודה זו:

telinit 3

בעת מעבר runlevels, init מנסה להרוג את כל aren'ta שתהליכים בקובץ inittab לרמת הריצה החדשה. לכן, אתה צריך להיות זהיר לגבי שינוי runlevels.

כאשר אתה צריך להוסיף או להסיר משרות respawning או לעשות כל שינוי אחר בקובץ inittab, אתה חייב לספר init על השינוי ולגרום לו לחזור ולקרוא את הקובץ. כמה אנשים משתמשים להרוג-HUP 1 לספר init לעשות את זה. שיטה מסורתית זו פועלת ברוב גירסאות של יוניקס, כל עוד אתה מקליד אותו כראוי. עם זאת, אתה גם יכול להריץ את פקודת telinit זה:

telinit q

אתה יכול גם להשתמש telinit ים כדי לעבור למצב משתמש יחיד.

כיבוי

שולט גם init איך מערכת כיבוי ואתחול מחדש. הדרך הנכונה לסגור את מכונת לינוקס היא להשתמש בפקודת הכיבוי.

ישנן שתי דרכים בסיסיות לשימוש בכיבוי. אם לעצור את המערכת, זה כיבוי מכשיר ושומר אותו. כדי להפוך את המכונה נעצרה מייד, השתמש בפקודה זו:

כיבוי-h עכשיו

ברוב המכונות מודרניות עם גירסאות האחרונות סביר של לינוקס, נעצר חותך את אספקת החשמל למכשיר. אתה יכול גם לאתחל את המחשב. לאתחול מחדש, השתמש ב- R-h במקום.

תהליך הכיבוי לוקח כמה שניות. אתה לא צריך לאפס או לכבות את המכשיר בשלב זה.

בדוגמא הקודמת, עכשיו זה הזמן לסגור. טענה זו היא חובה, אבל יש דרכים רבות של ציון זה. אם אתה רוצה מכונה לרדת מתישהו בעתיד, דרך אחת היא להשתמש ב+ n, כאשר n הוא מספר דקות לחכות לפני שתעשה כיבוי שלה צריך לעבוד. לאפשרויות אחרות, להסתכל על דף המדריך לכיבוי (8).

כדי להפוך את המערכת מחדש דקות 10, להריץ את הפקודה:

כיבוי-R + 10

על לינוקס, כיבוי מודיע מישהו מחובר שהמכשיר יורד, אבל הוא עושה את העבודה של ממש. אם תציין זמן אחר מאשר עכשיו, כיבוי המכונה יוצר nologin קובץ / etc /. כאשר קובץ זה קיים, המערכת אוסרת על כניסות על ידי אף אחד מלבד משתמש על.

כאשר זמן כיבוי מערכת סוף סוף מגיע, כיבוי מספר init כדי לעבור לרמת הריצה 0 6 לעצירה ורמת ריצה לאתחול מחדש. כשנכנס רמת ריצת init או 0 6, את כל הפעולות הבאות מתרחש, אשר ניתן לאמת על ידי עיון בתסריטים בתוך rc0.d וrc6.d:

1. init הורג כל תהליך שהוא יכול (כפי שהיה בעת מעבר לכל רמת ריצה אחרת).

# פקודות rc0.d / rc6.d הראשוניות לרוץ, נעילת קבצי מערכת למקומו ועושה הכנות אחרות לכיבוי.
# הפקודות rc0.d / rc6.d הבאות ניתקות את כל מערכות קבצים אחרות מהשורש.
פקודות נוספות rc0.d # / rc6.d תטענה מחדש את מערכת קבצים שורש לקריאה בלבד.
# עדיין יותר פקודות rc0.d / rc6.d לכתוב את כל שנאגרו על החוצה למערכת הקבצים עם התכנית מסונכרנת.
# הפקודות rc0.d / rc6.d הסופיות לספר את הקרנל כדי לאתחל מחדש או להפסיק עם האתחול מחדש, עצירה, או תכנית PowerOff.

את תוכניות האתחול מחדש ועצירה מתנהגות באופן שונה עבור כל רמת ריצה, שעלול לגרום בלבול. כברירת מחדל, תוכניות אלה קוראים כיבוי עם אפשרויות R-H-או, אבל אם המערכת היא כבר ברמת ריצת העצירה או אתחול מחדש, התוכניות לספר את הקרנל כדי לנתק את עצמו מייד. אם אתה באמת רוצה לסגור את המחשב שלך במהירות (זאת מבלי להתחשב בניזק אפשרי מכיבוי לא מסודר), השתמש ב-f האפשרות.

השאירו תגובה