mgmmyBlog

Webエンジニア👩‍💻 Railsの話がメインです。

【LPIC101】システムアーキテクチャ:ハードウェア設定の決定と構成①

f:id:mgmmy:20200502155013p:plain

今日からLPICの勉強をしたいと思います!

とりあえず、Ping−tで学習したことをまとめます✍️

システムアーキテクチャ

ハードウェア設定の決定と構成

/proc ディレクト

  • 起動中のプロセスやカーネルが認識しているハードウェアおよびシステムリソースなどの情報が格納されている。
  • 仮想的なファイルシステム。ハードディスク上には存在しない。
    • システムが起動される際にメモリ上に作成される。

lsmod コマンド

  • ロードされているカーネルモジュールの情報を表示する。
  • /proc/modules ファイルはロードされているモジュールの情報が格納されているので cat /proc/modules でも情報を確認することができる 。

lspciコマンド

  • PCI(Peripheral Components Interconnect)デバイスの情報を表示する。
  • /proc/bus/pci/devices ファイルにPCIバイスの情報が格納されている。
  • オプションの -v で詳細表示、 -vv でさらに詳細を表示できる。

lspci -v を実行すると確認できること

  • PCI識別番号
  • PCIバイスの種類
  • ベンダー名(ベンダーID)
  • バイス
  • バスの速度
  • IRQ番号
  • I/Oポートアドレス

D-Bus(Desktop Bus)

  • プログラム同士が情報を伝達するプロセス間通信機構のひとつ。
  • Linuxでは dbus-daemon などがプロセス間通信の中継を行う。

BIOS/UEFI

BIOS/UEFIセットアップ画面でできること

  • 日付と時刻
  • 電源管理
  • 起動デバイスの優先順位
  • 組み込みデバイスの有効化/無効化

modprobe

  • 依存関係を考慮してカーネルモジュールをロードまたはアンロードするコマンド
  • 設定ファイルは /etc/modprobe.d/ 配下の .conf の拡張子を持つファイル。(カーネル2.4までは /etc/modules.conf

設定ファイルの記述

  • options
    • カーネルモジュールのデフォルトパラメータを指定する。
  • alias
  • install
    • 特定のカーネルモジュールのロード時に実行されるコマンドを指定する
  • remove
    • 特定のカーネルモジュールのアンロード時に実行されるコマンドを指定する
  • blacklist
    • ロードしたくないカーネルモジュールを指定する。

udev(Userspace DEVise management)

  • ホットプラグデバイスを接続した際にデバイスファイルを動的に作成する。
  • バイスの接続を検知(カーネルから通知される)した際、デバイスファイルを動的に作成する。
  • バイスファイル作成時の動作は etc/udev/rules.d ディレクトリ配下の .rules の拡張子を持つファイルに記述された情報に基づいて行われる。

I/Oポートアドレス

  • 周辺機器とCPUがデータをやりとりする際に使用する16ビットのアドレス。
  • proc/ioports ファイルに、どのデバイスにどのI/Oポートアドレスが割り当てられているか確認できる。
    • I/Oポートアドレスが重複しているとハードウェアが正常に動作しない場合がある。

DMA、DMAチャネル

  • CPUを介することなくデバイスとメインメモリとの間で直接的にデータ転送を行う方式。
  • DMAチャネルは周辺機器がDMAのコントローラに対して情報転送を要求するために使用する通信経路のこと。
  • proc/dma ファイルにはデバイスが使用中のDMAチャネルに関する情報が確認できる。

USBデバイス

  • USBデバイスはいくつかのデバイスクラスに分かれている
  • それぞれのデバイスにはクラスドライバという汎用ドライバが用意されている
バイスクラス バイス
HID(Human Interface Devise) キーボード、マウス
Mass Storage Class ハードディスク、USBメモリ
ACM Communication Devise Class モデム、TA
Audio Class スピーカー、マイク