محطات النص على لينكس

14.1 جيتي (مستخدمة في / etc / inittab)

مقدمة ل Getty

لكي يتم تشغيل عملية تسجيل الدخول على منفذ تسلسلي (والمنفذ المتصل به) عند بدء تشغيل الكمبيوتر (أو تبديل مستويات التشغيل) ، يجب وضع أمر getty في الملف / etc / inittab. قد يتسبب تشغيل getty من سطر الأوامر في حدوث مشكلات (راجع ما إذا كان يتم تشغيل getty من سطر الأوامر: يتم إيقاف البرامج لمعرفة السبب). Getty تحصل على TTY (محطة) الذهاب. تحتاج كل محطة إلى أمر getty الخاص بها. يوجد أيضاً أمر واحد على الأقل في وحدة التحكم في كل ملف / etc / inittab. ابحث عن ذلك ووضع أوامر getty للأطراف الحقيقية المجاورة له. قد يحتوي هذا الملف على نماذج خطوط getty لمطاريف النصوص التي تم التعليق عليها بحيث أن كل ما عليك فعله هو إلغاء تثبيتها (إزالة الرقم #) وتغيير بعض الوسيطات.

تعتمد الحجج المسموح بها على نوع getty الذي تستخدمه:
أفضل اثنين من أحمال الأجهزة الطرفية المتصلة بشكل مباشر هي:

اثنين من أفضل أنواع أجهزة المودم (تجنب الموصلات المتصلة مباشرة) هي:

استخدام gettys بسيط إذا كنت لا تستخدم محطة نصية حقيقية. يستخدم معظم مستخدمي Linux واحدًا من هؤلاء على جهاز العرض الخاص بهم:

قد يأتي توزيع Linux الخاص بك مع ps_getty أو agetty للأطراف الطرفية. بعض التوزيعات لا تقدم. لسوء الحظ ، فإنهم غالباً ما يطلقون عليه اسم "getty" ، لذلك قد تحتاج إلى تحديد أي واحد لديك لأن الحجج التي تضعها بعدها في / etc / inittab تختلف. يستخدم Debian agetty (في حزمة الاستخدام-linux). استخدم RedHat و Fedora ps_getty في: ps_getty

كملجأ أخير لمحاولة تحديد ما هو getty الخاص بك ، يمكنك التحقق من التعليمات البرمجية القابلة للتنفيذ (عادة في / sbin). يحتوي ps_getty / etc / gettydefs المضمنة في هذا الرمز. للبحث عنه ، انتقل إلى / sbin واكتب:
السلاسل getty | grep getty
إذا كان getty في الواقع agetty أعلاه سوف يؤدي إلى لا شيء. ومع ذلك ، إذا كان لديك agetty الكتابة:
جيدتي -
يجب أن تظهر الخيارات [-hiLmw].

إذا لم يكن لديك getty تريد التحقق من توزيعات أخرى وبرنامج أجنبي للتحويل بين حزم RPM و Debian. يمكن تنزيل كود المصدر من Getty Software.

إذا لم تكن تستخدم خطوط التحكم في المودم (على سبيل المثال ، إذا كنت تستخدم الحد الأدنى لعدد 3 موصلات: الإرسال والاستقبال وأرضية الإشارات الشائعة) ، يجب أن تسمح لـ getty بمعرفة ذلك باستخدام علامة "محلية". يعتمد تنسيق هذا على نوع getty الذي تستخدمه.

يخرج Getty بعد تسجيل الدخول (ويمكن أن يحدث بيضة)

بعد تسجيل الدخول ستلاحظ (باستخدام "top" أو "ps -ax" أو "ptree") أن عملية getty لم تعد قيد التشغيل. ماذا حدث له؟ لماذا إعادة تشغيل getty مرة أخرى إذا تم قتل shell الخاص بك؟ هنا لماذا.

بعد كتابة اسم المستخدم الخاص بك ، يأخذها getty ويستدعي برنامج تسجيل الدخول لإخباره باسم المستخدم الخاص بك. يتم استبدال عملية getty بعملية تسجيل الدخول. تطلب عملية تسجيل الدخول كلمة المرور الخاصة بك ، وتقوم بفحصها وتبدأ أي عملية محددة في ملف كلمة المرور الخاصة بك. هذه العملية هي في كثير من الأحيان قذيفة باش. إذا كان الأمر كذلك ، فإن bash يبدأ ويستبدل عملية تسجيل الدخول. لاحظ أن إحدى العمليات تحل محل عملية أخرى وأن عملية shell bash بدأت في الأصل كعمل getty. سيتم شرح الآثار المترتبة على ذلك أدناه.

الآن في ملف / etc / inittab ، من المفترض getty respawn (إعادة) إذا قتل. وتقول ذلك على الخط الذي يدعو جيتي. ولكن إذا قُتِلَت قذيفة الباش (أو عملية تسجيل الدخول) ، فستكون غايته (إعادة تشغيل). لماذا ا؟ حسنًا ، تعد كل من عملية تسجيل الدخول و bash بدائل لـ getty و inherit

* نص كيف الطرفية مؤشر

الاتصالات إشارة تأسيس من قبل أسلافهم. في الواقع ، إذا لاحظت التفاصيل ، ستلاحظ أن عملية الاستبدال ستحتوي على معرف العملية نفسه كعملية أصلية. هكذا bash هو نوع من getty مقنعة بنفس رقم معرف العملية. إذا تم قتل باش أنها مثل قتل جيتي (على الرغم من أن جيتي لم تعد تعمل). هذه النتائج في جيتي respawning.

عند تسجيل الخروج ، يتم قتل جميع العمليات على هذا المنفذ التسلسلي بما في ذلك قذيفة bash. قد يحدث هذا أيضًا (في حالة تمكينه) إذا تم إرسال إشارة تعليق إلى المنفذ التسلسلي بواسطة قطرة من جهد DCD بواسطة المودم. إما الخروج أو انخفاض في DCD سينتج عنه getty respawning. يمكن للمرء أن يجبر على getawn عن طريق قتل باش يدويا (أو تسجيل الدخول) إما عن طريق ضرب مفتاح K ، وما إلى ذلك في حين في "أعلى" أو مع "قتل" الأمر. ستحتاج على الأرجح إلى قتله بالإشارة 9 (التي لا يمكن تجاهلها).

إذا تم تشغيل getty من سطر الأوامر: يتم إيقاف البرامج

يجب تشغيل عادة getty من داخل / etc / inittab وليس من سطر الأوامر وإلا قد يتم إيقاف بعض البرامج قيد التشغيل على المحطة الطرفية بشكل غير متوقع (توقف). إليك السبب (انتقل إلى القسم التالي إذا كان السبب غير مهم بالنسبة لك). إذا بدأت تشغيل getty لـ ttyS1 من سطر الأوامر في محطة أخرى ، لنقل tty1 ، فسيكون لديك tty1 كـ "طرفية التحكم" على الرغم من أن الجهاز الفعلي الذي يعمل عليه هو ttyS1. وبالتالي فإن لديها محطة تحكم خاطئة. ولكن إذا بدأ داخل ملف inittab ، فسيكون لديه ttyS1 كمحطة تحكم (صحيحة).

على الرغم من أن المحطة الطرفية المسيطرة خاطئة ، فإن تسجيل الدخول في ttyS1 يعمل بشكل جيد (بما أنك أعطيت ttyS1 كحجة لـ getty). يتم تعيين المدخلات والمخرجات القياسية على ttyS1 حتى لو بقيت وحدة التحكم المسيطرة tty11. قد ترث برامج أخرى في ttyS1 هذا الإدخال / الإخراج القياسي (الذي يرتبط ttyS1) وكل شيء على ما يرام. لكن بعض البرامج قد ترتكب خطأ محاولة القراءة من طرفها المتحكم (tty1) وهو خطأ. الآن قد يعتقد tty1 أن هذه البرامج يتم تشغيلها في الخلفية بواسطة tty1 لذا فإن محاولة القراءة من tty1 (كان يجب أن يكون ttyS1) ينتج عنه إيقاف العملية التي حاولت قراءتها. (لا يُسمح بعملية الخلفية بالقراءة من طرف التحكم الخاص بها). قد ترى رسالة تشبه عبارة: " [1] + توقف " على الشاشة. عند هذه النقطة ، أنت عالق لأنك لا تستطيع التفاعل مع عملية تحاول التواصل معك عبر الجهاز الخاطئ. بالطبع للهروب من هذا يمكنك الذهاب إلى محطة أخرى وقتل العملية ، وما إلى ذلك.

agetty (قد يُدعى getty)

مثال سطر في / etc / inittab:

S1: 23: بيضة: / sbin / getty -L 19200 ttyS1 vt102

S1 من ttyS1. 23 يعني أن يتم تشغيل getty عند إدخال مستويات التشغيل 2 أو 3. يقصد بالبيضة أنه إذا تم قتل getty (أو عملية استبداله مثل bash) ، سيتم تشغيل getty تلقائيًا (بيضة) مرة أخرى. / sbin / getty هو الأمر getty. يعني -L المحلية (تجاهل إشارات التحكم في المودم). -h (غير موضح في المثال) يتيح التحكم في تدفق الأجهزة (مثل crtscts stty). 19200 هو معدل الباود. يعني ttyS1 / dev / ttyS1 (COM2 في MS-DOS). vt102 هو نوع المحطة الطرفية وسوف يقوم هذا getty بتعيين متغير بيئة TERM إلى هذه القيمة. لا توجد ملفات التكوين. اكتب "init q" في سطر الأوامر بعد تحرير getty وسترى مطالبة تسجيل الدخول.

Agetty & # 39؛ s للكشف التلقائي عن مشاكل التماثل

سيحاول برنامج agetty الكشف التلقائي عن تماثل مجموعة داخل الطرفية (بما في ذلك لا تماثل). لا يدعم بايت البيانات 8 بت بالإضافة إلى تماثل 1 بت. انظر بايت البيانات 8 بت (زائد التكافؤ). إذا استخدمت stty لتعيين التكافؤ ، سيقوم agetty تلقائيًا بتعطيلها لأنها تريد في البداية أن تكون بتة التعادلية وكأنها بتة بيانات. هذا لأنه يحتاج إلى الحصول على البت الأخير (ربما بت تماثل) أثناء كتابة اسم تسجيل الدخول الخاص بك بحيث يمكنه الكشف عن التماثل التلقائي. وبالتالي إذا كنت تستخدم التماثل ، فقم بتمكينه فقط داخل وحدة طرفية النص واسمح لـ agetty باكتشافه تلقائيًا وتعيينه على الكمبيوتر. إذا كانت الوحدة الطرفية تدعم تعادلاً مستقبلاً ، فستظهر مطالبة تسجيل الدخول مشوهة حتى تكتب شيئًا ما بحيث يمكن لـ getty الكشف عن

التكافؤ. سيؤدي ردع المشوه إلى ردع الزوار وما إلى ذلك من محاولة تسجيل الدخول. يمكن أن يكون هذا ما تريده.

هناك مشكلة في بعض الأحيان مع الكشف التلقائي عن التكافؤ. يحدث هذا لأنه بعد كتابة اسم تسجيل الدخول لأول مرة ، تبدأ agetty برنامج تسجيل الدخول لإنهاء تسجيل دخولك. للأسف ، لا يستطيع برنامج تسجيل الدخول الكشف عن التكافؤ ، لذا إذا فشل برنامج getty في تحديد التكافؤ ، فلن يتمكن تسجيل الدخول من تحديد إما. إذا فشلت محاولة تسجيل الدخول الأولى ، فسوف يتيح لك تسجيل الدخول المحاولة مرة أخرى ، وما إلى ذلك (كل ذلك مع تعيين تماثل بشكل خاطئ). في النهاية ، بعد عدد من المحاولات الفاشلة لتسجيل الدخول (أو بعد انتهاء المهلة) ، ستبدأ agetty مرة أخرى وتبدأ تسلسلات الدخول من جديد. بمجرد تشغيل getty مرة أخرى ، قد تتمكن من الكشف عن التماثل في المحاولة الثانية بحيث قد يعمل كل شيء ثم موافق.

مع تعادل خاطئ ، يتعذر على برنامج تسجيل الدخول قراءة ما تكتبه بشكل صحيح ولا يمكنك تسجيل الدخول. إذا كانت الوحدة الطرفية تدعم تعادلاً مستقبلاً ، فستستمر في رؤية شاشة مشوّهة. إذا أخفق تطبيق getty في الكشف عن التكافؤ ، فسيتم عادةً إلقاء ملف / etc / issue على الشاشة قبل ظهور المطالبة مباشرةً ، لذلك قد تظهر المزيد من الكلمات المشوشة على الشاشة.

لماذا لا يمكن كشف agetty التكافؤ من الحرف الأول كتابتها؟ إليك مثال: لنفترض أنه يكتشف بايت 8 بت بتة التماثل 0 (بتة عالية الترتيب) ومع عدد فردي من 1 بت. ما هو التكافؤ هو؟ حسنًا ، العدد الفردي لجزء واحد يعني أنه تعادل فردي. ولكن يمكن أن يكون أيضًا حرفًا من 8 بتات بدون تماثل. لا توجد طريقة حتى الآن لتحديد أي. لكننا حتى الآن استبعدنا إمكانية التكافؤ. وهكذا ، فإن الكشف عن التكافؤ ينبع من عملية إزالة.

إذا كانت البايت التالي مطابقاً للقيمة الأولى وأيضاً فقط تقضي على إمكانية التماثل المتساوي ، فلا يزال من المستحيل تحديد التكافؤ. يمكن أن يستمر هذا الموقف إلى أجل غير مسمى وفي حالات نادرة سيخفق تسجيل الدخول حتى تقوم بتغيير اسم تسجيل الدخول الخاص بك. إذا وجدت agetty بتة تعادلية 1 ، فستفترض أن هذا بتة تعادلية وليست بتة عالية الترتيب من حرف 8 بت. وبالتالي يفترض أنك لا تستخدم حروف التعريف (مجموعة بت عالية) في اسم المستخدم الخاص بك (أي أن اسمك في ASCII).

يمكن للمرء أن يدخل في "حلقة تسجيل الدخول" بطرق مختلفة. لنفترض أنك كتبت حرفًا واحدًا أو اثنين فقط لاسم تسجيل الدخول الخاص بك ، ثم اضغط على العودة. إذا لم تكن هذه الأحرف كافية للكشف عن التماثل ، فسيتم تسجيل الدخول قبل اكتشاف التماثل. في بعض الأحيان تحدث هذه المشكلة إذا لم يكن لديك المحطة الطرفية و / أو متصل عندما يبدأ أولاً.

إذا واجهتك مشكلة في "حلقة تسجيل الدخول" هذه ، فإن طريقة للخروج منها هي الضغط على مفتاح العودة عدة مرات حتى تحصل على مطالبة تسجيل الدخول إلى getty. طريقة أخرى هي فقط الانتظار لمدة دقيقة أو حتى من أجل انتهاء المهلة. بعد ذلك ، سيتم وضع طلب تسجيل الدخول على شاشة getty على الشاشة من خلال برنامج getty وقد تحاول مرة أخرى تسجيل الدخول.

بايت البيانات 8 بت (زائد التكافؤ)

للأسف ، لا تستطيع agetty اكتشاف هذا التكافؤ. اعتبارا من أواخر عام 1999 ليس لديها خيار لتعطيل الكشف التلقائي عن التكافؤ وبالتالي سوف تكشف التكافؤ غير صحيحة. والنتيجة هي أن عملية تسجيل الدخول ستكون مشوهة وسيتم تعيين تماثل غير صحيح. وبالتالي لا يبدو من الممكن محاولة استخدام بايت البيانات 8 بت مع تماثل.

getty (جزء من getty_ps)

(معظم هذا هو من المسلسل القديم HOWTO غريغ هانكينز)
لهذا يحتاج getty واحد لوضع كلا الإدخالات في ملف تكوين وإضافة إدخال في / etc / inittab . فيما يلي بعض الأمثلة على الإدخالات لاستخدامها في الجهاز الذي وضعته في ملف التهيئة / etc / gettydefs .

# 38400 bps دخول المحطة الطرفية DT38400 # B38400 CS8 CLOCAL # B38400 SANE -TATIP CLOCAL # @ SL login: # DT38400 # 19200 bps Terminal DT19200 # B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL # @ SL login: # DT19200 # 9600 bps مدخل المحطة الطرفية DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ SL login: # DT9600

لاحظ أن DT38400 ، DT19200 ، وما إلى ذلك ، هي علامات فقط ويجب أن تكون هي نفسها التي تستخدمها في / etc / inittab .

إذا كنت تريد ، يمكنك جعل getty طباعة أشياء مثيرة للاهتمام في شعار تسجيل الدخول. في أمثالي ، لدي اسم النظام والخط التسلسلي المطبوعة. يمكنك إضافة أشياء أخرى: [blockquote

الظل = نعم] B الحالي (تقييم في الوقت الذي ينظر إليهB) معدل bps. D التاريخ الحالي ، في شهر / يوم / سنة. L الخط التسلسلي الذي يتم إرفاقه. S اسم النظام. T الوقت الحالي ، في HH: MM: SS (على مدار 24 ساعة). U عدد المستخدمين الذين يسجلون الدخول حاليًا. هذا هو عدد عدد الإدخالات في الملف / etc / utmp الذي يحتوي على حقل ut_name غير فارغ. V قيمة الإصدار ، كما هو موضح في ملف الإعدادات الافتراضية. لعرض حرف "@" واحد ، استخدم إما "\ @" أو "".

عند الانتهاء من تحرير / etc / gettydefs ، يمكنك التحقق من صحة الصيغة عن طريق العمل:

linux # getty -c / etc / gettydefs

تأكد من عدم وجود ملف تهيئة إضافي أو ملف تهيئة للمنفذ التسلسلي الذي تم توصيل الجهاز به مثل ( /etc/default/{uu}getty.ttyS N أو /etc/conf.{uu}getty.ttyS N ) ، لأن هذا من المحتمل أن يتداخل مع تشغيل getty على مطراف. أزل هذه الملفات المتعارضة في حالة خروجها.

قم بتحرير الملف / etc / inittab لتشغيل getty على المنفذ التسلسلي (استبدال المعلومات الصحيحة للبيئة الخاصة بك - المنفذ والسرعة ونوع المحطة الافتراضية):

S1: 23: بيضة: / sbin / getty ttyS1 DT9600 vt100 فيه linux # init q

في هذه المرحلة ، من المفترض أن ترى مطالبة تسجيل دخول على جهازك. قد تضطر إلى ضرب العودة للحصول على انتباه المحطة.

mgetty

"m" تعني المودم. هذا البرنامج هو في المقام الأول لأجهزة المودم ، وحتى منتصف عام 2000 سيتطلب إعادة استخدامه لاستخدامه في المطاريف النصية (إلا إذا كنت تستخدم التحكم في تدفق الأجهزة - وعادةً ما يتطلب ذلك كبلًا يدويًا). للاطلاع على الوثائق الخاصة بأجهزة التوصيل المتصلة مباشرةً ، راجع قسم "Direct" من الدليل: mgetty.texi.

انظر إلى الأسطر الأخيرة من /etc/mgetty/mgetty.config للحصول على مثال لتكوينه لجهاز طرف. ما لم تقول "toggle-dtr no" ستعتقد أن لديك مودم وإسقاط (نفي) دبوس DTR على جهاز الكمبيوتر في محاولة دون جدوى لإعادة تعيين المودم غير الموجود. على النقيض من غيرها ، فإن mgetty لن تعلق نفسها بالطرف حتى يقوم شخص ما بضرب أي مفتاح من تلك المحطة حتى ترى؟ للمحطة في الأعلى أو ملاحظة حتى يحدث هذا. قد تعرض السجلات الموجودة في / var / log / mgetty / بعض رسائل التحذير التي لا تنطبق إلا على أجهزة المودم التي قد تتجاهلها.

في ما يلي مثال على الخط البسيط الذي تضعه في / etc / inittab:

s1: 23: respawn: / sbin / mgetty -r ttyS1