コース一覧
LinuC レベル1(LPIC-1対応)対策
共有ライブラリ

LinuC レベル1(LPIC-1対応)対策

ブートとsystemd、パッケージ管理(APT/RPM両系統)、コマンドとviの操作、ファイルシステム、シェルスクリプト、ユーザー管理とセキュリティ、ネットワークまで、LinuC レベル1(LPIC-1対応)の全出題範囲を、毎レッスン実際にコマンドを打って確かめながら学べる対策コースです。ブラウザの中で本物の Debian 12 が動いていて、62レッスンのうち36本は読むだけで終わらず、自分の手でコマンドを打った結果で採点されます。Linux入門を修了した方を対象としています。101・102それぞれの模試60問で分野別の弱点を洗い出し、直前チェックで暗記事項を固めてから本番に臨めます。

1
試験ガイダンス
01. LinuC/LPICとは15分
02. LinuCとLPICの選び方15分
03. 学習計画15分
04. 出題形式を体験15分
2
101 ブートとアーキテクチャ
01. ブートの流れ18分
02. GRUB15分
03. systemdとターゲット18分
04. ハードウェア情報18分
05. カーネルモジュール18分
06. 過去問 アーキテクチャ15分
3
101 パッケージ管理
01. Debian系パッケージ18分
02. RPM系パッケージ15分
03. 両系統の対応表15分
04. リポジトリ管理18分
05. 共有ライブラリ18分
06. 過去問 パッケージ管理15分
4
101 GNU/Unixコマンド
01. ファイル操作の試験オプション18分
02. テキスト処理18分
03. ストリームとリダイレクト18分
04. プロセス監視18分
05. 優先度18分
06. grepと正規表現18分
07. viの操作15分
08. 過去問 コマンド15分
5
101 ファイルシステム
01. パーティション15分
02. 作成とマウント18分
03. fstabとUUID18分
04. パーミッションとリンク18分
05. 容量とクォータ18分
06. findとlocate18分
07. 過去問 ファイルシステム15分
6
102 シェルとスクリプト
01. シェル環境18分
02. testと条件式18分
03. スクリプトの制御18分
04. cronとat15分
05. systemdタイマー18分
06. 過去問 シェル15分
7
102 ユーザーとセキュリティ
01. passwdとshadow18分
02. ユーザー管理コマンド18分
03. suとsudo18分
04. 特殊パーミッション18分
05. ホストのセキュリティ18分
06. SSHとGPG18分
07. 過去問 ユーザーとセキュリティ15分
8
102 ネットワーク
01. TCP/IPとウェルノウンポート18分
02. アドレス設定18分
03. ルーティング18分
04. 名前解決の設定18分
05. 疎通トラブルシュート18分
06. 過去問 ネットワーク15分
9
102 システム管理
01. 時刻とNTP15分
02. ロケールと文字コード18分
03. ログ管理18分
04. サービス管理の試験形式18分
05. メールと印刷のきほん15分
06. 過去問 システム管理15分
10
模試と直前対策
01. 模試 10190分
02. 101弱点復習15分
03. 模試 10290分
04. 102弱点復習15分
05. 直前チェック15分
06. 受験と次のステップ15分

共有ライブラリ

共有ライブラリは出題数こそ多くありませんが、登場するファイルとコマンドが少ないぶん取りこぼしが許されない範囲です。問われるのは、実行ファイルの依存を調べるコマンド、探索パスを書くファイル、キャッシュを作り直すコマンド、一時的にパスを足す環境変数の4点です。

場所が分からなくなると一斉に止まります

ライブラリの機能を実行ファイルの中に埋め込むのが静的リンク、実行時に外部のファイルを読み込むのが動的リンクです。

観点静的リンク動的リンク
実行ファイルの大きさ大きい小さい
ライブラリの更新再リンクが必要ライブラリを差し替えるだけ
メモリプロセスごとに重複複数プロセスで共有できる
拡張子の慣習.a.so
起動時の依存無しライブラリが見つからないと起動しない

Linux の一般的なコマンドはほぼ動的リンクです。だからこそライブラリの場所が分からなくなると、コマンドが一斉に動かなくなる事故が起きます。

ファイル名にも段階があります。実体が libc.so.6.0.0 のようなフルバージョン名、その一段上が libc.so.6 という soname、開発用のリンク名として libc.so が置かれます。soname の数字はメジャーバージョンで、この数字が変わると互換性が無いという約束です。実行ファイルは soname を覚えているので、libc.so.6 の中でマイナーバージョンが上がるぶんには何もせず追従できます。

ldd で not found を探す

実行ファイルが必要とする共有ライブラリを、実際に解決した結果とともに表示します。

ターミナル

ldd /bin/cat

libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7d00000) のような行が並びます。矢印の左が求められている soname、右が実際に見つかった場所です。右が not found なら、そのライブラリが見つかっておらず、コマンドが起動できない原因になります。linux-gate.so.1 や ld-linux.so.2 のように、ファイルとして存在しない仮想的な行が混ざることもあります。

探索パスを足すのは2手

動的リンカが探す順番は、環境変数 LD_LIBRARY_PATH、/etc/ld.so.cache に登録された場所、/lib や /usr/lib などの既定のディレクトリ、の順です。

対象役割
/etc/ld.so.conf探索対象の設定。多くは include /etc/ld.so.conf.d/*.conf の1行
/etc/ld.so.conf.d/*.conf1行1ディレクトリで追加パスを書く分割設定
ldconfig設定を読んでキャッシュを作り直す
/etc/ld.so.cache生成されたバイナリのキャッシュ。直接編集しない
ldconfig -p現在のキャッシュに載っているライブラリを一覧する

独自の場所にライブラリを置いたときの手順は、設定ファイルにディレクトリを1行足して ldconfig を実行するという2手です。設定を書いただけでは反映されません。

LD_LIBRARY_PATH にコロン区切りでディレクトリを並べると、キャッシュより先にそこが探索されます。設定ファイルを触らずに一時的な検証をしたいときに使います。

ターミナル

export LD_LIBRARY_PATH=/opt/myapp/lib

ただし常用は勧められません。シェルを閉じれば消えますし、意図しないライブラリを掴んで別のプログラムが壊れる原因になります。恒久的な設定は /etc/ld.so.conf.d/ に書くのが正しいやり方です。

よくある引っかけ

ldconfig は設定を書いた後に必ず実行します。書いただけでは /etc/ld.so.cache は古いままです。そのキャッシュはバイナリなので手で編集せず、ldconfig に作らせます。

ldconfig -p はキャッシュの一覧表示であって、作成ではありません。作成はオプション無しの ldconfig です。

LD_LIBRARY_PATH はキャッシュより優先されます。優先順位を逆に覚えていると誤答します。そして ldd は依存の一覧を出すだけで、ライブラリを入れる道具ではありません。

ヒント

行数を数えるには wc -l をパイプでつなぎます

追記は >> です。1回目は > で作ります

設定ファイルを書いただけでは反映されません。引数無しの ldconfig を実行します

  • 1. ldd /bin/ls を実行して出力を眺める
  • 2. 依存の行数を数えて /root/lib.txt に書く
  • 3. ldconfig -p で表示される件数も /root/lib.txt に追記する
  • 4. /opt/linuc/lib ディレクトリを作る
  • 5. /etc/ld.so.conf.d/linuc.conf に /opt/linuc/lib の1行を書く
  • 6. ldconfig を実行してキャッシュを作り直す

5 項目で採点します