カテゴリー: LPIC

CentOS6.4にopenldapをインストールする

LDAPに対して作成中のシステムから問い合わせをする
必要がでそうなのでLDAPをローカル環境にとりあえず設置する。


この本を参考に設置する。

■この環境にopenldapをインストールする。

# cat /etc/redhat-release
CentOS release 6.4 (Final)

PHPは5.4.16
epel,rpmforge,remiを利用しています。
■openldapのインストール

# yum install openldap-servers openldap-clients
# updatedb
# locate slapd.conf
/usr/share/man/man5/slapd.conf.5.gz
/usr/share/openldap-servers/slapd.conf.obsolete

■設定ファイルをコピーして設置

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

・設定用のパスワードを生成しておく
# slappasswd -s [設定用パスワード]
{SSHA}uwv0bKRgYH0aD9kdOuHl1kG2YIrLyamp

・管理者用のパスワードを生成しておく
# slappasswd -s [管理者パスワード]
{SSHA}UmANXpHt8QzO96eb45Ik8Eg0e9QyFcjJ

■設定ファイルを変更

# diff /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
98a99,101
> rootdn        cn=admin,cn=config
> rootpw        {SSHA}uwv0bKRgYH0aD9kdOuHl1kG2YIrLyamp
>
115c118
< suffix                "dc=my-domain,dc=com"
---
> suffix                "dc=mogumagu,dc=com"
117c120,121
< rootdn                "cn=Manager,dc=my-domain,dc=com"
---
> rootdn                "cn=Manager,dc=mogumagu,dc=com"
> rootpw        {SSHA}UmANXpHt8QzO96eb45Ik8Eg0e9QyFcjJ

■念のため最初からあったファイルを削除しておく

# cd /etc/openldap/slapd.d/
# ll
total 8
drwx------ 3 ldap ldap 4096 Jun 11 01:30 cn=config
-rw------- 1 ldap ldap 1131 Jun 11 01:30 cn=config.ldif
# rm -rf ./*

# cd /var/lib/ldap/
# ll
total 0
# rm -rf ./*

■予めldapのデータベースを作成する

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# echo "" | slapadd -f /etc/openldap/slapd.conf
The first database does not allow slapadd; using the first available one (2)

■設定ファイルを変更したので、設定ファイルの変換処理を行う

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

■権限を付与

# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/slapd.d

■LDAPの起動

# service slapd start
Starting slapd:                                            [  OK  ]
# chkconfig slapd on

■ログを吐くようにsyslogの設定

# vim /etc/rsyslog.conf
追記
# openldap slapd log
local4.*                                                /var/log/slapd

# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
# service slapd restart
Stopping slapd:                                            [  OK  ]
Starting slapd:                                            [  OK  ]

# less /var/log/slapd
Jun 11 01:47:36 takeuchi2 slapd[1214]: daemon: shutdown requested and initiated.
Jun 11 01:47:36 takeuchi2 slapd[1214]: slapd shutdown: waiting for 0 operations/tasks to finish
Jun 11 01:47:36 takeuchi2 slapd[1214]: slapd stopped.
Jun 11 01:47:36 takeuchi2 slapd[1282]: @(#) $OpenLDAP: slapd 2.4.23 (Apr 29 2013 07:41:58) $#012#011mockbuild@c6b7.bsys.dev.centos.org:/builddir/build/BUILD/openldap-2.4.23/openldap-2.4.23/build-servers/servers/slapd
Jun 11 01:47:36 takeuchi2 slapd[1283]: slapd starting

■初期データの投入(本の内容)

# pwd
/root
#mkdir ldap-data
# cd ldap-data/
# vi init.ldif
# less init.ldif
dn: dc=mogumagu,dc=com
objectClass: organization
objectClass: dcObject
o: Mogumagu
dc: mogumagu

dn: cn=Manager,dc=mogumagu,dc=com
objectClass: organizationalRole
cn: Manager

# ldapadd -x -D "cn=Manager,dc=mogumagu,dc=com" -W -f init.ldif
Enter LDAP Password:
adding new entry "dc=mogumagu,dc=com"

adding new entry "cn=Manager,dc=mogumagu,dc=com"

# vim people-service.ldif
dn: ou=People,dc=mogumagu,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Service,dc=mogumagu,dc=com
objectClass: organizationalUnit
ou: Service

# ldapadd -x -D "cn=Manager,dc=mogumagu,dc=com" -W -f people-service.ldif
Enter LDAP Password:
adding new entry "ou=People,dc=mogumagu,dc=com"

adding new entry "ou=Service,dc=mogumagu,dc=com"

■一旦検索してみる

# ldapsearch -x -D "cn=Manager,dc=mogumagu,dc=com" -W -b 'ou=People,dc=mogumagu,dc=com' '(objectClass=*)'
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <ou=People,dc=mogumagu,dc=com> with scope subtree
# filter: (objectClass=*)
# requesting: ALL
#

# People, mogumagu.com
dn: ou=People,dc=mogumagu,dc=com
objectClass: organizationalUnit
ou: People

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

■phpLDAPadminをインストールする

# pwd
/usr/local
# wget http://sourceforge.net/projects/phpldapadmin/files/latest/download?source=files

# tar xzvfp phpldapadmin-1.2.3.tgz

# mv phpldapadmin-1.2.3 phpldapadmin

# pwd
/etc/httpd/conf

■apache設定を追記

# vim httpd.conf
Alias /ldapadmin/ /usr/local/phpldapadmin/htdocs/
<Directory "/usr/local/phpldapadmin/htdocs">
        DirectoryIndex index.php index.html
</Directory>

■phpLDAPadminの設定ファイルを変更する

# pwd
/usr/local/phpldapadmin/config

# cp config.php.example config.php

# diff config.php.example config.php
293c293
< // $servers->setValue('server','host','127.0.0.1');
---
> $servers->setValue('server','host','127.0.0.1');
296c296
< // $servers->setValue('server','port',389);
---
> $servers->setValue('server','port',389);

# service httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

http://localhost/ldapadmin/
にアクセスするとphpLDAPadmin画面が表示される

■その他参考書、サイト等

CentOS6.3 で OpenLDAP の設定 (Life with Linux)

LPIC レベル2 覚えられないコマンドとか色々5

■lvcreate コマンド

lvcreate [オプション] ボリュームグループ名

-L 続けてボリュームサイズを指定
-n 続けて論理ボリューム名を指定
-s スナップショットを指定

-sがサイズと思ってしまって毎度間違う。。。

■debugfsコマンド

debugfs は ext2/ext3/ext4 ファイルシステムの対話的デバッグを行うコマンド

起動すると専用の debugfs シェル画面となり、その中で使える様々なコマンドを使ってファイルシステムを調査・編集することができる。
きめ細かで高度な操作が行える反面、操作には ext2/ext3/ext4 ファイルシステムに対する十分な知識が必要なので、
e2fsck や tune2fs などの便利なコマンドで解決できる場合はまずそちらの利用を検討するべき。

■modprobeコマンド

modprobe コマンドは依存関係を自動的に解決してカーネルモジュールのロード・アンロードが行えるコマンド。

-f 強制的に操作を行う
-r ロードではなくアンロードを行う
-l ロードできるモジュールを一覧表示
–show-depends 指定したモジュールの依存関係を表示

LPIC レベル2 覚えられないコマンドとか色々4

全部覚えられないとか言ってる気がしてきた。。

■マルチホーム接続

マルチホーム (接続) とは、外部(インターネットなど) へ接続する際に、複数の経路を使って接続すること。
これを行うには、外部へ接続するホストに対して、複数の IP アドレスを割り当てる必要がある。

Linux システムでは、物理的に複数のネットワークインタフェースを用意し、それぞれに IP アドレスを割り当てる方法のほかに、
ひとつのネットワークインタフェースに複数の IP アドレスを仮想的に対応させる方法 (IP エイリアシング) がある。
IP エイリアシングを使い、複数の IP アドレスをネットワークインタフェースに割り当てるには・・・。

# ifconfig eth0:1 IPアドレス

eth0 の後ろに :1 という指定を付け足すことで、コロン (:) の後に続いた別名(エイリアス)に対して新たに IP アドレスを割り当てることができる。
エイリアスは任意の英数字を使えるので、「eth0:lan1」などと指定する事もできる。

■ホスト名に関連した情報を表示するためのコマンド

nslookup DNSでホスト名とIPアドレスを変換
dig nslookupより詳細な情報を表示
hostname 自ホストのホスト名を表示
hostname -d 自ホストのDNSドメイン名を表示
hostname -i 自ホストのIPアドレスを表示
hostname -f 自ホストのFQDNを表示
hostname -a 自ホストのエイリアスを表示

■GRUB Legacyの設定ファイル

/boot/grub/menu.lstの設定パラメータ

timeout メニューを表示している秒数
default デフォルトで起動するエントリ番号
splashimage メニュー表示時の背景画像
title メニューに表示させるエントリ名
root カーネルイメージもしくはOSが格納されているパーティションの指定
kernel カーネルイメージとカーネルオプションの指定
initrd 初期RAMディスクファイルの指定
makeactive ルートパーティションをアクティブ化
chainloader 指定されたセクタの読み込みと実行
hiddenmenu 起動時の選択メニューを表示しない

■GRUB2

設定ファイルは/boot/grub/grub.cfgだけどGRUB Legacyと違い直接編集はしない。
/etc/default/grubで設定を行い、update-grubコマンドで/boot/grub/grub.cfgを生成する。

GRUB2の全体的な設定は /etc/default/grub ファイルに記述する。

カーネルイメージ、ルートパーティションの指定などは /etc/grub.d ディレクトリ内のファイルで行う。

カスタムの設定を記述するファイル内で利用するパラメータ

menuentry 各設定の名前を指定する項目(GRUB Legacy の title に相当)
set root='(hdディスク番号,パーティション番号)’ カーネルイメージや初期 RAM ディスクイメージの含まれているパーティションを指定する項目(GRUB Legacy の root に相当)GRUB Legacy と異なり、パーティション番号は1から数える。
linux カーネルイメージファイルを指定する項目(GRUB Legacy の kernel に相当)
initrd 初期 RAM ディスクイメージファイルを指定する項目(GRUB Legacy の initrd と同様)

■ジャーナリング

ジャーナリングとは、実データをディスクに書き込む前にメタデータを専用の領域に書き込んでおくことで、
不正にシステムが終了してしまいファイルシステム内での整合性がとれなくなってしまう状況を防ぐ機能

ext3/ext4 以外にも ReiserFS, XFS 等、高機能なファイルシステムはジャーナリング機能を持っている。

■初期RAMディスク

初期 RAM ディスクは、システム起動時に仮の環境としてまずメモリ上にファイルシステムを展開し、そこでカーネルを
動作させてから本来のファイルシステムをルートにマウントし直す、といった段階的なブートを実現する機能。

高度な機能を使うにはまずカーネルを動作させる必要があり、仮の環境でまずカーネルを動かして、それから本来の環境をブートさせようという発想。

initrd 形式と initramfs 形式の2種類がある。

○initrd型式

作成方法 mkinitrd 出力ファイル名 カーネルバージョン
展開方法 gunzip initrd.img.gzmount -o loop  initrd.img マウント先

○initramfs形式

作成方法 mkinitramfs  -o 出力ファイル名 カーネルバージョン
展開方法 gunzip initrd.img.gzcpio -id < initrd.img

現在では cpio アーカイブを gzip で圧縮した initramfs 形式の方がよく利用されている。

■RAIDを管理・操作するコマンド

「RAID を管理・操作するコマンド」には mdadm があり、その設定ファイルは
/etc/mdadm.conf

Ping-tがなかなか倒せない。。

LPIC レベル2 覚えられないコマンドとか色々3

作成済みのファイルシステム(デバイス)を引数にとって動作するコマンド

tune2fs ext2/ext3/ext4 の設定を行う
e2label ext2/ext3/ext4 のラベルを操作
dumpe2fs ext2/ext3/ext4 の詳細を表示する
debugfs ext2/ext3/ext4 の対話的デバッグを行う
reiserfstune ReiserFS の設定を行う
debugreiserfs ReiserFS の対話的デバッグを行う
xfs_admin xfs の設定を行う
xfs_info xfs の情報を表示する

■tune2fsコマンド
tune2fs [オプション] デバイス

-c 自動fsckが行われるまでのマウント回数を設定
-i 自動fsckが行われるまでの時間を設定
-j ext2をext3に変換。ジャーナリング機能を付与
-l スーパーブロックの内容を出力
-L 続けて指定した名前でラベルをつける

■mkreiserfsコマンド
RaiserFSファイルシステムを作るコマンド
mkreiserfs [オプション] デバイス

-b 続けてブロックサイズをbyte単位で指定
-l 続けてボリュームラベル名を指定
-j 続けてジャーナルのファイル名を指定
-s 続けてジャーナルのサイズを指定

LPIC レベル2 覚えられないコマンドとか色々2

なんだかなーおぼえられねーなー。

■カーネルパラメータ
sysctlでカーネルパラメータの操作を行う

表示する sysctl カーネルパラメータ
 変更する sysctl -w カーネルパラメータ=値
 一覧 sysctl -a

/proc/sys によるカーネルパラメータ操作
kernel.shmallが対象パラメータの場合

表示する cat /proc/sys/kernel/shmall
 変更 echo ‘2097152’ > /proc/sys/kernel/shmall

■ARP
IP アドレスと MAC アドレスの対応関係は、ARP キャッシュという
テーブルとしてシステム内に保持されているARP キャッシュに関する
操作を行うコマンドは arp です。

arp [オプション]

-i –device 続けて表示対象インターフェースを指定
-a –display  続けて表示対象のホスト名を指定
-d –delete 続けて削除対象のホスト名を指定
-n –numeric 逆引きを行わず、IPアドレスのまま表示
-s set 続けてIPとMACアドレスの対応を指定しキャッシュに追加
-f file 続けてファイルを指定し、その内容をキャッシュに追加

■mtコマンド
mtコマンドは、テープドライブを制御するコマンド。
磁気テープなどのテープデバイスを早送りしたり、巻き戻したりできる。

書式:mt -f テープデバイス 操作

テープデバイスはSCSI接続なら/dev/st0となります。
ただ、テープデバイスに/dev/st0を指定した場合、データの読み書きで
テープが自動的に巻き戻されます。
その為、複数のファイルを読み書きしたい場合などは巻き戻ししない
/dev/nst0をテープデバイスに指定します。

■カーネルのソース

/usr/src/linux 内のファイル・ディレクトリで覚えておきたいもの。

.config カーネルのビルド設定ファイル
Makefile makeの設定やカーネルのバージョンが書いてある
kernel/ カーネル本体のソースが入っている
Documentation/ ドキュメント類が入っている

 

 

LPIC レベル2 覚えられないコマンドとか色々

いやー今回はかなり覚えられないw

■namedのオプション

-t namedのルートディレクトリとするディレクトリを指定(chrootにするディレクトリの指定)
-u namedの実行ユーザを指定
-g namedの実行グループを指定

■DNSSEC
DNSSEC(DNS Security Extensions)とは、公開鍵暗号方式を用いた
電子署名により、正答なDNSサーバからのゾーン情報である事を認証し、
またゾーン情報が改竄されていないことを保証する技術。
公開鍵と秘密鍵を作成するには dnssec-keygen コマンドを使用し、
ゾーンファイルへ署名に dnssec-signzone コマンドを使用する。
ゾーン情報を暗号化する技術では無い。

■TSIG
TSIG(Transaction Signature)とは、マスターDNSサーバとスレーブDNSサーバに共通の
秘密鍵を設定する事で、DNSサーバの偽装など、なりすましを防ぐ技術。
共通鍵の作成は dnssec-keygen コマンドを使用する。
作成した共通鍵は、マスター/スレイブDNSサーバ双方の
/etc/named.conf ファイルに、keyステートメントとして設定します。

■mkisofs コマンド

mkisofs [オプション] ディレクトリ

-o 続けてイメージファイル出力先を指定する
-J Windows系拡張であるJolietフォーマットで作成
-R UNIX系拡張であるRockRidgeフォーマットで作成
-udf DVDで用いられるUDFフォーマットで作成

■modprobe
modprobe の設定ファイルでは、各カーネルモジュールのデフォルトパラメータを
指定したり(options)、カーネルモジュールに別名をつけたり(alias)、特定の
カーネルモジュールのロード時・アンロード時に実行されるコマンドを設定したり
(install, remove)できます。

■cpioコマンド
cpioコマンドもtarコマンドと同じく、複数のファイルをまとめて1つのファイル
(アーカイブ)にする、またはアーカイブを展開する際に使用するコマンド。
バックアップや初期 RAM ディスク(initramfs形式)の作成などに使用される。

-o 新しくアーカイブを作成する
-i アーカイブからファイルを展開する

■カーネルパラメータ

カーネルの動作や細かな設定値を参照・変更するための仕組み。
カーネルパラメータの多くの項目は、実行時に値を変更すること
ができ、すぐに新設定が有効になる。

/proc/sys 以下にカーネルパラメータを操作するための仮想ファイルが
存在し、仮想ファイルに対する読み書きを通じて操作することができる。

カーネルパラメータはビルド時ではなく実行中に設定を変更することができる。

新しいカーネルをインストールした際は、基本的にカーネルパラメータには
適切な値が自動的に設定されている。

パフォーマンスチューニング目的など、特に必要があって設定をする場合を
除いては、手動で設定を行わなくても問題ない。

sysctl コマンドで変更した設定は再起動時に設定が失われる。

恒久的に(再起動後も)設定を有効にするためには、起動時に自動実行される
スクリプトを編集し、起動毎に設定したい値を変更する sysctl コマンドを
実行するようにするか、/etc/sysctl.conf という専用の設定ファイルに設定を記述する。

■insserv コマンド

SUSE 系ディストリビューションで利用。
insserv コマンドは引数にサービス名だけを指定すると自動起動する設定を、
-r オプションを加えると自動起動しない設定を行う。

■update-rc.d コマンド

update-rc.d [オプション] サービス 操作 [優先度] [ランレベル]

操作

default ランレベルに応じて、SかKで始まるリンクを作る
start Sで始まるリンクを作る
stop Kで始まるリンクを作る
remove リンクを削除する(-f で強制)

自動起動設定を追加・削除することができる。
update-rc.d はその名前の通り、/etc/rc[0-6].d 内のシンボリックリンクを
操作して、サービスの自動起動設定を行うことができるコマンド。
start stop defaults でリンクを作ることも、remove でリンク削除もできる。

優先順位を指定することができる。
defaults や start, stop に続く部分に数字を書き、自動起動設定の優先度(S99local の 99 の部分)を指定することができる。

LPIC レベル2 覚えられないコマンドとオプションメモ

あー全然オプションが覚えられない。覚えられない。

netstat [オプション]

実行システム上のネットワーク状態について様々な情報を表示できるコマンド

-l 待ち受け状態のソケットのみを表示
-a 待ち受け状態によらずすべてのソケットを表示
-c 情報を毎秒更新して最新状態を表示
-i ネットワークインターフェースの統計を表示
-r ルーティングテーブルを表示
-n ホスト名などを名前解決せずに数字(IP)で表示

これに関連して、、、ネットワーク関連のユーティリティコマンドの概要

ping ターゲットホストまでの疎通を確認
traceroute ターゲットホストまでの経路を確認
tcpdump ネットワークを監視してパケットをキャプチャ
nc TCP/UDPを利用して様々な低レベルの操作を行う(telnet的な)
nmap ネットワークのスキャンを行う

ログインしているユーザへの情報通知方法

/etc/issue ログインプロンプトの手前に表示される内容を設定するファイル
/etc/motd ユーザがシステムにログインした直後に、コンソールに表示される内容を設定するファイル
wall コマンド ログインしているユーザ全員のコンソールに、引数で指定したメッセージを表示
shutdown コマンドの -k オプション wall と同様にログインしているユーザ全員にメッセージを送る

※-k オプションを指定した場合にはシャットダウン・再起動などの動作はキャンセル

tcpdump [オプション] [監視対象の条件式]

host ダンプ対象とするホストを指定
port ダンプ対象とするポートを指定
tcp TCPのパケットを対象とする
udp UDPのパケットを対象とする
icmp ICMPのパケットを対象とする
arp ARPのパケットを対象とする

オートマウントの動作を設定するためのメイン設定ファイル

/etc/auto.master

nmap [スキャンタイプ] [オプション] 対象

スキャンタイプ(何も指定しないとデフォルトでは TCP SYN スキャン)

-sT TCPスキャン
-sU UDPスキャン
-sP Pingスキャン

オプション

-p 続けて対象ポート範囲を指定
-F 有名ポートを対象とした高速スキャン
-O 対象ホストのOS識別を試みる

メモリ上に配置する特殊なファイルシステム

tmpfs

OpenVPN のメイン設定ファイル

/etc/openvpn/server.conf

/etc/inittab のアクション指定子

initdefault デフォルトランレベルを指定
once 指定ランレベルになったら一度だけ実行
wait onceと同様。ただしプロセスの終了を待つ
boot ブート時に実行する
bootwait boot時と同様だが、プロセスの終了を待つ
sysinit bootと同様だが、より先に実行する
respawn プロセスが終了しても自動的に再起動

/etc/inittab は以下の形式

ID:ランレベル:アクション指定子:コマンド

sysinit, boot, bootwait はランレベルによらない設定のためランレベルは無視される。
※空欄にしておくらしい。

XFS関連のコマンドのややこしさが異常。。

xfs_check XFSをチェックする
xfs_admin XFSの設定を行う
xfs_info XFSの情報を表示する
mkfs.xfs XFSを作成する
xfsrestore バックアップから XFS ファイルシステムの復元を行う
xfsdump XFS ファイルシステムのバックアップを行う

ソースからのカーネルのビルドとインストール(再構築)の基本的な手順

1. 設定を初期化 make mrproper で設定ファイルを含めてディレクトリ内を初期化。
展開したソースにあらかじめ不適切な設定が含まれている可能性や、
古いカーネルの設定が残っている可能性を考慮し、はじめに必ず実行する。
2. 設定を行う 初期化された設定を今回の再構築用に設定する。
make oldconfig など。
ほかに make config で対話的に設定する方法、
make menuconfig でコンソール上のメニューから設定する方法などなど。
3. ビルドを行う make もしくは make all とすることで、依存関係の解消、
カーネル本体とモジュールのビルド、一時ファイルの削除が自動で行われる。
4. システムにインストールする ビルドを行っただけではシステムに配置されてはいないので、インストールを行う。
通常、make modules_install としてモジュールをインストールしてから、
make install としてカーネル本体をインストールする。
make install によって /boot 以下にカーネルイメージが配置され、
ブートローダに新しいカーネルを使う起動設定が追加される。

LPIC:ncコマンド

全然知らなかったのでメモ。

ncコマンド

TCP/UDP を使って任意の通信を行わせることのできる、汎用性の高いコマンド

もともとnetcatだったらしい。

書式

nc [オプション] ホスト ポート

オプションを指定せずにホストとポートを指定するとtelnetのように対話型になる。

標準出力の内容を送信するのでシェルのパイプで自動実行させることも可能。

$ cat ./commandstring | nc mail.example.com 25

ポートスキャンもできる。

$ nc -vz target.com 100-200

代表的オプション

オプション 説明
-v 接続に成功した際のログメッセージなどを出力させるためのオプション
-z 接続のみを試み、データを送信することはしないというオプション
n1-n2 ポートの範囲を指定

ncとnmapでポートスキャンができる。

■参考URL
ncコマンド (netcat)

LPIC レベル2関連-カーネルコンパイルについて

LPIC レベル2関連-カーネルコンパイルについて

■カーネルの再構築を考慮するケース
・必要なデバイスドライバがカーネルに含まれていない
・使用しているハードウェアに最適化したカーネルを利用したい
・カーネルの最新の機能を利用したい
■カーネルコンパイル(再構築)の流れ

ハードウェアの確認
必要な機能の確認
カーネルの確認
コンパイルに必要なツールの準備
カーネルソースの入手
カーネルソースコードの展開
パッチの適用
既存カーネルの設定を反映させる
/usr/src/linuxへのシンボリックリンクを張る
カーネルを設定する
コンパイルを実行する
カーネルに動的に組み込むモジュール(ローダブル・モジュール)を/lib/modules/[カーネルバージョン]以下に格納する
カーネルに導入する
ブートローダに登録する
システムを再起動して起動を確認する

■メモ
・カーネルコンパイルの難所はカーネル・パラメータの指定内容とコンパイル時の依存関係
・静的に組み込む、組み込まない、動的に組み込むモジュールがある
・設定に迷ったらモジュールにする
・入手したカーネルは慣習として/usr/srcディレクトリに展開する
・カーネル・パラメータの設定は「menuconfig」を推奨?
・カーネルを再構築する場合はカーネルモジュールもカーネルにあわせてコンパイルしなおす必要がある
・kernel.orgで配布されているディストリビュータの手が入っていないカーネルのことをvanilla kernelという

■参考URL

Linuxカーネル・コンパイル入門 前編

Linuxカーネル・コンパイル入門 後編

Linuxカーネルの設定パラメータ

CentOSに最新カーネルを導入する(カーネル再構築)

[LPIC]カーネルの再構築(実際に実施したメモ)

The Linux Kernel Archives(カーネル開発グループが配布しているオリジナルのカーネル・ソース)

■自分でコンパイルしたログ

◇フォルダ移動
# cd /usr/src/
◇カーネルソースの取得
# wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.32/linux-2.6.32.60.tar.bz2
◇ソース展開
# tar xjvf linux-2.6.32.60.tar.bz2
◇フォルダに入る
# cd linux-2.6.32.60
◇現在のカーネルの設定をコピー
# cp /boot/config-2.6.18-308.el5 .config
◇現在のカーネルの設定を新しい設定に反映させる
# make oldconfig | tee oldconfig.log
◇カーネルコンフィギュレーション
これやら無いと起動時にkernel panic出てびっくりした。
# make menuconfig
General setup --->
[*] enable deprecated sysfs features to support old userspace too
◇設定が反映されているか確認(yになってることを確認)
# cat .config | grep CONFIG_SYSFS_DEPRECATED
CONFIG_SYSFS_DEPRECATED=y
CONFIG_SYSFS_DEPRECATED_V2=y
◇makeする(カーネルとカーネルモジュールのコンパイル)
# make | tee make.log
◇カーネルモジュールのインストール
# make modules_install | tee modules_install.log
◇カーネルのインストール
# make install | tee install.log
◇起動の順番を変える(default値の変更)
# vim /boot/grub/menu.lst
◇再起動
# reboot
◇確認
# uname -r
2.6.32.60

※LPICレベル2の順番だと出来なかったので以下のサイトを参考に実際にコンパイルを行った。
centosのkernel再構築 2.6.18→2.6.37(stable)