متن ترمینال در لینوکس

14.1 گتی (در / etc / inittab استفاده می شود)

مقدمه ای بر گتی

برای اینکه یک فرایند ورود به سیستم در یک پورت سریال (و ترمینال متصل به آن) اجرا شود، هنگام شروع کامپیوتر (یا سطوح اجرای سوئیچ) یک دستور getty باید در فایل / etc / inittab قرار گیرد. در حال اجرا از Getty از خط فرمان، ممکن است مشکلی ایجاد کند (اگر Getty از خط فرمان اجرا شود: برنامه ها برای دیدن دلیل متوقف می شوند). گتی یک TTY (یک ترمینال) را می برد. هر ترمینال نیاز به فرمان Getty خود دارد. همچنین در هر فایل / etc / inittab حداقل یک دستور Getty برای کنسول وجود دارد. این را پیدا کنید و دستورات Getty را برای پایانه های واقعی کنار آن قرار دهید. این فایل ممکن است خطوط نمونه ای برای پایانه های متنی را که حاوی اظهار نظر هستند، شامل نمونه گیتی خطوط، به طوری که همه شما باید انجام دهید این است که آنها را رفع کنید (حذف شماره پیشرو) و چند استدلال را تغییر دهید.

استدلال هایی که مجاز هستند بستگی به کدام گیتی شما دارند:
دو گیتس برای پایانه های متصل به طور مستقیم بهترین هستند:

دو مودم شماره گیر برای مودم های شماره گیری (از ترمینال های متصل به طور مستقیم اجتناب کنید) عبارتند از:

اگر شما از یک ترمینال متن واقعی استفاده نکنید، استفاده از آن آسان است. اکثر کاربران لینوکس از یکی از این ها در مانیتور خود استفاده می کنند:

توزیع لینوکس شما ممکن است با ps_getty یا agetty برای پایانه های متن همراه باشد. بعضی از توزیع ها نه ارائه می کنند. متأسفانه اغلب آن ها فقط "getty" نامیده می شوند، بنابراین ممکن است لازم باشد تعیین کنید کدام یک از شما چه زمانی از استدلال هایی که پس از آن در / etc / inittab قرار داده اید متفاوت باشد. دبیان از agetty (در بسته util-linux) استفاده می کند. RedHat و فدورا از ps_getty استفاده می کنند که در: ps_getty است

به عنوان آخرین نکته که سعی کنید تعیین کنید چه کدام کد شما را داشته باشد، ممکن است کد اجرایی آن را چک کنید (معمولا در / sbin). ps_getty / etc / gettydefs در این کد جاسازی شده است. برای جستجوی آن، به / sbin بروید و تایپ کنید:
رشته ها getty | گریپ گتی
اگر گتی در واقع agetty باشد، در بالا چیزی به دست نخواهد آورد. با این حال اگر شما تایپ کردن agetty:
گتی
باید گزینه های [-hiLmw] را نشان دهد.

اگر شما Getty را ندارید، می خواهید توزیع های دیگر و برنامه بیگانه را برای تبدیل بین RPM و بسته های Debian بررسی کنید. کد منبع ممکن است از Getty Software دانلود شود.

اگر از خطوط مودم استفاده نمیکنید (مثلا اگر از حداقل تعداد 3 هادی استفاده کنید: ارسال، دریافت و زمین سیگنال مشترک)، باید آن را با استفاده از یک پرچم "محلی" مطلع کنید. فرمت این بستگی به چه چیزی شما استفاده می کنید.

گتی پس از ورود وارد می شود (و می تواند respawn شود)

پس از ورود به سیستم، متوجه خواهید شد (با استفاده از "top"، "ps -ax" یا "ptree") که فرایند getty دیگر اجرا نمی شود. چه اتفاقی براش افتاده؟ چرا Getty دوباره راه اندازی مجدد اگر پوسته شما کشته شود؟ به همین دلیل است

بعد از اینکه نام کاربری خود را تایپ می کنید، Getty آن را می گیرد و برنامه ورود را به نام نام کاربری خود می نامد. فرایند Getty با فرایند ورود جایگزین می شود. فرآیند ورود به سیستم برای رمزعبور شما درخواست می کند، آن را چک می کند و هر فرآیندی را که در پرونده رمز شما مشخص شده است شروع می کند. این فرآیند اغلب پوسته بش است. اگر چنین است، bash شروع می شود و فرایند ورود را جایگزین می کند. توجه داشته باشید که یک فرآیند جایگزین دیگری می شود و فرایند پوسته bash در ابتدا به عنوان فرایند Getty آغاز شد. مفاهیم این در زیر توضیح داده شده است.

در حال حاضر در فایل / etc / inittab، بایدتی در صورت کشته شدن دوباره بازسازی شود (دوباره راه اندازی شود). می گوید: در خط که تماس getty را می گوید. اما اگر پوسته bash (یا فرایند ورودی) کشته شود، گتی دوباره respawns (restarts). چرا؟ خوب، هر دو فرایند ورود و bash جایگزین برای getty و به ارث می برند

* ترمینال متن به عنوان شاخص

ارتباطات سیگنال توسط پیشینیانشان ایجاد می شود. در حقیقت اگر شما جزئیات را مشاهده کنید متوجه خواهید شد که فرایند جایگزینی همان پروسه پردازش را همانند فرایند اصلی خواهد داشت. بنابراین bash نوعی از گتی است که با همان شناسه فرآیند شناسایی می شود. اگر بش کشته شود، درست مثل گتی کشته می شود (حتی اگر گتی دیگر کار نمی کند). این نتیجه را به دست می دهد.

هنگامی که یکی از آنها خارج می شود، تمام فرآیندهای موجود در آن پورت سریال شامل پوسته bash می شوند. این ممکن است اتفاق بیافتد (اگر فعال باشد) اگر یک سیگنال آویزون به قطر سریال DCD ولتاژ توسط مودم به پورت سریال فرستاده شود. در خروج یا رها شدن DCD، بازپست شدن می شود. ممکن است کسی با استفاده از دکمه k و غیره در حالی که در "بالا" یا با دستور "kill"، دست به دست زدن به دست بشوید، با دستی به قتل bash (یا ورود به سیستم) ضربه بزنید. شما احتمالا باید آن را با سیگنال 9 بکشید (که قابل نادیده گرفتن نیست).

اگر Getty از خط فرمان اجرا شود: برنامه ها متوقف می شوند

شما معمولا باید از داخل / etc / inittab اجرا کنید و نه از خط فرمان و یا برخی از برنامه های در حال اجرا در ترمینال ممکن است به طور غیر منتظره معلق (متوقف). به همین دلیل (به بخش بعدی بروید اگر چرا برای شما مهم نیست). اگر شروع به getty برای say ttyS1 از خط فرمان یک ترمینال دیگر بکنید، tty1 را بگو، سپس tty1 را به عنوان ترمینال کنترل آن، حتی اگر ترمینال واقعی آن اجرا شود، ttyS1 است. بنابراین ترمینال کنترل اشتباه است. اما اگر در داخل فایل inittab شروع شود، آن را به عنوان ترمینال کنترل (درست) ttyS1 خواهد داشت.

اگرچه ترمینال کنترل اشتباه است، ورود به سیستم در ttyS1 به خوبی کار می کند (از آنجا که ttyS1 به عنوان یک بحث برای getty داده شد). ورودی و خروجی استاندارد بر روی ttyS1 تنظیم شده است، حتی اگر ترمینال کنترل tty11 باقی بماند. سایر برنامه های اجرا شده در ttyS1 ممکن است این ورودی / خروجی استاندارد (که به ttyS1 متصل است) به ارث برده شود و همه چیز خوب است. اما برخی برنامه ها ممکن است اشتباهی از تلاش برای خواندن از ترمینال کنترل (tty1) خود که اشتباه است را بدانند. در حال حاضر tty1 ممکن است فکر کند که این برنامه ها در background توسط tty1 اجرا می شوند بنابراین تلاش برای خواندن از tty1 (باید ttyS1 باشد) نتیجه متوقف کردن روند که تلاش برای خواندن است. (فرایند پس زمینه مجاز به خواندن از ترمینال کنترل آن نیست). شما ممکن است یک پیام مانند: " [1] + متوقف " بر روی صفحه نمایش را ببینید. در این مرحله شما گیر کرده اید زیرا شما نمی توانید با یک فرآیند که سعی در برقراری ارتباط با شما از طریق ترمینال اشتباه دارد، ارتباط برقرار کنید. البته برای فرار از این شما می توانید به ترمینال دیگری بروید و روند را بکشید و غیره

agetty (ممکن است به نام getty)

یک خط مثال در / etc / inittab:

S1: 23: respawn: / sbin / getty -L 19200 ttyS1 vt102

S1 از ttyS1 است. 23 به این معنی است که گتی بعد از وارد کردن سطوح اجرا 2 یا 3 اجرا می شود. respawn به این معنی است که اگر getty (یا فرایندی که جایگزین آن مانند bash) کشته شود، Getty به طور خودکار دوباره راه اندازی می شود. / sbin / getty دستور getty است. -L به معنای محلی است (سیگنال های کنترل مودم را نادیده بگیرید). -h (در مثال نشان داده نمی شود) کنترل جریان سخت افزاری (همانند stty crtscts) را کنترل می کند. 19200 نرخ باند است. ttyS1 یعنی / dev / ttyS1 (COM2 در MS-DOS). vt102 نوع ترمینال است و این getty متغیر محیط TERM را به این مقدار تنظیم می کند. هیچ فایل پیکربندی وجود ندارد بعد از ویرایش گیتی، "init q" را در خط فرمان تایپ کنید و باید فورمه ورود را مشاهده کنید.

شناسایی اتوماتیک مشکلات مربوط به پاریتیت Agetty

برنامه agetty تلاش خواهد کرد تا به طور خودکار مجموعه شباهت درون ترمینال (از جمله عدم تقارن) را شناسایی کند. این بایت داده های 8 بیتی به اضافه یک بیت 1 بیتی را پشتیبانی نمی کند. مشاهده بایت های داده 8 بیتی (به ترتیب برابر). اگر از ستی برای تنظیم برابری استفاده می کنید، agetty به طور خودکار آن را غیرفعال می کند از آنجایی که در ابتدا بیت parity می خواهد از طریق آن به عنوان یک بیت داده باشد. این به این دلیل است که شما نیاز دارید که آخرین بیت (احتمالا یک بیت برابر) را به عنوان نام کاربری خود را تایپ کنید تا بتواند پارتی خودکار را شناسایی کند. بنابراین اگر از parity استفاده می کنید، آن را فقط در داخل ترمینال متن فعال کنید و اجازه دهید آن را به طور خودکار آن را شناسایی کرده و آن را در رایانه قرار دهید. اگر ترمینال شما پشتیبانی از تقریبا دریافت شده باشد، فوری ورود به سیستم به نظر منحرف خواهد شد تا شما چیزی را تایپ کنید تا بتواند آن را شناسایی کند

برابری. فوری ناخواسته از بازدیدکنندگان و غیره از تلاش برای ورود به سیستم جلوگیری خواهد کرد. این تنها چیزی است که می خواهید.

گاهی اوقات با تشخیص خودکار پارتی مشکل وجود دارد. این اتفاق می افتد زیرا پس از اینکه ابتدا نام کاربری خود را وارد کنید، agetty شروع به ورود به سیستم برای پایان دادن به ورود به سیستم شما. متاسفانه، برنامه ورود به سیستم نمی تواند برابری را تشخیص دهد، بنابراین اگر برنامه Getty موفق به تعیین برابری نمی شود، پس ورود به سیستم نمی تواند تعیین کند آن را یا. اگر اولین تلاش ورودی نتواند انجام شود، ورود به سیستم به شما امکان می دهد که دوباره امتحان کنید و غیره (همه با اشتباه بودن برابری). در نهایت، پس از تعدادی از تلاش های ناموفق برای ورود (یا پس از اتمام زمان) agetty دوباره شروع خواهد شد و دوباره توالی ورود را شروع می کند. هنگامی که گتی دوباره کار می کند، ممکن است قادر به تشخیص پارتی در امتحان دوم باشد، بنابراین همه چیز ممکن است درست کار کند.

با تقلید اشتباه، برنامه ورود به سیستم می تواند به درستی خواندن آنچه شما تایپ می کنید و شما نمی توانید وارد شوید. اگر ترمینال شما پشتیبانی از تساوی دریافت شده، شما همچنان برای دیدن یک صفحه منحرف ادامه دهید. اگر Getty قادر به تشخیص parity نیست، فایل / etc / issue معمولا قبل از قبل از نمایش سریع به صفحه نمایش می رود، بنابراین ممکن است کلمات بر روی صفحه نمایش ظاهر شود.

چرا نمی تواند agetty parity را با اولین حرف تایپ شده تشخیص دهد؟ مثال زیر: فرض کنید یک بایت 8 بیتی با bit bit برابر 0 (بیت مرتبه بالا) و با تعداد عدد 1 بیت را تشخیص می دهد. کدام یک از آنها کدام است؟ خب، تعداد عددي 1 بيت حاکی از آن است که آن عدد odd است. اما همچنین می تواند تنها یک کاراکتر 8 بیتی باشد که بدون تقارن باشد. هیچ راهی برای تعیین آن وجود ندارد. اما تا کنون امکان حتی برابر بودن را نادیده گرفته است. تشخیص تقسیم بندی به این ترتیب با فرآیند حذف انجام می شود.

اگر بایت بعدی تایپ شده شبیه به اول است و همچنین تنها امکان برابری برابر را برطرف می کند، هنوز هم نمیتواند میزان تقارن را تعیین کند. این وضعیت می تواند به طور نامحدود ادامه یابد و در موارد نادر، ورود به سیستم ناموفق خواهد بود. اگر agetty یک بیت برابر را پیدا کند، فرض خواهد کرد که این یک بیت برابر است و نه یک بیت مرتبه بالاتر از یک کاراکتر 8 بیتی. بنابراین فرض می شود که از نام متا (بیت بالا) در نام کاربری خود استفاده نکنید (یعنی نام شما در ASCII است).

ممکن است به شیوه های مختلف وارد یک حلقه ورود شوید. فرض کنید شما تنها یک یا دو حرف را برای نام کاربری خود تایپ می کنید و سپس بازگشت را فشار دهید. اگر این حروف برای تشخیص تقسیم کافی نیست، پس از ورود به سیستم قبل از اینکه پاریت تشخیص داده شود، اجرا می شود. گاهی اوقات این مشکل رخ می دهد اگر شما ترمینال و / یا اتصال زمانی که agetty برای اولین بار شروع به کار ندارد.

اگر در این "حلقه ورودی" گیر کرده اید، راهی برای خروج از آن است که چندین بار کلید Enter را بزنید تا فورمت Login Getty را دریافت کنید. راه دیگری این است که فقط یک دقیقه یا بیشتر یک تعطیلات صبر کنید. بعد از ورود به سیستم، گیتی ورود به سیستم بر روی صفحه نمایش توسط برنامه getty قرار داده می شود و شما ممکن است مجددا تلاش کنید تا وارد سیستم شوید.

بایت داده های 8 بیتی (به ترتیب برابر)

متاسفانه، agetty نمی تواند این پارتی را شناسایی کند. در اواخر سال 1999، هیچ گزینه ای برای غیر فعال کردن خودکار تشخیص زوجیت ندارد و بدین ترتیب همسرداری اشتباه را تشخیص می دهد. نتيجه اين است که فرآيند ورودي گمراه خواهد شد و پاريتي اشتباه تنظيم خواهد شد. بنابراين امكان استفاده از بيت داده 8 بيت با استفاده از شبكه وجود ندارد.

گتی (بخشی از getty_ps)

(اکثر این موارد از سری قدیمی HOWTO توسط Greg Hankins)
برای این گتی یک نیاز به هر دو را وارد کنید در یک فایل پیکربندی و اضافه کردن یک ورودی در / etc / inittab . در اینجا برخی از نمونه های ورودی برای استفاده از ترمینال شما در فایل پیکربندی / etc / gettydefs استفاده می شود .

# 38400 bps ورودی ترمینال DT38400 # B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL # @ S @ L ورود به سیستم: # DT38400 # 19200 bps ورودی ترمینال دروغ DT19200 # B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL # @ S @ L ورود به سیستم: # DT19200 # 9600 bps ورودی ترمینال خالی DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @ L ورود به سیستم: # DT9600

توجه داشته باشید که DT38400، DT19200، و غیره تنها برچسب هستند و باید همانند شما در / etc / inittab استفاده کنید .

اگر می خواهید، می توانید در مورد بنر ورودی، چیزهای جالب را چاپ کنید. در مثالهای من، نام سیستم و خط سریال چاپ شده است. شما می توانید چیزهای دیگر را اضافه کنید: [blockquote

سایه = بله B جریان (در زمانی کهB دیده می شود ارزيابي شده است) bps rate. 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

اطمینان حاصل کنید که فایل پیکربندی دیگری برای getty یا uugetty برای پورت سریال وجود ندارد که ترمینال شما به مانند ( /etc/default/{uu}getty.ttyS N یا /etc/conf.{uu}getty.ttyS N ) متصل شده باشد ، زیرا این احتمالا با اجرای Getty در ترمینال مواجه خواهد شد. در صورت خروج از این فایل های تضاد، حذف کنید.

فایل / etc / inittab خود را برای اجرای Getty در پورت سریال ویرایش کنید (در اطلاعات صحیح برای محیط شما جای دهید - پورت، سرعت و نوع ترمینال پیش فرض):

S1: 23: respawn: / sbin / getty ttyS1 DT9600 vt100 init لینوکس # init q

در این مرحله، شما باید یک پیام ورود به سیستم در ترمینال خود را ببینید. شما ممکن است مجبور شوید برای بازگشت به مرکز توجه کنید.

mgetty

"م" مودم است. این برنامه عمدتا برای مودم هاست و تا اواسط سال 2000، مجددا برای استفاده از آن برای پایانه های متداول نیاز به مجوز دارد (مگر اینکه از کنترل جریان سخت افزاری استفاده کنید و معمولا نیاز به یک کابل دست ساخته شده). برای مستندات برای پایانه های متصل به طور مستقیم، بخش "مستقیم" کتابچه راهنمای کاربر را ببینید: mgetty.texi.

برای آخرین مثال خط /etc/mgetty/mgetty.config به عنوان مثال از پیکربندی آن برای یک ترمینال نگاه کنید. مگر اینکه شما می گوید "toggle-dtr no" فکر می کند که شما یک مودم و قطره (نفی) پین DTR در PC در تلاش بیهوده برای تنظیم مجدد مودم غیر موجود وجود دارد. در مقایسه با دیگر gettys، mgetty خود را به یک ترمینال وصل نمی کند تا کسی به هر کلید آن ترمینال دسترسی پیدا کند؟ برای ترمینال در بالا یا ps تا زمانی که این اتفاق بیفتد. سیاهههای مربوط به / var / log / mgetty / ممکن است چند پیام هشدار دهنده را نشان دهد که فقط برای مودم ها قابل استفاده است که شما ممکن است نادیده بگیرید.

در اینجا یک مثال از خط ساده ای که در / etc / inittab قرار داده اید، است :

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