aaaiiuie

学習(備忘録)のため運用

Linuc 2.Linuxのインストールとパッケージ管理

2.1 ハードディスクのレイアウト設計

2.1.1 パーティションの分割

Linuxでは、ルートディレクトリを含めたルートパティションの他に下記の表に示したディレクトリを独自のパーティションとして構成することが多いです。

- ルートパティションと異なるパーティションとして構成する領域の例

ディレクトリ・スワップ領域 主な利用目的
/home/ 一般ユーザのホームディレクトリ
/var/ メールボックス、Webディレクトリ、ログファイル
/boot/ 起動ようのファイル、カーネルイメージ
/tmp/ 一時ファイルの格納
スワップ領域 仮想メモリ

- ルートパティション内に構成すべきディレクトリ

以下のディレクトリは万が一システム起動時に認識できなかった場合に、システムの起動に支障をきたす可能性があります。そのため、これらはルートパティション内に構成しなければならず、独自のパーティションとして構成することはできません。

ディレクトリ 主な利用目的
/bin/ 一般ユーザーでも実行できる基本コマンドを格納
/sbin/ 管理者ユーザーが実行できる管理用のコマンドを格納
/etc/ 設定ファイルを格納
/lib/ ライブラリを格納
/dev/ デバイスファイルを格納

2.2 ブートローダ

Linuxカーネルを起動するために使用されるブートローダである「GRUB」の仕組みについて確認します。

2.2.1 GRUB Legacyの構成

前章で説明した通り、電源を入れると次の順番でLinuxシステムが起動します。

順番 内容
1 電源投入
2 ファームウェア(BIOS等)
3 ブートローダ
4 カーネル
5 init/systemd
6 ログインプロンプト

ブートローダはファームウェアが読み込まれた後に最初に読み出されるプログラムで、起動処理の管理を行います。
Linuxで使われているブートローダにはGRUBがあります。GRUBには「GRUB Legacy」と「GRUB2」というバージョンが存在ます。まずはGRUB Legacyから確認します。
CentOS6にはGRUB Legacyがインストールされています。GRUB Legacyの設定ファイルは/boot/grub/menu.lstであり、設定ファイルを編集して起動処理に関する内容を編集することができます。
※その他、GRUBの設定ファイルは/boot/grub配下にあります。

 # cat -n /boot/grub/menu.lst
    1  default=0
    2  timeout=5
    3  splashimage=(hd0,0)/grub/splash.xpm.gz
    4  # hiddenmenu
    5  title CentOS (2.6.18-238.el5)
    6      root (hd0,0)
    7      kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgb
    8      initrd /initrd-2.6.18-238.el5.img
    9
   10  title CentOS (2.6.38)
   11      root (hd0,0)
   12      kernel /vmlinuz-2.6.38 ro root=LABEL=/ rhgb
   13      initrd /initrd-2.6.38.img

menu.lstの中には以下の項目が記載されています。

- menu.lstの内容

設定項目 説明
default timeoutの秒数が経過した場合、起動するエントリ、titleで指定されているエントリを一番上を0として指定
timeout システムが自動起動するまでの数秒(待機時間)
splashimage 起動時のGRUB設定画面の背景画像
hiddenmenu 起動時、設定でGRUBメニューを非表示にする
title 起動するエントリの名前
root ルートデバイスの指定
kernel カーネルイメージの指定
initrd 初期RAMディスクの指定

2.3 共有ライブラリの管理

2.3.1 共有ライブラリ

これまで実行しているコマンドは/bin/sbinといったディレクトリに実行ファイルとして格納されているものが使われています。これらの実行ファイルは、元となるプログラムソースがコンパイルされて生成されたものです。
では、これらのファイルの中に全ての機能のプログラムが含まれているかというと、そうではありません。OSには共有ライブラリというものがあり、コマンドの実行時にそれらのライブラリを参照することで、機能を利用することができます。プログラムの中ではライブラリを呼び出すという命令を記述するだけでいいことになります。
プログラムを作成する際、他のプログラムでも利用するような共通の内容について個々のプログラムに記述すると無駄が生じます。そこで共有ライブラリを参照することで個々のプログラムに同じ機能を実装しなくてもいいようにするのです。

lddコマンドを使うと指定した実行ファイルを実行する際に参照する共有ライブラリを表示することができます。

項目
書式 ldd オプション ファイル名
概要 参照する共有ライブラリを表示する
引数 ファイル:実行ファイルまたはライブラリファイル

以下は、catコマンドの実行時に参照する共有ライブラリを表示している例です。

[root@centos6 ~]# ldd /bin/cat
    linux-gate.so.1 =>  (0x00697000)
    libc.so.6 => /lib/libc.so.6 (0x00a6b000)
    /lib/ld-linux.so.2 (0x800b6000)

実行ファイルの他に、共有ライブラリが依存するライブラリを表示することもできます。

[root@centos6 ~]# ldd /lib/libc.so.6
    /lib/ld-linux.so.2 (0x800eb000)
    linux-gate.so.1 =>  (0x00811000)