LinuCレベル1(1)~ 全体像と101試験前半対策~

スポンサーリンク
LinuC
お知らせ】出題範囲の改定について 
LPI-Japanは、LinuCレベル1(101・102)およびレベル2(201・202)について、実務で使われている技術に合わせて出題範囲全体を見直す改定作業を進めており、2027年1月ごろに新試験をリリースする予定である。
今回の改定では、出題するコマンド・ツールを現在主流のものへ更新するとともに、AI時代に求められる影響分析の観点や安全性に関わる項目が強化される見込みである。本シリーズは現行のVersion 10.0の出題範囲に基づいているため、受験時期が近い方は必ずLPI-Japan公式サイトで最新の出題範囲を確認してほしい。
なお、Version 11.0のベータ試験ページで改定後の出題範囲案が先行公開されているので、気になる方はあわせて参照するとよい(ベータ時点の情報であり正式公開までに変更される可能性がある)。

LinuCレベル1とは?

LinuCはLPI-Japanが実施するLinux技術者認定試験であり、レベル1は仮想環境を含むLinuxシステムの基本操作とシステム管理が行えることを証明する資格である。レベル1に合格するには「101試験」と「102試験」の両方に合格する必要があり、片方だけでは認定されない点に注意したい。

101試験と102試験は出題範囲がそれぞれ独立しており、受験の順序に決まりはない。ただし、101試験はLinuxのインストールやファイル操作、コマンド操作といった「土台」となる内容が中心であり、102試験はシェルスクリプトやネットワーク、システム管理といった「運用」に近い内容が中心である。したがって、まず101試験から着手し、コマンド操作に慣れてから102試験に進むという流れが学習効率の面で理にかなっている。

本シリーズは全3回構成とし、今回は101試験の前半にあたる以下の3主題を扱う。

  • 1.01:Linuxのインストールと仮想マシン・コンテナの利用
  • 1.02:ファイル・ディレクトリの操作と管理
  • 1.03:GNUとUnixのコマンド

なお本シリーズでは、WSL2(Windows Subsystem for Linux)を使って実際に手を動かしながら学ぶ形式を取り入れる。WSL2はコンテナではなく実際のLinuxカーネルが動く軽量VMであり、systemdを有効化すればサービス管理まで実践できる。WSL2のセットアップ自体は本ブログの「WindowsでLinuxを使ってみよう」で解説済みなので、まだの方はそちらを先に済ませておいてほしい。本シリーズではその続きとして、systemdを使うための追加設定から解説する。

1.01:Linuxのインストールと仮想マシン・コンテナの利用

この主題では、Linuxのインストールから起動、停止までの一連の流れに加え、仮想マシンやコンテナの基礎知識、そしてsystemdによるプロセス管理が問われる。

ブートプロセスとsystemd

Linuxの起動は、大まかに次の順序で進む。

  1. BIOS/UEFIによるハードウェアの初期化
  2. ブートローダ(GRUB2など)の起動
  3. カーネルの読み込み
  4. 初期RAMディスク(initramfs)の展開
  5. init(多くのディストリビューションではsystemd)の起動

systemdはLinuxディストリビューションの多くで採用されている初期化システムであり、サービスの起動・停止・状態確認にはsystemctlコマンドを用いる。

# サービスの状態確認
systemctl status sshd

# サービスの起動・停止
systemctl start sshd
systemctl stop sshd

# 起動時の自動起動を有効化・無効化
systemctl enable sshd
systemctl disable sshd

試験対策としては、systemctlのサブコマンドと、systemdが管理する「ユニット」の種類(service、target、mountなど)を区別できるようにしておくとよい。

WSLで試してみよう
標準のWSL2ではsystemdが無効になっているため、まず有効化する。
WSL上のUbuntuで以下のファイルを編集する。(今回はviを使用する)
sudo vi /etc/wsl.conf

次の内容を追記して保存する。
[boot]
systemd=true

※保存して終了するには
1.[Esc]キーを押す(入力モードからコマンドモードに切り替える)。
2.:(コロン)に続いて wq と入力する。
3.[Enter]キーを押す。

保存したら、管理者権限でPowerShellを立ち上げて、以下を実行してWSLを再起動する。
wsl –shutdown

再度Ubuntuを起動し、以下を実行してsystemdが動いていることを確認する。
systemctl status

動作が確認できたら、記事中のsystemctl status sshdsystemctl enable sshdなどのコマンドを実際に試してみるとよい。
サービスの起動・停止・自動起動設定が仮想コンテナ環境とは違い、実機さながらに動作することが体感できる。

注意
systemctl enable のようにシステムの設定を変更するコマンドを実行するには、先頭に sudo をつけて管理者権限で実行する必要がある。
また、Ubuntuなどの Debian 系システムでは、サービス名が sshd ではなく ssh になっていることが多い。

sudo systemctl enable ssh

仮想マシンとコンテナ

仮想マシンはハードウェアをエミュレートし、その上にゲストOSごとカーネルを含めて動作させる方式である。一方コンテナは、ホストOSのカーネルを共有しつつプロセスやファイルシステムを分離する方式であり、仮想マシンに比べて起動が速く、リソース消費も少ない。この違いは頻出のため、「仮想マシン=ハードウェアの仮想化」「コンテナ=OSレベルの仮想化」という対比で押さえておきたい。ちなみに、いま操作しているWSL2自体もLinuxカーネルを内包した軽量VM方式であり、身近な仮想化の一例として意識しておくとよい。

プロセスの生成・監視・終了

プロセス管理の基本コマンドも本主題の範囲である。

# 実行中のプロセスを一覧表示
ps aux

# プロセスをリアルタイムで監視
top

# プロセスの終了
kill <PID>
kill -9 <PID>

killはデフォルトでSIGTERM(15番)を送信するが、-9を付けるとSIGKILL(強制終了)になる。この番号とシグナル名の対応も出題されやすいポイントである。

1.02:ファイル・ディレクトリの操作と管理

この主題は、Linuxを扱ううえで最も基本となるファイルシステム操作の知識を問うものである。

所有者とパーミッション

Linuxのファイルには所有者(owner)、所有グループ(group)、その他(other)の3種類に対して、読み取り(r)、書き込み(w)、実行(x)の権限が設定される。

# パーミッションの変更
chmod 755 script.sh
chmod u+x script.sh

# 所有者・所有グループの変更
chown user:group file.txt

数値表記(755など)と記号表記(u+x、g-wなど)の両方を変換できるようにしておくことが重要である。

基本的なファイル管理

ファイルやディレクトリの作成・削除・移動・コピーは、次のコマンドで行う。

mkdir dir1
rmdir dir1
touch file.txt
cp file.txt copy.txt
mv file.txt renamed.txt
rm file.txt

cp -rrm -rのように、ディレクトリを再帰的に扱う際のオプションもあわせて確認しておきたい。

ハードリンクとシンボリックリンク

ハードリンクは同一のiノードを指す別名であり、リンク元のファイルを削除してもデータは残る。一方シンボリックリンクはパスを指し示すだけの特殊なファイルであり、リンク元が削除されるとリンク切れになる。

# ハードリンクの作成
ln original.txt hardlink.txt

# シンボリックリンクの作成
ln -s original.txt symlink.txt

シンボリックリンクはディレクトリに対しても作成できるが、ハードリンクはディレクトリに対して作成できない、という違いも出題されることがある。

WSLで試してみよう

WSLで、以下を実際に試してみよう。

touch original.txt
ln original.txt hardlink.txt
ln -s original.txt symlink.txt
ls -li original.txt hardlink.txt symlink.txt

ls -liでiノード番号を確認すると、original.txthardlink.txtが同じ番号を持つのに対し、symlink.txtは別番号でパスを指しているだけであることが確認できる。さらにrm original.txtを実行したあとにcat hardlink.txtcat symlink.txtを比べると、ハードリンクはデータが残り、シンボリックリンクはリンク切れになる違いも体感できる。

ファイルの配置と検索

ファイルの検索にはfindlocatewhichなどを用いる。

# 条件を指定して検索
find /home -name "*.txt"

# データベースを利用した高速検索
locate filename

# コマンドの実行パスを検索
which python3

findは実際のファイルシステムを走査するため最新の状態を反映するが処理が遅く、locateは事前に構築されたデータベースを参照するため高速だが更新のタイミングによっては最新でない場合がある、という特性の違いを理解しておくとよい。

1.03:GNUとUnixのコマンド

この主題はコマンドライン操作の基本であり、1101試験の重要な学習分野の一つである。

コマンドラインの操作

# 環境変数の確認・設定
echo $PATH
export MY_VAR=value

# コマンド履歴
history

フィルタを使ったテキストストリームの処理

# 行数・単語数・文字数の表示
wc -l file.txt

# ソート
sort file.txt

# 重複行の削除(事前にsortが必要)
sort file.txt | uniq

# 先頭・末尾の表示
head -n 10 file.txt
tail -n 10 file.txt

ストリーム、パイプ、リダイレクトの使用

# 標準出力をファイルへ書き込み(上書き・追記)
command > output.txt
command >> output.txt

# 標準エラー出力のリダイレクト
command 2> error.txt

# パイプでコマンドをつなぐ
ps aux | grep sshd

>>>の違い(上書きか追記か)、2>が標準エラー出力を指す点は基本かつ頻出であるため、確実に押さえておきたい。

正規表現を使用したテキストファイルの検索

# 正規表現でパターンを検索
grep -E "^root" /etc/passwd

# 拡張正規表現の主な記号
# ^ 行頭、$ 行末、. 任意の1文字、* 直前の文字の0回以上の繰り返し

エディタを使った基本的なファイル編集

vi(vim)の基本操作は必須知識である。

# 挿入モードへ移行
i

# コマンドモードへ戻る
Esc

# 保存して終了
:wq

# 保存せず終了
:q!

モードの切り替え(コマンドモード/挿入モード)という考え方に慣れていないと戸惑いやすいため、実際に手を動かして練習することをおすすめしたい。

WSLで試してみよう
適当なテキストファイルを用意し、grepsortuniqwc・パイプ・リダイレクトを実際に組み合わせて試してみよう。

# /etc/passwdの中身をコピーしてサンプルにする
cp /etc/passwd sample.txt

# bashで始まるユーザーだけ抽出して行数を数える
grep bash sample.txt | wc -l

# ユーザー名だけ抽出してソートし、結果をファイルに保存
cut -d: -f1 sample.txt | sort > users_sorted.txt

viの操作についても、WSL上のターミナルでvi sample.txtを開き、iで挿入モードに入って編集し、Escのあと:wqで保存するところまでを一通り試しておくと、試験本番での操作イメージがつかみやすいだろう。

まとめ

今回は、LinuCレベル1の全体像と、101試験前半にあたる「インストールと仮想化」「ファイル・ディレクトリ操作」「GNU/Unixコマンド」の3主題を扱った。WSL2は実際のLinuxカーネルが動く軽量VMのため、systemdを有効化すれば1.01のサービス管理まで含めて手を動かしながら確認できる。次回は101試験後半(パッケージ管理、ハードウェア・ファイルシステム)と102試験前半(シェルスクリプト、ネットワークの基礎)を扱う。パッケージ管理とシェルスクリプトも引き続きWSL上での実践パートを組み込む予定である。

コメント

タイトルとURLをコピーしました