نظرة عامة
فور اكتمال إقلاع نظام لينكس، يظهر موجه الولوج النصي الشهير login: بانتظار بيانات المستخدم. المحرك الأساسي المسؤول عن هذه الواجهة هو العفريت الخفي agetty. سنبتعد في هذا الدليل العملي عن شروحات التوثيق النظرية المعقدة، لنغوص مباشرة في آليات ربط البرنامج بنظام الإقلاع systemd، وتصميم رسائل الترحيب المخصصة عبر ملف /etc/issue، وضبط وتعديل سلوكيات الجلسات بما يخدم متطلبات إدارة الخوادم في بيئات العمل الاحترافية.
المفاهيم الجوهرية لأداة agetty والتحقق من حالتها تحت مظلة systemd
لمعرفة المسار الدقيق لملف agetty التنفيذي داخل شجرة النظام، نبدأ بتنفيذ الأمر which agetty.

تكمن وظيفة agetty الأساسية في إدارة قنوات الاتصال الطرفية—سواء كانت وحدات تحكم افتراضية (Virtual Consoles) أو منافذ تسلسلية (Serial Ports)—حيث يقوم بتهيئة خصائص البيئة الطرفية، وطلب اسم المستخدم، ثم تسليم الراية لبرنامج login. للتعرف على الإصدار المثبت واستكشاف خيارات التشغيل المتاحة، نستعرض معلمات التحكم التالية:
⚙️ [أبرز خيارات التشغيل]
-a, --autologin : تجاوز طلب بيانات الدخول وإتمام الولوج مباشرة باستخدام الحساب الموضح.-J, --noclear : الإبقاء على مخرجات الإقلاع السابقة وتجنب مسح شاشة الطرفية قبل إظهار موجه الدخول.-f, --issue-file : استبدال مسار الترويسة الافتراضية بملف ترحيبي مخصص يعرض قبل تسجيل الدخول.-o, --login-options : تمرير معطيات وخيارات مخصصة لمعالج الدخول اللاحق login.-n, --skip-login : تخطي مطالبة المستخدم باسم الحساب والتوجه مباشرة نحو الخطوة التالية في عملية التحقق.-8, --8bits : ضبط وحدة التحكم للتعامل بكفاءة مع محارف التشفير ذات 8 بت.

لمراقبة سلوك الوحدة المسؤولة عن إدارة شاشة التحكم الافتراضية الأولى (tty1) والتأكد من سير عملياتها، نستعلم عن حالة الخدمة بتنفيذ systemctl status [email protected] --no-pager.
تُظهر المخرجات أن عملية agetty تنشط بنجاح في الخلفية وهي بانتظار تفاعل المستخدم عبر منفذ الإدخال.

تصميم لافتة ترحيبية خاصة لوحدة التحكم عبر تخصيص /etc/issue
لقراءة النص الافتراضي الذي يقدمه النظام للمستخدمين قبل إدخال بيانات الاعتماد، نعرض محتويات ملف التكوين باستخدام cat /etc/issue.
يوظف agetty رموز هروب خاصة ضمن هذا الملف؛ حيث يتحول الرمز \n تلقائياً إلى اسم الخادم (Hostname)، بينما يُستبدل الرمز \l برقم خط الاتصال الطرفي (tty) المفتوح حالياً.

قبل الشروع في أي تعديل على الملفات الحيوية، يجدر بنا حماية التكوين الأصلي من خلال أخذ نسخة احتياطية سريعة عبر الأمر sudo cp /etc/issue /etc/issue.bak.

الآن، سنبني ترويسة ترحيبية عصرية تبرز بيانات المنصة، ورقم الطرفية، وتفاصيل العتاد بشكل ديناميكي، وذلك بتمرير النص إلى ملف تجريبي عبر الأمر echo -e '\n=== Welcome to Ubuntu Server (tty: \l) ===\nOS: \s \r (\m) | Time: \t\n' | sudo tee /tmp/custom_issue.
يعتمد هذا القالب على متغيرات مدمجة تجلب رقم الطرفية (\l)، واسم نظام التشغيل (\s)، وإصدار النواة (\r)، ومعمارية المعالج (\m)، فضلاً عن التوقيت الآني (\t).

للتثبت من سلامة الصياغة وخلو سلاسل الهروب من الأخطاء التنسيقية، نستعرض الملف المؤقت الذي تم إنشاؤه عبر cat /tmp/custom_issue.

تعديل معلمات agetty وإعادة تعريف خدمات systemd بأمان
للتعرف على كيفية قيام مدقق النظام بتشغيل الطرفية الافتراضية tty1، نستعرض شفرة الوحدة الرسمية عبر الأمر systemctl cat [email protected].
تكشف هذه الخطوة عن القالب الأساسي الموجود في المسار (/usr/lib/systemd/system/[email protected]) وتحديداً سطر التشغيل الافتراضي ExecStart.

تجنباً لتعديل ملفات الحزم الرسمية مباشرة مما قد يسبب فقدان الإعدادات أثناء التحديثات، ننشئ مجلد تعديل ملحق (drop-in directory) مستخدمين الأمر sudo mkdir -p /etc/systemd/system/[email protected].

لتفعيل الخيار --noclear—الذي يحافظ على رسائل تمهيد النواة على الشاشة—مع ضبط معدل نقل البيانات ونوع الطرفية، نقوم بكتابة التعديل الجديد باستخدام echo -e '[Service]\nExecStart=\nExecStart=-/sbin/agetty -o "-p -- \\u" --noclear -s %I 115200,38400,9600 vt220' | sudo tee /etc/systemd/system/[email protected]/noclear.conf.
السطر الفارغ ExecStart= ضروري جداً لتفريغ الأمر الأصلي أولاً، يليه سطر التوليد الجديد حاملاً الخيارات المعدلة المطلوبة لأداة agetty.

يتطلب دمج وتطبيق ملفات التكوين الإضافية في ذاكرة systemd إعادة قراءة الوحدات عبر تنفيذ systemctl daemon-reload.

للتأكد من دمج التعديلات الجديدة وتفوقها بنجاح على التكوين الافتراضي، نعيد تشغيل الأمر systemctl cat [email protected].
سيظهر ملف noclear.conf بوضوح في نهاية المخرجات، مؤكداً استبدال أمر التشغيل بنجاح.

رصد ومراقبة الطرفيات التسلسلية والافتراضية النشطة (tty)
لحصر خدمات الطرفيات الافتراضية التي تعمل فعلياً في الوقت الحاضر، نستعلم عن الخدمات المتطابقة مع النمط عبر systemctl list-units --type=service 'getty@*' --no-pager.
تبرز النتائج تشغيل الوحدة [email protected] بنجاح لمعالجة الطرفية الافتراضية الأولى في خلفية النظام.

في بيئات الخوادم السحابية والأنظمة المدمجة، تُدار الطرفيات غالباً عبر المنافذ التسلسلية؛ وللتحقق من وجود الملفات المسؤولة عن ذلك، ننفذ systemctl list-unit-files 'serial-getty*' --no-pager.
يتضح من الاستعلام أن قالب [email protected] مثبت وجاهز للاستدعاء، ولكنه يقبع حالياً في وضع التعطيل (disabled).

للحصول على صورة شاملة عن الجلسات المفتوحة حالياً، ونوع الطرفيات المحجوزة، وهوية المتصلين، نستعين بأداة المراقبة الخفيفة w.
يمنحنا هذا الأمر نظرة بانورامية سريعة تشمل مدة تشغيل النظام (uptime)، ومتوسط العبء الحسابي (load average)، وبيانات نشاط المستخدمين في اللحظة الراهنة.

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