Linuxのインストールと仮想マシン・コンテナの利用
ディストリビューション、カーネル、パッケージ管理
用語 | 意味 |
ディストリビューション | Linuxを使いやすくまとめたパッケージセット |
カーネル | OSの中心(料理で言えば素材) |
パッケージ管理 | ソフトの出し入れをラクにする仕組み(例:APT、YUMなど) |
仮想マシンとコンテナの特徴について
systemctlコマンド
systemctlの語源は「system + control」からきています。システムをコントロールするコマンドという意味ですね。
Linuxえサービスやシステムの状態を制御・管理(起動・停止・状態確認など)するためのコマンドです
サブコマンド | 用途 |
disable | サービスの自動起動を無効にする |
enable | サービスの自動起動を有効にする |
get-default | 次回起動時のターゲットを表示する |
halt | システムを停止しhalt状態にする |
is-active | サービスが稼働しているかを表示する |
isolate | 他のUnitを停止して対象のUnitを起動する |
list-unit-files | すべてのUnit定義ファイルを一覧表示する |
reboot | システムを再起動する |
reload | サービスの設定ファイルを再読み込みする |
rescue | レスキューモードに移行する(メンテナンスモード) |
restart | サービスを再起動する |
set-default | 次回起動時のターゲットを設定する |
start | サービスを起動する |
status | サービスの状態を表示する |
stop | サービスを停止する |
poweroff | システムを停止し電源を切断する |
shutdown コマンド
はたらき システムを終了させる
備考
・オプションを特に指定しない場合は -P オプションを指定したときと同じ
・システムを終了してすぐ電源を切る場合は「halt -p」あるいは「poweroff」コマンドでも行える
・システムを終了して再起動する場合は「reboot」コマンドでも行える
・基本的に root user しか使えない(設定によっては一般ユーザーでも実行できるようになっている)
ファイル・ディレクトリの操作と管理
ファイル管理の実行
ファイルやディレクトリをコピー、移動、削除とよく使う基本的なコマンドになるのでよく覚えておきましょう!
ファイルの配置と検索
Linuxのファイルの配置はについてはFHS(Filesystem Hierarchy Standard:ファイルシステム階層標準)によって大まかなレイアウト標準化されて決まっているんだよ!!
まずはディレクトリの最上位層にはルートファイルシステム(/)含めなきゃいけない。
5つのディレクトリが存在しているだよね
ディレクトリ名 | 説明 |
/bin | 一般ユーザーでも操作可能な基本的なコマンドが格納されている。 |
/sbin | rootユーザーがシステム管理に必須なコマンドを格納されている。 |
/etc | システムやアプリケーションの設定ファイル、スクリプトファイルが格納されている。 |
/dev | ハードディスクやDVD-ROMなどのデバイスファイルが格納されている。 |
/lib | 共有ライブライりやカーネルモジュールが格納されている。 /bin、/sbinが必要としているライブラリここに格納されている。 |
lsコマンド(ファイル一覧表示)
lsコマンドの語源は「list」からきています。ディレクトリをしていするとファイル名を表示。ファイル名を表示すると属性を表示します。オプションを使わない時には、カレントディレクトリ内のファイル名とサブディレクトリを表示します。
オプション | 説明 | 語源 |
-a | 隠しファイル(ドット「.」で始まるファイル)を含む全てのファイルとディレクトリを表示 | all(すべて) 🗂 意味:隠しファイル( . から始まるファイル)も全部表示する🧠 語源:「all = すべて」 |
-A | 「-a」と同じ。ただし、カレントディレクトリ「.」と親ディレクトリ「..」は表示しない | Almost all(ほぼすべて) 🗂 意味: -a とほぼ同じだけど、「.(カレント)」と「..(親)」だけは除外🧠 語源:「A = Almost all(ほとんど全部)」 |
-d | 指定したディレクトリの情報を表示 | directory(ディレクトリ) 🗂 意味:ディレクトリの中身じゃなくて、そのディレクトリ自身の情報を表示 🧠 語源:「d = directory(フォルダの意味)」 |
-F | 名前の後ろにファイルタイプを表示 ・通常のファイル:なし ・実行可能ファイル:* ・ディレクトリ:/ ・シンボリックリンク:@ | file type(ファイルの種類) 🗂 意味:ファイル名の末尾に、種類を示す記号をつける 🧠 語源:「F = File type」 |
-i | inode番号を付けて表示 | inode(アイノード) 🗂 意味:ファイルシステムの**ID番号(inode番号)**を表示 🧠 語源:「i = inode」 |
-l | 詳細情報(パーミッション、所有者、サイズ、更新日時など)の表示 | long format(長い形式) 🗂 意味:ファイルの詳細情報(パーミッション、所有者、サイズ、更新日時など)を表示 🧠 語源:「l = long(長い形式)」 |
-R | サブディレクトリの内容も再帰的に表示 | recursive(再帰的) 🗂 意味:サブディレクトリの中身もずーっと下まで全部表示 🧠 語源:「R = Recursive(再帰=深掘り表示)」 |
mvコマンド(ファイル・ディレクトリの移動)
moveコマンドは指定した場所にファイル・ディレクトリを移動させます。さらに、ファイル名の変更にも利用します。
オプション | 説明 | 語源 |
-f | 移動先に同名のファイルやディレクトリがある場合、強制的に上書きする | force(フォース) 意味:強制する 「force 上書き」の略で、「確認せずに、強制的に上書きして移動する」という動作を表してるよ。 🧠イメージ:「force(力づく)」で「問答無用で上書き」! |
-i | 移動先に同名のファイルやディレクトリがある場合、上書きしてよいかどうか問い合わせる | interactive(インタラクティブ) 意味:対話的な操作 「interactive mode(対話モード)」の略で、上書き前に「このファイル、上書きしていい?」とユーザーに聞いてくるようになる。 🧠イメージ:「interactive(対話)」=「ユーザーとやりとりしながら進める」 |
rmコマンド(削除)
rmコマンドの語源は「remove」からきています。ファイルやディレクトリを削除します。
オプション | 説明 |
-f | 削除してよいかどうか問い合わせない |
-i | 削除してよいかどうか問い合わせる |
-r | -R | ディレクトリ全体を再帰的に削除 |
tarコマンド(アーカイブ作成・展開)
tarコマンドの語源は「tape archive」からきています。ファイルやディレクトリを1つのアーカイブにまとめたり、展開したりします。
オプション | 説明 |
-c | 新しいアーカイブを作成 |
-x | アーカイブからファイルを展開 |
-t | アーカイブの内容を一覧表示 |
-f | アーカイブファイル名を指定 |
-v | 処理の詳細情報の表示 |
-z | gzipを通して圧縮/展開 |
-j | bzip2を通して圧縮/展開 |
-J | xzを通して圧縮/展開 |
findコマンド(検索式・アクション)
findコマンドは検索が得意です。ファイル、ディレクトリを検索したりします。さらに、アクセル権、ファイルサイズ、更新日時を指定して検索することも可能です。検索の際には、メタキャラクタを使うことができます。
検索式 | 説明 |
-name ファイル名 | ファイル名で検索 |
-atime 日数 | 最終アクセス日で検索 |
-mtime 日数 | 最終更新日で検索 |
-perm アクセス権 | アクセス権で検索 |
-size サイズ | ファイルサイズで検索 |
-type ファイルの種類 | ファイルの種類で検索(f:ファイル, d:ディレクトリ, l:シンボリックリンク) |
-user ユーザ名 | ファイルの所有者で検索 |
-maxdepth 階層数 | 指定した階層まで検索 |
-mindepth 階層数 | 指定した階層から検索 |
-print | 検索結果を改行で区切って表示(省略可能) |
-print0 | 検索結果をNULL文字(\0)で区切って表示 |
-exec コマンド {} \; | 検索結果のファイルに対してコマンドを実行 |
ファイルの圧縮、解凍
大きなサイズを圧縮して、ネットワーク経由で送信したいときに、事前に圧縮をしておくことにより効率があがります。
bzip2(圧縮)
ファイルを圧縮するときに使用する。gzipよりも圧縮率が高いが処理に時間がかかる。
オプション | 説明 |
-d | 圧縮ファイルを展開 |
-c | 元ファイルを残して標準出力に出力 |
xz(ファイル圧縮、展開)
オプション | 説明 |
-d , --decompress | 圧縮ファイルの展開 |
-k , --keep | 圧縮・展開処理後に元のファイルを削除しない |
-l , --list | 圧縮ファイルの情報を表示する |
GNUとUnixのコマンド
テキスト処理フィルタ
Linuxには様々なテキスト処理をするコマンドがあります。これを使いこなすことができたら便利になります。
catコマンド
ファイルの中身を表示したり、つなげたりするコマンド!
名前は「concatenate(つなげる)」の略で、「キャット」と読むよ(🐱とは関係ないけど覚えやすいよね)
コマンド例 | 説明 |
---|---|
cat file.txt | ファイルの中身をそのまま表示 |
cat file1.txt file2.txt | 複数ファイルをまとめて表示(内容がつながって出てくる) |
cat > new.txt | 標準入力(自分の入力)をファイルに保存(終了は Ctrl + D ) |
cat file1.txt >> file2.txt | file1 の中身をfile2 の末尾に追記 |
cat -n file.txt | 行番号つきで表示(オプション-n ) |
headコマンド
headコマンドはテキストファイルの先頭部分を表示します。
オプション | 説明 | 語源 |
---|---|---|
-c バイト数 | 指定したバイト数をファイルの先頭から表示 | |
-n 行数 | 指定した行数をファイルの先頭から表示 | n は「number(数)」 |
-行数 | ファイルの先頭から表示 |
pasteコマンド
複数のファイルの内容を横に並べて合体(=貼り付け)するコマンドだよ!
英単語の “paste(ペースト)”=貼り付ける という意味から来ているんだ!のりで貼り付ける、つなげる、組み合わせる
wcコマンド
wcコマンドはファイル内の文字数や行数を調べることができるコマンドです。
オプション | 説明 |
-l | 行数を表示 |
-w | 単語数を表示 |
-c | 文字(バイト)数を表示 |
正規表現
検索するための方法になります。
grepコマンド
grepコマンドの語源は「global regular ezpressior print」らしいです。古いエディタで使われていたコマンドに由来するそうですよ‼️
ファイルやテキスト内の中から正規表現であらわされる検索文字があるかを調べるコマンドです。
オプション | 語源 |
-c | マッチした行の行数のみ表示 |
-E | 拡張正規表現を使用(egrepコマンドと同様) |
-f | 検索パターンをファイルから読み込む |
-F | 検索パターンを正規表現ではなく、固定文字列とする(fgrepコマンドと同様) |
-i | 大文字と小文字を区別しない |
-n | 先頭に行番号をつけて、マッチした行を表示 |
-v | マッチしなかった行を表示 |
sedコマンド
sed(Stream EDitor)はLinux系でよく使われます。ファイルや標準入力から読み込んだテキストに対してテキストの置換・削除・抽出などをして結果を出力するコマンドです。
リポジトリとパッケージ管理
パッケージとは、実行プログラム、設定ファイル、ドキュメントなどを1つのファイルにまとめたものです。そのパッケージを管理することをパッケージ管理といいます。
例えば、ゲームでいうとゲームをするためのソフトがパッケージ、沢山のソフトを分かり整理整頓することがパッケージ管理ですね。
それでは、このパッケージ管理は何をしているか?
パッケージをインストール、アンインストール、アップデート作業をする時に、どこにパッケージがインストールされているかを見ています。さらにパッケージごとの依存関係や競合関係を管理しています。
そのパッケージ管理方法には大きく2種類あります。
・GNU/Linux、Ubuntuで採用されているDebian形式
・Red Hat Enterprise Linux、CentOSで採用されているRPM形式
Debian形式とRPM形式のコマンドまとめ
パッケージ管理の形式と対応コマンド
分類 | 形式 | 低レベルコマンド | 高レベルコマンド | キャッシュ検索系 | ファイル検索 |
Debian系 (.deb) | dpkg | dpkg | apt-get, apt | apt-cache | apt-file |
RPM系 (.rpm) | rpm | rpm | yum, dnf | yum search, dnf search | repoquery(またはdnf/yum) |
Debian系コマンドの使い分け
コマンド | 役割 | 例 | 説明 |
dpkg | 低レベル | dpkg -i file.deb | .debファイルの直接インストールや削除など。依存関係の解決はしない |
apt-get | 高レベル | apt-get install nginx | 依存関係も含めてパッケージのインストール/削除 |
apt-cache | 情報取得 | apt-cache search apache | パッケージの説明や依存関係などを検索・確認 |
apt-file | ファイル検索 | apt-file search bin/htpasswd | どのパッケージにそのファイルがあるか調べる |
RPM系コマンドの使い分け
コマンド | 役割 | 例 | 説明 |
rpm | 低レベル | rpm -ivh file.rpm | .rpmファイルを直接操作。依存解決なし |
yum | 高レベル | yum install nginx | 自動で依存関係を解決してインストール |
dnf | 後継 | dnf install nginx | yumの後継。ほぼ同じ使い方でより高速・堅牢 |
yum search / dnf search | パッケージ名検索 | yum search nginx | パッケージ名や説明で検索 |
repoquery | ファイル検索 | repoquery -l httpd | パッケージに含まれるファイルを調べる(yum-utils) |
Debian形式、RPM形式コマンドまとめ
コマンド | レイヤー | 依存関係の解決 | 検索 | ファイル検索 |
dpkg, rpm | 低レベル | ❌ しない | ❌ | ❌ |
apt-get, yum, dnf | 高レベル | ✅ 自動でやる | △(パッケージ名で) | ❌ |
apt-cache, yum search | 情報表示 | – | ✅ | ❌ |
apt-file, repoquery | ファイル検索 | – | ✅(ファイル名で) | ✅ |
Debian形式のコマンド一覧
dpkgコマンド
dpkgはDebian形式のパッケージインストール・アンインストールなどの基本的なパッケージ管理を行うコマンドです。
オプション | 説明 |
-E | 同バージョンが既にインストールされていればインストールを行わない |
-G | 新バージョンが既にインストールされていればインストールを行わない |
-R | ディレクトリを再帰的に処理 |
アクション | 説明 |
-i(--install) パッケージファイル名 | パッケージのインストール |
-r(--remove) パッケージ名 | 設定ファイルを残してパッケージをアンインストール |
-P(--purge) パッケージ名 | 設定ファイルも含めて完全にパッケージをアンインストール |
-l(--list) [検索パターン] | インストール済みパッケージを検索して表示 |
-L(--listfiles) パッケージ名 | 指定したパッケージからインストールされたファイルを一覧表示 |
-s(--status) パッケージ名 | インストール済みパッケージの詳細情報の表示 |
-S(--search) 検索パターン | 指定したファイルがどのパッケージからインストールされたかを表示 |
-C(--audit) | インストールが完了していない(不完全)パッケージの表示 |
apt-getコマンド
apt-getはDebian形式のインターネット上ないしはメディア上のパッケージ情報のデータを使い、依存関係を調整しながらパッケージのインストール、アンインストール、アップグレードを行うコマンドです。
オプション | 説明 |
-s , --dry-run | システムを変更せずに動作をシュミレートする |
-y , --yes | 処理中の問い合わせに自動的にYesと答える |
サブコマンド | 説明 |
install パッケージ名 | 指定パッケージのインストール または アップグレード |
remove パッケージ名 | 指定パッケージのアンインストール |
upgrade | 全パッケージのうち、既存パッケージの削除や新規パッケージの追加をせずに更新できるものをアップグレード |
dist-upgrade | システム全体(全パッケージとカーネル)のアップグレード |
update | パッケージのデータベースを最新版に更新 |
clean | 過去に取得したパッケージファイルを削除 |
apt-cacheコマンド
apt-cacheはDebian形式のパッケージ情報の検索・参照などを行うコマンドです。
サブコマンド | 説明 |
search キーワード | キーワードを含むパッケージを検索 |
show パッケージ名 | 指定したパッケージ情報の表示 |
showpkg パッケージ名 | 指定したパッケージの被依存関係を含めた情報の表示 |
depends パッケージ名 | 指定したパッケージが依存しているパッケージの一覧表示 |
RPM形式のコマンド一覧
yumコマンド
yumはRPM形式で使うAPTツールに相当するツールになります。依存関係を調整しながらパッケージのインストール、アンインストール、アップグレードを行うコマンドです。
YUMの設定は/etc/yum.conf
と/etc/yum.repos.d
ディレクトリ以下のファイルで行います。
サブコマンド | 説明 |
install パッケージ名 | パッケージのインストール |
update [パッケージ名] | パッケージのアップデート |
remove [パッケージ名] | パッケージのアンインストール |
info パッケージ名 | パッケージの詳細情報の表示 |
list [パッケージ名] | パッケージの一覧表示(バージョンとインストール済かどうか) |
search キーワード | 指定したキーワードでパッケージの検索 |
check-update [パッケージ名] | アップデート可能なパッケージの表示 |
grouplist | 利用可能なグループの一覧表示 |
groupinstall グループ名 | 指定グループのインストール |
localinstall パス | ローカル(PC)にあるパッケージファイルのインストール |
deplist パッケージ名 | 指定したパッケージが依存しているパッケージの一覧表示 |
ハードウェア、ディスク、パーティション、ファイルシステム
論理ボリュームを作成する手順
pvcreateコマンド 物理ボリューム(PV)の作成
vgcreateコマンド ボリュームグループ(VG)の作成
lvcreateコマンド 論理ボリューム(LV)の作成
fdiskコマンド
MBR形式のハードディスクを操作するコマンドです。パーティションの作成、削除、変更、情報表示をすることができます。
コマンド書式:fdisk [サブコマンド] デバイス名
GPT(GUID Partition Table)とMBR(Master Boot Record)
・基本パーティション数:4
MBRでは基本パーティション数が4つしか作成できないため、それ以上のパーティションを作成する場合は、いずれか1つの基本パーティションを拡張パーティションとし、その中に論理パーティションを複数作成するしかありませんでした。
それに対して、GPTでは基本パーティションを最大128個作成することができるようになっています。
・ハードディスク容量:2.2TB(2TiB)
HDDへのアクセス最小単位はセクタとよび、1セクタのサイズは512バイトです。
MBRで指定可能なセクタ数は32ビット分です。32ビットで表現可能な正数は4,294,967,296(232)ですので、アクセス可能な最大容量は512 x 232 = 2,199,023,255,552 ≒ 約2.2TB(2TiB: テビバイト)となります。対してGPTは指定可能なセクタ数が64ビットとなりました。64ビットで表現可能な正数は18,446,744,073,709,551,616(264)ですので、同様に計算してアクセス可能な最大容量は約9.4ZB(8ZiB: ゼビバイト)となります。
パーティションテーブルをGPTにすることで、2.2TB以上の大容量ディスクを管理することが可能となりました。
※ZB(ゼタバイト)とは、1GB(ギガバイト)x 1000(テラ:T) x 1000(ペタ:P)x 1000(エクサ:E)x 1000(ゼタ:Z)のサイズのことです。
・起動用システムファームウェア:BIOS
システムファームウェアがBIOSの場合、上記のような2.2TBを超える大容量ディスクを正しく認識できません。そのためGPT形式のHDDからOSを起動する場合はシステムファームウェアがUEFI(Unified Extensible Firmware Interface)である必要があります。なお、仕様上はUEFI必須となっていますが、GRUB2ブートローダはGPTをサポートしているため、BIOSからGRUB2ブートローダをロードできればGPT形式の大容量ハードディスクでも起動することは可能です。
gdiskコマンド
gdiskコマンドはGPTに対応したパーティション操作を行うことができる。
コマンド書式:gdisk [サブコマンド] デバイス名
mke2fsコマンド
ext2/ext3/ext4ファイルシステムを作成できます。
デバイスドライバ操作
デバイスを利用するために制御するためのプログラムをデバイスドライバといいます。
Linuxでは、デバイスドライバをカーネルの一部(カーネルモジュール)として提供されており、デバイスドライバを管理するコマンドが用意されている。
コマンド | 説明 |
lsmod | ロードされているカーネルモジュールを確認する |
modprobe | 手動でロードするコマンド |
insmod | カーネルモジュールをロードする |
rmmod | カーネルモジュールをアンロードする |