101.1 Урок 1
Сертифікат: |
LPIC-1 |
---|---|
Версія: |
5.0 |
Розділ: |
101 Архітектура системи |
Тема: |
101.1 Визначення та налаштування параметрів обладнання |
Урок: |
1 з 1 |
Вступ
З перших років електронних обчислень виробники бізнес-рішень та персональних комп’ютерів інтегрували різні апаратні складові у свої комп’ютери, які, у свою чергу, повинні були підтримуватися операційною системою. З точки зору розробника операційної системи, це може виявитися нерозв’язною проблемою, якщо тільки промисловість не встановить стандарти для наборів інструкцій та взаємозв’язку пристроїв. Подібно до стандартизованого рівня абстракції, наданого застосунку операційною системою, ці стандарти полегшують написання та обслуговування операційної системи, яка не прив’язана до конкретної апаратної моделі. Однак складність інтегрованого базового апаратного забезпечення іноді вимагає налаштувань у тому, як ресурси повинні бути доступні для операційної системи, щоб вона могла бути встановлена та функціонувати правильно.
Деякі з цих налаштувань можна зробити навіть без встановленої операційної системи. Більшість комп’ютерів пропонують утиліту конфігурації, яку можна запустити під час його увімкнення. До середини 2000-х років конфігураційна утиліта була реалізована в Базовій системі введення/виведення (BIOS, Basic Input/Output System), стандартній мікропрограмі, що містить основні процедури конфігурації, які є в материнських платах x86. З кінця першого десятиліття 2000-х років машини на основі архітектури x86 почали замінювати BIOS новою реалізацією під назвою Інтерфейс розширюваної «прошивки» (UEFI , Unified Extensible Firmware Interface), яка має більш складні функції для ідентифікації, тестування, конфігурації та оновлення мікропрограми. Незважаючи на зміни, назва BIOS використовується дуже часто, оскільки обидві реалізації дають змогу досягти ту саму основну мету.
Note
|
Додаткові відомості про схожі функції і відмінності між BIOS і UEFI будуть розглянуті в наступному уроці. |
Активація пристрою
Утиліта налаштування системи з’являється після натискання певної клавіші під час увімкнення комп’ютера. Яку клавішу натискати, залежить від виробника, але зазвичай це Del або одна з функціональних клавіш, наприклад F2 чи F12. Комбінація клавіш часто відображається на екрані після його ввімкнення.
У програмі налаштування BIOS можна вмикати та вимикати вбудовані периферійні пристрої, активувати основний захист від помилок і змінювати параметри обладнання, такі як запит на переривання (IRQ, interrupt request) і прямий доступ до пам’яті (DMA, direct memory access). Зміна цих налаштувань рідко потрібна на сучасних комп’ютерах, але внесення змін може знадобитися для вирішення конкретних проблем. Наприклад, існують технології RAM, які сумісні з більшою швидкістю передачі даних, ніж значення за замовчуванням, тому рекомендується змінити її на значення, зазначені виробником. Деякі процесори пропонують функції, які можуть бути непотрібними для конкретного рішення та деактивовані. Вимкненя функцій зменшить споживання енергії та може підвищити захист системи, функції ЦП, що містять відомі помилки, також можна вимкнути.
Якщо комп’ютер має багато пристроїв зберігання даних, важливо визначити, який із них має правильний завантажувач і має бути першим записом у порядку завантаження пристрою. Операційна система може не завантажуватися, якщо неправильний пристрій стоїть першим у списку перевірки завантаження BIOS.
Перевірка пристроїв в Linux
Після того, як пристрої правильно ідентифіковані, операційна система має пов’язати відповідні програмні компоненти, необхідні для них. Якщо апаратний пристрій не працює належним чином, важливо визначити, де саме виникає проблема. Якщо операційна система не розпізнає апаратне забезпечення, найімовірніше, що пристрій або порт, до якого він підключений, несправний. Якщо апаратна складова правильно визначена, але все ще не працює належним чином, може виникнути проблема з боку операційної системи. Тому одним із перших кроків при вирішенні проблем, пов’язаних з апаратним забезпеченням, є перевірка, чи правильно операційна система виявляє пристрій. Існує два основних способи ідентифікації апаратних ресурсів у системі Linux: використовувати спеціалізовані команди або переглянути певні файли всередині спеціальних файлових систем.
Команди для перевірки пристроїв
Дві основні команди для ідентифікації підключених пристроїв в системі Linux:
lspci
-
Показує всі пристрої, які зараз підключені до шини взаємозв’язку периферійних компонентів (PCI, Peripheral Component Interconnect). Пристрої PCI можуть бути або компонентом, приєднаним до материнської плати, такі як контролер диска, або плата розширення, вставлена в слот PCI, як зовнішня відеокарта.
lsusb
-
Наводить список пристроїв універсальної послідовної шини (USB, Universal Serial Bus), які зараз підключені до комп’ютера. Хоча існують USB-пристрої практично для будь-яких уявних цілей, інтерфейс USB в основному використовується для підключення пристроїв введення - клавіатури, вказівних пристроїв - і знімних носіїв даних.
Виведення команд lspci
та lsusb
складається зі списку всіх пристроїв PCI та USB, ідентифікованих операційною системою. Однак пристрій може ще не працювати повністю, оскільки кожна апаратна частина потребує програмного компонента для керування відповідним пристроєм. Цей програмний компонент називається модуль ядра і може бути частиною офіційного ядра Linux або додаватися окремо з інших джерел.
Модулі ядра Linux, пов’язані з апаратними пристроями, також називаються драйвери, як і в інших операційних системах. Однак драйвери для Linux не завжди надаються виробником пристрою. Хоча деякі виробники надають власні бінарні драйвери, які встановлюються окремо, багато драйверів написані незалежними розробниками. Історично склалося так, що апаратні складові, які працюють на Windows, наприклад, можуть не мати аналогічного модуля ядра для Linux. Нині операційні системи на базі Linux мають потужну апаратну підтримку, і більшість пристроїв працюють без додаткових зусиль.
Команди, безпосередньо пов’язані з апаратним забезпеченням, часто вимагають привілеїв root для виконання або відображають лише обмежену інформацію, коли їх виконує звичайний користувач, тому може знадобитися ввійти як root або виконати команду за допомогою sudo
.
Наприклад, наступний результат команди lspci
показує декілька ідентифікованих пристроїв:
$ 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)
Виведення таких команд може складати десятки рядків, тому попередній і наступний приклади містять лише розділи, що можуть нас зацікавити. Шістнадцяткові числа на початку кожного рядка є унікальними адресами відповідного пристрою PCI. Команда lspci
показує докладнішу інформацію про конкретний пристрій, якщо його адреса вказана з опцією -s
, супроводжується параметром -v
:
$ 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
Тепер у виведенні показано набагато більше інформації про пристрій за адресою 04:02.0
. Це мережевий контролер, внутрішня назва якого Ralink corp. RT2561/RT61 802.11g PCI
. Підсистема
пов’язана з маркою та моделлю пристрою — Linksys WMP54G v4.1
— і може бути корисною для діагностичних цілей.
Модуль ядра можна ідентифікувати в рядку kernel driver in use
, який показує модуль rt61pci
. З усієї зібраної інформації вірно припустити, що:
-
Пристрій було ідентифіковано.
-
Було завантажено відповідний модуль ядра.
-
Пристрій повинен бути готовий до використання.
Інший спосіб перевірити, який модуль ядра використовується для вказаного пристрою, надається за допомогою параметра -k
, доступного в останніх версіях lspci
:
$ 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
Для вибраного пристрою, плати GPU NVIDIA, lspci
повідомляє, що модуль, який використовується, називається nvidia
, у рядку kernel driver in use: nvidia
та всі відповідні модулі ядра перераховані в рядку kernel modules: nouveau, nvidia_drm, nvidia
.
Команда lb
схожа на lbspci
, але містить інформацію про USB:
$ 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
Команда lsusb
показує доступні канали USB та підключені до них пристрої. Як і у випадку з lspci
, параметр -v
забезпечує відображення більш детальної інформації. Конкретний пристрій можна вибрати для перевірки, вказавши його ідентифікатор в опції -d
:
$ 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
З параметором -t
команда lsusb
показує поточні відображення USB-пристроїв у вигляді ієрархічного дерева:
$ 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
Можливо, не всі пристрої мають відповідні модулі, пов’язані з ними. Зв’язок із певними пристроями може здійснюватися застосунком напряму, без посередництва модуля. Тим не менш, у виведенні, наданому lsusb -t
, є важлива інформація. Якщо відповідний модуль існує, його назва з’являється в кінці рядка для пристрою, як у Driver=btusb
. Пристрій Class
визначає загальну категорію, таку як Human Interface Device
, Wireless
, Vendor Specific Class
, Mass Storage
та ін. Щоб перевірити, який пристрій використовує модуль btusb
, присутній у попередньому списку, номери Bus
та Dev
мають бути задані параметром -s
команди lsusb
:
$ lsusb -s 01:20 Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter
Зазвичай у стандартній системі Linux у будь-який час є великий набір завантажених модулів ядра. Кращим способом взаємодії з ними є використання команд, наданих пакетом kmod
, який являє собою набір інструментів для обробки типових завдань з модулями ядра Linux, таких як вставка, видалення, виведення переліку, перевірка властивостей, вирішення залежностей та псевдонімів. Команда lsmod
, наприклад, показує всі завантажені в даний момент модулі:
$ 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
Виведення команди lsmod
поділено на три стовпці:
Module
-
Назва модулю.
Size
-
Обсяг оперативної пам’яті, зайнятої модулем, в байтах.
Used by
-
Залежні модулі.
Деякі модулі вимагають, щоб інші модулі працювали належним чином, як у випадку з модулями для аудіопристроїв:
$ 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
У третьому стовпці, Used by
, показано модулі, які вимагають належної роботи модуля в першому стовпці. Багато модулів архітектури Linux із префіксом snd
, пов’язаних зі звуком, взаємозалежні. Коли здійснюється пошук проблеми під час діагностики системи може бути корисно вивантажити певні модулі, які зараз завантажені. Команду modprobe
можна використовувати як для завантаження, так і для вивантаження модулів ядра: щоб вивантажити модуль та пов’язані з ним модулі, якщо вони не використовуються запущеним процесом, слід використовувати команду modprobe -r
. Наприклад, щоб вивантажити модуль snd-hda-intel
(модуль для аудіопристрою HDA Intel) та інші модулі, пов’язані з звуковою системою, виконаємо команду:
# modprobe -r snd-hda-intel
На додаток до завантаження та вивантаження модулів ядра під час роботи системи, є можливість змінювати параметри модуля під час завантаження ядра, що схоже з передачею параметрів командам. Кожен модуль приймає конкретні параметри, але найчастіше рекомендовані значення за замовчуванням, а додаткові параметри не потрібні. Однак у деяких випадках необхідно використовувати параметри для зміни поведінки модуля, щоб він працював належним чином.
Використовуючи ім’я модуля як єдиний аргумент, команда modinfo
показує опис, файл, автора, ліцензію, ідентифікацію, залежності та доступні параметри для даного модуля. Налаштовані параметри для модуля можна зробити постійними, включивши їх у файл /etc/modprobe.conf
або в окремі файли з розширенням .conf
у каталозі /etc/modprobe.d/
. Параметр -p
змусить команду modinfo
відображати всі доступні параметри та ігнорувати іншу інформацію:
# 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)
Зразок виведення показує всі параметри, доступні для модуля nouveau
, модуля ядра, наданого Nouveau Project як альтернативу власним драйверам для карт NVIDIA GPU. Наприклад, параметр modeset
дозволяє контролювати, чи буде роздільна здатність і глибина дисплея встановлені в просторі ядра, а не в просторі користувача. Додавання options nouveau modeset=0
до файлу /etc/modprobe.d/nouveau.conf
призведе до вимкнення функції ядра modeset.
Якщо модуль викликає проблеми, файл /etc/modprobe.d/blacklist.conf
можна використовувати для блокування завантаження модуля. Наприклад, щоб запобігти автоматичному завантаженню модуля nouveau
, до файлу /etc/modprobe.d/blacklist.conf
необхідно додати рядок blacklist nouveau
. Ця дія потрібна, якщо встановлено фірмовий модуль nvidia
, а модуль за замовчуванням nouveau
слід вимкнути.
Note
|
Ви можете змінити файл |
Інформаційні файли та файли пристроїв
Команди lspci
, lsusb
і lsmod
діють як інтерфейс для зчитування інформації про обладнання, яка зберігається в операційній системі. Така інформація зберігається в спеціальних файлах у каталогах /proc
і /sys
. Ці каталоги є точками монтування файлових систем, які відсутні в розділі пристрою, а є лише в просторі RAM, який використовується ядром для зберігання поточної конфігурації та інформації про запущені процеси. Такі файлові системи не призначені для звичайного зберігання файлів, тому їх називають псевдо-файловими системами і вони існують лише під час роботи системи. Каталог /proc
містить файли з інформацією про запущені процеси та апаратні ресурси. Деякі з важливих файлів у /proc
для перевірки обладнання:
/proc/cpuinfo
-
Наводить детальну інформацію про ЦП(и), знайдені операційною системою.
/proc/interrupts
-
Список номерів переривань пристроїв введення-виведення для кожного ЦП.
/proc/ioports
-
Наводить список поточних зареєстрованих номерів портів введення/виведення, які використовуються.
/proc/dma
-
Наводить список зареєстрованих каналів DMA (прямий доступ до пам’яті), які використовуються.
Файли в каталозі /sys
мають такі ж ролі, як і в /proc
. Однак каталог /sys
має за конкретну мету зберігання інформації про пристрій і дані ядра, пов’язані з апаратним забезпеченням, тоді як /proc
також містить інформацію про різні структури даних ядра, включно з запущеними процесами та конфігурацією.
Інший каталог, безпосередньо пов’язаний з пристроями в стандартній системі Linux, - це /dev
. Кожен файл всередині /dev
пов’язаний із системним пристроєм, зокрема пристроями зберігання даних. Застарілий жорсткий диск IDE, наприклад, при підключенні до першого каналу IDE материнської плати представлений файлом /dev/hda
. Кожен розділ на цьому диску буде ідентифікуватися за /dev/hda1
, /dev/hda2
і так до останнього знайденого розділу.
Знімні пристрої обробляються підсистемою udev, яка створює відповідні пристрої в /dev
. Ядро Linux фіксує подію виявлення обладнання та передає її процесу udev, який потім ідентифікує пристрій і динамічно створює відповідні файли в /dev
, використовуючи попередньо визначені правила.
У поточних дистрибутивах Linux udev відповідає за ідентифікацію та конфігурацію пристроїв, які вже присутні під час увімкнення комп’ютера (холодне підключення), а також пристроїв, ідентифікованих під час роботи системи (гаряче підключення). Udev покладається на SysFS, псевдо-файлову систему, пов’язану з апаратним забезпеченням, що змонтована в /sys
.
Note
|
Гаряче підключення (Hotplug) – це термін, який використовується для позначення виявлення та налаштування пристрою під час роботи системи, наприклад, коли вставляється USB-пристрій. Ядро Linux підтримує функції гарячого підключення з версії 2.6, що дозволяє більшості системних шин (PCI, USB тощо) запускати події гарячого підключення, коли пристрій підключено або відключено. |
Коли виявляються нові пристрої, udev шукає правило відповідності в попередньо визначених правилах, що зберігаються в каталозі /etc/udev/rules.d/
. Найважливіші правила передбачені дистрибутивом, але для конкретних випадків можна додати нові.
Пристрої зберігання даних
У Linux пристрої зберігання даних зазвичай називаються блочними пристроями, оскільки дані зчитуються з цих пристроїв у блоках буферизованих даних з різними розмірами та розташуванням. Кожен блоковий пристрій ідентифікується файлом у каталозі /dev
з назвою файлу залежно від типу пристрою (IDE, SATA, SCSI тощо) та його розділів. Наприклад, CD/DVD-пристрої та дискети матимуть відповідні назви в /dev
: CD/DVD-привід, підключений до другого каналу IDE, буде ідентифіковано як /dev/hdc
(/dev/hda
і /dev/hdb
зарезервовані для головного та підпорядкованого пристроїв на першому каналі IDE), а старий дисковод буде ідентифіковано як /dev/fd0
, /dev/fd1
тощо.
Починаючи з ядра Linux версії 2.4, більшість пристроїв зберігання даних тепер ідентифікуються як пристрої SCSI, незалежно від типу їх обладнання. Блокові пристрої IDE, SSD та USB будуть мати префікс sd
. Для дисків IDE буде використовуватися префікс sd
, але третя літера буде вибрана залежно від того, чи є диск головним чи підпорядкованим (у першому каналі IDE головним буде sda
, а підпорядкованим буде sdb
). Розділи перераховуються з використанням чисел. Шляхи /dev/sda1
, /dev/sda2
тощо використовуються для першого та другого розділів блочного пристрою, визначеного першим, і /dev/sdb1
, /dev/sdb2
тощо, використовуються для ідентифікації першого і другого розділів блочного пристрою, ідентифікованого другим. Виняток із цієї моделі трапляється з картками пам’яті (карти SD) та пристроями NVMe (SSD, підключений до шини PCI Express). Для карт SD шляхи /dev/mmcblk0p1
, /dev/mmcblk0p2
тощо використовуються для першого та другого розділів пристрою, визначеного першим, та /dev/mmcblk1p1
, /dev/mmcblk1p2
тощо використовуються для ідентифікації першого і другого розділів пристрою, ідентифікованого другим. Пристрої NVMe отримують префікс nvme
, як у /dev/nvme0n1p1
і /dev/nvme0n1p2
.
Вправи до посібника
-
Припустимо, операційна система не може завантажитися після додавання другого диска SATA до системи. Якщо ви впевнені, що всі апаратні складові не мають дефектів, що може бути причиною цієї помилки?
-
Припустимо, ви хочете переконатися, що зовнішня відеокарта, підключена до шини PCI вашого нещодавно придбаного настільного комп’ютера, дійсно є картою відповідного виробника, але відкриття корпусу комп’ютера призведе до анулювання гарантії. Яку команду можна використати для отримання відомостей про відеокарту, як вони були визначені операційною системою?
-
Наступний рядок є частиною виведення, згенерованого командою
lspci
:03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
Яку команду слід виконати, щоб визначити модуль ядра, який використовується для цього конкретного пристрою?
-
Системний адміністратор хоче спробувати різні параметри для модуля ядра
bluetooth
без перезавантаження системи. Однак будь-яка спроба вивантажити модуль за допомогоюmodprobe -r bluetooth
призводить до такої помилки:modprobe: FATAL: Module bluetooth is in use.
Яка можлива причина цієї помилки?
Дослідницькі вправи
-
Нерідко можна зустріти застарілі комп’ютери у виробничих середовищах, коли певне обладнання використовує застаріле з’єднання для зв’язку з керуючим комп’ютером, тому необхідно звернути особливу увагу на деякі особливості цих старих комп’ютерів. Наприклад, деякі сервери x86 зі старішим програмним забезпеченням BIOS не завантажуються, якщо клавіатура не виявлена. Як можна уникнути цієї конкретної проблеми?
-
Операційні системи, побудовані на основі ядра Linux, також доступні для широкого спектру комп’ютерних архітектур, відмінних від x86, таких як одноплатні комп’ютери на основі архітектури ARM. Уважний користувач помітить відсутність команди
lspci
на таких машинах, як Raspberry Pi. Яка відмінність від комп’ютерів x86 виправдовує цю відсутність? -
Багато мережевих маршрутизаторів мають порт USB, що дозволяє підключати зовнішні пристрої, наприклад жорсткий диск USB. Оскільки більшість із них використовує операційну систему на базі Linux, як буде названо зовнішній жорсткий диск USB у каталозі
/dev/
, якщо маршрутизатор не має іншого звичайного блочного пристрою? -
У 2018 році була виявлена апаратна вразливість, відома як Meltdown. Це стосується майже всіх процесорів багатьох архітектур. Останні версії ядра Linux можуть повідомляти, чи має вразливості поточна система. Як можна отримати цю інформацію?
Підсумки
Цей урок охоплює загальні поняття про те, як ядро Linux працює з апаратними ресурсами, в основному на архітектурі x86. Урок проходить за такими темами:
-
Як налаштування, визначені в конфігураційних утилітах BIOS або UEFI, можуть вплинути на взаємодію операційної системи з обладнанням.
-
Як використовувати інструменти стандартної системи Linux для отримання інформації про обладнання.
-
Як визначити постійні та змінні пристрої зберігання даних у файловій системі.
Розглянуті команди та процедури:
-
Команди для перевірки виявленого обладнання:
lspci
таlsusb
. -
Команди для керування модулями ядра:
lsmod
таmodprobe
. -
Спеціальні файли, пов’язані з апаратним забезпеченням, або файли, знайдені в каталозі
/dev/
, або в псевдо-файлових системах/proc/
і/sys/
.
Відповіді на вправи до посібника
-
Припустимо, операційна система не може завантажитися після додавання другого диска SATA до системи. Якщо ви впевнені, що всі апаратні складові не мають дефектів, що може бути причиною цієї помилки?
Порядок завантажувальних пристроїв слід налаштувати в конфігураційній утиліті BIOS, інакше BIOS може не запустити завантажувач.
-
Припустимо, ви хочете переконатися, що зовнішня відеокарта, підключена до шини PCI вашого нещодавно придбаного настільного комп’ютера, дійсно є картою відповідного виробника, але відкриття корпусу комп’ютера призведе до анулювання гарантії. Яку команду можна використати для отримання відомостей про відеокарту, як вони були визначені операційною системою?
Команда
lspci
покаже детальну інформацію про всі пристрої, підключені до шини PCI. -
Наступний рядок є частиною виведення, згенерованого командою
lspci
:03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
Яку команду слід виконати, щоб визначити модуль ядра, який використовується для цього конкретного пристрою?
Команду
lspci -s 03:00.0 -v
абоlspci -s 03:00.0 -k
-
Системний адміністратор хоче спробувати різні параметри для модуля ядра
bluetooth
без перезавантаження системи. Однак будь-яка спроба вивантажити модуль за допомогоюmodprobe -r bluetooth
призводить до такої помилки:modprobe: FATAL: Module bluetooth is in use.
Яка можлива причина цієї помилки?
Модуль
bluetooth
використовується запущеним процесом.
Відповіді до дослідницьких вправ
-
Нерідко можна зустріти застарілі комп’ютери у виробничих середовищах, коли певне обладнання використовує застаріле з’єднання для зв’язку з керуючим комп’ютером, тому необхідно звернути особливу увагу на деякі особливості цих старих комп’ютерів. Наприклад, деякі сервери x86 зі старішим програмним забезпеченням BIOS не завантажуються, якщо клавіатура не виявлена. Як можна уникнути цієї конкретної проблеми?
Утиліта налаштування BIOS має можливість деактивувати блокування комп’ютера, якщо клавіатуру не знайдено.
-
Операційні системи, побудовані на основі ядра Linux, також доступні для широкого спектру комп’ютерних архітектур, відмінних від x86, таких як одноплатні комп’ютери на основі архітектури ARM. Уважний користувач помітить відсутність команди
lspci
на таких машинах, як Raspberry Pi. Яка відмінність від комп’ютерів x86 виправдовує цю відсутність?На відміну від більшості комп’ютерів x86, комп’ютер на базі ARM, наприклад, Raspberry Pi, не має шини PCI, тому команда
lspci
зайва. -
Багато мережевих маршрутизаторів мають порт USB, що дозволяє підключати зовнішні пристрої, наприклад жорсткий диск USB. Оскільки більшість із них використовує операційну систему на базі Linux, як буде названо зовнішній жорсткий диск USB у каталозі
/dev/
, якщо маршрутизатор не має іншого звичайного блочного пристрою?Сучасні ядра Linux ідентифікують жорсткі диски USB як пристрої SATA, тому відповідний файл буде
/dev/sda
, оскільки в системі не існує жодного іншого звичайного блочного пристрою. -
У 2018 році була виявлена апаратна вразливість, відома як Meltdown. Це стосується майже всіх процесорів багатьох архітектур. Останні версії ядра Linux можуть повідомляти, чи має вразливості поточна система. Як можна отримати цю інформацію?
У файлі
/proc/cpuinfo
є рядок, що показує відомі помилки для відповідного ЦП, наприклад,bugs: cpu_meltdown
.