Ტექსტური ტერმინალები Linux- ზე

14.1 გეტის (გამოიყენება / etc / inittab)

შესავალი გეტისთვის

იმისათვის, რომ სისტემა ჩატვირთოს სერიული პორტის (და მასთან დაკავშირებული ტერმინალი) გაშვებისას, როდესაც კომპიუტერი იწყებს (ან გადამრთველების დონეებს), გიგანტი ბრძანება უნდა ჩაიწეროს / etc / inittab ფაილში. ბრძანებისგან გათავისუფლება შეიძლება გამოიწვიოს პრობლემები (იხ. თუ გთხოვ გაითვალისწინეთ ბრძანებათა სტრიქონიდან: პროგრამები შეჩერდება, თუ რატომ). გეტის იღებს TTY (ტერმინალი) აპირებს. თითოეული ტერმინალის სჭირდება საკუთარი გიგანტი ბრძანება. არსებობს ასევე მინიმუმ ერთი გიგანტი ბრძანება კონსოლის ყველა / etc / inittab ფაილი. იპოვეთ ეს და გაითვალისწინეთ გრაფა ბრძანებები რეალური ტერმინალების შემდეგ. ეს ფაილი შეიძლება შეიცავდეს ტექსტის ტერმინალების ნიმუში გთხოვ ხაზებს, რომლებიც გამოითქვამთ იმას, რომ ყველაფერი რაც თქვენ გჭირდებათ, უნდა გააკეთოთ, რომ გაეცნოთ მათ (ამოიღონ წამყვანი #) და შეცვალონ რამდენიმე არგუმენტი.

არგუმენტები, რომლებიც დაშვებულია დამოკიდებულია იმაზე, რაც გთხოვ გამოიყენოთ:
ორი ჯაჭვი საუკეთესოდ პირდაპირ კავშირშია ტერმინალებისთვის:

ორი იღებს საუკეთესოდ აკრიფეთ მოდემი (პირდაპირ კავშირში მყოფი ტერმინალების თავიდან აცილება):

მარტივი მისაღებად გამოიყენოთ თუ არ გამოიყენებთ რეალურ ტექსტურ ტერმინალს. Linux- ის მომხმარებლების უმეტესობა მათგან ერთ-ერთ მათგანს იყენებს:

თქვენი Linux დისტრიბუცია შეიძლება მოდიოდეს ps_getty ან agetty ტექსტური ტერმინალებისთვის. ზოგი განაწილება არ არის. სამწუხაროდ, ისინი ხშირად ამას "გთხოვ" უწოდებენ, ასე რომ თქვენ შეიძლება დაგჭირდეთ იმის განსაზღვრა, თუ რომელი გაქვთ მას შემდეგ, რაც თქვენს მიერ დაყენებული არგუმენტები / etc / inittab განსხვავდება. Debian იყენებს agetty (in util-linux პაკეტი). RedHat და Fedora გამოყენებული ps_getty რომელიც არის: ps_getty

როგორც ბოლო კურსს, რათა დადგინდეს რომელი გთხოვა გაქვთ, თქვენ შეამოწმეთ მისი შემსრულებელი კოდი (როგორც წესი, / sbin). ps_getty- ს აქვს ამ კოდში ჩართული / etc / gettydefs. მოძებნოთ ის, წასვლა / sbin და ტიპის:
სტრინგი ბოთლი | grep getty
თუ გთხოვა, ფაქტობრივად, აგეტია, ზემოხსენებული არაფერი გამოიწვევს. თუმცა, თუ თქვენ გაქვთ agetty აკრეფით:
გთხოვ- h
უნდა აჩვენო პარამეტრები [-იანი].

თუ არ გექნებათ გთხოვ, გსურთ გადაამოწმოთ სხვა დისტრიბუცია და უცხოელის პროგრამა RPM და Debian პაკეტების კონვერტაციაზე. კოდის გადმოწერა შეიძლება გეტის პროგრამიდან.

თუ არ იყენებთ მოდემის საკონტროლო ხაზებს (მაგალითად, თუ თქვენ მხოლოდ 3 დირიჟორის მინიმალური რიცხვი იყენებთ: გადაცემას, მიღებას და საერთო სიგნალს), თქვენ უნდა გაითვალისწინოთ ეს "ადგილობრივი" დროშის გამოყენებით. ეს ფორმატი დამოკიდებულია იმაზე, რაც გთხოვ გამოიყენოთ.

გეტის გასვლის შემდეგ გადის (და შეიძლება respawn)

შესვლის შემდეგ თქვენ შეამჩნევთ ("დაბრუნება", "ps -ax" ან "ptree"), რომ გთხოვოთ პროცესი აღარ გაშვებულია. რა მოხდა ეს? რატომ ხელახლა ხელახლა ხელახლა დაიწყება თუ თქვენი ჭურვი მოკლეს? აი რატომ.

მას შემდეგ, რაც ჩაწერეთ თქვენი მომხმარებლის სახელი, გისურვილი იღებს მას და მოუწოდებს შემოსულ პროგრამას ეუბნება თქვენს მომხმარებლის სახელი. გეტის პროცესი შეცვალა შესვლის პროცესით. შესვლის პროცესი ითხოვს თქვენს პაროლს, ამოწმებს მას და იწყებს თუ არა პროცესი თქვენს პაროლში. ეს პროცესი ხშირად bash shell. თუ ასეა, bash იწყება და შეცვლის შესვლა პროცესი. გაითვალისწინეთ, რომ ერთი პროცესი ცვლის მეორეს და ბახის ჭურვი პროცესი თავდაპირველად დაიწყო, როგორც გთხოვ პროცესში. ქვემოთ მოყვანილი ზემოქმედების შედეგები.

ახლა / etc / inittab ფაილი, Gotty უნდა respawn (გადატვირთვა) თუ მოკლეს. იგი ამბობს, რომ ხაზი, რომელიც მოუწოდებს Getty. მაგრამ თუ bash shell (ან შესვლა პროცესი) მოკლეს, გთხოვოთ respawns (restarts). რატომ? ისე, ორივე შესვლა პროცესი და bash არიან გადაჯგუფების for გთხოვარი და მემკვიდრეობით

* ტექსტური ტერმინალი როგორ უნდა ინდექსზე

სიგნალის კავშირი ქმნის მათ წინამორბედებს. სინამდვილეში თუ დეტალებს დააკვირდებით, შეიცნობა, რომ ჩანაცვლების პროცესი იგივე პროცესია, როგორც ორიგინალური პროცესი. ამდენად bash არის ერთგვარი გთხოვარი წელს შენიღბვის იგივე პროცესი ID ნომერი. თუ bash მოკლეს, ისევე როგორც გეტის მოკლეს (მიუხედავად იმისა, რომ გუთანი არ არის გაშვებული აღარ). ეს შედეგები გთხოვ განაწილებას.

როდესაც ერთი გაშვება, ყველა პროცესები, რომ სერიული პორტი მოკლეს მათ შორის bash shell. ეს შეიძლება მოხდეს (თუ ჩართულია), თუ ჩამრთველი სიგნალი გადაეცემა სერიულ პორტს DCD ძაბვის წვეთით მოდემით. ან დესკტოპის გაშლიდან ან ჩამოშლა გამოიწვევს ბეწვის ხსნარს. შეიძლება აიძულოს გამსესხმელად გადაყლაპოს ხელკეტის ხელით (ან შესვლა) ან k key- ზე დარტყმისას და ა.შ. "ზედა" ან "მკვლელობის" ბრძანებით. თქვენ სავარაუდოდ უნდა მოკვლას სიგნალი 9 (რომელიც არ შეიძლება იგნორირებული).

თუ გთხოვ ბრძანება ბრძანებათაგან: პროგრამები შეჩერებულია

თქვენ ჩვეულებრივ უნდა გაიქცეთ ჯარიმა შიგნიდან / etc / inittab და არა ბრძანებათა სტრიქონიდან ან ტერმინალში გაშვებული პროგრამები შეიძლება მოულოდნელად შეჩერდეს (შეჩერდა). აი რატომ (გამოტოვეთ მომდევნო სექციაში, თუ რატომ არ არის მნიშვნელოვანი თქვენთვის). თუ დაიწყებთ გთხოვ, ვთქვათ, tty11 ბრძანებულების ბრძანებათა ტერმინალიდან, ვთქვათ tty1, მაშინ tty1- ს ექნება მისი "საკონტროლო ტერმინალი" მიუხედავად იმისა, რომ ტერმინალის ტერმინალი არის ttyS1. ამდენად, მას აქვს არასწორი საკონტროლო ტერმინალი. მაგრამ თუ ის დაიწყო inittab ფაილი შიგნით, მაშინ მას ექნება ttyS1 როგორც საკონტროლო ტერმინალი (სწორი).

მიუხედავად იმისა, რომ საკონტროლო ტერმინალი არასწორია, შესვლა ttyS1 მუშაობს კარგად (რადგან თქვენ მისცა ttyS1 როგორც არგუმენტი გეტის). სტანდარტული შეყვანის და გამომავალი შეიქმნა ttyS1 მიუხედავად იმისა, რომ საკონტროლო ტერმინალი რჩება tty11. TtyS1- ზე სხვა პროგრამების განხორციელება შეუძლია ამ სტანდარტული შეყვანის / გამომავალი (რომელიც დაკავშირებულია ttyS1- სთან) და ყველაფერი კარგად არის. მაგრამ ზოგიერთმა პროგრამამ შეიძლება შეცდომა შეცვალოს მათი საკონტროლო ტერმინალიდან (tty1), რომელიც არასწორია. ახლა tty1 შეიძლება ფიქრობს, რომ ეს პროგრამები ტარდება ფონზე tty1 ასე რომ მცდელობა წაკითხვის tty1 (ეს უნდა ყოფილიყო ttyS1) შედეგების შეჩერების პროცესი, რომელიც ცდილობდა წაკითხვის. (ფონური პროცესი არ არის ნებადართული მისი მაკონტროლებელი ტერმინალიდან). შეგიძლიათ იხილოთ შეტყობინება, როგორც: " [1] + შეაჩერა " ეკრანზე. ამ ეტაპზე მოხდა იმის გამო, რომ თქვენ არ შეგიძლიათ ურთიერთქმედება პროცესში, რომელიც მცდელობას ცდილობს თქვენთან არასწორი ტერმინალით. რა თქმა უნდა, გაქცევა აქედან შეგიძლიათ სხვა ტერმინალისკენ და მოკვლას და ა.შ.

agetty (შეიძლება დაასახელა გთხოვოთ)

მაგალითად ხაზი / etc / inittab:

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

S1 არის ttyS1. 23 გულისხმობს, რომ გრაფა აწარმოებს პერსპექტივაში 2 ან 3-ში ჩაბმის დროს. Respawn ნიშნავს იმას, რომ თუ გთხომა (ან პროცესი, რომელიც შეცვალა ის, როგორც ბას), გიგანტი ავტომატურად იწყება (respawn). / sbin / getty არის გთხოვოთ ბრძანება. -L ნიშნავს ადგილობრივ (იგნორირება მოდემი კონტროლის სიგნალები). -h (არ არის ნაჩვენები მაგალითი) საშუალებას აძლევს აპარატურის ნაკადის კონტროლს (იგივე, რაც მკაცრი crts). 19200 არის baud განაკვეთი. ttyS1 ნიშნავს / dev / ttyS1 (COM2- ში MS-DOS). vt102 არის ტერმინალის ტიპი და ამ გრაფა შექმნის გარემოს ცვლადი TERM ამ ღირებულებას. კონფიგურაციის ფაილი არ არსებობს. შეყვანის "init q" ბრძანებათა სტრიქონის შემდეგ რედაქტირება გთხოვ და თქვენ უნდა ნახოთ login prompt.

პარიტეტის პრობლემების ავტომატური გამოვლენის Agetty

Agetty პროგრამა შეეცდება ავტომატური აღმოაჩინოს პარიტეტული კომპლექტი ტერმინალში (მათ შორის არ არის პარიტეტი). იგი მხარს არ უჭერს 8-ბიტიანი მონაცემების ბაიტებსა და 1-ბიტიან პარიტეტს. იხილეთ 8 ბიტიანი მონაცემთა ბაიტი (პლუს პარიტეტი). თუ იყენებთ წყნარად დააყენებს პარიტეტის, agetty ავტომატურად unset მას შემდეგ, რაც თავდაპირველად სურს პარიტეტის ცოტა მოვა thru თითქოს ეს მონაცემები ცოტა. ეს იმიტომ ხდება, რომ უკანასკნელი ბიტი (შესაძლოა პარიტეტულ ბიტი) უნდა მიიღოთ, ვინაიდან ჩაწერეთ თქვენი შესვლის სახელი, რათა მას ავტომატურად გამოავლინოს პარიტეტი. ამგვარად, თუ პარიტეტს იყენებთ, საშუალებას მისცემს მას ტექსტის ტერმინალის შიგნით და ავტომატურად გამოავლინონ იგი და დააინსტალიროთ კომპიუტერში. თუ თქვენი ტერმინალის მხარდაჭერა პარიტეტს უჭერს მხარს, შესვლის სწრაფი შეხედულება გამოიყურება, სანამ არ შეიტანთ იმას, რომ გთხოვ შეძლო

პარიტეტი. გაპარტახებული ხილვა შეამოწმებს სტუმრებს და ა.შ. ეს შეიძლება იყოს მხოლოდ ის, რაც გინდა.

ზოგჯერ პრობლემაა პარისტის ავტომატური გამოვლენის პრობლემა. ეს ხდება იმიტომ, რომ მას შემდეგ, რაც თქვენი სახელი შეიყვანეთ თქვენი სახელით, agetty იწყებს შესვლას პროგრამაში შესასვლელად. სამწუხაროდ, შესვლის პროგრამა ვერ იარსებებს პარიტეტულ შემთხვევაში, თუ გადახდა ვერ მოხერხდება პარიტეტის დადგენის შემდეგ, არც ის. თუ პირველი შესვლის მცდელობა ვერ მოხერხდა, შესვლა მოგცემთ სცადოთ ისევ და ა.შ. (ყველა პარიტეტის კომპლექტი არასწორია). საბოლოო ჯამში, რამდენიმე მცდელობის მცდელობის შემდეგ (ან შეყოვნების შემდეგ) agetty კვლავ დაიწყება და დაიწყება შესვლა sequences ყველა კვლავ. მას შემდეგ, რაც გთხოვა ხელახლა იწყება, მას შეეძლება პარიტეტის მეორე მცდელობის გამოვლენა, ასე რომ ყველაფერი შეიძლება მაშინ OK.

არასწორი პარიტეტით, შესვლის პროგრამა ვერ სწორად წაიკითხავს იმას, თუ რას აკრიფოთ და არ შეხვიდეთ სისტემაში. თუ თქვენი ტერმინალის მხარდაჭერა პარიტეტს უჭერს მხარს, თქვენ გააგრძელებთ გარშემორტყმულ ეკრანს. თუ გთხოვ ვერ პოულობს პარიტეტის დადგენა / etc / issue ფაილი, როგორც წესი, ადრე ეკრანზე, ასე უფრო garbled სიტყვა შეიძლება გამოჩნდება ეკრანზე.

რატომ არ შეიძლება აგეტიკულმა აღმოაჩინოს პარიტეტი პირველი ასოებით აკრეფილი? აი მაგალითად: დავანაზღაურებთ 8-ბიტიანი ბაიტი თავის პარიტეტულ 0-თან (მაღალი შეკვეთა) და უცნაური რიცხვი 1-ბიტიანი. რა არის პარიტეტი? კარგად, უცნაური რიცხვი 1 ბიტი გულისხმობს, რომ ეს უცნაური პარიტეტია. მაგრამ ეს შეიძლება იყოს მხოლოდ 8 ბიტიანი ხასიათი არ პარიტეტულ. არ არსებობს გზა ჯერჯერობით, რათა დადგინდეს, რომელიც. მაგრამ ჯერჯერობით ჩვენ აღმოვფხვრათ პარიტეტის შესაძლებლობაც. პარიტეტის გამოვლენა ამგვარად აღმოფხვრის აღმოფხვრის პროცესს.

თუ მეორე ბაიტი აკრეფილია პირველივე მსგავსი და ასევე გამორიცხავს პარიტეტის შესაძლებლობას, ჯერ კიდევ შეუძლებელია პარიტეტის განსაზღვრა. ეს სიტუაცია შეიძლება გააგრძელოს განუსაზღვრელი ვადით და იშვიათ შემთხვევებში შესვლა ვერ მოახდენს შეცდომის შეცვლისას. თუ agetty პოულობს ცოტა 1-ს, იგი მიიჩნევს, რომ ეს არის პარიტეტული ბიტი და არა 8-bit ხასიათის მაღალი შეკვეთა. ეს იმას ნიშნავს, რომ თქვენ არ იყენებთ მეტა-სიმბოლოებს (მაღალ კომპლექტს) თქვენს მომხმარებლის სახელით (ანუ თქვენი სახელი ASCII- ში).

შეიძლება "შესვლის მარყუჟის" შეყვანა შეიძლება სხვადასხვა გზით. დავუშვათ, რომ შეიყვანეთ მხოლოდ ერთი წერილი ან ორი თქვენი შესვლის სახელი და შემდეგ მოხვდა დაბრუნების. თუ ეს ასო არ არის საკმარისი პარიტეტულობის გამოვლენისთვის, მაშინ ჩაირთვება პალიტეტის აღმოჩენამდე. ზოგჯერ ეს პრობლემა მოხდება, თუ არ გაქვთ ტერმინალი ან / და უკავშირდება, როდესაც agetty პირველი იწყება.

თუ ამ "შესვლა მარყუჟში" დავრჩებით, გამოსავალი არის ის, რომ რამდენჯერმე დააბრუნოთ გასაღების გასაღები, სანამ არ მიიღებთ გთხოვ შემოსვლას. კიდევ ერთი გზა არის მხოლოდ დაველოდოთ წუთში ან იმდენად დროული. მაშინ გთხოვ შემოსვლას ვუყურებთ ეკრანზე გეტის პროგრამით და შეიძლება კვლავ სცადოთ შეხვიდეთ სისტემაში.

8-ბიტიანი მონაცემთა ბაიტი (პლიუსი)

სამწუხაროდ, აგეტიმ ვერ პოულობს ამ პარიტეტს. რაც შეეხება 1999 წლის ბოლოს, მას არ აქვს შესაძლებლობა შეცვალოს პარიტეტის ავტომატური გამოვლენა და, შესაბამისად, არასწორი პარიტეტის დადგენა. შედეგი ის არის, რომ შესვლის პროცესი მოხდება და არ იქნება არასწორი. ამგვარად, ეს არ ჩანს სავარაუდოდ 8-ბიტიანი მონაცემთა ბაიტების გამოყენება პარიტეტით.

გთხოვ (ნაღდი ფულის ნაწილი)

(ეს უმეტესობა არის ძველი სერიული ჰოტომი გრეგ ჰანკისის მიერ)
ამ ჯილდოსთვის საჭიროა ორივე ჩაწერის კონფიგურაციის ფაილი და დაამატოთ ჩანაწერი / etc / inittab . აქ არის რამოდენიმე მაგალითი მასალა გამოიყენოთ თქვენი ტერმინალისთვის, რომელიც ჩაიწერება კონფიგურაციის ფაილში / etc / gettydefs .

# 38400 bps Dumb Terminal შესვლის DT38400 # B38400 CS8 CLOCAL # B38400 SANE-ISTRIP CLOCAL # @ S @L შესვლა: # DT38400 # 19200 bps Dumb Terminal შესვლის DT19200 # B19200 CS8 CLOCAL # B19200 SANE-ISTRIP CLOCAL # @ S @L შესვლა: # DT19200 # 9600 bps Dumb Terminal შესვლის DT9600 # B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL # @ S @L შესვლა: # DT9600

გაითვალისწინეთ, რომ DT38400, DT19200 და ა.შ. მხოლოდ ეტიკეტები და უნდა იყოს იგივე, რომ გამოიყენოთ / etc / inittab .

თუ გინდათ, შეგიძლიათ ბოთლის ბეჭდურში საინტერესო ბონუსები გააკეთოთ. ჩემი მაგალითები, მაქვს სისტემის სახელი და სერიული ხაზი დაბეჭდილი. თქვენ შეგიძლიათ დაამატოთ სხვა რამ: [ბლოკნოტი

shade = yes] @B მიმდინარე (BB- ის დროს შეფასებული) Bps კურსი. @D მიმდინარე თარიღი, MM / DD / YY- ში. @L სერიული ხაზი, რომლის გადახურვაც თან ერთვის. @S სისტემის სახელი. @ T მიმდინარე დრო, HH: MM: SS (24 საათიანი). @ U ამჟამად ხელმოწერილი მომხმარებლების რაოდენობა. ეს არის რიგი ჩანაწერების რაოდენობა / etc / utmp ფაილში, რომელსაც არ აქვს null ut_name ველი. @V VERSION- ის ღირებულება, როგორც ნაგულისხმები ფაილში. გამოვიყენოთ ერთი '@' ხასიათი, გამოიყენოთ ან '@ @' ან '@ @'.

როდესაც თქვენ კეთდება რედაქტირების / etc / gettydefs , შეგიძლიათ შეამოწმოთ, რომ სინტაქსი სწორია:

linux # getty -c / etc / gettydefs

დარწმუნდით, რომ არ არსებობს სხვა ჯილდო ან უშუალო კონფიგურაციის ფაილი სერიული პორტისთვის, რომ თქვენი ტერმინალის მიმაგრება არის ისეთი, როგორიც არის ( /etc/default/{uu}getty.ttyS N ან /etc/conf.{uu}getty.ttyS N ) , რადგან ეს ტერმინალის გაშვებას გულისხმობს. ამოიღონ ასეთი კონფლიქტური ფაილები, თუ ისინი გადიან.

შეცვალეთ თქვენი / etc / inittab ფაილი სექტორის პორტში ( შეცვალეთ სწორი ინფორმაცია თქვენს გარემოში - პორტი, სიჩქარე და ნაგულისხმევი ტერმინალის ტიპი):

S1: 23: respawn: / sbin / getty ttyS1 DT9600 vt100 მასში linux # init q

ამ ეტაპზე, თქვენ უნდა დაინახოთ შემოსვლა თქვენს ტერმინალში. თქვენ შეიძლება მოხვდეთ დაბრუნების მისაღებად ტერმინალის ყურადღება.

მგალობელი

"მ" დგას მოდემისთვის. ეს პროგრამა, პირველ რიგში, მოდემებისთვის და 2000 წლის შუა რიცხვებში მოითხოვს ტექსტურ ტერმინალებს, რომ გამოიყენოთ იგი ტექსტური ტერმინალებისთვის (თუ არ იყენებთ აპარატურის ნაკადის კონტროლს და, როგორც წესი, ხელსაყრელი საკაბელოა). უშუალოდ დაკავშირებული ტერმინალების დოკუმენტაციისათვის იხილეთ სახელმძღვანელო "პირდაპირი" სექცია: mgetty.texi.

შეხედეთ ბოლო სტრიქონებს /etc/mgetty/mgetty.config- ის ტერმინალის კონფიგურაციის მაგალითზე. თუ არ მითქვამს "გადართვა- dtr არა", მიაჩნიათ, რომ თქვენ გაქვთ მოდემი და ჩამოშლა (უარყოფითი) DTR pin- ზე PC- ში უშედეგო მცდელობა არარსებული მოდემის გადატვირთვის მცდელობა. განსხვავებით სხვაგან განსხვავებით, მარგეთი არ ტერმინალს არ დაურთო, სანამ ვინმეს მიაღწევს რომელიმე ტერმინალს, ასე რომ დაინახავთ? ტერმინალის ზედა ან PS სანამ ეს მოხდება. ჟურნალები / var / log / mgetty / ში შეიძლება აჩვენონ რამდენიმე გაფრთხილება, რომლებიც მხოლოდ მოდემისთვის გამოიყენება, რომელთა იგნორირებაც შეგიძლიათ.

აქ არის მაგალითი მარტივი ხაზი თქვენ დააყენა / etc / inittab:

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