14.1 Getty (בשימוש ב / etc / inittab)
מבוא לגטי
כדי להפעיל את תהליך הכניסה על יציאה טורית (וגם את הטרמינל המחובר אליו) כאשר המחשב מתחיל (או בורר רמות לרוץ) פקודה getty יש לשים את / etc / קובץ inittab. הפעלת getty משורת הפקודה עלולה לגרום לבעיות (ראה אם getty לרוץ משורת הפקודה: תוכניות נעצר כדי לראות מדוע). Getty מקבל TTY (מסוף) הולך. כל מסוף צריך פקודת getty שלו. יש גם לפחות אחד הפקודה getty עבור המסוף בכל / etc / קובץ inittab. מצא את זה ולשים את פקודות getty עבור מסופי אמיתי ליד זה. קובץ זה עשוי להכיל קווי getty לדוגמה עבור מסופי טקסט כי הם הגיבו כך שכל מה שאתה צריך לעשות הוא uncomment אותם (להסיר את המוביל #) ולשנות כמה טיעונים.
הטיעונים המותרים תלויים באיזה gty אתה משתמש:
שני הכי טובים עבור מסופים מחוברים ישירות הם:
- agty (לפעמים נקרא רק getty): קל מאוד להגדיר. אין קבצי תצורה. ראה agtty
- getty (חלק getty_ps)
שני gettys הטוב ביותר עבור מודמים חיוג (למנוע עבור מסופים מחוברים ישירות) הם:
- mgetty: הטוב ביותר עבור מודמים; עובד עבור מסופים מדי אבל נחות
- uugetty: עבור מודמים בלבד; חלק מהחבילה getty_ps
פשוט gettys להשתמש אם אתה לא משתמש אמיתי מסוף טקסט. רוב משתמשי לינוקס משתמשים באחד מהם בצג שלהם:
- מינגטי
- fbgetty
- גמלוני
- rungetty
ההפצה לינוקס שלך יכול לבוא עם או ps_getty או agetty עבור מסופי טקסט. חלק מההפצות אינן מספקות אף הן. למרבה הצער, לעתים קרובות הם פשוט קוראים לזה "getty" אז ייתכן שיהיה עליך לקבוע איזה מהם יש לך מאז הטיעונים אתה שם אחרי זה / etc / inittab שונים. דביאן משתמשת בז'אטי (בחבילת הניו-לינוקס). RedHat ו Fedora בשימוש ps_getty אשר ב: ps_getty
כמוצא אחרון כדי לנסות לקבוע איזה getty יש לך, אתה יכול לבדוק את קוד ההפעלה שלה (בדרך כלל / sbin). ps_getty יש / etc / gettydefs מוטבע בקוד זה. כדי לחפש אותו, עבור אל / sbin והקלד:
מיתרים grep gty
אם getty הוא agetty למעשה האמור לעיל לא יוביל דבר. עם זאת, אם יש לך הקלדת agetty:
getty -h
צריך להראות את האפשרויות [-hiLmw].
אם אין לך את getty אתה רוצה לבדוק הפצות אחרות ואת תוכנית זר להמיר בין סל"ד חבילות דביאן. ניתן להוריד את קוד המקור מ- Getty Software.
אם אינך משתמש בקווי בקרה מודמים (לדוגמה, אם אתה משתמש רק במספר המינימלי של 3 מוליכים: שידור, קליטה ואיתות אות משותף), עליך להודיע על כך באמצעות דגל "מקומי". הפורמט של זה תלוי באיזה gty אתה משתמש.
Getty יוצא לאחר הכניסה (והוא יכול respawn)
לאחר שתתחבר תבחין (באמצעות "למעלה", "PS -ax", או "ptree") כי תהליך getty כבר לא פועל. מה קרה לזה? למה getty מחדש שוב אם פגז שלך נהרג? הנה למה.
לאחר הקלדת שם המשתמש שלך, getty לוקח את זה קורא את תוכנית הכניסה אומר את שם המשתמש שלך. תהליך הגטי מוחלף בתהליך הכניסה. תהליך הכניסה מבקש את הסיסמה שלך, בודק את זה ומתחיל כל תהליך שצוין בקובץ הסיסמה שלך. תהליך זה הוא לעתים קרובות את פגז bash. אם כן, התחלה מתחילה ומחליפה את תהליך הכניסה. שים לב כי תהליך אחד מחליף אחרת וכי תהליך פגז bash במקור התחיל כתהליך getty. ההשלכות של זה יוסברו להלן.
עכשיו את / etc / קובץ inittab, getty אמורה respawn (הפעלה מחדש) אם נהרג. זה אומר כך על הקו שקורא getty. אבל אם פגז bash (או את תהליך הכניסה) הוא נהרג, gettyns getty (הפעלה מחדש). למה? ובכן, הן את תהליך ההתחברות ואת bash הם תחליפים עבור getty ו לרשת
את הקשר האותות שהוקמו על ידי קודמיהם. למעשה, אם אתה מבין את הפרטים תוכלו להבחין כי תהליך ההחלפה יהיה זהה מזהה תהליך כמו התהליך המקורי. לכן באש הוא סוג של getty בתחפושת עם אותו תהליך מזהה מספר. אם באש הוא נהרג זה בדיוק כמו גטי נהרג (למרות getty אינו פועל יותר). זה התוצאות gettyning getty.
כאשר אחד יוצא החוצה, כל התהליכים על זה יציאה טורית נהרגים כולל פגז bash. הדבר עלול לקרות (אם מופעל) אם אות השלג נשלח ליציאה הטורית על ידי ירידה של מתח DCD על ידי המודם. או יציאה או ירידה ב DCD תביא resptyning getty. אחד יכול להכריח את getty כדי respawn ידנית על ידי הרג להרוג (או התחברות) או על ידי להכות את מקש K, וכו 'בעוד "למעלה" או עם "להרוג" הפקודה. סביר להניח שאתה צריך להרוג אותו עם אות 9 (אשר לא ניתן להתעלם).
אם getty לרוץ משורת הפקודה: תוכניות להפסיק
אתה צריך בדרך כלל להפעיל getty מבפנים / etc / inittab ולא משורת הפקודה או אחר כמה תוכניות פועל על הטרמינל עשוי להיות מושעה באופן בלתי צפוי (עצר). הנה למה (לדלג על הקטע הבא אם למה לא חשוב לך). אם אתה מתחיל getty1 לשיר ttyS1 משורת הפקודה של מסוף אחר, אומר tty1, אז זה יהיה tty1 שלה "מסוף שליטה" למרות מסוף בפועל הוא פועל על ttys1. לכן יש לו מסוף השליטה הלא נכון. אבל אם זה התחיל בתוך קובץ inittab אז זה יהיה ttys1 כמו מסוף שליטה (נכון).
למרות מסוף השליטה טועה, הכניסה ב ttyS1 עובד בסדר (מאז שנתת ttyS1 כטיעון כדי getty). הקלט והפלט הסטנדרטיים מוגדרים ל - ttys1 למרות שמסוף הבקרה נשאר Tty11. תוכניות אחרות לרוץ ב ttyS1 עשוי לרשת את זה קלט / פלט רגיל (אשר מחובר ttyS1) והכל בסדר. אבל כמה תוכניות עשויות לטעות בניסיון לקרוא מן הטרמינל השליטה שלהם (tty1) וזה לא בסדר. עכשיו tty1 עשוי לחשוב כי תוכניות אלה מופעלות ברקע על ידי tty1 כך ניסיון לקרוא מ tty1 (זה היה צריך להיות ttys1) תוצאות לעצור את התהליך שניסה לקרוא. (תהליך הרקע אינו מותר לקרוא ממסוף השליטה שלו). ייתכן שתראה הודעה כגון: " [1] + Stop " על המסך. בשלב זה אתה תקוע מאז אתה לא יכול לקיים אינטראקציה עם תהליך אשר מנסה לתקשר איתך דרך מסוף הלא נכון. כמובן לברוח מזה אתה יכול ללכת למסוף אחר להרוג את התהליך, וכו '
agetty (עשוי להיות שם getty)
דוגמה לקו / etc / inittab:
S1: 23: respawn: / sbin / getty -L 19200 ttyS1 vt102S1 הוא מתוך tty1. 23 פירושו כי getty הוא לרוץ עם כניסה רמות 2 או 3. respawn אומר שאם getty (או תהליך שהחליף אותו כגון באש) הוא נהרג, getty באופן אוטומטי להתחיל (resawn) שוב. / sbin / getty היא הפקודה. -L פירושו מקומי (להתעלם אותות מודם שליטה). -h (לא מוצג בדוגמה) מאפשר בקרת זרימת חומרה (כמו stty crtscts). 19200 הוא קצב השידור. tty1 פירושו / dev / ttyS1 (COM2 ב- MS-DOS). vt102 הוא סוג הטרמינל ו- getty זה יגדיר את משתנה הסביבה TERM לערך זה. אין קבצי תצורה. הקלד "init q" בשורת הפקודה לאחר עריכת gty ואתה אמור לראות את בקשת הכניסה.
זיהוי אוטומטי של בעיות זוגיות
תוכנית agetty ינסה לזהות באופן אוטומטי את זוגיות להגדיר בתוך הטרמינל (כולל לא זוגיות). הוא אינו תומך בבדיקות נתונים של 8 סיביות בתוספת זוגיות של 1 סיביות. ראה בתים של 8 סיביות נתונים (בתוספת שוויון). אם אתה משתמש stty כדי להגדיר זוגיות, agetty באופן אוטומטי unset אותו מאז זה בהתחלה רוצה את קצת זוגיות לבוא דרך כאילו היה קצת נתונים. הסיבה לכך היא כי הוא צריך לקבל את החלק האחרון (אולי קצת זוגיות) תוך כדי להקליד את שם הכניסה שלך, כך שהוא יכול לזהות באופן אוטומטי זוגיות. לכן אם אתה משתמש זוגיות, לאפשר אותו רק בתוך מסוף טקסט ולתת agetty אוטומטי לזהות אותו ולהגדיר אותו במחשב. אם הטרמינל שלך תומך בקבלת זוגיות, הודעת ההתחברות תיראה מסולסלת עד שתקליד משהו כך ש- getty יוכל לזהות אותו
שִׁוּוּי. המהומה משובשת ירתיע מבקרים, וכו 'מ מנסה להיכנס. זה יכול להיות בדיוק מה שאתה רוצה.
יש לפעמים בעיה עם זיהוי אוטומטי של זוגיות. זה קורה כי אחרי שאתה הראשון הקלד את שם ההתחברות שלך, agetty מתחיל את תוכנית הכניסה כדי לסיים את הכניסה לך. למרבה הצער, תוכנית הכניסה לא יכול לזהות זוגיות אז אם התוכנית getty נכשל כדי לקבוע את זוגיות ואז התחברות לא יוכלו לקבוע גם זה. אם ניסיון ההתחברות הראשון נכשל, הכניסה תאפשר לך לנסות שוב, וכו '(כל עם שווי זוגיות שגוי). בסופו של דבר, לאחר מספר ניסיונות כושלים להיכנס (או לאחר פסק זמן) agetty יתחילו שוב להתחיל את רצפי ההתחברות שוב. לאחר getty פועל שוב, הוא עשוי להיות מסוגל לזהות את זוגיות על הניסיון השני אז הכל יכול אז לעבוד בסדר.
עם זוגיות שגויה, תוכנית הכניסה לא יכולה לקרוא את מה שאתה מקליד כראוי ואתה לא יכול להיכנס. אם המסוף שלך תומך זוגיות קיבל, תמשיך לראות מסך משובש. אם getty נכשל כדי לזהות זוגיות / etc / קובץ הבעיה הוא בדרך כלל זרקה למסך בדיוק לפני לפני הפקודה, מילים כל כך מסולסלים יותר עשויים להופיע על המסך.
למה לא יכול להזדהות זוגיות על ידי האות הראשונה מוקלד? הנה דוגמה: נניח שהיא מזהה 8 סיביות בייט עם קצת זוגיות שלה 0 (גבוהה סדר סדר) עם מספר מוזר של 1 סיביות. איזה שוויון הוא? ובכן, מספר מוזר של 1 סיביות מרמז כי זה זוג מוזר. אבל זה יכול גם להיות אופי 8 סיביות ללא שוויון. אין כל דרך לקבוע עד כמה. אבל עד כה הסרנו את האפשרות של זוגיות. זיהוי של זוגיות ובכך ממשיך בתהליך של חיסול.
אם הבית הבא מודפס דומה הראשון וגם רק מבטלת את האפשרות של זוגיות אפילו, זה עדיין בלתי אפשרי לקבוע זוגיות. מצב זה יכול להימשך ללא הגבלת זמן ובמקרים נדירים ההתחברות תיכשל עד שתשנה את שם הכניסה שלך. אם agetty מוצא קצת זוגיות של 1 זה יניח כי זה קצת זוגיות ולא חתיכת מסדר גבוה של תו 8 סיביות. לכן הוא מניח שאינך משתמש במטא-תווים (ערכת סיביות גבוהה) בשם המשתמש שלך (כלומר, השם שלך ב- ASCII).
אפשר להיכנס "לולאה התחברות" בדרכים שונות. נניח שאתה רק להקליד אות אחת או שתיים עבור שם הכניסה שלך ולאחר מכן פגע לחזור. אם אותיות אלה אינן מספקות לזיהוי זוגיות, אזי ההתחברות נמשכת לפני שהמשחק זוהה. לפעמים בעיה זו מתרחשת אם אין לך את המסוף על ו / או מחובר כאשר agetty הראשון מתחיל.
אם אתה תקוע זה "התחברות לולאה" דרך לצאת מזה היא להכות את מקש החזרה כמה פעמים עד שתקבל את הבקשה להיכנס. דרך נוספת היא רק לחכות רגע בערך לפסק זמן. לאחר מכן את ההרשמה התחברות getty יהיה לשים על המסך על ידי תוכנית getty ואתה יכול לנסות שוב להיכנס.
8 סיביות בתים בתים (בתוספת זוגיות)
למרבה הצער, agetty לא יכול לזהות את זה זוגיות. נכון לסוף 1999 אין לה אפשרות להשבית את זיהוי אוטומטי של זוגיות ובכך יזהה זוגיות שגוי. התוצאה היא כי תהליך הכניסה יהיה משובש ואת שוויון יוגדר. לכן זה לא נראה אפשרי לנסות להשתמש בתים 8 סיביות נתונים עם זוגיות.
getty (חלק getty_ps)
(רוב זה הוא מן הישן Serial-HOWTO על ידי גרג Hankins)
בשביל זה אחד getty צריך לשים את שני ערכי בקובץ תצורה ולהוסיף ערך ב / etc / inittab . הנה כמה דוגמאות לדוגמה להשתמש עבור המסוף שלך כי אתה מכניס את קובץ התצורה / etc / gettydefs .
שים לב כי DT38400, DT19200, וכו 'הם רק תוויות חייב להיות זהה כי אתה משתמש ב / etc / inittab .
אם אתה רוצה, אתה יכול לעשות getty דברים מעניינים בדואר הכניסה. בדוגמאות שלי, יש לי את שם המערכת ואת הקו הטורי המודפס. ניתן להוסיף דברים נוספים: [block block
צל = כן] @B הנוכחי (מוערך בזמן @ B הוא ראה) קצב bps. @D התאריך הנוכחי, ב- MM / DD / YY. @L הקו הטורי שאליו מחובר הגטי. @S שם המערכת. @T הזמן הנוכחי, ב HH: MM: SS (24 שעות). @U מספר המשתמשים המחוברים כעת. זהו ספירה של מספר הערכים בקובץ / etc / utmp שיש להם שדה ut_name שאינו null. @V הערך של VERSION, כפי שמופיע בקובץ ברירת המחדל. כדי להציג תו '@' יחיד, השתמש באפשרות '\ @' או '@@'.לאחר שתסיים לערוך / etc / gettydefs , תוכל לוודא שהתחביר נכון על-ידי ביצוע הפעולות הבאות:
לינוקס # getty -c / etc / gettydefsודא שאין קובץ הגדרות או קובץ הגדרות אחר עבור היציאה הטורית שהמסוף שלך מחובר אליה ( /etc/default/{uu}getty.ttyS N או /etc/conf.{uu}getty.ttyS N ) , כמו זה יהיה כנראה להפריע פועל getty על מסוף. הסר קבצים סותרים אלה אם הם יוצאים.
ערוך את הקובץ / etc / inittab כדי להפעיל את ה- getty על היציאה הטורית (החלפת המידע הנכון עבור הסביבה שלך - יציאה, מהירות וסוג ברירת מחדל של מסוף):
S1: 23: resawn: / sbin / getty ttyS1 DT9600 vt100 init לינוקס # init qבשלב זה, אתה אמור לראות את ההרשמה התחברות על הטרמינל שלך. ייתכן שיהיה עליך לחזור על מנת לקבל את תשומת הלב של הטרמינל.
מגוחך
"M" מייצג מודם. תוכנית זו היא בעיקר עבור מודמים ומאמצע שנת 2000 זה יהיה צורך recompiling להשתמש בו עבור מסופי טקסט (אלא אם אתה משתמש בקרת זרימת חומרה - וזה בדרך כלל דורש כבל בעבודת יד). לתיעוד עבור מסופים מחוברים ישירות, עיין בסעיף "ישיר" של המדריך: mgetty.texi.
עיין בשורות האחרונות של /etc/mgetty/mgetty.config עבור דוגמה של קביעת תצורה עבור מסוף. אלא אם כן אתה אומר "toggle-dtr no" הוא יחשוב שיש לך מודם ושחרר (לשלול) את סיכה DTR במחשב בניסיון לשווא לאפס את המודם לא קיים. בניגוד gettys אחרים, mgetty לא יצמיד עצמו למסוף עד שמישהו יגיע כל מקש של הטרמינל כך שתראה? עבור המסוף למעלה או PS עד שזה קורה. היומנים ב- / var / log / mgetty / עשויים להציג מספר הודעות אזהרה החלות רק על מודמים שעלולים להתעלם מהם.
הנה דוגמה לקו הפשוט שאתה מכניס / etc / inittab:
s1: 23: respawn: / sbin / mgetty -r ttyS1