LinuC 挑戦日記 ~ 1.05.1_ハードウェアの基礎知識と設定 ~
この記事は、101試験(Version 10.0)出題範囲の主題 ハードウェア、ディスク、パーティション、ファイルシステム の副題 1.05.1 ハードウェアの基礎知識と設定 の内容を学習しまとめた内容です。
重要度は低くはないので試験に挑むためにもきっちり押さえる必要があります。
重要度 : 3
概要 : 基本的なシステムハードウェアの理解および構成や情報の取得ができる。
▽ 重要な用語と概念
◆コンピュータの5大装置
以下の記事が大変参考になりました。
コンピュータを構成する上で欠かせない、「入力」、「出力」、「制御」、「演算」、「記憶」の機能を総称して、コンピュータの5大装置と呼びます。
コンピュータの5大装置とCPUについて
◆基本的なシステムハードウェア
✅CPU
5大装置における制御装置と演算装置、
以下の記事が大変参考になりました。
✅メモリ【 memory 】
5大装置における(主)記憶装置
以下の記事が大変参考になりました。
✅ストレージ【 storage 】
5大装置における(補助)記憶装置
以下の記事が大変参考になりました。
## 内蔵/外付ストレージの接続規格
+----------------------------+----------------------------------------+
| 規格 | 説明 |
+----------------------------+----------------------------------------+
| SATA (Serial ATA) | 現在主流、PCで標準的に搭載 |
| SAS (Serial Attached SCSI) | SATAよりも高速で信頼性も高い、主にサーバー用途 |
| SCSI | 現在はあまり使われない、主にサーバー用途 |
| USB | 後述 |
+----------------------------+----------------------------------------+
✅入力装置
5大装置における入力装置
- キーボード
- マウス
✅拡張カード
- マザーボードの拡張スロットに装着
- NIC、SCSIカード、ビデオカード、RAIDカードなど
- USBデバイスと違い、コールドプラグ
◆ BIOS / UEFI
✅以前の記事でさわりだけ紹介
✅ BIOS【 Basic Input/Output System 】
- キーボードやハードディスクなどのデバイスを制御するもっとも基本的な制御プログラム
- マザーボードや拡張カードに搭載されたフラッシュROMに書き込まれている
✅ UEFI【 Unified Extensible Firmware Interface 】
- BIOS の後継ファームウェア規格
- ファームウェアの総称としてBIOSと呼ばれることも多い
◆デバイスファイル【 device file 】
✅ハードウェアのアクセスを抽象化したファイル
✅このファイルを読み書きすることでハードウェアにアクセス可能
✅ /dev 以下に存在
✅ udev (という仕組み)により自動的に作成される
$ ls -l /dev
total 0
crw--w---- 1 root tty 136, 0 Aug 22 04:57 console
lrwxrwxrwx 1 root root 11 Aug 22 04:57 core -> /proc/kcore
lrwxrwxrwx 1 root root 13 Aug 22 04:57 fd -> /proc/self/fd
crw-rw-rw- 1 root root 1, 7 Aug 22 04:57 full
drwxrwxrwt 2 root root 40 Aug 22 04:57 mqueue
crw-rw-rw- 1 root root 1, 3 Aug 22 04:57 null
lrwxrwxrwx 1 root root 8 Aug 22 04:57 ptmx -> pts/ptmx
drwxr-xr-x 2 root root 0 Aug 22 04:57 pts
crw-rw-rw- 1 root root 1, 8 Aug 22 04:57 random
drwxrwxrwt 2 root root 40 Aug 22 04:57 shm
lrwxrwxrwx 1 root root 15 Aug 22 04:57 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Aug 22 04:57 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Aug 22 04:57 stdout -> /proc/self/fd/1
crw-rw-rw- 1 root root 5, 0 Aug 22 04:57 tty
crw-rw-rw- 1 root root 1, 9 Aug 22 04:57 urandom
crw-rw-rw- 1 root root 1, 5 Aug 22 04:57 zero
✅ファイルの種類が特殊
ls -lコマンドで出力すると、行頭のファイルの種類がbあるいはcで表されます。それぞれブロックデバイス、キャラクタデバイスに対応します。
◆ /proc ディレクトリ
✅ Linux カーネルが認識しているデバイスに関する情報の一部は、/proc 以下のファイルで確認可能
✅ /proc 以下のファイルは、ファイルとして実体のない仮想的なファイル
✅ 一部のファイルは、テキストファイルとして閲覧コマンドで確認可能
$ ls -l /proc
total 0
dr-xr-xr-x 9 root root 0 Aug 22 04:57 1
dr-xr-xr-x 9 root root 0 Aug 22 12:55 16
dr-xr-xr-x 9 root root 0 Aug 24 12:28 52
dr-xr-xr-x 9 root root 0 Aug 24 12:34 62
dr-xr-xr-x 9 root root 0 Aug 24 14:44 74
drwxrwxrwt 2 root root 40 Aug 22 04:57 acpi
-r--r--r-- 1 root root 0 Aug 24 14:44 buddyinfo
dr-xr-xr-x 4 root root 0 Aug 22 04:57 bus
-r--r--r-- 1 root root 0 Aug 24 14:44 cgroups
-r--r--r-- 1 root root 0 Aug 24 14:44 cmdline
-r--r--r-- 1 root root 25920 Aug 24 14:44 config.gz
-r--r--r-- 1 root root 0 Aug 24 14:44 consoles
-r--r--r-- 1 root root 0 Aug 22 04:59 cpuinfo
-r--r--r-- 1 root root 0 Aug 24 14:44 crypto
-r--r--r-- 1 root root 0 Aug 24 14:44 devices
-r--r--r-- 1 root root 0 Aug 24 14:44 diskstats
-r--r--r-- 1 root root 0 Aug 24 14:44 dma
dr-xr-xr-x 2 root root 0 Aug 24 14:44 driver
-r--r--r-- 1 root root 0 Aug 24 14:44 execdomains
-r--r--r-- 1 root root 0 Aug 24 14:44 fb
-r--r--r-- 1 root root 0 Aug 22 04:59 filesystems
dr-xr-xr-x 8 root root 0 Aug 22 0
$ ls -l /proc | grep info
-r--r--r-- 1 root root 0 Aug 24 14:44 buddyinfo
-r--r--r-- 1 root root 0 Aug 22 04:59 cpuinfo ## CPU情報
-r--r--r-- 1 root root 0 Aug 24 14:44 meminfo ## メモリ情報
-r--r--r-- 1 root root 0 Aug 24 14:44 pagetypeinfo
-rw------- 1 root root 0 Aug 24 14:44 slabinfo
-r-------- 1 root root 0 Aug 24 14:44 vmallocinfo
-r--r--r-- 1 root root 0 Aug 24 14:44 zoneinfo
$ ls -l /proc | grep swaps
-r--r--r-- 1 root root 0 Aug 24 14:44 swaps ## スワップ領域情報
$ ls -l /proc | grep ioports
-r--r--r-- 1 root root 0 Aug 24 14:44 ioports ## I/Oアドレス情報
$ ls -l /proc | grep interrupts
-r--r--r-- 1 root root 0 Aug 24 14:44 interrupts ## IRQ (interrupt Request)情報
$ ls -lF /proc/bus
total 0
dr-xr-xr-x 2 root root 0 Aug 25 00:30 input/
dr-xr-xr-x 2 root root 0 Aug 25 00:30 pci/ ## PCIデバイス情報
※もしUSBデバイスが接続されていれば /usb も存在
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Gold 5118 CPU @ 2.30GHz
・・・
◆ /sys ディレクトリ
✅ /proc 以下のファイル同様、ファイルとして実体のない仮想的なファイルが格納される
✅ /sys 以下のファイルは、テキストファイルとしてシステム情報にアクセス可能
✅ドライバ関連のプロセス情報群
✅ /proc が膨大になるのを防ぐために使われる
$ ls -l /sys
total 0
drwxr-xr-x 2 root root 0 Aug 18 15:21 block
drwxr-xr-x 25 root root 0 Aug 18 15:21 bus
drwxr-xr-x 47 root root 0 Aug 18 15:21 class
drwxr-xr-x 4 root root 0 Aug 18 15:21 dev
drwxr-xr-x 14 root root 0 Aug 18 15:21 devices
drwxrwxrwt 2 root root 40 Aug 22 04:57 firmware
drwxr-xr-x 9 root root 0 Aug 18 15:21 fs
drwxr-xr-x 2 root root 0 Aug 18 15:21 hypervisor
drwxr-xr-x 10 root root 0 Aug 18 15:21 kernel
drwxr-xr-x 139 root root 0 Aug 18 15:21 module
drwxr-xr-x 2 root root 0 Aug 18 15:21 power
◆ udev【 userspace device management 】
デバイス(ハードウェア)が接続されると、カーネルがそれを検知し、自動的にデバイス情報を作成
└─> /sys 以下に作成
以下の記事が大変参考になりました。
udevはデバイスファイルを動的に作成、削除する仕組みです。
以下にデバイスファイルを作成するまでの流れを示します。
(1) カーネルがデバイスの追加、削除を検知
(2) /sys配下にデバイスの情報を反映
(3) udevdにイベント通知(Netlinkでイベント通知)
(4) udevdは、/sys配下の情報とudevルールを参照
(5) (4)の結果にもとづいて、デバイスファイルを作成
◆(デバイス)ドライバ【 (device) driver) 】
✅カーネルの一部(カーネルモジュール)として提供される
✅必要なデバイスドライブをカーネルに組み込む
= ロードする
◆クラスドライバ
Linuxに標準で搭載される汎用のドライバ
◆ USB【 Universal Serial Bus 】
✅周辺機器を接続するために広く普及している規格
✅ホットプラグ
└─> 電源を入れたままの状態で、接続、取り外し可能
✅USBポートからUSBデバイスに電源供給可能
✅いくつかのバージョンがあり、最大データ転送速度などが異なる
✅参考 : USBの規格の違いについて(USB3.0、USB2.0、USB1.1)
◆デバイスクラス
以下の記事が大変参考になりました。
USB通信を実現するためには、ホストSW(ドライバ)とデバイスSW(ファームウェア)が必要です。ただし特定機能に関しては、ホストSWを開発する必要がありません。この特定機能をデバイスクラスと呼びます。デバイスSWがデバイスクラスに対応すると、ホスト(パソコン等)に標準でインストールされているドライバが呼び出され、動作します。
▽ 重要なコマンド
◆ lspci コマンド
PCI デバイスの情報を確認
$ lspci
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:07.7 System peripheral: VMware Virtual Machine Communication Interface (rev 10)
00:0f.0 VGA compatible controller: VMware SVGA II Adapter
00:11.0 PCI bridge: VMware PCI bridge (rev 02)
00:15.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:15.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:16.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:17.7 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.0 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.1 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.2 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.3 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.4 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.5 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.6 PCI bridge: VMware PCI Express Root Port (rev 01)
00:18.7 PCI bridge: VMware PCI Express Root Port (rev 01)
02:01.0 SATA controller: VMware SATA AHCI controller
03:00.0 Serial Attached SCSI controller: VMware PVSCSI SCSI Controller (rev 02)
0b:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
13:00.0 Ethernet controller: VMware VMXNET3 Ethernet Controller (rev 01)
1b:00.0 USB controller: VMware USB3 xHCI 1.0 Controller
$ lspci -v
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
Subsystem: VMware Virtual Machine Chipset
Flags: bus master, medium devsel, latency 0
Kernel driver in use: agpgart-intel
・・・
$ lspci -vv
00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
Subsystem: VMware Virtual Machine Chipset
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0
Kernel driver in use: agpgart-intel
・・・
◆ lsmod コマンド
✅ロードされているカーネルモジュールを確認
✅ /proc/modules の情報を出力
$ lsmod
Module Size Used by
xt_nat 12681 1
nf_conntrack_netlink 36354 0
xt_addrtype 12676 2
xt_CHECKSUM 12549 1
ipt_MASQUERADE 12678 5
nf_nat_masquerade_ipv4 13463 1 ipt_MASQUERADE
ip6t_rpfilter 12595 1
ip6t_REJECT 12625 2
nf_reject_ipv6 13717 1 ip6t_REJECT
ipt_REJECT 12541 4
nf_reject_ipv4 13373 1 ipt_REJECT
xt_conntrack 12760 15
ebtable_nat 12807 1
ebtable_broute 12731 1
ip6table_nat 12864 1
nf_conntrack_ipv6 18935 8
nf_defrag_ipv6 35104 1 nf_conntrack_ipv6
nf_nat_ipv6 14131 1 ip6table_nat
ip6table_mangle 12700 1
ip6table_security 12710 1
ip6table_raw 12683 1
iptable_nat 12875 1
nf_conntrack_ipv4 15053 9
nf_defrag_ipv4 12729 1 nf_conntrack_ipv4
nf_nat_ipv4 14115 1 iptable_nat
nf_nat 26583 4 nf_nat_ipv4,nf_nat_ipv6,xt_nat,nf_nat_masquerade_ipv4
iptable_mangle 12695 1
iptable_security 12705 1
iptable_raw 12678 1
nf_conntrack 139224 8 nf_nat,nf_nat_ipv4,nf_nat_ipv6,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4,nf_conntrack_ipv6
ebtable_filter 12827 1
ebtables 35009 3 ebtable_broute,ebtable_nat,ebtable_filter
ip6table_filter 12815 1
ip6_tables 26912 5 ip6table_filter,ip6table_mangle,ip6table_security,ip6table_nat,ip6table_raw
iptable_filter 12810 1
ip_tables 27126 5 iptable_security,iptable_filter,iptable_mangle,iptable_nat,iptable_raw
veth 13458 0
tun 32026 1
devlink 60067 0
br_netfilter 22256 0
nfs 261876 0
lockd 98048 1 nfs
grace 13515 1 lockd
fscache 64980 1 nfs
overlay 91659 2
bridge 151336 2 br_netfilter,ebtable_broute
stp 12976 1 bridge
llc 14552 2 stp,bridge
ip_set 45799 0
nfnetlink 14519 3 ip_set,nf_conntrack_netlink
vmw_vsock_vmci_transport 30577 1
vsock 36526 2 vmw_vsock_vmci_transport
sunrpc 354099 3 nfs,lockd
iosf_mbi 15582 0
crc32_pclmul 13133 0
ghash_clmulni_intel 13273 0
ppdev 17671 0
aesni_intel 189456 0
lrw 13286 1 aesni_intel
gf128mul 15139 1 lrw
vmw_balloon 18094 0
glue_helper 13990 1 aesni_intel
ablk_helper 13597 1 aesni_intel
cryptd 21190 3 ghash_clmulni_intel,aesni_intel,ablk_helper
pcspkr 12718 0
joydev 17389 0
sg 40719 0
vmw_vmci 67168 1 vmw_vsock_vmci_transport
parport_pc 28205 0
parport 46395 2 ppdev,parport_pc
i2c_piix4 22401 0
xfs 993020 2
libcrc32c 12644 3 xfs,nf_nat,nf_conntrack
sr_mod 22416 0
cdrom 42556 1 sr_mod
vmwgfx 291993 3
ata_generic 12923 0
pata_acpi 13053 0
drm_kms_helper 186531 1 vmwgfx
syscopyarea 12529 1 drm_kms_helper
sysfillrect 12701 1 drm_kms_helper
sysimgblt 12640 1 drm_kms_helper
fb_sys_fops 12703 1 drm_kms_helper
sd_mod 46281 3
crc_t10dif 12912 1 sd_mod
crct10dif_generic 12647 0
ttm 96673 1 vmwgfx
ahci 34056 0
drm 456166 6 ttm,drm_kms_helper,vmwgfx
nfit 55479 0
ata_piix 35052 0
libahci 31992 1 ahci
libnvdimm 155545 1 nfit
crct10dif_pclmul 14307 1
crct10dif_common 12595 3 crct10dif_pclmul,crct10dif_generic,crc_t10dif
libata 243133 5 ahci,pata_acpi,libahci,ata_generic,ata_piix
crc32c_intel 22094 1
serio_raw 13434 0
vmxnet3 58059 0
vmw_pvscsi 23130 2
drm_panel_orientation_quirks 17180 1 drm
dm_mirror 22289 0
dm_region_hash 20813 1 dm_mirror
dm_log 18411 2 dm_region_hash,dm_mirror
dm_mod 124501 8 dm_log,dm_mirror
$ lsmod | grep cdrom
cdrom 42556 1 sr_mod
$ lsmod | grep nfs
nfs 261876 0
lockd 98048 1 nfs
fscache 64980 1 nfs
sunrpc 354099 3 nfs,lockd
$ cat /proc/modules
xt_nat 12681 1 - Live 0xffffffffc0874000
nf_conntrack_netlink 36354 0 - Live 0xffffffffc0865000
xt_addrtype 12676 2 - Live 0xffffffffc085b000
xt_CHECKSUM 12549 1 - Live 0xffffffffc0856000
・・・
◆ modprobe コマンド
✅手動でデバイスドライバをロード(カーネルに組み込む)
✅カーネルモジュール同士の依存関係を自動で解決
$ modprobe usb
modprobe: FATAL: Module usb not found.
◆ lsusb コマンド
USB デバイスの情報を確認
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
-v, --verbose 詳細に表示する
-t, --tree ツリー状に表示する
もしこの記事が何かの参考になったもしくは面白かったという方は、応援していただけると大変嬉しいです😊 これからもよろしくお願いします。