Urządzenia w systemie Linux

Urządzenia w systemie Linux

Komputer jest urządzeniem składającym się z kilkunastu modułów. Każdy z tych modułów jest rozpoznawany przez BIOS (UEFI), a następnie przez sam system. W tym materiale zobaczysz w jaki sposób BIOS, a następnie system Linux rozpoznaje nasz sprzęt komputerowy. Zobacz jakie mogą być urządzenia w systemie Linux.

 

Akcja Wiosenna - Promocja na najnowsze kursy w naszej ofercie!

Do końca marca masz możliwość zakupić najnowsze kursy:

  • Wdrożenie Serwera NGINX w Chmurze
  • NGINX jako Ingress w K8s
  • Kurs Grafany

Dodatkowo odbierz za darmo godzinny wykład "K8s Pod, MultiContainer Pod, Init Containers" na hasło "freek8s"!

Promocja trwa do 31 marca do godziny 23:59. 

Chcesz wziąć udział w kursie? Kliknij w link: https://asdevops.pl/promocja-marzec-2024

 

 

 

 

 

Bios

Niezależnie od systemu jaki jest lub będziemy instalować na naszym komputerze, pierwszym z jakim spotyka się nasz sprzęt jest właśnie BIOS(UEFI). To w nim znajdują się szczegółowe informacje o urządzeniach jak i również umożliwia on modyfikację parametrów większości z nich. BIOS(UEFI) jest to bardzo obszerny temat w związku z tym, że nie jest głównym zagadnieniem tego artykułu, omówię go bardzo skrótowo.

Aby móc przejść do menu najczęściej przy uruchomieniu komputera należy nacisnąć jeden z klawiszy F2, F11, F12 lub DEL. Zależy to od wersji oprogramowania z jakiego korzysta nasza płyta główna. Musisz jednak pamiętać, że BIOS jest ważnym narzędziem przez które możesz wyrządzić sobie również bardzo dużo tego złego, jak na przykład spalić któryś z modułów jeżeli źle ustawisz parametry. Dlatego gdy nie jesteś czegoś pewny po prostu tego nie zmieniaj, lub jeżeli dokonałeś jakiś zmian przywróć ustawienia fabryczne lub ustawienia które zapisałeś przed modyfikacją jeżeli nie jesteś ich pewny.

Opisuję ten temat ponieważ chciałbym zwrócić Ci uwagę na kilka rzeczy związanych z samym botowaniem czyli uruchamianiem systemu. Otóż jeżeli posiadasz kilka dysków, nie mylić z partycjami, to bardzo istotne jest który z nich jest podpięty jako pierwszy. Płyty główne w większości znanych mi przypadków posiadają odpowiednie gniazda do których podłączasz według kolejności. Jeżeli wszystko wykonasz według opisanej kolejności, to twój dysk który chciałeś by był pierwszym zostanie w taki sposób wykryty. Natomiast w przypadku dysków NVMe, jeżeli mamy tylko jeden jest on ustawiany przez BIOS jako pierwszy.

Jest to bardzo istotne. Jeżeli system zainstalujesz na dysku, którego nie oznaczyłeś jako pierwszy, to nie system nie uruchomi go automatycznie. W tej sytuacji należy zmienić ustawienie BIOSu tak aby dysk na którym zainstalowaliśmy system był jako 1st. Boot Device. Taką konfigurację można spotkać w zakładce BOOT lub Advanced Bios Features. Niestety gdzie znajduje się ta opcja zależy od jego wersji.

Urządzenia w systemie Linux – kilka systemów w jednym urządzeniu

Sytuacja delikatnie się komplikuje gdy chcemy mieć zainstalowany więcej niż jeden system. Najczęściej jest to system Windows, a obok niego Linux. Taki rodzaj instalacji możemy przeprowadzić na dwa sposoby.

Pierwszy z nich polega na wyodrębnieniu na dysku miejsca na oba systemy, drugi to instalacja na dwóch różnych dyskach. W przypadku pierwszego, instalujemy Windowsa, a następnie Linuksa. System Linux instaluje program rozruchowy GRUB (najczęściej), dzięki któremu przy uruchomieniu komputera wyświetlana jest lista dostępnych. Jeżeli instalacja obu została zakończona sukcesem to na liście pojawi się zarówno Windows i Linux.

GRUB zechce zainstalować się w głównym rekordzie uruchomieniowym dysku. Jest to bardzo istotna informacja szczególnie w przypadku gdy chcemy posiadać dwa systemy na oddzielnych dyskach. Jeżeli przeprowadzasz instalację w opisywany sposób i zainstalowałeś system Windows na dysku ustawionym jako pierwszym, i chcesz aby uruchamiał się on automatycznie to, GRUB instalujesz na dysku na którym zainstalowałeś Linuksa. Czyli gdy program rozruchowy zapyta na którym dysku ma się zainstalować wybierasz ten na którym znajduje się Linux. Jednak wtedy będziesz zmuszony przy uruchomieniu komputera wcisnąć odpowiedni klawisz, aby wyświetliła się lista z dostępnymi dyskami i partycjami i wybrać dysk z Linuksem. Z wymienioną sytuacją spotykam się gdy większość domowników korzysta z systemu Windows, a jedna z Linux.

Wypada zapoznać się z Biosem choć w podstawowym zakresie. Szczególnie, że możesz spotkać się ze starszymi wersjami które potrafiły zaskoczyć. Na przykład gdy nie miałeś podłączonej klawiatury to nie mogłeś uruchomić systemu, nie przechodziło do funkcji bootowania. W związku z tym musisz wiedzieć jak wejść do biosu i wyłączyć opcję jak w prezentowanym przykładzie, uniemożliwiającą uruchomienie systemu.

Urządzenia PCI

Gdy zainstalowaliśmy system Linux, możemy sprawdzić w jaki sposób wykrył posiadany przez nas sprzęt, czyli urządzenia w systemie Linux. Na początku zajmiemy się urządzeniami PCI czyli komponentami płyty głównej takimi jak na przykład karta graficzna.

W Linuksie do wyświetlenia urządzeń wspomnianego typu służy polecenie:

lspci

Po wprowadzeniu, wyświetli się lista dostępnych urządzeń. Z listy odnajduję kartę graficzną, która wygląda w następujący sposób:

0a:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2070 SUPER] (rev a1)

Moja karta została wykryta i wyświetlona została jej nazwa. Natomiast mogę uzyskać więcej informacji przy pomocy polecenia:

lspci -s 0a:00.0 -v

0a:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2070 SUPER] (rev a1) (prog-if 00 [VGA controller])

Subsystem: Gigabyte Technology Co., Ltd TU104 [GeForce RTX 2070 SUPER]

Flags: bus master, fast devsel, latency 0, IRQ 79

Memory at fb000000 (32-bit, non-prefetchable) [size=16M]

Memory at d0000000 (64-bit, prefetchable) [size=256M]

Memory at e0000000 (64-bit, prefetchable) [size=32M]

I/O ports at f000 [size=128]

Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]

Capabilities: <access denied>

Kernel driver in use: nvidia

Kernel modules: nvidia

Zwróć uwagę, że dzięki temu poleceniu zostały wyświetlone szczegółowe informacje dotyczące producenta karty graficznej, czyli Gigabyte oraz używany sterownik czyli nvidia. Oznacza to, że w systemie zainstalowano sterowniki nvidi i system nie korzysta z wbudowanych nouveau.

Jeżeli chcesz uzyskać dodatkowe informacje o wybranym urządzeniu to po opcji -s musisz wpisać jego identyfikator znajdujący się w pierwszej kolumnie tak jak w przykładzie powyżej.

Możesz jeszcze uruchomić polecenie z prawami użytkownika root. Dzięki czemu otrzymasz informacje jak na przykład do którego slotu podłączono kartę, o ile oczywiście jest ich kilka.

Jeżeli chciałbyś, aby wyświetlały się tylko te najbardziej istotne, to wystarczy, że zmienisz ostatnią opcję:

lspci -s 0a:00.0 -k

0a:00.0 VGA compatible controller: NVIDIA Corporation TU104 [GeForce RTX 2070 SUPER] (rev a1)

Subsystem: Gigabyte Technology Co., Ltd TU104 [GeForce RTX 2070 SUPER]

Kernel driver in use: nvidia

Kernel modules: nvidia

Urządzenia USB

W obecnych czasach urządzenia USB wykorzystuje się do przechowywania danych w sposób fizyczny. Odeszliśmy już od płyt CD czy też DVD, nie wspominając o dyskietkach. Teraz wszystkie dane przechowujemy na nośnikach zewnętrznych. W systemie Linux znajduje się polecenie które służy wyświetleniu tego typu urządzeń:

lsusb

Dla przykładu podłączyłem pendrive po czym odnalazłem go na wyświetlonej liście:

Bus 002 Device 003: ID 090c:2000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Disk 3.0

Jeżeli chcemy wyświetlić dokładne informacje o urządzeniu korzystamy z opcji:

lsusb -v -d 090c:2000

Wynik jest dość długi dlatego pozwolę sobie go pominąć.

Tak jak przy poleceniu lspci wpisujemy ID urządzenia.

Możemy wyświetlić listę urządzeń USB w formie drzewa przy pomocy -t:

lsusb -t

Z początku lista może wydawać się nieczytelna. Jeśli jednak dokładnie przeanalizujemy wynik, to można zauważyć jedną rzecz. Mianowicie to, że wypisano urządzenia pod względem modułów do jakich są podpięte. Jeżeli znasz podstawową konstrukcję komputera to możliwe, że zauważyłeś na jednym module znajduje się kilka portów umożliwiających podłączenie urządzeń USB. W związku z tym polecenie, które widzisz powyżej przedstawia listę urządzeń grupując je pod względem modułów do których są podpięte.

Aby sprawdzić czym dane urządzenie jest wystarczy, że odnajdziemy jego numer BUS oraz DEV i użyjemy polecenia jak w poniższym przykładzie:

lsusb -s 02:3

02 to BUS, 3 to DEV.

Numery w przykładzie dotyczą podłączonego pendrive’a dlatego otrzymałem jako odpowiedź:

Bus 002 Device 003: ID 090c:2000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Disk 3.0

Moduły Jądra Systemu

Jeżeli chcemy wyświetlić wszystkie moduły załadowane do jądra systemu możemy to zrobić przy pomocy polecenia:

lsmod

Listę podzielono na trzy kolumny. Pierwsza z nich określa nazwę modułu pod jaką występuje, druga ilość pamięci RAM zajmowanej przez moduł w bajtach i ostatnia moduły od jakich jest zależna, czyli bez jakich nie będzie działała.

Znając moduły oraz ich zależności możemy chcieć wyłączyć jakieś. Przyczyn tego może być kilka ja na przykład dokonanie zmian bez restartowania systemu. Do tego służy polecenie:

sudo modprobe -r nazwa_modułu

Jeżeli otrzymasz informację że moduł jest aktualnie w użyciu i nie można zakończyć jego działania to musisz odłączyć urządzenie podłączone do modułu lub zamknąć program który korzysta z danej usługi i ponownie wprowadzić polecenie.

Jeszcze mamy możliwość zasięgnięcia więcej informacji o danym module:

sudo modinfo -p nazwa_moda

Jeżeli chodzi o wyłączanie modów wykonuje się to również przy pomocy plików, które znajdują się w katalogu /etc/modprobe.d/.

W jednym z pierwszych przykładów dowiedziałeś się, że posiadam kartę graficzną nvidia z zainstalowanymi sterownikami producenta. Oznacza, to że nie korzystam ze sterowników nouveau. W związku z tym powinny być one wyłączone przy starcie systemu. Jest to idealny przykład i choć instalator sam powinien to wykonać zawsze warto sprawdzić czy w naszym przypadku tak się stało. Zerknijmy na listę plików znajdujących się w folderze /etc/modprobe.d/:

ls

blacklist.conf dkms.conf nvidia-blacklists-nouveau.conf nvidia.conf nvidia-kernel-common.conf nvidia-options.conf

Kiedyś korzystało się z pliku blacklist.conf. Teraz zaleca się stworzenie oddzielnego pliku, w którym wyłącza się dany moduł.

W tym celu instalator sterowników nvidia automatycznie stworzył plik nvidia-blacklists-nouveau.conf w którym umieścił:

# You need to run "update-initramfs -u" after editing this file.

# see #580894

blacklist nouveau

Ważna jest pierwsza linijka, w której widać sposób uaktualnienia listy. Ważna jest także ostatnia w której określa się by moduł nouveau nie startował wraz ze startem systemu. Do każdego innego modułu, który nie ma być uruchamiany przy starcie systemu powinieneś stworzyć oddzielny plik i wpisać blacklist nazwa-modułu. Oczywiście możesz korzystać ze wspomnianego pliku blacklist.conf, ale nie zaleca się już tego.

Urządzenia w systemie Linux – katalogi urządzeń i procesów

Warto wspomnieć o katalogach które zawierają pliki w których znajdują się informacje z których wcześniej poznane polecenia korzystają. Wszystkie wykonują swoją funkcję wykorzystując do tego celu pliki znajdujące się w katalogach /proc i /sys.

Folder /proc zawiera pliki które dotyczą uruchomionych procesów oraz zasobów sprzętowych. Oba katalogi nazywa się pseudo-systemami plików ponieważ są tylko miejscem zamontowania, a wykorzystuje się je jedynie w pamięci ram, przez jądro systemowe do przechowywania konfiguracji uruchomionych urządzeń i informacji o uruchomionych procesach. Do najważniejszych należą:

/proc/cpuinfo – wyświetla szczegółowe informacje o procesorach znalezionych przez system operacyjny;

/proc/interrupts – lista numerów przerwań na urządzenie IO dla każdego CPU;

/proc/ioports – wyświetla listę aktualnie zarejestrowanych regionów portów wejścia/wyjścia w użyciu;

/proc/dma – wyświetla listę zarejestrowanych kanałów DMA (bezpośredni dostęp do pamięci) w użyciu;

Drugim wspomnianym jest katalog /sys przechowuje on informacje o urządzeniach i danych jądra związanych ze sprzętem.

Trzecim jest katalog /dev, w którym każdy plik powiązano z urządzeniem systemowym. W szczególności z urządzeniami przeznaczonymi do przechowywania danych.

Urządzenia pamięci masowej

Każde urządzenie pamięci masowej jest zapisywane w inny sposób. Kiedyś najczęściej spotykaliśmy się z:

/dev/hdc – CD-ROM

/dev/fdO – dyskietki

/dev/hda i /dev/hdb – master i slave

Zwróć uwagę, że każde z urządzeń pamięci masowej jest rozpoznawane jako urządzenie blokowe i jest identyfikowane przy pomocy pliku. Czyli jeżeli podłączysz do portu USB dysk zewnętrzny, powstanie plik w katalogu /dev który będzie go reprezentował.

W obecnych czasach uległo to ogromnym modyfikacjom. Niektórzy z czytelników mogą nawet nie wiedzieć co to są dyskietki ponieważ od wielu lat ich się nie używa. W obecnych czasach jeszcze można się spotkać z płytami, ale większość komputerów i laptopów nie posiada już CD czy też DVD. Jeżeli chodzi o laptopy to obecnie ciężej jest kupić taki z CD niż bez.

Od kernela 2.4 większość urządzeń do przechowywania danych jest rozpoznawane jako urządzenia SCSI dlatego zmienił się również ich zapis. Teraz rozpoznawane są przy pomocy nazw rozpoczynających się od sd. Bardziej szczegółowo prezentuję to w poniższym przykładzie:

sda – pierwsze urządzenie blokowe (master);

sdb – drugie urządzenie blokowe (slave);

mmcblk0p1 – karty SD;

nvme0n0p1 – dyski NVMe;

W ramach wyjaśnień jeżeli mamy dysk sda podzielony na partycję to pierwsza partycja nosi nazwę sda1 druga sda2 i tak dalej. Natomiast rozpoznawany jako drugi w kolejności dysk będzie nazwany sdb. Pozostałe zgodnie z alfabetem.

Inaczej sytuacja się ma w przypadku kart SD i dysków NVMe. Adekwatnie do poprzedniego wyjaśnienia mmcdlk0p1 oznacza pierwszą partycję na dysku 1, natomiast mmcdlk0p2 oznacza drugą partycję na dysku pierwszym. Podobnie w przypadku dysków NVMe.

Podsumowanie – urządzenia w systemie Linux

Pisząc ten materiał chciałem abyś poznał urządzenia w systemie Linux i sposoby ich obsługiwania. Oprócz tego ważne dla mnie było, abyś zapoznał się z podstawowymi informacjami dotyczącymi systemu BIOS, jak i również byś wiedział jak rozpoznać dany typ urządzeń pamięci masowej. Mam nadzieję, że w tym krótkim materiale udało mi się chociaż przybliżyć te informacje.

 

 

Akcja Wiosenna - Promocja na najnowsze kursy w naszej ofercie!

Do końca marca masz możliwość zakupić najnowsze kursy:

  • Wdrożenie Serwera NGINX w Chmurze
  • NGINX jako Ingress w K8s
  • Kurs Grafany

Dodatkowo odbierz za darmo godzinny wykład "K8s Pod, MultiContainer Pod, Init Containers" na hasło "freek8s"!

Promocja trwa do 31 marca do godziny 23:59. 

Chcesz wziąć udział w kursie? Kliknij w link: https://asdevops.pl/promocja-marzec-2024

 
 
 

Promocja na trzy najnowsze kursy w ofercie!

X