101.1 Lecke 1
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
101 Rendszerarchitektúra |
Fejezet: |
101.1 A hardverbeállítások meghatározása és konfigurálása |
Lecke: |
1/1 |
Bevezetés
Az elektronikus számítástechnika kezdete óta az üzleti és személyi számítógépek gyártói különféle hardvereket építettek be a gépeikbe, ezeket az elemeket viszont az operációs rendszernek támogatnia kell. Ez az operációs rendszer fejlesztője szempontjából túlterhelő lehet, hacsak az iparág nem hoz létre szabványokat az utasításkészletekre és az eszközkommunikációra vonatkozóan. Hasonlóan az operációs rendszer által egy alkalmazás számára biztosított szabványosított absztrakciós réteghez, ezek a szabványok megkönnyítik egy olyan operációs rendszer megírását és karbantartását, amely nem kötődik egy adott hardvermodellhez. Az integrált mögöttes hardver összetettsége azonban néha kiegészítő beállításokat igényel azzal kapcsolatban, hogy az erőforrásokat hogyan kell az operációs rendszer számára hozzáférhetővé tenni, hogy az telepíthető legyen és megfelelően működhessen.
E beállítások némelyike telepített operációs rendszer nélkül is elvégezhető. A legtöbb gépen van egy konfigurációs segédprogram, amely a gép bekapcsolásakor futtatható. A 2000-es évek közepéig a konfigurációs segédprogramot a BIOS-ban (Basic Input/Output System), az x86-os alaplapokon található alapvető konfigurációs rutinokat tartalmazó firmware-szabványban valósították meg. A 2000-es évek első évtizedének végétől az x86-os architektúrán alapuló gépeken a BIOS-t egy új, UEFI (Unified Extensible Firmware Interface) nevű implementációval kezdték helyettesíteni, amely kifinomultabb funkciókkal rendelkezik az azonosítás, a tesztelés, a konfiguráció és a firmware frissítése terén. A változás ellenére nem ritka, hogy a konfigurációs segédprogramot továbbra is BIOS-nak nevezik, mivel mindkét implementáció ugyanazt az alapvető célt szolgálja.
Note
|
A BIOS és az UEFI közötti hasonlóságok és különbségek további részleteiről egy későbbi leckében lesz szó. |
Az eszköz aktiválása
A rendszerkonfigurációs segédprogram a számítógép bekapcsolásakor egy adott billentyű lenyomása után jelenik meg. Az, hogy melyik billentyűt kell megnyomni, gyártónként változik, de általában a Del vagy az egyik funkcióbillentyű, például a F2 vagy a F12. A használandó billentyűkombináció gyakran megjelenik a bekapcsolási képernyőn.
A BIOS beállítási segédprogramban lehetőség van az integrált perifériák engedélyezésére és letiltására, az alapvető hibavédelem aktiválására és a hardverbeállítások, például az IRQ (megszakításkérés) és a DMA (közvetlen memóriaelérés) módosítására. A modern gépeken ritkán van szükség ezeknek a beállításoknak a megváltoztatására, de szükség lehet a speciális problémák megoldásához szükséges módosításokra. Vannak például olyan RAM-technológiák, amelyek az alapértelmezett értékeknél gyorsabb adatátviteli sebességgel kompatibilisek, ezért ajánlott a gyártó által megadott értékekre módosítani. Egyes CPU-k olyan funkciókat kínálnak, amelyek az adott telepítéshez nem feltétlenül szükségesek és kikapcsolhatók. A letiltott funkciók csökkentik az energiafogyasztást, és növelhetik a rendszer védelmét, mivel az ismert hibákat tartalmazó CPU-funkciók is letilthatók.
Ha a gépben több tároló van, fontos meghatározni, hogy melyik rendelkezik a megfelelő bootloaderrel, és melyik legyen az első bejegyzés az eszköz indítási sorrendjében. Előfordulhat, hogy az operációs rendszer nem töltődik be, ha a BIOS bootellenőrzési listájában a helytelen eszköz áll az első helyen.
Eszközellenőrzés Linuxban
Miután az eszközök megfelelően azonosítva lettek, az operációs rendszer feladata, hogy hozzárendelje azokat a szoftverkomponenseket, amelyekre szükségük van. Ha egy hardverfunkció nem az elvártaknak megfelelően működik, fontos azonosítani, hogy pontosan hol jelentkezik a probléma. Ha az operációs rendszer nem érzékel egy hardverelemet, akkor nagy valószínűséggel az alkatrész — vagy a port, amelyhez csatlakozik — hibás. Ha a hardverrész helyesen érzékelődik, de mégsem működik megfelelően, akkor az operációs rendszer oldalán lehet probléma. Ezért a hardverrel kapcsolatos problémák kezelésének egyik első lépése annak ellenőrzése, hogy az operációs rendszer megfelelően érzékeli-e az eszközt. A hardveres erőforrások azonosításának két alapvető módja van a Linux rendszerben: speciális parancsok használata vagy specifikus fájlrendszereken belül meghatározott fájlok beolvasása.
Az ellenőrzés parancsai
Linux rendszerben a csatlakoztatott eszközök azonosítására szolgáló két alapvető parancs a következő:
lspci
-
A PCI (Peripheral Component Interconnect) buszhoz jelenleg csatlakoztatott összes eszközt megjelenítése. A PCI-eszközök lehetnek az alaplaphoz csatlakoztatott alkatrészek, mint például egy lemezvezérlő, vagy egy PCI-slotba illesztett bővítőkártyák, mint például egy külső videokártya.
lsusb
-
A számítógéphez jelenleg csatlakoztatott USB (Universal Serial Bus) eszközök listája. Bár szinte minden elképzelhető célra léteznek USB-eszközök, az USB-interfész nagyrészt beviteli eszközök — billentyűzetek, mutatós eszközök — és cserélhető adathordozók csatlakoztatására szolgál.
Az lspci
és lsusb
parancsok kimenete az operációs rendszer által azonosított összes PCI és USB eszköz listája. Előfordulhat azonban, hogy az eszköz még nem teljesen működőképes, mivel minden hardvernek szüksége van egy szoftverkomponensre a megfelelő eszköz vezérléséhez. Ezt a szoftverkomponenst kernelmodulnak nevezik, és lehet a hivatalos Linux kernel része, vagy kerülhet más forrásból hozzáadásra.
A hardvereszközökhöz kapcsolódó Linux kernel modulokat más operációs rendszerekhez hasonlóan drivernek is nevezik. A Linux drivereket azonban nem mindig az eszköz gyártója szállítja. Míg egyes gyártók saját bináris illesztőprogramokat biztosítanak, amelyeket külön kell telepíteni, sok illesztőprogramot független fejlesztők írnak. Történelmileg például a Windows alatt működő eszközöknek nem biztos, hogy van megfelelő kernelmoduljuk Linuxhoz. Manapság a Linux-alapú operációs rendszerek erős hardvertámogatással rendelkeznek, és a legtöbb eszköz könnyedén működésre bírható.
A hardverhez közvetlenül kapcsolódó parancsok gyakran root jogosultságokat igényelnek a végrehajtáshoz, vagy csak korlátozott információkat jelenítenek meg, ha normál felhasználó hajtja végre őket, ezért előfordulhat, hogy root felhasználóként kell bejelentkezni, vagy a parancsot sudo
paranccsal kell végrehajtani.
Az lspci
parancs következő kimenete például néhány eszközt jelenít meg:
$ lspci 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) 04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI 04:04.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02) 04:0b.0 FireWire (IEEE 1394): LSI Corporation FW322/323 [TrueFire] 1394a Controller (rev 70)
Az ilyen parancsok kimenete több tucat sornyi is lehet, ezért az előző és a következő példa csak az érdekesebb részeket tartalmazza. Az egyes sorok elején található hexadecimális számok a megfelelő PCI-eszköz egyedi címeit jelentik. Az lspci
parancs további részleteket mutat egy adott eszközről, ha annak címét az -s
és a -v
kapcsolóval együtt adjuk meg:
$ lspci -s 04:02.0 -v 04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI Subsystem: Linksys WMP54G v4.1 Flags: bus master, slow devsel, latency 32, IRQ 21 Memory at e3100000 (32-bit, non-prefetchable) [size=32K] Capabilities: [40] Power Management version 2 kernel driver in use: rt61pci
A kimenet most már sokkal több részletet mutat a 04:02.0
címen lévő eszközről. Ez egy hálózati vezérlő, amelynek belső neve Ralink corp. RT2561/RT61 802.11g PCI
. A Subsystem
az eszköz márkájához és modelljéhez — Linksys WMP54G v4.1
— kapcsolódik, és diagnosztikai célok esetén lehet hasznos.
A kernelmodul azonosítható a kernel driver in use
sorban, amely az rt61pci
modult mutatja. Az összes összegyűjtött információból helyesen feltételezhető, hogy:
-
Az eszköz azonosításra került.
-
A megfelelő kernelmodul betöltődött.
-
Az eszköz készen áll a használatra.
Egy másik lehetőség annak ellenőrzésére, hogy melyik kernelmodul van használatban a megadott eszközhöz, az lspci
újabb verzióiban elérhető -k
kapcsoló:
$ lspci -s 01:00.0 -k 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) kernel driver in use: nvidia kernel modules: nouveau, nvidia_drm, nvidia
A kiválasztott eszköz, egy NVIDIA GPU kártya esetében az lspci
megmondja, hogy a használt modul neve nvidia
, a kernel driver in use: nvidia
sorban, és az összes hozzá tartozó kernelmodul a kernel modules: nouveau, nvidia_drm, nvidia
sorban található.
Az lsusb
parancs hasonló az lspci
-hez, de kizárólag az USB-információkat listázza ki:
$ lsusb Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny Bus 001 Device 028: ID 093a:2521 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter Bus 001 Device 011: ID 04f2:0402 Chicony Electronics Co., Ltd Genius LuxeMate i200 Keyboard Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Az lsusb
parancs megmutatja a rendelkezésre álló USB-csatornákat és a hozzájuk csatlakoztatott eszközöket. Az lspci
parancshoz hasonlóan a -v
opció részletesebb kimenetet jelenít meg. Egy adott eszköz kiválasztható, ha megadjuk az azonosítóját a -d
kapcsolónál:
$ lsusb -v -d 1781:0c9f Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.01 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1781 Multiple Vendors idProduct 0x0c9f USBtiny bcdDevice 1.04 iManufacturer 0 iProduct 2 USBtiny iSerial 0 bNumConfigurations 1
A -t
opcióval az lsusb
parancs hierarchikus fa formájában mutatja az aktuális USB-eszköz hozzárendeléseket:
$ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/3p, 480M |__ Port 2: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 20, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 20, If 1, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 20, If 2, Class=Application Specific Interface, Driver=, 12M |__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=lan78xx, 480M |__ Port 2: Dev 28, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 29, If 0, Class=Vendor Specific Class, Driver=, 1.5M
Lehetséges, hogy nem minden eszközhöz tartoznak megfelelő modulok. Bizonyos eszközökkel a kommunikációt az alkalmazás közvetlenül, modulok közvetítése nélkül is kezelheti. Ennek ellenére az lsusb -t
kimenete sok információt tartalmaz. Ha létezik megfelelő modul, akkor annak neve az eszközhöz tartozó sor végén jelenik meg, mint a Driver=btusb
sorban. Az eszköz Class
az általános kategóriát azonosítja, mint például Human Interface Device
, Wireless
, Vendor Specific Class
, Mass Storage
, stb. Annak ellenőrzéséhez, hogy melyik eszköz használja az előző felsorolásban szereplő btusb
modult, az lsusb
parancs -s
kapcsolójához meg kell adni mind a Bus
, mind a Dev
számát:
$ lsusb -s 01:20 Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter
Gyakori, hogy egy szabványos Linux rendszerben bármikor nagyszámú betöltött kernelmodult találunk. A velük való interakció előnyösebb módja a kmod
csomag által biztosított parancsok használata, amely egy eszközkészlet a Linux kernelmodulokkal kapcsolatos általános feladatok kezelésére, mint például a modulok beszúrása, eltávolítása, listázása, tulajdonságok ellenőrzése, függőségek és aliasok feloldása. Az lsmod
parancs például megmutatja az összes jelenleg betöltött modult:
$ lsmod Module Size Used by kvm_intel 138528 0 kvm 421021 1 kvm_intel iTCO_wdt 13480 0 iTCO_vendor_support 13419 1 iTCO_wdt snd_usb_audio 149112 2 snd_hda_codec_realtek 51465 1 snd_ice1712 75006 3 snd_hda_intel 44075 7 arc4 12608 2 snd_cs8427 13978 1 snd_ice1712 snd_i2c 13828 2 snd_ice1712,snd_cs8427 snd_ice17xx_ak4xxx 13128 1 snd_ice1712 snd_ak4xxx_adda 18487 2 snd_ice1712,snd_ice17xx_ak4xxx microcode 23527 0 snd_usbmidi_lib 24845 1 snd_usb_audio gspca_pac7302 17481 0 gspca_main 36226 1 gspca_pac7302 videodev 132348 2 gspca_main,gspca_pac7302 rt61pci 32326 0 rt2x00pci 13083 1 rt61pci media 20840 1 videodev rt2x00mmio 13322 1 rt61pci hid_dr 12776 0 snd_mpu401_uart 13992 1 snd_ice1712 rt2x00lib 67108 3 rt61pci,rt2x00pci,rt2x00mmio snd_rawmidi 29394 2 snd_usbmidi_lib,snd_mpu401_uart
Az lsmod
parancs kimenete három oszlopra van osztva:
Module
-
Modulnév.
Size
-
A modul által lefoglalt RAM mérete, bájtban.
Used by
-
Ettől a modultól függő modulok.
Néhány modulnak más modulokra van szüksége a megfelelő működéshez, például az audioeszközök moduljainak esetében:
$ lsmod | fgrep -i snd_hda_intel snd_hda_intel 42658 5 snd_hda_codec 155748 3 snd_hda_codec_hdmi,snd_hda_codec_via,snd_hda_intel snd_pcm 81999 3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel snd_page_alloc 13852 2 snd_pcm,snd_hda_intel snd 59132 19 snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_via,snd_pcm,snd_seq,snd_hda_codec,snd_hda_intel,snd_seq_device
A harmadik oszlop, a Used by
, azokat a modulokat mutatja, amelyeknek az első oszlopban szereplő modulra van szükségük a megfelelő működéshez. A Linux hangarchitektúra számos modulja, amelyek előtt az snd
előtag szerepel, egymástól függ. Amikor a rendszerdiagnosztika során problémákat keresünk, hasznos lehet az éppen betöltött egyes modulok eltávolítása. A modprobe
parancs használható mind a kernelmodulok betöltésére, mind a modulok betöltésének megszüntetésére: egy modul és a hozzá kapcsolódó modulok eltávolításához, amennyiben azokat nem használja egy futó folyamat, a modprobe -r
parancsot kell használni. Például az snd-hda-intel
modul (az Intel HDA audio eszköz modulja) és más, a hangrendszerhez kapcsolódó modulok betöltésének megszüntetéséhez az alábbi parancsra van szükség:
# modprobe -r snd-hda-intel
A kernelmodulok betöltése és eltávolítása mellett a rendszer futása közben is lehetőség van a modul paramétereinek módosítására a kernel betöltése közben, ami nem sokban különbözik a kapcsolók parancsoknak való átadásától. Minden modul elfogad bizonyos paramétereket, de a legtöbbször az alapértelmezett értékek javasoltak és extra paraméterekre nincs szükség. Bizonyos esetekben azonban szükség van a paraméterek használatára, hogy a modul viselkedése az elvárt módon történjen.
A modul nevét egyetlen argumentumként használva a modinfo
parancs megjeleníti az adott modul leírását, a fájlt, a szerzőt, a licencet, az azonosítót, a függőségeket és az elérhető paramétereket. A modulhoz tartozó egyéni paramétereket az /etc/modprobe.conf
fájlba vagy az /etc/modprobe.d/
mappában a .conf
kiterjesztésű egyedi fájlokba való beillesztéssel lehet tartósan elérhetővé tenni. A -p
kapcsoló hatására a modinfo
parancs megjeleníti az összes rendelkezésre álló paramétert, és figyelmen kívül hagyja a többi információt:
# modinfo -p nouveau vram_pushbuf:Create DMA push buffers in VRAM (int) tv_norm:Default TV norm. Supported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J, hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i. Default: PAL NOTE Ignored for cards with external TV encoders. (charp) nofbaccel:Disable fbcon acceleration (int) fbcon_bpp:fbcon bits-per-pixel (default: auto) (int) mst:Enable DisplayPort multi-stream (default: enabled) (int) tv_disable:Disable TV-out detection (int) ignorelid:Ignore ACPI lid status (int) duallink:Allow dual-link TMDS (default: enabled) (int) hdmimhz:Force a maximum HDMI pixel clock (in MHz) (int) config:option string to pass to driver core (charp) debug:debug string to pass to driver core (charp) noaccel:disable kernel/abi16 acceleration (int) modeset:enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int) atomic:Expose atomic ioctl (default: disabled) (int) runpm:disable (0), force enable (1), optimus only default (-1) (int)
A kimeneti minta a nouveau
modulhoz rendelkezésre álló összes paramétert mutatja, amely a Nouveau Project által az NVIDIA GPU-kártyák saját fejlesztésű illesztőprogramjainak alternatívájaként biztosított kernelmodul. A modeset
kapcso például lehetővé teszi annak beállítását, hogy a kijelző felbontása és mélysége a kernel-térben legyen beállítva, ne pedig a felhasználói térben. Az options nouveau modeset=0
hozzáadása a /etc/modprobe.d/nouveau.conf
fájlhoz letiltja a modeset kernel funkciót.
Ha egy modul problémákat okoz, az /etc/modprobe.d/blacklist.conf
fájl segítségével blokkolhatjuk a betöltődését. Például a nouveau
modul automatikus betöltésének megakadályozásához a /etc/modprobe.d/blacklist.conf
fájlba be kell írni a blacklist nouveau
sort. Erre a műveletre akkor van szükség, ha az nvidia
saját modulja van telepítve, és az alapértelmezett nouveau
modult félre kell tenni.
Note
|
Módosíthatjuk az |
Információs fájlok és eszközfájlok
Az lspci
, lsusb
és lsmod
parancsok az operációs rendszer által tárolt hardverinformációk olvasására szolgálnak. Ezeket az információkat a /proc
és /sys
mappákban található speciális fájlokban tárolják. Ezek a mappák olyan fájlrendszerek csatolási pontjai, amelyek nincsenek jelen az eszközpartícióban, hanem csak a RAM-ban, amelyet a kernel a futásidejű konfiguráció és a futó folyamatokra vonatkozó információk tárolására használ. Az ilyen fájlrendszerek nem hagyományos fájltárolásra szolgálnak, ezért pszeudo-fájlrendszereknek nevezzük őket, és csak a rendszer futása alatt léteznek. A /proc
mappa a futó folyamatokra és hardveres erőforrásokra vonatkozó információkat tartalmazó fájlokat tartalmazza. Nézzünk meg néhány fontos fájlt a hardverek vizsgálatához a /proc
fájlok közül:
/proc/cpuinfo
-
Az operációs rendszer által talált CPU(k) részletes információit listázza.
/proc/interrupts
-
A megszakítások számának listája IO-eszközönként minden CPU-hoz.
/proc/ioports
-
A jelenleg regisztrált, használatban lévő bemeneti/kimeneti portok listája.
/proc/dma
-
A használatban lévő regisztrált DMA (közvetlen memória-hozzáférés) csatornák listája.
A /sys
mappában található fájlok hasonló szerepet töltenek be, mint a /proc
mappában találhatóak. A /sys
mappa azonban kifejezetten a hardverrel kapcsolatos eszközinformációk és kerneladatok tárolására szolgál, míg a /proc
mappa a kernel különböző adatstruktúráira vonatkozó információkat is tartalmaz, beleértve a futó folyamatokat és a konfigurációt.
Egy másik, szabványos Linux rendszerben az eszközökhöz közvetlenül kapcsolódó mappa a /dev
. A /dev
mappában található minden fájl egy rendszereszközhöz, különösen a tárolóeszközökhöz kapcsolódik. Egy hagyományos IDE merevlemezt például az alaplap első IDE csatornájára csatlakoztatva a /dev/hda
fájl képviseli. Ezen a lemezen minden partíciót a /dev/hda1
, /dev/hda2
azonosít, egészen az utolsó megtalált partícióig.
Az eltávolítható eszközöket a udev alrendszer kezeli, amely létrehozza a megfelelő eszközöket a /dev
-ben. A Linux kernel rögzíti a hardverérzékelési eseményt, és átadja azt az udev folyamatnak, amely azonosítja az eszközt, és dinamikusan létrehozza a megfelelő fájlokat a /dev
-ben, előre meghatározott szabályok alapján.
A mostani Linux disztribúciókban az udev felelős a gép bekapcsolásakor már jelenlévő eszközök azonosításáért és konfigurálásáért (coldplug detection), valamint a rendszer futása közben azonosított eszközökért (hotplug detection). Az Udev a SysFS-re támaszkodik, a /sys
-be csatolt, hardverrel kapcsolatos információk pszeudo-fájlrendszerére.
Note
|
A hotplug kifejezés egy eszköz felismerésére és konfigurálására utal a rendszer futása közben, például egy USB-eszköz behelyezésekor. A Linux kernel a 2.6-os verzió óta támogatja a hotplug funkciókat, lehetővé téve a legtöbb rendszerbusz (PCI, USB, stb.) számára, hogy hotplug eseményeket triggereljen, amikor egy eszközt csatlakoztatnak vagy leválasztanak. |
Az új eszközök észlelésekor az udev a /etc/udev/rules.d/
mappában tárolt, előre definiált szabályok között keres megfelelőt. A legfontosabb szabályokat a disztribúció biztosítja, de egyedi esetekre újakat is hozzá lehet adni.
Tárolóeszközök
A Linuxban a tárolóeszközöket általánosságban blokkeszközöknek nevezik, mivel az adatokat különböző méretű és pozíciójú pufferelt adatblokkokban olvassák be és ki ezekről az eszközökről. Minden blokkos eszközt a /dev
mappában található fájl azonosít, amelynek neve az eszköz típusától (IDE, SATA, SCSI stb.) és partícióitól függ. A CD/DVD- és floppy-eszközök neve például ennek megfelelően lesz megadva a /dev
mappában: a második IDE-csatornára csatlakoztatott CD/DVD-meghajtó /dev/hdc
néven lesz azonosítva (a /dev/hda
és /dev/hdb
az első IDE-csatorna master- és slave-eszközei számára van fenntartva), egy régi floppy-meghajtó pedig /dev/fdO
, /dev/fd1
stb. néven lesz azonosítva.
A Linux kernel 2.4-es verziójától kezdve a legtöbb tárolóeszköz a hardver típusától függetlenül SCSI eszközként kerül azonosításra. Az IDE, SSD és USB blokkos eszközök elé az sd
előtagot írjuk. Az IDE-lemezek esetében az sd
előtag lesz használatos, de a harmadik betű attól függően kerül kiválasztásra, hogy a meghajtó master vagy slave (az első IDE-csatornában a master az sda
, a slave pedig az sdb
lesz). A partíciókat numerikusan sorolja fel a rendszer. A /dev/sda1
, /dev/sda2
stb. útvonalakat az elsőnek azonosított blokkeszköz első és második partíciójának, a /dev/sdb1
, /dev/sdb2
stb. útvonalakat pedig a másodiknak azonosított blokkeszköz első és második partíciójának azonosítására használjuk. Ez alól a minta alól kivételt képeznek a memóriakártyák (SD-kártyák) és az NVMe eszközök (PCI Express buszra csatlakoztatott SSD-k). SD-kártyák esetében az elsőnek azonosított eszköz első és második partíciójának azonosítására a /dev/mmcblk0p1
, /dev/mmcblk0p2
stb. útvonalakat, a másodiknak azonosított eszköz első és második partíciójának azonosítására pedig a /dev/mmcblk1p1
, /dev/mmcblk1p2
stb. útvonalakat használjuk. Az NVMe eszközök az nvme
előtagot kapják, mint a /dev/nvme0n1p1
és /dev/nvme0n1p2
.
Gyakorló feladatok
-
Tegyük fel, hogy az operációs rendszer nem tud elindulni, miután egy második SATA-lemezt adtunk a rendszerhez. Tudva, hogy nem minden alkatrész hibás, mi lehet a hiba lehetséges oka?
-
Tegyük fel, hogy meg akarunk győződni arról, hogy az újonnan beszerzett asztali számítógép PCI-buszára csatlakoztatott külső videokártya valóban az, amelyet a gyártó hirdetett, de a számítógépház felnyitásával a garancia érvényét veszítené. Milyen paranccsal lehetne listázni a videokártya operációs rendszer által észlelt adatait?
-
Az alábbi sor az
lspci
parancs által generált kimenet egy része:03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
Milyen parancsot kell végrehajtanunk az adott eszközhöz használt kernelmodul azonosításához?
-
A rendszergazda a rendszer újraindítása nélkül szeretné kipróbálni a
bluetooth
kernelmodul különböző paramétereit. Azonban a modulmodprobe -r bluetooth
segítségével történő lecsatlakoztatására tett kísérletek a következő hibát eredményezik:modprobe: FATAL: Module bluetooth is in use.
Mi a hiba lehetséges oka?
Gondolkodtató feladatok
-
Nem ritka, hogy a termelési környezetben régebbi gépekkel találkozunk, például amikor egyes berendezések elavult kapcsolatot használnak a vezérlő számítógéppel való kommunikációra, ami miatt különös figyelmet kell fordítani ezeknek a régebbi gépeknek néhány sajátosságára. Egyes régebbi BIOS firmware-rel rendelkező x86-os szerverek például nem bootolnak, ha nem érzékelik a billentyűzetet. Hogyan kerülhető el ez a probléma?
-
A Linux kernel köré épülő operációs rendszerek az x86-os architektúrától eltérő számítógép-architektúrák széles skáláján is elérhetők, például az ARM architektúrán alapuló egykártyás számítógépeken. A figyelmes felhasználó észreveheti, hogy az ilyen gépeken, mint például a Raspberry Pi, hiányzik az
lspci
parancs. Az x86-os gépekkel szemben milyen különbség indokolja ezt a hiányt? -
Sok router rendelkezik USB-porttal, amely lehetővé teszi külső eszközök, például USB merevlemezek csatlakoztatását. Mivel ezek többsége Linux alapú operációs rendszert használ, hogyan lesz egy külső USB merevlemez elnevezve a
/dev/
mappában, feltételezve, hogy nincs más hagyományos blokkeszköz a routerben? -
2018-ban fedezték fel a Meltdown néven ismert hardveres sebezhetőséget. Ez számos architektúra szinte valamennyi processzorát érinti. A Linux kernel legújabb verziói képesek jelezni, ha az aktuális rendszer sebezhető. Hogyan szerezhető be ez az információ?
Összefoglalás
Ez a lecke általános fogalmakat tárgyal arról, hogy a Linux kernel hogyan kezeli a hardver erőforrásokat, főként az x86 architektúrán. A lecke a következő témákat járja körül:
-
Hogyan befolyásolhatják a BIOS vagy az UEFI konfigurációs segédprogramokban meghatározott beállítások az operációs rendszer és a hardver közötti interakciót.
-
Hogyan használjuk a szabványos Linux rendszer által biztosított eszközöket a hardverrel kapcsolatos információk megszerzéséhez.
-
Hogyan lehet azonosítani az állandó és cserélhető tárolóeszközöket a fájlrendszerben.
A tárgyalt parancsok és eljárások a következők voltak:
-
Az észlelt hardverek felderítésére szolgáló parancsok:
lspci
éslsusb
. -
A kernelmodulok kezelésére szolgáló parancsok:
lsmod
ésmodprobe
. -
Hardverrel kapcsolatos speciális fájlok, akár a
/dev/
mappában található fájlok, vagy a/proc/
és/sys/
pszeudo-fájlrendszerekben.
Válaszok a gyakorló feladatokra
-
Tegyük fel, hogy az operációs rendszer nem tud elindulni, miután egy második SATA-lemezt adtunk a rendszerhez. Tudva, hogy nem minden alkatrész hibás, mi lehet a hiba lehetséges oka?
A boot-eszköz sorrendjét a BIOS-ban kell beállítani, különben a BIOS esetleg nem tudja futtatni a bootloadert.
-
Tegyük fel, hogy meg akarunk győződni arról, hogy az újonnan beszerzett asztali számítógép PCI-buszára csatlakoztatott külső videokártya valóban az, amelyet a gyártó hirdetett, de a számítógépház felnyitásával a garancia érvényét veszítené. Milyen paranccsal lehetne listázni a videokártya operációs rendszer által észlelt adatait?
Az
lspci
parancs részletes információkat ad a PCI buszra jelenleg csatlakoztatott összes eszközről. -
Az alábbi sor az
lspci
parancs által generált kimenet egy része:03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
Milyen parancsot kell végrehajtanunk az adott eszközhöz használt kernelmodul azonosításához?
Az
lspci -s 03:00.0 -v
vagylspci -s 03:00.0 -k
parancsot. -
A rendszergazda a rendszer újraindítása nélkül szeretné kipróbálni a
bluetooth
kernelmodul különböző paramétereit. Azonban a modulmodprobe -r bluetooth
segítségével történő lecsatlakoztatására tett kísérletek a következő hibát eredményezik:modprobe: FATAL: Module bluetooth is in use.
Mi a hiba lehetséges oka?
A
bluetooth
modult egy másik processz használja.
Válaszok a gondolkodtató feladatokra
-
Nem ritka, hogy a termelési környezetben régebbi gépekkel találkozunk, például amikor egyes berendezések elavult kapcsolatot használnak a vezérlő számítógéppel való kommunikációra, ami miatt különös figyelmet kell fordítani ezeknek a régebbi gépeknek néhány sajátosságára. Egyes régebbi BIOS firmware-rel rendelkező x86-os szerverek például nem bootolnak, ha nem érzékelik a billentyűzetet. Hogyan kerülhető el ez a probléma?
A BIOS konfigurációs segédprogramban lehetőség van a számítógép zárolásának kikapcsolására, ha nem talál billentyűzetet.
-
A Linux kernel köré épülő operációs rendszerek az x86-os architektúrától eltérő számítógép-architektúrák széles skáláján is elérhetők, például az ARM architektúrán alapuló egykártyás számítógépeken. A figyelmes felhasználó észreveheti, hogy az ilyen gépeken, mint például a Raspberry Pi, hiányzik az
lspci
parancs. Az x86-os gépekkel szemben milyen különbség indokolja ezt a hiányt?A legtöbb x86-os géppel ellentétben egy ARM alapú számítógép, mint a Raspberry Pi, nem rendelkezik PCI busszal, így az
lspci
parancs használhatatlan. -
Sok router rendelkezik USB-porttal, amely lehetővé teszi külső eszközök, például USB merevlemezek csatlakoztatását. Mivel ezek többsége Linux alapú operációs rendszert használ, hogyan lesz egy külső USB merevlemez elnevezve a
/dev/
mappában, feltételezve, hogy nincs más hagyományos blokkeszköz a routerben?A modern Linux kernelek az USB merevlemezeket SATA eszközként azonosítják, így a megfelelő fájl a
/dev/sda
lesz, mivel a rendszerben nincs más hagyományos blokkos eszköz. -
2018-ban fedezték fel a Meltdown néven ismert hardveres sebezhetőséget. Ez számos architektúra szinte valamennyi processzorát érinti. A Linux kernel legújabb verziói képesek jelezni, ha az aktuális rendszer sebezhető. Hogyan szerezhető be ez az információ?
A
/proc/cpuinfo
fájlban van egy sor, amely a CPU ismert hibáit mutatja, példáulbugs: cpu_meltdown
.