სხვადასხვა ტიპის აპარატურის ფუნქციონირებისთვის საჭიროა წყვეტების, ჩაწერა/წაკითხვის პორტების და DMA მისამართების განსაზღვრა (ზოგიერთ მოწყობილობას არ სჭირდება ყველა ეს პარამეტრი). 90–იან წლებში აღნიშნული პარამეტრების კონფიგურაცია შესაძლებელი იყო აპარატურულ მოწყობილობებში შესაბამისი ჯამპერების შეცვლით. თუმცა თანამედროვე აპარატურაში ამ პარამეტრების კონფიგურაცია შესაძლებელია უკვე პროგრამულად.
PCI ბარათების კონფიგურაცია
Peripheral Component Interconnect სალტე (შემოკლებით PCI Bus) წარმოადგენს კომპიუტერის სალტეს, რომელიც აკავშირებს სხვადასხვა შიდა ან გარე მოწყობილობებს დედა–პლატასთან. ასეთი მოწყობილობები შეიძლება იყოს წარმოდგენილი დედა–პლატაზე ინტეგრირებული სპეციალური პლატის და ასევე PCI სლოტში ჩასმული გაფართოების ბარათის სახით (სურ. 2.2 და სურ. 2.3).
სურ. 2.2
სურ. 2.3
PCI სალტე, რომელიც წარმოადგენს სტანდარტულ გაფართოების სალტეს კომპიუტერის უმეტესი შიდა კომპონენტებისთვის, შექმნილია Plug-and-Play (PnP) კონფიგურაციით. შესაბამისად PCI მოწყობილობების ავტომატური კონფიგურაცია არის მათი სტანდარტული თვისება. თანამედროვე კომპიუტერებში სტანდარტული PCI სალტე უკვე ჩანაცვლებულია PCI-X ან PCI Express სტანდარტით (სურ. 2.4), თუმცა უმეტეს კომპიუტერებში სტანდარტული PCI სლოტები ჯერ კიდევ არის ინტეგრირებული შედარებით ძველ მოწყობილობებთან თავსებადობისთვის.
სურ. 2.4
არსებობს მრავალი PCI გაფართოების ბარათი, რომელიც გამოიყენება კომპიუტერში სხვადასხვა მოწყობილობების მისაერთებლად, მათ შორის ქსელის კარტა, აუდიო კარტა, მოდემი, USB და სერიული პორტები, TV ტუნერის კარტა, დისკის კონტროლერი და მრავალი სხვა. ასევე უნდა აღინიშნოს, რომ ბევრი მოწყობილობები, რომლებიც ადრე გაფართოების ბარათების მეშვეობით უერთდებოდა კომპიუტერს, დღეს უკვე დედა–პლატაშია ინტეგრირებული, ან უფრო მოსახერხებელი USB და PCI Express–ით არიან დაკავშირებული. უმეტესობა PCI მოწყობილობების ინტეგრაცია კომპიუტერში არ მოითხვოს კონფიგურაციაში რაიმე დამატებით ცვლილებების შეტანას, რადგან მათი დეტექცია და კონფიგურაცია ხდება ავტომატურ რეჟიმში თავად ოპერაციული სისტემის მიერ.
კომპიუტერთან მიერთებული PCI მოწყობილობების შესახებ ინფორმაციის ნახვა შესაძლებელია ლინუქში შემდეგი ბრძანების მითითებით:
$ lspci
ეს ბრძანება გვიჩვენებს თუ რა PCI სალტეები გააჩნია კომპიუტერს და რა მოწყობილობებია მიერთებული ამ სალტეებზე. აღნიშნულ ბრძანებას გააჩნია ბევრი არგუმენტი, რომლებიც უფრო დაწვრილებით ინფორმაციას გვაძლევს მოწყობილობის ამა თუ იმ პარამეტრის შესახებ (როგორ მოვიძიოთ ბრძანების არგუმენტები და მათი შესაბამისი განმარტებები, ამის შესახებ შემდგომ თავებში ვისაუბრებთ).
USB მოწყობილობების კონფიგურაცია
დღეს თანამედროვე კომპიტერებში, როგორც წესი, არის ინტეგრირებული რამოდენიმე USB პორტი, რომლებზეც შესაძლებელია უამრავი სხვადასხვა მოწყობილობის მიერთება. ამიტომ მნიშვნელოვანია ვიცოდეთ ლინუქსში USB დრაივერების და მათი მართვის შესახებ გარკვეული პრინციპები და ინსტრუმენტები.
USB – ეს არის პროტოკოლი და ასევე ფიზიკური პორტი, რომელიც უზრუნველყოფს ინფორმაციის გაცვლას კომპიუტერსა და გარე მოწყობილობებს შორის. USB 1.0 და 1.1 სპეციფიკაცია უზრუნველყოფს 127–მდე მოწყობილობის მიერთებას კომპიუტერთან და 12 Mbps ინფორმაციის გადაცემის სიჩქარეს. USB 2.0 უზრუნველყოფს უფრო მაღალი სიჩქარით (480 Mbps) ინფორმაციის გაცვლას.
აღნიშნული ტიპის პორტებზე შესაძლებელია ისეთი მოწყობილობების მიერთება, როგორიცაა პრინტერი, მოდემი, ფაქსი, გარე მყარი დისკი, თაგვი, კლავიატურა და სხვა.
ლინუქსის USB დრაივერები
არსებობს რამოდენიმე USB კონტროლერი, მაგ. UHCI, OHCI, EHCI და R8A66597. ლინუქსის თანამედროვე დისტრიბუტივების უმრავლესობაში ინტეგრირებულია გავრცელებული USB კონტროლერების დრაივერები. ამიტომ USB პორტები, როგორც წესი, აქტიურია კომპიუტერის ჩართვისთანავე. UHCI და OHCI კონტროლერები მართავენ USB 1.x მოწყობილობებს და სხვა კონტროლერების უმეტესობას შეუძლია USB 2.0 მოწყობილობების მართვა.
მიერთებული USB მოწყობილობების შესახებ ინფორმაციის მიღება შესაძლებელია lsusb პროგრამის გამოყენებით:
$ lsusb
თუმცა ამ პროგრამას გააჩნია რამოდენიმე არგუმენტიც, რომელიც ცვლის ეკრანზე გამოტანილ ინფორმაციას.
ადრინდელ დისტრიბუტივებში USB მოწყობილობების მართვა ხორციელდებოდა ცალკეული დრავიერების მეშვეობით. ეს დრაივერები ძირითადად ინტეგრირებულია ლინუქსის ბირთვში და მათი გამოყენება ხდება ზოგიერთი პროგრამის მიერ. მაგალითად, USB შემნახველი მყარი დისკი იყენებს USB შემნახველი დისკის დრაივერს, რომელიც დაფუძნებულია ლინუქსის SCSI–ის მხარდაჭერაზე, რაც უზრუნველყოფს სისტემაში გარე მყარი დისკის ან შემნახველი დისკის წარმოდგენას როგორც SCSI მოწყობილობის.
ამჟამად ლინუქსი გადადის ისეთ მოდელზე, რომელშიც USB ფაილური სისტემა უზრუნველყოფს USB მოწყობილობებთან კავშირს. ეს ფაილური სისტემა წარმოდგება როგორც /proc ვირტუალური ფაილური სისტემის ნაწილი. კერძოდ, USB მოწყობილობების შესახებ ინფორმაცია ხელმისაწვდომია /proc/bus/usb-დან. ქვე–დირექტორიებს კი ენიჭებათ შესაბამისი ნომერი, იმის მიხედვით, თუ რომელი კონრტოლერია ჩართული კომპიუტერში. მაგ. /proc/bus/usb/001 განსაზღვრავს პირველ USB კონტროლერს. პროგრამებს შეუძლიათ USB მოწყობილობების შესახებ ინფორმაციის მიღება სწორედ ამ ქვე–დირექტორიებიდან და არა როგორც უმეტესი მოწყობილობებისთვის /dev დირექტორიაში არსებული ფაილებიდან.
USB მოწყობილობების მართვისთვის არსებობს რამოდენიმე პროგრამა, მაგ. usbmgr და hotplug. usbmgr მუშაობს სისტემაში უკანა პლანზე და ახდენს USB სალტეზე ცვლილებების დეტექციას. როდესაც მოხდება რაიმე ცვლილების აღმოჩენა, usbmgr იწყებს შესაბამისი USB მოწყობილობის მოდულის ჩატვირთვას ან წაშლას ლინუქსის ბირთვიდან. ეს პროგრამა იყენებს /etc/usbmgr და /etc/usbmgr/usbmgr.conf კონფიგურაციის ფაილებს ცალკეული მოწყობილობის ან მთლიანი კონფიგურაციის კონტროლისთვის. თუმცა იმის გათვალისწინებით, რომ ლინუქსი გადავიდა USB მოწყობილობების ფაილურ სისტემაზე, აღნიშნულ პროგრამის გამოყენების აუცილებლობა აღარ არის. სანაცვლოდ, გამოყენებულია hotplug პროგრამა, რომელიც იყენებს /etc/hotplug დირექტორიაში ჩაწერილ ფაილებს მოწყობილობების კონფიგურაციისთვის. კერძოდ, /etc/hotplug/usb.usermap შეიცავს USB მოწყობილობების ID-ებს და სანიშნეებს /etc/hotplug/usb სკრიპტებისკენ, რომლებიც ეშვება მოწყობილობის მიერთებისას ან გამოერთებისას.