学習メモ:LPIC101
基本的なシステムハードウェア
CPU(Central Processing Unit)
PCの頭脳 演算処理などを担当
メモリ
データを一時保存
ハードディスク
データを長期保存
入力装置(キーボードやマウスなど)
情報入力するデバイス
拡張カード(NICやサウンドカードなど)
拡張機能を提供する部品
USB機器(フラッシュメモリなど)
PCの接続規格がUSB。このUSB規格を使用している機器
BIOS/UEFI
BIOS(Basic Input Output System)
入出力基本システム
最も基本的な制御プログラム
キーボードやハードディスクを制御する
その他のBIOS
BIOSはマザーボードや拡張カードのフラッシュROMに書き込まれている
それぞれ下記のように呼ぶ場合もある
- システムBIOS:マザーボード上のBIOS
- 拡張ROM:拡張カード上のBIOS
BIOSの役割
- OS起動するためのプログラムをディスクから読み込んで実行する
- デバイスの動作を設定
- 基本的な入出力を制御
UEFI(Unified Extensible Firmware Interface)
BIOSの後継となるファームウェア規格
一部のOSでは起動ドライブの容量制限を撤廃
※BIOSでは2TB
旧来のBIOSと含めて「BIOS」と呼称する場合はもある
BIOS/UEFIセットアップ画面および設定可能な項目
PCの電源を入れた後、特定のキー(F1・F2・Delete)を押下するとBIOS/UEFIセットアップ画面が表示される
設定できる項目は下記
- 日付や時刻(ハードウェアクロック)
- ディスクドライブや各種デバイスのパラメータ
- キーボードの使用・不使用
- 電源管理
- 起動ドライブの順序
- デバイスのIRQ(Interrupt Request 割り込み要求)の割り当て
- 各種デバイスの使用・不使用
デバイス情報の確認方法
デバイスファイル
デバイスファイルとは?
デバイスをファイルという概念を通して扱えるようにしたもの
/devディレクトリ以下に保存されている
デバイスファイルはudevにより自動的に作成される
デバイスの情報確認:/procディレクトリ
/procディレクトリとは?
メモリに作成される特殊なディレクトリ
システムの状態などがファイルとして保存されている
例として/proc/cpuinfoファイルの内容を確認してみる(後半部分は省略)
[ec2-user@ip-172-26-0-141 ~]$ cat /proc/cpuinfo
processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 85
model name: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
stepping: 4
microcode: 0x2007006
cpu MHz: 2499.998
cache size: 33792 KB
physical id: 0
siblings: 2
core id: 0
cpu cores: 1
apicid: 0
initial apicid: 0
fpu: yes
fpu_exception: yes
cpuid level: 13
wp: yes
flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xt
opology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x
2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dn
owprefetch invpcid_single pti fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx avx
512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec x
getbv1 xsaves ida arat pku ospke
bugs: cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itl
b_multihit mmio_stale_data retbleed
bogomips: 4999.99
clflush size: 64
cache_alignment: 64
address sizes: 46 bits physical, 48 bits virtual
power management:
processor: 1
vendor_id: GenuineIntel
cpu family: 6
model: 85
model name: Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
stepping: 4
microcode: 0x2007006
cpu MHz: 2499.998
cache size: 33792 KB
physical id: 0
siblings: 2
core id: 0
cpu cores: 1
apicid: 1
initial apicid: 1
/procディレクトリ以下の主なファイル
Linuxカーネルが認識しているデバイスに関する情報の一部は/procディレクトリ以下のファイルで確認可能
ファイル名 | 説明 |
---|---|
/proc/cpuinfo | CPU情報 |
/proc/interrupts | IRQ情報 |
/proc/ioports | I/Oアドレス情報 |
/proc/meminfo | メモリ情報 |
/proc/bus/usb/* | USBデバイス情報 |
/proc/bus/pci/* | PCIデバイス情報 |
デバイスの情報確認:lspciコマンド
lspciコマンドとは?
PCIデバイスの情報を表示するコマンド
[ec2-user@ip-172-26-0-141 ~]$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111
00:04.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe EBS Controller
00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)
-vオプションを使用すると詳細な内容が表示
-vvオプションを使用するとさらに詳細な内容が表示される
-v・-vvオプション
[ec2-user@ip-172-26-0-141 ~]$ lspci -v
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
Subsystem: Amazon.com, Inc. Device 1237
Flags: bus master, medium devsel, latency 0
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
Physical Slot: 1
Flags: fast devsel
00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
Physical Slot: 1
Flags: fast devsel, IRQ 9
Kernel driver in use: piix4_smbus
Kernel modules: i2c_piix4
00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111 (prog-if 00 [VGA controlle
r])
Physical Slot: 3
Flags: fast devsel
Memory at fe400000 (32-bit, prefetchable) [size=4M]
Expansion ROM at 000c0000 [disabled] [size=128K]
00:04.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe EBS Controller (prog-if 02 [
NVM Express])
Subsystem: Amazon.com, Inc. NVMe EBS Controller
Physical Slot: 4
Flags: bus master, fast devsel, latency 0, IRQ 11, NUMA node 0
Memory at febf0000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: nvme
Kernel modules: nvme
00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)
Physical Slot: 5
Flags: bus master, fast devsel, latency 0
Memory at febf4000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: ena
Kernel modules: ena
[ec2-user@ip-172-26-0-141 ~]$ lspci -vv
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
Subsystem: Amazon.com, Inc. Device 1237
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
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
Physical Slot: 1
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR
- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >
SERR- <PERR- INTx-
00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
Physical Slot: 1
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR
- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >
SERR- <PERR- INTx-
Interrupt: pin ? routed to IRQ 9
Kernel driver in use: piix4_smbus
Kernel modules: i2c_piix4
00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111 (prog-if 00 [VGA controlle
r])
Physical Slot: 3
Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR
- FastB2B- DisINTx-
Status: Cap- 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >
SERR- <PERR- INTx-
Region 0: Memory at fe400000 (32-bit, prefetchable) [size=4M]
Expansion ROM at 000c0000 [disabled] [size=128K]
00:04.0 Non-Volatile memory controller: Amazon.com, Inc. NVMe EBS Controller (prog-if 02 [
NVM Express])
Subsystem: Amazon.com, Inc. NVMe EBS Controller
Physical Slot: 4
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR
+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >
SERR- <PERR- INTx-
Latency: 0
Interrupt: pin A routed to IRQ 11
NUMA node: 0
Region 0: Memory at febf0000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: nvme
Kernel modules: nvme
00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)
Physical Slot: 5
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR
+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >
SERR- <PERR- INTx-
Latency: 0
Region 0: Memory at febf4000 (32-bit, non-prefetchable) [size=16K]
Capabilities: <access denied>
Kernel driver in use: ena
Kernel modules: ena
(補足)CentoOS7でlspciコマンドが使えない場合の対処方法
AWSのLightsailでLinuxの学習していますが
LightsailにてCentOSを最小構成で構築するとlspci・lsusbコマンドが使用できない
[ec2-user@ip-172-26-0-141 ~]$ lspci
-bash: lspci: command not found
lspciコマンドを使うための「pciutils」がインストールされていないことが原因とのこと
sudo yum -y install pciutils
sudo yum install -y usbutils
再度lspci・lsusbコマンドを実行すると表示されることを確認
参考にした記事はこちら
Web系プログラミングの覚え書:CentoOS7でlspciコマンドが使えない場合の対処方法
Qiita:CentOS7で「lspciコマンド」と「lsusbコマンド」が使えない時の対処法
USB
USBデバイス(Universal Serial Bus)
USBとは?
周辺機器と接続するための規格
- 最大127台まで接続可能
- 様々なUSBデバイスを同一規格のコネクタで接続可能
- ホットプラグ:電源を入れたまま接続・取り外しに対応
- プラグ&プレイをサポート
- USBポートからUSBデバイスに電源を供給可能
USBのバージョン
バージョン | 最大データ転送速度 |
---|---|
1.0 | 12Mビット/秒 |
1.1 | 12Mビット/秒 |
2.0 | 480Mビット/秒 |
3.0 | 5Gビット/秒 |
3.1 | 10Gビット/秒 |
デバイスドライバ
デバイスドライバとは?
コンピュータに接続したハードウェアとソフトウェアとの通信を制御するプログラム
Linuxの場合、最初から搭載されているクラスドライバが存在する
主なデバイスクラス
デバイスクラス | サポートするUSBデバイス |
---|---|
HID(Human Interface Device) | キーボードやマウスなど |
マスストレージデバイス | USBメモリなど |
オーディオ | マイクなど |
プリンタ | プリンタなど |
ワイヤレスコントローラー | Wifiアダプタなど |
lsusbコマンド
lsusbコマンドとは?
USBデバイスの情報を表示するコマンド
lsusb オプション
オプション | 説明 |
---|---|
-v | 詳細に表示する |
-t | USBデバイスの階層構造をツリー状に表示する |
udenv
udev(userspace device management)
udevとは?
/devディレクトリ以下のデバイスファイルを自動的に作成する仕組み
- カーネルがデバイスを検知
- /sysディレクトリ以下にデバイス情報を作成
- udevデーモン(udevd)はそのデバイス情報を参照して
/devディレクトリ以下にデバイスファイルを作成する
デバイス情報は D-Bus(Desktop Bus) というアプリケーションにより利用できるように設定される
デバイスドライバのロード
lsmod
lsmodコマンド
ロードされているカーネルモジュールを確認するコマンド
[ec2-user@ip-172-26-0-141 ~]$ lsmod
Module Size Used by
tls 131072 0
rfkill 36864 1
intel_rapl_msr 20480 0
intel_rapl_common 32768 1 intel_rapl_msr
isst_if_common 20480 0
nfit 77824 0
libnvdimm 225280 1 nfit
rapl 24576 0
ppdev 24576 0
parport_pc 49152 0
parport 77824 2 parport_pc,ppdev
i2c_piix4 28672 0
pcspkr 16384 0
drm 581632 0
fuse 176128 1
xfs 2043904 1
libcrc32c 16384 1 xfs
nvme 57344 1
crct10dif_pclmul 16384 1
crc32_pclmul 16384 0
nvme_core 180224 2 nvme
crc32c_intel 24576 1
ena 126976 0
nvme_common 24576 1 nvme_core
t10_pi 16384 1 nvme_core
ghash_clmulni_intel 16384 0
serio_raw 20480 0
dm_mirror 28672 0
dm_region_hash 24576 1 dm_mirror
dm_log 24576 2 dm_region_hash,dm_mirror
dm_mod 204800 2 dm_log,dm_mirror
modprobe
modprobeコマンド
基本的にデバイスドライバは自動的にロードされるが、手動でロードする場合は
modprobeを使用する
modprobe 対象のデバイスドライバ
システムが起動するまでの流れ
システムが起動するまでの流れ(Boot/Bootstrap)
- BISO/UEFI:ハードウェアのチェックや初期化
- ブートローダ:カーネルをメモリに読み込む
- カーネル:initプロセスやsystemdプロセスを実行
- init/systemd:様々なサービスを起動
起動時のイベント確認
起動時のイベント確認
dmesgコマンド
システム起動時にカーネルがどのような処理を行ったか確認するコマンド
[ec2-user@ip-172-26-0-141 ~]$ dmesg | head -20
[ 0.000000] Linux version 5.14.0-229.el9.x86_64 (mockbuild@x86-05.stream.rdu2.redhat.co
m) (gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4), GNU ld version 2.35.2-33.el9) #1 SMP PRE
EMPT_DYNAMIC Thu Jan 5 15:30:18 UTC 2023
[ 0.000000] The list of certified hardware and cloud instances for Red Hat Enterprise L
inux 9 can be viewed at the Red Hat Ecosystem Catalog, https://catalog.redhat.com.
[ 0.000000] Command line: BOOT_IMAGE=(hd0,gpt2)/boot/vmlinuz-5.14.0-229.el9.x86_64 root
=UUID=d5ae404e-d570-441c-bd68-fb544b5ebbb9 ro console=ttyS0,115200n8 console=tty0 net.ifna
mes=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=1G-4G:192M,4G-64G:2
56M,64G-:512M
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: xstate_offset[3]: 832, xstate_sizes[3]: 64
[ 0.000000] x86/fpu: xstate_offset[4]: 896, xstate_sizes[4]: 64
[ 0.000000] x86/fpu: xstate_offset[5]: 960, xstate_sizes[5]: 64
[ 0.000000] x86/fpu: xstate_offset[6]: 1024, xstate_sizes[6]: 512
[ 0.000000] x86/fpu: xstate_offset[7]: 1536, xstate_sizes[7]: 1024
[ 0.000000] x86/fpu: xstate_offset[9]: 2560, xstate_sizes[9]: 8
[ 0.000000] x86/fpu: Enabled xstate features 0x2ff, context size is 2568 bytes, using '
compacted' format.
ログファイルを確認
/var/log/messagesなどにシステム起動時のメッセージが語損されている
catコマンドなどで閲覧できる
起動時のイベント確認(systemdを採用している場合)
journalctl -k コマンド
systemd版のdmesgコマンド
-bオプションを利用するとシステム起動時のメッセージが表示される
システムのシャットダウンと再起動
システムのシャットダウンと再起動
shutdownコマンド
システムのシャットダウンや再起動を実行するコマンド
shutdown オプション 時間 メッセージ
オプション | 説明 |
---|---|
-h | シャットダウンする |
-r | シャットダウン後にシステムを再起動する |
-f | 次回起動時にfsckをスキップする |
-F | 次回起動時にfsckを実行する |
-k | シャットダウンしないで警告メッセージを通知する |
-c | 現在実行中のシャットダウンをキャンセルする |
コマンド例
# 20時にシャットダウンする
shutdown -h 20:00
# 即時再起動
shutdon -r now
SysVinit
SysVinit
SysVinitとは?
Linuxで最初に実行されるプロセス
SysVimitの処理の流れ
処理の流れは下記
- initが/etc/inittabファイルを読み込む
- initが/etc/rc.sysinitスクリプトを読み込む
- initが/etc/rcスクリプトを実行する
- /etc/rcスクリプトが「/etc/rc<ランレベル>.d」ディレクトリ以下のスクリプトを実行する
SysVinitの欠点
あらかじめ決められて順番でサービスを起動させるため、途中であるサービスの起動に時間がかかると
全体の起動時間が遅くなる
systemdやUpstartなどではこの欠点を解消している
ランレベル
ランレベル
SysVinitで採用されている段階的な動作モード
ランレベルごとにどのようなサービスを起動するか設定できる
ランレベルの定義はディストリビューションごとに異なる
Red Hatなどのランレベル
ランレベル | 説明 |
---|---|
0 | 停止 |
1 | シングルユーザーモード |
2 | マルチユーザーモード(テキストログイン・NFSサーバは停止) |
3 | マルチユーザーモード(テキストログイン) |
4 | 未使用 |
5 | マルチユーザーモード(グラフィカルログイン) |
6 | 再起動 |
Sまたはs | シングルユーザーモード |
Ubuntuなどのランレベル
ランレベル | 説明 |
---|---|
0 | 停止 |
1 | シングルユーザーモード |
2 | マルチユーザーモード |
3 | マルチユーザーモード |
4 | マルチユーザーモード |
5 | マルチユーザーモード |
6 | 再起動 |
Sまたはs | シングルユーザーモード |
テキストログイン・グラフィカルログイン
テキストログインとは?
コンソール端末のようにテキストのみでログインする手法
グラフィカルログインとは?
Windowsのようにマウス操作などでログインする手法
NFS(Network File System)
標準で実装されているファイルサーバー機能
ネットワークを経由してファイルサーバ上のストレージを利用可能
参考資料:Rworks:ファイルサーバ(NFS、SMB)とは?ネットワークファイルシステムの違い
シングルユーザーモード
rootユーザーだけが利用可能な特殊な動作モード
システムのメンテナンスなどで利用される
ランレベルの確認と変更
ランレベルの確認
runlevelコマンド
現在のランレベルを表示するコマンド
[ec2-user@ip-172-26-0-141 ~]$ runlevel
N 3
上記のコマンドより現在のランレベルは「3」
その前のランレベルは「N」となる。「N」は起動したばかりでランレベルを切り替えていないため
ランレベルの変更
initコマンドまたはtelinitコマンド
ランレベルを変更するコマンド
ランレベルの変更にあたり、シングルユーザーモードへ移行すると
他の一般ユーザーは操作できなくなるため、
シングルユーザーモードへ移行する場合は注意が必要
他ユーザへ警告メッセージを送付
wallコマンド
指定したメッセージをユーザーの端末に送ることができる
起動スクリプト
起動スクリプトによるサービスの管理
SysVinitでは各種サービスの起動には**/etc/init.dディレクトリ**以下に保存されているスクリプトを使用する
ls /etc/rc<ランレベル>.d
# ランレベル3を確認する場合
ls /etc/rc3.d
起動スクリプトの開始と停止
# /etc/init.d/httpd start
# /etc/init.d/httpd stop
デフォルトのランレベルの設定
デフォルトのランレベルの設定
デフォルトのランレベルは /etc/inittabに記述されている
ファイル内の「id:<ランレベル>:initdefault:」の部分に記載されている。
デフォルトのランレベルが「5」の場合「id:5:initdefault:」となる
systemd
systemd
SysVnitに代わる新しい起動プロセス
initプロセスの代わりにsystemdプロセスを起動して、各種サービスを管理する
SysVinitと異なり、必要なサービスを並列的に起動する
systemd関連の主なデーモンプロセス
プロセス | 説明 |
---|---|
systemd | systemdのメインプロセス |
systemd-journald | ジャーナルログ管理プロセス |
systemd-logind | ログイン処理プロセス |
systemd-networkd | ネットワーク管理プロセス |
systemd-timesyncd | システムクロック同期プロセス |
systemd-resolved | 名前解決プロセス |
systemd-udevd | デバイス動的検知プロセス |
systemdにおけるUnitとは?
systemdにおける起動処理の処理単位
Unitの主な種類
種類 | 説明 |
---|---|
service | 各種サービスを起動する |
device | 各種デバイスを表す |
mount | システムをマウント |
swap | スワップ領域の有効化 |
target | 複数のUnitをグループ化する |
timer | 処理を実行する日時の指定 |
Unitを定義したファイルの保存場所
- /lib/systemd/system以下
- /etc/systemd/system以下
systemdの起動手順
systemdの起動手順
systemdはまず、 default.targetというUnitから処理する
このUnitは /etc/systemd/systemディレクトリ以下に存在する
default.targetの確認コマンド
[ec2-user@ip-172-26-0-141 ~]$ systemctl get-default
multi-user.target
コマンドの結果の「multi-user.target」は現在のランレベル3で起動するサービスをまとめたUnitを指す
参考資料:RedHatCustomerPortal
ランレベルとターゲットの対応
ランレベル | ターゲット |
---|---|
0 | poweroff.target |
1 | rescue.target |
2・3・4 | multi-user.target |
5 | graphical.target |
6 | reboot.target |
参考資料:RedHatCustomerPortal
systemctl
systemctl
systemctl サブコマンド Unit名 -t 種類
systemctlコマンドの主なサブコマンド
サブコマンド | 説明 |
---|---|
start | サービスを起動 |
stop | サービスを終了 |
restart | サービスを再起動 |
reload | サービスの設定を再読み込み |
status | サービスの稼働状況を表示する |
is-active | サービスが稼働しているかどうかを確認する |
enable | システム起動時にサービスを自動起動する |
disable | システム起動時にサービスを自動起動しない |
mask | 指定したUnitをマスクし手動でも起動できないように設定する |
unmask | 指定したUnitのマスクを解除する |
list-dependencies | Unitの依存関係を表示 |
list-units | 起動しているすべてのUnitと状態を表示する |
list-units-files | すべてのUnitを表示する |
reboot | システムを再起動する |
poweroff | シャットダウン |
Linuxインストールに必要なパーティション
パーティションとは?
ハードディスクなどのストレージを「区画」として分割したもの
Linuxをインストールするためには最低限2つのパーティションが必要
- ルートパーティション:ルートファイルシステムに割り当てるパーティション
- スワップ領域
パーティションのメリット
- 柔軟なシステム管理
- 障害発生時に被害を限定的にすることが可能
- 障害発生時にスムーズな復旧が可能
一般的なパーティションの割り当て
- /home:一般ユーザーが利用するファイルを格納
- /var:各種ログやメールスプール(メールサーバー上の一時的に保管する場所)など保存
量が膨大になりがちなので、パーティションを割り当てるのが一般的 - /usr:プログラムやライブラリ、ドキュメントなど
- /boot:カーネルやブートストラッププロセス中に使用されるファイルなど
- ESP(EFIシステムパーティション):データ記憶装置のパーティション。UEFIに準拠するコンピュータで使用される
- スワップ領域:仮想メモリ領域として利用
- /(ルート):上記以外のルートファイルシステム
パーティションのレイアウト設計にて考慮するポイント
- システム用途
用途が異なるディレクトリには別々のパーティションを割り当てる - ディスク容量
※スワップ領域では物理メモリと同程度~2倍程度のサイズを割り当てる - バックアップの方法
ブートローダ(ブートマネージャ)
OSを読み込んで起動するプログラム
代表的なブートローダは GRUB など
GRUB(GRand Unified Boot loader)
多機能なブートローダ
下記のような特徴がある
- 多数のファイルシステムを認識可能
- シェル機能を搭載し、コマンドによる管理が可能
GRUBのインストール
GRUBをインストールするコマンド
# grub-install /dev/sda
GRUB Legacyの設定
GRUB Legacyの設定ファイルは /boot/grub/menu.lst
引用元:GRUB menu.lst ファイルについて
/boot/grub/menu.lstの設定パラメータ
パラメータ | 説明 |
---|---|
timeout | メニューを表示している時間(秒単位) |
GRUB2の設定
GRUB2の設定ファイルは /boot/grub/grub.cfg
コマンドで設定(直接ファイルを編集しない)
編集の流れは下記
1. /etc/default/grubで設定を実施
2. grub-mkconfigコマンドを実行(grub2-mkconfigコマンド)
3. 設定に基づいて、/boot/grub/grub.cfgが生成される
/etc/default/grubの主な設定パラメータ
パラメータ | 説明 |
---|---|
GRUB_TIMEOUT | 起動メニューがタイムアウトするまでの秒数 |
GRUB_DEFAULT | 起動メニューがタイムアウトしたときにデフォルトOSとして選択されるエントリ |
GRUB_CMDLINE_LINUX | カーネルに渡される起動オプション |
ブートオプションの指定
ブートローダ起動時に、システムの動作を指定するためのブートローダのオプションを指定できる
起動時画面でEキーを押すと下記のような画面が表示される。
grub append> ro root= ~省略~
この画面にてオプションを指定できる
主なブートオプション
パラメータ | 説明 |
---|---|
root=デバイス | ルートパーティションとしてマウントするデバイス |
nousb | USBデバイスを使用しない |
single | シングルユーザーモードで起動する |
1~5 | 指定したランレベルで起動する |
ライブラリ
使用頻度の高いプログラムをまとめたもの
静的ライブラリ
プログラム作成時に実行ファイル内に組み込まれるライブラリ
共有ライブラリ
プログラム実行時にロードされ、複数のプログラムで共有されるライブラリ
リンク
ライブラリの機能や関数を利用すること
スタティックリンク(静的リンク)
プログラム作成時にリンクすること
ダイナミックリンク(動的リンク)
プログラム実行時にリンクすること
共有ライブラリの確認:lddコマンド
lddコマンドで確認可能
[ec2-user@ip-172-26-0-141 ~]$ ldd /bin/cat
linux-vdso.so.1 (0x00007fff9bfc3000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1c97000000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1c97379000)
/etc/ld/so.conf
プログラムの実行時には、ld.soリンカおよびローダが実行時にリンクする共有ライブラリを検索して
必要なライブラリをロードする
/lib・/user/libディレクトリ以外のライブラリを検索する場合は、/etc/ld/so.confファイルに記述する
ldconfigコマンド
プログラムを実行するたびにディレクトリを検索するのは非効率なので、バイナリのキャッシュファイルである /etc/ld.so.cacheが参照される
ldconfigコマンドでは、/etc/ls.so.confファイルに基づいて、/etc/ls.so.cacheを再構築する
環境変数LD_LIBRARY_PATH
その他のディレクトリも検索対象に加えたい場合は、
環境変数LD_LIBRARY_PATHにディレクトリリストを記述する
ld.soリンカが共有ライブラリを検索する順序
- 環境変数LD_LIBRARY_PATH
- キャッシュファイル: /etc/ld.so.cache
- デフォルトの「/lib」・「/usr/lib」
パッケージ
実行プログラム・設定ファイルなどを1つのファイルにまとめたもの
パッケージ管理システム
パッケージを管理するシステム
競合などを回避する
パッケージの依存関係
あるパッケージが別のパッケージに依存するような関係
例:パッケージAではパッケージBのファイルを使用している
パッケージの競合関係
インストールしようとするパッケージが,特定のパッケージがインストール済みのシステムでは正しく動作しないこと
Linuxにおけるパッケージ管理_2種類
Linuxにおけるパッケージ管理は大別すると2種類
互換性はない
- Debian形式
- Debian系のディストリビューション
- パッケージ管理にはdpkgコマンド・APTツールなどが使用される
- RPM形式
- Red Hat系ディストリビューション
- パッケージ管理にはrpmコマンド使用される
Debian形式のパッケージ管理
foo_VVV-RRR_AAA.deb
対象 | 項目 |
---|---|
foo | パッケージ名称 |
VVV | バージョン番号 |
RRR | Debianリビジョン番号 |
AAA | アーキテクチャ |
.deb | 拡張子 |
dpkgコマンド
Debian形式のパッケージを扱う際に使用するコマンドが dpkgコマンド
dpkg オプション アクション
対話的にdpkgコマンドを使用する場合
# dpkg-reconfigure ***
APT(Advanced Packaging Tool)
パッケージ管理ツール
インターネット経由で最新のパッケージを入手可能
インストールから依存関係の解決まで可能
apt-getコマンド
apt-get オプション サブコマンド パッケージ名
apt-getコマンドの使用方法:/etc/apt/sources.list
/etc/apt/sources.listにパッケージ管理しているサイトのURLを記述する
/etc/apt/sources.listファイルの書式は次の通り
deb http://*** bionic main restricted
対象 | 説明 |
---|---|
deb | deb(debパッケージを取得)またはdeb-src(ソースを取得) |
http://*** | 取得先のURI |
bionic | バージョン名 |
main restricted | オプション |
apt-cacheコマンド
apt-cache サブコマンド
aptコマンド
apt オプション サブコマンド
RPMパッケージ
foo-VVV-RRR.AAA.rpm
対象 | 項目 |
---|---|
foo | パッケージ名称 |
VVV | バージョン番号 |
RRR | リリース番号 |
AAA | アーキテクチャ |
.deb | 拡張子 |
rpmコマンド
YUM
dnfコマンド
Zypper
クラウドサービスを構成要素で分類(Iaas・PaaS・SaaS)
Iaas | PaaS | SaaS |
---|---|---|
アプリケーション | ||
ミドルウェア | ミドルウェア | |
OS | OS | OS |
ハードウェア | ハードウェア | ハードウェア |
ネットワーク | ネットワーク | ネットワーク |
- Iaas(Infrastructure as a Service)
- PaaS(Platform as a Service)
- SaaS(Software as a Service)
ブロックストレージ
仮想的なストレージ
ゲストOS
仮想マシンにインストールされたOS
OSイメージ
インスタンスのテンプレートとなるイメージ
インスタンス
クラウド上の個々の仮想マシン
コンテナ
独立したOSのように稼働する環境構築用のミドルウェア
アプライアンスコンテナ
特定の用途向けのコンテナ
ゲストドライバ
仮想マシンがホストマシン上のデバイスにアクセスする際に使用されるソフトウェア
Cloud-init
ホストキーの重複を解消する仕組み
クラウドではテンプレートから簡単にインスタンスを作成できることが強みであるが、
そのままでは、SSH鍵(ホストキー)が重複してしまうため、トラブルにつながる。
D-BusマシンID
個別のインスタンスを識別するID