【LPIC101】Linuxのインストールとパッケージ管理:Debianパッケージ管理①
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
Linuxのインストールとパッケージ管理
Debianパッケージ管理
Linuxで使用するパッケージとは
- ソフトウェアの実行ファイル、設定ファイル、ライブラリ、マニュアルなどが含まれているファイルのこと。
- パッケージおよびその管理ツールを使用することによって、ソフトウェアのインストール・アンインストールなどが容易にできるようになる。
Debian系ディストリビューションで使用されるパッケージ
- Debian形式(拡張子は
deb
)がある。 - パッケージファイル名は以下のような形式。
パッケージ名_バージョン番号-リリース番号_アーキテクチャ名.deb
例:bind_9.3.6-4_i386.deb
パッケージ管理ツールの種類
dpkgツール
- Debian系パッケージを管理する基本的なツール。
- 設定ファイルは
/etc/dpkg/dpkg.cfg
主なコマンドは以下
dpkg
コマンド
書式と主なオプション・アクション
dpkg [オプション] アクション
オプション | 説明 |
---|---|
-E |
同バージョンが既にインストールされていればインストールを行わない |
-G |
新バージョンが既にインストールされていればインストールを行わない |
-R |
ディレクトリを再帰的に処理 |
アクション | 説明 |
---|---|
-i(--install) パッケージファイル名 |
パッケージのインストール |
-r(--remove) パッケージ名 |
設定ファイルを残してパッケージをアンインストール |
-P(--purge) パッケージ名 |
設定ファイルも含め完全にパッケージをアンインストール |
-l(--list) [検索パターン] |
インストール済みパッケージを検索して表示 |
-L(--listfiles) パッケージ名 |
指定したパッケージからインストールされたファイルを一覧表示 |
-s(--status) パッケージ名 |
インストール済みパッケージの詳細情報の表示 |
-S(--search) 検索パターン |
指定したファイルがどのパッケージからインストールされたかを表示 |
-C(--audit) |
インストールが完了していない(不完全)パッケージの表示 |
dpkg-reconfigure
コマンド
- インストール済みのパッケージを再設定する。
APTツール
- dpkgツールを拡張 したツール群
- インターネット上ないしはメディア上のパッケージ情報のデータベースを使い、依存関係を調整しながらパッケージ管理を行う。
- パッケージの取得元(リポジトリ)は
/etc/apt/sources.list
ファイルで設定する。
主なコマンドは以下
apt-get
コマンド
書式と主なサブコマンド
apt-get [オプション] サブコマンド
サブコマンド | 説明 |
---|---|
install パッケージ名 |
パッケージのインストールまたはアップグレード |
remove パッケージ名 |
パッケージのアンインストール |
upgrade |
インストール済みの全パッケージのアップグレード |
dist-upgrade |
ディストリビューションを最新版にアップグレード |
update |
パッケージのデータベースを最新版に更新 |
clean |
過去に取得したパッケージファイルを削除 |
apt-cache
コマンド
- Debian形式のパッケージ情報の検索・参照を行う
書式と主なサブコマンド
apt-cache サブコマンド
サブコマンド | 説明 |
---|---|
search キーワード |
キーワードを含むパッケージを検索 |
show パッケージ名 |
指定したパッケージ情報の表示 |
showpkg パッケージ名 |
指定したパッケージの被依存関係を含めた情報の表示 |
depends パッケージ名 |
指定したパッケージが依存しているパッケージの一覧表示 |
apt
コマンド
apt-get
とapt-cache
の機能を統合したコマンド
【LPIC101】Linuxのインストールとパッケージ管理:共有ライブラリの管理
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
Linuxのインストールとパッケージ管理
共有ライブラリの管理
ライブラリとは
- 汎用性の高いプログラムを再利用可能な形にしてまとめたもの。
- 単独で実行することはなく、他のプログラムに組み込んで呼び出して利用する。
- 複数のプログラムから参照して使えるようにしたものを 共有ライブラリ と呼ぶ。
etc/ld.so.conf
ファイル
- 共有ライブラリの検索パスが記述されている。
etc/ld.so.cashe
ファイル
- 共有ライブラリを検索するためのバイナリファイル。
- バイナリファイルであるため、
etc/ld.so.conf
ファイルより早く検索できる。
ldconfig
コマンド
- 共有ライブラリのキャッシュファイルを更新する。
etc/ld.so.conf
ファイルを参照し、etc/ld.so.cashe
ファイルを更新(作成)する。
/lib
と /usr/lib
ディレクトリ
- 一般的に使用される共有ライブラリが格納される。
- 64ビット版は
/lib/64
とusr/lib64
に格納される。
共有ライブラリを /lib
/usr/lib
ディレクトリ以外に配置する場合は、以下のいずれかの方法で共有ライブラリの検索パスを設定する必要がある。
- 環境変数
LD_LIBRARY_PATH
に検索パスを追加する。 /etc/ld.so.conf
ファイルに検索パスを追記してldconfig
コマンドで/etc/ld.so.cashe
ファイルを更新(作成)する。
ldd
コマンド
- あるプログラム(コマンド)が必要としている共有ライブラリを表示する。
- 書式:
ldd コマンドのパス
例:/bin/cat
コマンドが必要としている共有ライブラリを表示する場合
# 実行 ldd /bin/cat # 結果 linux-gate.so.1 => (0x00e2b000) libc.so.6 => /lib/libc.so.6 (0x00659000) /lib/ld-linux.so.2 (0x00633000)
【LPIC101】Linuxのインストールとパッケージ管理:ブートマネージャのインストール②
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
Linuxのインストールとパッケージ管理
ブートマネージャのインストール
MBR(マスターブートレコード)
GRUBの主な起動オプション
起動オプション | 説明 |
---|---|
init=パス | initの代わりに指定コマンドを実行 |
root=デバイス名 | ルートパーティションを指定 |
数字(0-6) | 指定したランレベルで起動 |
quiet | 起動中のカーネルからの情報出力を抑制する |
これらの起動オプションは起動プロンプトで以下のように指定できる。
GRUB Legacy
# 書式 grub> kernel カーネルイメージ [オプション] # 例 grub> kernel /boot/vmlinuz init=/bin/bash
GRUB2
# 書式 grub> linux カーネルイメージ [オプション] # 例 grub> linux /boot/vmlinuz init=bin/bash
systemdでの起動時のターゲット指定
- 起動時のターゲットを指定するカーネルパラメータは
systemd.unit
。- パラメータの値に起動時のターゲットを指定する。
- ターゲット名は
target
を省略することができる。
- 書式:
system.unit=rescue
※シングルユーザーモードで起動する
dd
コマンド
- データをコピーするコマンド
if
オプション
- 入力ファイルオプション
if=/dev/zero
を指定すると全データが null であるファイルが作成される。
of
オプション
- 出力ファイルオプション
of=ファイルパス
で指定したファイルに書き込むことができる。
bs
オプション
- ブロックサイズオプション
- 一度に書き込むサイズを指定する。
- ブートローダ部分にだけ書き込む場合は
bs=446
を指定する。
count
オプション
count=数字
でコピーする回数を指定する。
使用例
# MBR, パーティションテーブルをゼロクリアする dd if=/dev/zero of=/dev/sda bs=512 count=1 # ブートローダ部分のみゼロクリアする dd if=dev/zero of=/dev/sda bs=446 count=1 # MBRのバックアップ dd if=/dev/hda of=バックアップファイル名 bs=512 count=1 # 既存のパーティションテーブルを残してMBRを復元する dd if=バックアップファイル名 of=/dev/hda bs=446 count=1
【LPIC101】Linuxのインストールとパッケージ管理:ブートマネージャのインストール①
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
Linuxのインストールとパッケージ管理
ブートマネージャのインストール
GRUB(GRand Unified Bootloader)
- 多くのファイルシステムに対応している高機能なブートローダー。
- 操作を対話的に行う GURBシェル と呼ばれるプログラムが付属している。
- インストールには
grub-install
コマンドを利用する。 GRUB Legacy
とGRUB2
では 設定方法が異なる。
GRUB Legacy
- バーションが
0.9x
系 のもの
設定方法
- 設定ファイルは
boot/grub/menu.lst
- ディストリビューションによっては
boot/grub/grub.conf
【例】boot/grub/menu.lst
boot=/dev/sda default=0 timeout=5 title CentOS Linux(2.6.32-71.29.1.el6.i686) root(hd0,0) kernel /vmlinuz-2.6.32-71.29.1.el6.i686 ro root=/dev/hda1 initrd /initramfs-2.6.32-71.29.1.el6.i686.img title centos(2.6.32-71.el6.i686) root(hd0,0) kernel /2.6.32-71.el6.i686 ro root=/dev/hda1 initrd /2.6.32-71.el6.i686.img
# GRUBが格納されているデバイスの指定 boot=/dev/sda # デフォルトのエントリ番号(0は1番目のエントリ)の指定 default=0 # プロンプトが表示される時間(秒単位)の指定 timeout=5 # メニューに表示するエントリ名(1番目のエントリ)の指定 title CentOS Linux(2.6.32-71.29.1.el6.i686) # ルートパーティションのデバイスの指定 root(hd0,0) # /boot 内のカーネルとオプションの指定 kernel /vmlinuz-2.6.32-71.29.1.el6.i686 ro root=/dev/hda1 # 初期RAMディスクファイルの指定 initrd /initramfs-2.6.32-71.29.1.el6.i686.img # 2番目のエントリ title centos(2.6.32-71.el6.i686) root(hd0,0) kernel /2.6.32-71.el6.i686 ro root=/dev/hda1 initrd /2.6.32-71.el6.i686.img
root(hdディスク番号,パーティション番号)
でルートパーティションを指定する。- 番号はどちらも
0
から数える。
- 番号はどちらも
# 1番目のディスクの1番目のルートパーティション root(hd0,0) # 1番目のディスクの2番目のルートパーティション root(hd0,1) # 2番目のディスクの2番目のルートパーティション root(hd1,1)
GURB2
- バージョンが
1.9
以降 のもの
設定方法
- 設定ファイルは
/boot/grub/grub.cfg
だが、 直接編集することはない。 - 設定内容は
/etc/default/grub
ファイルおよび/etc/grub.d
ディレクトリ内のファイルに記述する。grub-mkconfig
コマンドで設定内容を/boot/grub/grub.cfg
に反映する。
grub-mkconfig
コマンド
- ディストリビューションによっては以下の差異が存在する。
- CentOS7 では
grub2-mkconfig
という名前でインストールされている。 - Ubuntu では
update-grub
およびupdate-grub2
というコマンドが存在するが、いずれもgrub-mkconfig
を実行している。
- CentOS7 では
【例】/etc/default/grub
GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DAFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
# デフォルトのエントリ番号(0は1番目のエントリ)の指定 GRUB_DEFAULT=0 # 待機時間(秒)の指定(メニューは非表示) GRUB_HIDDEN_TIMEOUT=0 # 待機時間のカウントダウンの表示・非表示の指定(trueは非表示) GRUB_HIDDEN_TIMEOUT_QUIET=true # デフォルトののエントリを起動するまでの時間(秒)の指定 GRUB_TIMEOUT=10 # メニューに表示するエントリ名の指定 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` # 通常起動の場合に追加する起動オプションの指定 GRUB_CMDLINE_LINUX_DAFAULT="quiet splash" # 通常起動およびリカバリ起動の場合追加する起動オプションの指定 GRUB_CMDLINE_LINUX=""
GRUB_DEFAULT
にsaved
を指定すると、前回選択した項目がデフォルト選択されるようになる。- カーネルイメージ、ルートパーティションの指定などは
/etc/grub.d
ディレクトリ内のファイルで行う。
【例】/etc/grub.d/40_custom
menuentry 'CentOS7 3.10.0-957.12.2.el7.x86_64' --class centos { insmod gzio insmod part_msdos set root=(hd0,1) linux /vmlinuz-3.10.0-957.12.2.el7.x86_64 root=/dev/mapper/centos-root initrd /initramfs-3.10.0-957.12.2.el7.x86_64.img }
# メニューに表示するエントリ名の指定 menuentry 'CentOS7 3.10.0-957.12.2.el7.x86_64' --class centos { # ロードするモジュールの指定 insmod gzio insmod part_msdos # ルートパーティションのデバイスの指定 set root=(hd0,1) # /boot 内のカーネルとオプションの指定 linux /vmlinuz-3.10.0-957.12.2.el7.x86_64 root=/dev/mapper/centos-root # 初期RAMディスクファイルの指定 initrd /initramfs-3.10.0-957.12.2.el7.x86_64.img }
# 1番目のディスクの1番目のルートパーティション root(hd0,1) # 1番目のディスクの2番目のルートパーティション root(hd0,2) # 2番目のディスクの2番目のルートパーティション root(hd1,2)
【LPIC101】Linuxのインストールとパッケージ管理:ハードディスクのレイアウト設計
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
Linuxのインストールとパッケージ管理
ハードディスクのレイアウト設計
パーティションの設計
- パーティション:ハードディスクを論理的に分割した単位のこと。
- 専用のパーティションを割り当てることにより、障害時の被害を、障害が発生したパーティション内に抑えられる可能性がある。
- パーティション毎のバックアップやリストアが可能。
- システムの起動に必要 なディレクトリは ルートパーティションから分割できない。
主なディレクトリ一覧
ディレクトリ | 分割適否 | 用途 |
---|---|---|
/home | ⭕ | 一般ユーザのホームディレクトリ (書き込みが頻繁に発生) |
/usr | ⭕ | 起動には不要なプログラムを格納 (読み込みが頻繁に発生) |
/var | ⭕ | ログファイルやメールなど可変ファイル群を格納 (書き込みが頻繁に発生) |
/opt | ⭕ | 追加でインストールしたパッケージを格納 (容量が大きくなる可能性あり) |
/boot | 🔼 | Linuxカーネルなど起動に必須のファイルを格納 |
/tmp | 🔼 | 一時ファイルを格納 |
/bin | ❌ | 一般ユーザ用のコマンドを格納 |
/sbin | ❌ | 管理者用のコマンドを格納 |
/etc | ❌ | システムの設定ファイルを格納 |
/lib | ❌ | 共有ライブラリを格納 |
/dev | ❌ | デバイスファイルを格納 |
スワップ領域
- 物理メモリ(実メモリ、RAM)に収まらなかった情報を一時的に格納するための、通常ハードディスク上に作成する領域。
- ハードディスク上にあるため、物理メモリよりも動作は格段に遅くなる。
Red Hat Enterprise Linux 8 でのスワップ領域の推奨値
RAM | スワップ領域 |
---|---|
2GB未満 | RAMの2倍 |
2GB 〜 8GB | RAMと同量 |
8GB 〜 64GB | 4GB 〜 RAMの0.5倍 |
64GB以上 | 負荷に依存するが少なくとも4GB |
LVM(Logical Volume Manager)
物理的な記憶デバイスの領域を複数まとめてひとつの大きな仮想的な領域とし、そこから仮想的なパーティション領域を切り出すことで、従来の物理的なパーティションを用いた方法よりも柔軟に記憶領域を管理できる仕組み。
具体的にできること
- 各論理ボリューム(LVMを利用しない場合のパーティションの相当)のリサイズ。
- 単体のハードディスク(LVMでは物理ボリュームと呼ぶ)の容量を超えるサイズの論理ボリューム作成。
- 後から新たな物理ボリュームを追加してボリュームグループ全体のサイズを増やす。
- 不要な特定の物理ボリュームだけをボリュームグループから削除する。
関連用語
用語 | 略称 | 説明 |
---|---|---|
物理ボリューム (Physical Volume) |
PV | 物理的なハードディスクやパーティション |
ボリュームグループ (Volume Group) |
VG | PVを集めて作る仮想的な領域 (仮想的なハードディスクのようなもの) |
論理ボリューム (Logical Volume) |
LV | VGの一部または全部を使って作る仮想的なパーティション LV上にファイルシステムを作って利用可能 |
論理ボリュームの作成手順
- PVの作成:
pvcreate
コマンドを実行 - VGの作成:
vgcreate
コマンドを実行 - LVの作成:
lvcreate
コマンドを実行
# LVにファイルシステムを作成 mkfs -t ext3 /dev/vg1/lv1 *** 省略 *** # マウントポイントを作成 mkdir /mnt/lv1 # マウントを行う mount /dev/vg1/lv1 /mnt/lv1
- LVMにはLVへの変更前の情報を保持する スナップショット という機能がある。
- バックアップの対象をスナップショットにすることで、運用を停止することなく安全にバックアップを行うことができる。
【LPIC101】システムアーキテクチャ:ランレベル/ブートターゲットの変更②
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
システムアーキテクチャ
ランレベル/ブートターゲットの変更
SysVinit
各ランレベルに応じたスクリプト
- システムの起動時やランレベルの変更時にinitが
/etc/inittab
を参照し、ランレベルに応じたスクリプトを実行して各種サービスを順に起動/停止する。 - 各ランレベルに応じたスクリプトは
/etc/rc[0-6].d
に入っている。 - スクリプトのファイル名(実際はシンボリックリンク)は次の規則で命名する。
書式:[1文字目][数字][サービス名]
例 : K01smartd
- 1文字目
S
Start:サービスを起動 /K
Kill:サービスを停止
- 数字
- 実行優先順位(若い番号から実行)
- サービス名
- 任意の名前をつける
wall
コマンド
- ログイン中の全ユーザにメッセージを送信する。
- システム停止作業などの案内を通知するときに使用
- 書式: CentOS7
wall [-n] [message]
/ Ubuntu 14.04wall [file]
- CentOS7とUbuntu 14.04ではwallコマンドの出処が異なる。
動作モード(ランレベル)の変更
- 現在のランレベルは
init
またはtelinit
コマンドで変更できる。 - 書式:
init ランレベル
またはtelinit ランレベル
runlevel
コマンド
- 現在および1つ前のランレベルを調べることができる。
例
# 実行 runlevel # 結果 N 5
Ctrl+Alt+Del
キーを押下した際の動作を設定する
etc/inittab
ファイルのctrlaltdel
のある行で設定する。
設定例:Ctrl+Alt+Del
キーを押下した際、1分後にシステムを再起動する。
ca::ctrlaltdel:/sbin/shutdown -r +1
init q(Q)
またはtelinit q(Q)
コマンドを実行すると、再起動せずに設定ファイルを再読み込みできる。
ACPI(Advanced Configuration and Power Interface)
- コンピュータの電源管理や構成に関する規格。
- OS上でシャットダウンや再起動などを行う際の命令はACPIイベントとして通知される。
- ACPIイベントを監視、対応する処理を実行するデーモンは
acpid
サーバを再起動するコマンド
shutdown -r
shutdown
コマンドのオプションを-r
で実行すると再起動を行う。shutdown -r [時間] [メッセージ]
で時間とメッセージを指定することができる。
reboot
再起動を行う。時間やメッセージの指定はできない。
【LPIC101】システムアーキテクチャ:ランレベル/ブートターゲットの変更①
LPICの勉強を兼ねて、Ping−tで学習したことをまとめています✍️
システムアーキテクチャ
ランレベル/ブートターゲットの変更
systemd
起動時のターゲット
- 起動時に最初に実行されるUnitは
etc/systemd/system/default.target
である。 default.target
をSysVinitでのランレベルに相当するUnitへのシンボリックリンクとして作成することで、期待するサービス群を起動することができる。
SysVinit と systemd のターゲットの対応表
ランレベル (SysVinit) |
ターゲット (systemd) |
概要 |
---|---|---|
0 | poweroff.target | システム停止 |
1 / s / S | rescue.target | シングルユーザモード |
2 3 4 |
multi-user.target | マルチユーザモード(テキストログイン、NFSなし) マルチユーザモード(テキストログイン) 未使用 |
5 | graphical.target | マルチユーザモード (グラフィカルログイン) |
6 | reboot.target | システム再起動 |
- これらのターゲットは
/lib/systemd/system
配下に格納されている。 - SysVinitとの関連がわかりやすいように、
runlevel0.target
〜runlevel6.target
までのシンボリックリンクも用意されている。 - サーバとして動作させる場合は、ランレベル3(multi-user.target) を指定する。
- ランレベル5でも必要なサービスを起動させることは可能だが、グラフィカルログインやデスクトップを制御するプロセスも起動させるため、サーバとして稼働するには無駄なリソースを使用してしまう。
起動モードの変更
例:次回起動モードをグラフィカルログイン(ランレベル5)に変更
# 上書きできないため、既存のシンボリックリンクを削除する。 rm -f /etc/systemd/system/dafault.target # シンボリックリンクの作成 ln -s /lib/systemd/system/graphical.target /etc/systemd/system/default.target
システムの再起動
reboot
コマンドを実行する。init 6
またはtelinit 6
コマンドを実行する。- ランレベルを
6
にするとシステムが再起動される。
- ランレベルを
shutdown
コマンドを実行する。- 書式:
shutdown [オプション] 時間 [メッセージ]
- 書式:
オプション | 説明 |
---|---|
-h | システム停止 |
-r | システム再起動 |
-k | シャットダウンせず、ログイン中の全ユーザにメッセージを送る |
-c | 実行中のシャットダウンをキャンセル |
時間 | 説明 |
---|---|
HH:MM | HH時MM分に実行 |
+M | M分後に実行 |
now | 今すぐ実行 |
# 使用例:今すぐ再起動を実行 shutdown -r now
systemctl rescue
コマンド
- 現在のランレベルをシングルユーザモードに変更することができる。
- モード変更時にはrootユーザのパスワードを入力するまで操作ができない。
systemctl default
コマンドまたは^D(Ctrl+D 押下)
によって通常モードに戻すことができる。systemctl rescue
コマンドはデフォルトのターゲットを変更しない。systemctl reboot
コマンドで再起動するとデフォルトのターゲットで起動する。