Skip to main content

محطات النص على لينكس - 14.1 جيتي (المستخدمة في / etc / inittab)

Redirection in Linux - Linux Tutorial 8 (قد 2025)

Redirection in Linux - Linux Tutorial 8 (قد 2025)
Anonim

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

مقدمة ل Getty

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

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

  • agetty (في بعض الأحيان تسمى للتو getty): من السهل جدا اقامة. لا توجد ملفات تهيئة. انظر agetty
  • getty (جزء من getty_ps)

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

  • mgetty: أفضل واحد لأجهزة المودم ؛ يعمل للمطاريف جدا ولكن أقل شأنا
  • uugetty: لأجهزة المودم فقط ؛ جزء من حزمة getty_ps

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

  • mingetty
  • fbgetty
  • fgetty
  • rungetty

قد يأتي توزيع 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 من سطر الأوامر: يتم إيقاف البرامج

يجب عليك عادة تشغيل جيتي من الداخل / الخ / 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 والكشف التلقائي عن مشاكل التكافؤ

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

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

هناك مشكلة في بعض الأحيان مع الكشف التلقائي عن التكافؤ. يحدث هذا لأنه بعد كتابة اسم تسجيل الدخول لأول مرة ، agetty يبدأ تسجيل الدخول برنامج لإنهاء تسجيل دخولك. لسوء الحظ ، فإن تسجيل الدخول البرنامج لا يمكن الكشف عن التكافؤ حتى إذا كان جيتي فشل البرنامج في تحديد التكافؤ بعد ذلك تسجيل الدخول لن تكون قادرة على تحديد ذلك سواء. إذا فشلت محاولة تسجيل الدخول الأولى ، تسجيل الدخول سوف تتيح لك محاولة مرة أخرى ، وما إلى ذلك (كل شيء مع تعيين التعادل خاطئة). في النهاية ، بعد عدد من المحاولات الفاشلة لتسجيل الدخول (أو بعد انتهاء المهلة) 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 واحد لوضع كلا الإدخالات في ملف تكوين وإضافة إدخال فيه / الخ / inittab. فيما يلي بعض الأمثلة على الإدخالات لاستخدامها في الجهاز الذي وضعته في ملف التكوين / الخ / gettydefs.

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

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

الظل = نعم

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

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

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

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

mgetty

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

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

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