The Sixwish project

CentOS 5 on Xen(CnetOS5) Domain-U用最小化手順

CentOS 5 on Xen(CnetOS5) 標準インストールマニュアルでインストールしたOSに対して、最小化を行なう。
基本はCentOS 5の標準最小化構成と同じ。

最小構成化

普通にインストールしていても、不要なパッケージが含まれていたりするので、そういうモノを削除する。
最も、ハードウェアによって状況が異なるのでそこはそこで調整する事。

まずは、リモートからputtyを使ってrootでログイン。

login as: root
root@172.16.2.72's password: (表示されないけれどパスワード)
Last login: Thu Aug  2 13:41:16 2007
[root@labsixwish ~]#

パッケージ整理

不要と思われるパッケージを削除します。

[root@labsixwish ~]# rpm -e dhcdbd dhclient dhcpv6_client \
 wvdial isdn4k-utils rp-pppoe irda-utils NetworkManager \
 bluez-gnome bluez-libs bluez-utils \
 ipsec-tools wpa_supplicant yp-tools ypbind nfs-utils nfs-utils-lib \
 firstboot-tui setuptool \
 system-config-network-tui system-config-securitylevel-tui \
 nscd nss_ldap-253-3 dos2unix mkbootdisk mutt \
 apmd acpid smartmontools minicom pcmciautils
 
 (中略)
[root@labsixwish ~]#

上記コマンドで、まとめて不要なパッケージを削除します。

削除したパッケージは以下のようなものです。

dhcdbd、dhclient、dhcpv6_client
DHCP関連のパッケージ。IPアドレスは固定になるので不要。
wvdial、isdn4k-utils、rp-pppoe、irda-utils、NetworkManager
ネットワーク関連の中のダイアルアップやISDN、pppoe、さらに赤外線(irda)など
wireless-toolsも消したかったけれど、他との関連上消えない。
bluez-gnome、bluez-libs、bluez-utils
bluetooth関連のパッケージ。仮想OS上なので使えないだろうという事で削除
ipsec-tools、wpa_supplicant
IPsecVPN関連のパッケージ、使うときになったら入れるので削除
yp-tools、ypbind、nfs-utils、nfs-utils-lib
NIS関連とNFS関連。どちらも滅多に使わないので削除。
firstboot-tui、setuptool、system-config-network-tui、system-config-securitylevel-tui
初回起動時の設定スクリプト、CUIのセットアップツール関連
apmd、acpid、smartmontools、minicom、pcmciautils
電源管理、HDD管理、COMポートなどハードウェア関係
nscd、nss_ldap-253-3、dos2unix、mkbootdisk、mutt
その他、不要だと思ったもの

とりあえず不要だと思うものを消しています。
基本的にWebサーバ化する時に必要そうなものは残してあります。

また、インストールするバージョンや環境によってはインストールされないパッケージなどもありますが、インストールされていないものはコマンドから削除してください。

続けて不要なサービスを止めます。

[root@labsixwish ~]# chkconfig --list
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
conman          0:off   1:off   2:off   3:off   4:off   5:off   6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off
gpm             0:off   1:off   2:on    3:on    4:on    5:on    6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
ibmasm          0:off   1:off   2:off   3:off   4:off   5:off   6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:on    3:on    4:on    5:on    6:off
kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
mcstrans        0:off   1:off   2:on    3:on    4:on    5:on    6:off
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
messagebus      0:off   1:off   2:off   3:on    4:on    5:on    6:off
microcode_ctl   0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off
netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
oddjobd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
pcscd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
portmap         0:off   1:off   2:off   3:on    4:on    5:on    6:off
psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
readahead_early 0:off   1:off   2:on    3:on    4:on    5:on    6:off
readahead_later 0:off   1:off   2:off   3:off   4:off   5:on    6:off
restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
yum-updatesd    0:off   1:off   2:off   3:on    4:on    5:on    6:off
[root@labsixwish ~]# chkconfig cups off
[root@labsixwish ~]# chkconfig gpm off
[root@labsixwish ~]# chkconfig mdmonitor off
[root@labsixwish ~]# chkconfig netfs off
[root@labsixwish ~]# chkconfig rdisc off
[root@labsixwish ~]# chkconfig yum-updatesd off
[root@labsixwish ~]# chkconfig --list
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off
conman          0:off   1:off   2:off   3:off   4:off   5:off   6:off
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off
cups            0:off   1:off   2:off   3:off   4:off   5:off   6:off
gpm             0:off   1:off   2:off   3:off   4:off   5:off   6:off
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off
ibmasm          0:off   1:off   2:off   3:off   4:off   5:off   6:off
ip6tables       0:off   1:off   2:on    3:on    4:on    5:on    6:off
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off
irqbalance      0:off   1:off   2:on    3:on    4:on    5:on    6:off
kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off
mcstrans        0:off   1:off   2:on    3:on    4:on    5:on    6:off
mdmonitor       0:off   1:off   2:off   3:off   4:off   5:off   6:off
mdmpd           0:off   1:off   2:off   3:off   4:off   5:off   6:off
messagebus      0:off   1:off   2:off   3:on    4:on    5:on    6:off
microcode_ctl   0:off   1:off   2:on    3:on    4:on    5:on    6:off
netfs           0:off   1:off   2:off   3:off   4:off   5:off   6:off
netplugd        0:off   1:off   2:off   3:off   4:off   5:off   6:off
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off
oddjobd         0:off   1:off   2:off   3:off   4:off   5:off   6:off
pcscd           0:off   1:off   2:on    3:on    4:on    5:on    6:off
portmap         0:off   1:off   2:off   3:on    4:on    5:on    6:off
psacct          0:off   1:off   2:off   3:off   4:off   5:off   6:off
rdisc           0:off   1:off   2:off   3:off   4:off   5:off   6:off
readahead_early 0:off   1:off   2:on    3:on    4:on    5:on    6:off
readahead_later 0:off   1:off   2:off   3:off   4:off   5:on    6:off
restorecond     0:off   1:off   2:on    3:on    4:on    5:on    6:off
saslauthd       0:off   1:off   2:off   3:off   4:off   5:off   6:off
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off
yum-updatesd    0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@labsixwish ~]#

さて、上からなにを止めたかというと……

cups
印刷関係。プリンタとは縁遠い存在なので切断。
gpm
マウスは繋がっているけれど、使っていないので止める。
mdmonitor
ソフトウェアRAID の状態監視サービス
netfs、netfs
UNIX系OSでよく使われているNFS(network file system)サーバーを関係。
rdisc
ルートディスカバリー。ルート検知用。ちょくちょく変わるわけでも無いので止める。
rpcgssd、rpcidmapd、rpcsvcgssd
nfsを使うときにRPCでどうこうするためのものらしい。
yum-updatesd
勝手にアップデートされるのも困りものの場合があるので止めておく。

という感じ。

使用言語の変更

インストール時に英語を基本言語として選択しているため、環境が英語(en_US.UTF-8)になっています。
憶えていれば特に問題は無いのですが、何かと面倒な事も多いので、日本語(ja_JP.UTF-8)に変更します。

[root@labsixwish ~]# cp /etc/sysconfig/i18n /etc/sysconfig/~i18n
[root@labsixwish ~]# vi /etc/sysconfig/i18n
*** /etc/sysconfig/~i18n   YYYY-mm-dd --:--:--.000000000 +0900
--- /etc/sysconfig/i18n YYYY-mm-dd --:--:--.000000000 +0900
***************
*** 1,2 ****
!       LANG="en_US.UTF-8"
!       SYSFONT="latarcyrheb-sun16"
--- 1 ----
!       LANG="ja_JP.UTF-8"
[root@labsixwish ~]# 

再起動

いろいろと消したりしているので、ここで再起動を行なう。

[root@labsixwish ~]# shutdown -r now
[root@labsixwish ~]# logout

再起動後は再度ログインする。

アップデート

インストール直後ですが、特に設定することもないので、初回アップデートをかけます。
それなりにセキュリティアップデートなども含まれているはずなので、初回インストール後には必ず実行することをお奨め。
運用に入ってからは、試験してから本番もアップデートするほうがいいです。パッケージングに失敗して、confが飛ぶというバグが含まれていたこともありますので……

yumとは

Linux版のWindowsUpdateみたいなモノ。とか書くと怒られそうですが、そんなような物だと思っておけば問題は少ないのかも。

正確には、rpm系ディストリビューションで採用されているパッケージ管理ツールの1つです。親戚関係にaptなどがあります。

[root@labsixwish ~]# yum update
[root@labsixwish ~]# yum update
Loading "installonlyn" plugin
Setting up Update Process
Setting up repositories

中略

Total download size: XX M
Is this ok [y/N]: y
Downloading Packages:

中略

warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897
Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
Is this ok [y/N]: y

中略

Complete!
[root@labsixwish ~]# 

ntpd

インストール

yumを使用して、パッケージを取得、インストール。

[root@labsixwish ~]# yum -y install ntp
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
  中略

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 ntp                     i386       4.2.2p1-5.el5    base              1.3 M

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 1.3 M
Downloading Packages:
(1/1): ntp-4.2.2p1-5.el5. 100% |=========================| 1.3 MB    xx:xx
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: ntp                          ######################### [1/1]

Installed: ntp.i386 0:4.2.2p1-5.el5
Complete!
[root@labsixwish ~]#

設定

ntpは、GPSや原子時計を使って時刻を正確に刻んでいるntpサーバー(Stratum1)などから、ネットワーク経由で時刻情報を得て自分の時間を合わせるという仕組みを持っています。
よって、設定ではこの上位ntpのサーバーを指定したりします。

[root@labsixwish ~]# cp /etc/ntp.conf /etc/ntp.conf.org
[root@labsixwish ~]# vi /etc/ntp.conf
*** /etc/ntp.conf.org   YYYY-mm-dd --:--:--.000000000 +0900
--- /etc/ntp.conf       YYYY-mm-dd --:--:--.000000000 +0900
***************
*** 14,22 ****

        # Use public servers from the pool.ntp.org project.
        # Please consider joining the pool (http://www.pool.ntp.org/join.html).
!       server 0.rhel.pool.ntp.org
!       server 1.rhel.pool.ntp.org
!       server 2.rhel.pool.ntp.org

        #broadcast 192.168.1.255 key 42         # broadcast server
        #broadcastclient                        # broadcast client
--- 17,25 ----

        # Use public servers from the pool.ntp.org project.
        # Please consider joining the pool (http://www.pool.ntp.org/join.html).
!       server ntp1.jst.mfeed.ad.jp
!       server ntp2.jst.mfeed.ad.jp
!       server ntp3.jst.mfeed.ad.jp

        #broadcast 192.168.1.255 key 42         # broadcast server
        #broadcastclient                        # broadcast client

[root@labsixwish ~]# 

編集後、ntpdateを使用してPCの時刻を合わせます。これをしない場合、ntpサーバーとの時間差が大きすぎてntpdが時刻あわせをしてくれない……ということもあるからです。
時刻あわせ後、サービスとして自動起動するようになるまで設定してしまいましょう。

[root@labsixwish ~]# ntpdate ntp1.jst.mfeed.ad.jp
dd MMM --:--:-- ntpdate[----]: step time server xxx.xxx.xxx.xxx offset ---.------ sec
[root@labsixwish ~]# hwclock --systohc
[root@labsixwish ~]# /etc/rc.d/init.d/ntpd start
ntpdを起動中:                                              [  OK  ]
[root@labsixwish ~]# chkconfig ntpd on
[root@labsixwish ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 ntp1.jst.mfeed. xxx.xxx.xxx.xxx  2 u    9   64    1    7.353  -1414.6   0.001
 ntp2.jst.mfeed. xxx.xxx.xxx.xxx  2 u    8   64    1    6.994  -1414.7   0.001
 ntp3.jst.mfeed. xxx.xxx.xxx.xxx  2 u    7   64    1    7.031  -1414.6   0.001
 LOCAL(0)        LOCAL(0)        10 l    6   64    1    0.000    0.000   0.002
[root@labsixwish root]# 

とりあえず、ここまでで最小構成化が完了となります。


このまま構築を行なっても良いのですが、ここでOSイメージのバックアップを取っておく事を勧める。
なぜかと言えば、構築に失敗した場合や、追加で構築する場合にここの時点まで終わった状態から再開できるためです。