インストールメモ |
CentOS 5.Xをx86 PCにインストールしたときのメモです。
なお、WindowsマシンでVMware上でCentOSをインストールするメモはこちらのページに記載します。
種別 | 型式 | 備考 |
CPU | Athlon XP 2500+ | Bartonコア、1.83GHz, FSB 333MHz, 512KB2次キャッシュ |
メモリ | PC2700(DDR333) | |
M/B | MSI 746F Ultra-L | SiS 746FX+963L, DIMMx3, AGP 8x, PCI, LAN Realtek 8201BL |
Video | GeForce 6600 | |
CD/DVD |
CentOS 5.1のDVDイメージをダウンロードし、DVD-Rに焼きました。
続いて、DVDを装填してPCの電源起動、boot:のところで、linux vesa と入力します。[Enter]だけだとインストーラのX画面が化け化けになってしまいました。グラフィックスカードとの相性による原因と思われます。
補足: CentOS 5.5からは、ファイルシステムとしてext4が利用できるようになりました。インストール時にext4を使う場合、上記のboot: において、ext4 をオプションとして指定する必要があるようです。
boot: linux ext4 vesa
CentOSのインストール用CD/DVDイメージには、1枚のCDからネットワークインストールするISOイメージが提供されています。CentOS 5.5用の場合は、"CentOS-5.5-i386-netinstall.iso"というファイル名です。これをCD-Rに焼いて、ブートします。
途中でインストール先の接続種類を聞いてくるので、リストからFTPもしくはHTTPを選択します。
次に、使用するネットワークとIPアドレス割付手段を聞いてくるので使用するネットワーク環境に合わせて選択します(デフォルトはIPv4はDHCP)。それから、接続先のホストアドレスとディレクトリを入力するよう求められるので、CentOSのミラーサーバの1つとそのディレクトリを入力します。(例: Web site nameに、ftp.riken.jp、CentOS directoryに、Linux/centos/5.5/os/i386)
指定した場所から、images/state2.img を取得しインストールを続行します。
boot:のところで、memtest86と入力すると、メモリテストが開始します。
GeForce 6600を搭載しているので、nVIDIAのサイトからLinux用ドライバをダウンロードしインストールしました。
NVIDIA-Linux-x86-256.35.run
インストールにあたっては、Xが起動していると怒られるので、まずランレベルを1にしたところ、ランレベル3でないとだめだと怒られ、init 3でランレベル3でやっとインストールができました。
/etc/X11/xorg.confに追加するため、以下のコマンドを実行しました。
# nvidia-xconfig --composite # nvidia-xconfig --render-accel # nvidia-xconfig --add-argb-glx-visuals -d 24
開発環境として使用する場合、余計なサービスは動いて欲しくないので、取捨選択します。
--levelオプションで指定するランレベルでサービスを無効にします。--levelオプション省略時は全ランレベル指定となります。
# /sbin/chkconfig [--level n] <サービス名> off
ftpサーバはセキュアでないので、sshを使用するのが通例ですが、プログラム開発においてftp機能を使用するものがあるのでインストールします。
# yum install vsftpd ... # # chkconfig vsftpd on vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off #
/etc/sysconfig/network ファイルの HOSTNAME= の行を修正します。
HOSTNAME=myhost
Bootchartというツールを使うと、Linuxのブート処理の状況をロギングし結果を画像ファイルでタイムチャートで示してくれます。
CPU: Athlon XP 2500+ (Bus clockを166MHz→189MHzにOCして2081MHz運転、2800+相当) M/B: MSI 746F-Ultra L(SiS 746FXチップセット) Memory: PC3200(DDR400) Video: GeForce 6600GT AGP
46秒となっています。
まず、起動後18秒目くらいからXorgによるディスク負荷が、20秒目くらいからXorgによるCPU負荷が増えています。CentOSをインストールした場合、デフォルトでは、Linuxが起動するときにrhgb(Red Hat Graphical Boot)が呼ばれ、X Window System上で初期化状況を表示します。これはX Window Systemを起こしているので、コンソールのみの場合に比べて立ち上がり時間が遅くなります。
そこで、まずrhgbを停止します。/etc/grub.confのカーネルオプションにあるrhgbを削除します。
title Bootchart logging root (hd0,0) kernel /vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/VolGroup00/LogVol00 quiet init=/sbin/bootchartd
また、/etc/sysconfig/initファイルのGRAPHICAL=yesをnoに書き換えます。
# Turn on graphical boot GRAPHICAL=no
38秒となっています。17%の短縮です。
起動しているサービスのうち、不要なものを停止します。要否の判断に悩みますが、ネット上の情報を集めて以下のとおりにしました。
autofs 起動(CD-ROM等の自動的なマウントに必要) crond 起動 haldaemon 起動(ネットワークの使用に必要) ip6tables 停止 iptables 停止 kudzu 停止(着脱されたハードウェアを検出し設定) lvm2-monitor 停止(LVMの障害監視) messagebus 起動(X Window Systemの起動に必要) network 起動(ネットワークの使用に必要) nfslock 停止(NFSサーバのファイルロック機構) setroubleshoot 停止(SELinuxのトラブルシュート機能) smartd 停止(ハードディスクの自己診断機能S.M.A.R.Tの異常監視) sshd 起動(リモートからの操作に必要) syslog 起動(システムのログ採取に必要) vsftpd 停止 xfs 起動(X Window Systemに必要)
※その他のサービスは既に停止していました。
34秒となっています。
DHCPの設定も起動時間に含まれます。アドレスを手動設定することで起動時間が早くなります。
設定は、/etc/sysconfig/network-scripts/ifcfg-eth0 で指定します。
DEVICE=eth0 BOOTPROTO=none # dhcp → none に書き換え HWADDR=00:10:DC:XX:XX:XX ONBOOT=yes # DHCP_HOSTNAME=foo.bar 削除 IPADDR=192.168.x.y NETMASK=255.255.255.0 NETWORK=192.168.x.0 BROADCAST=192.168.x.255 GATEWAY=192.168.x.z TYPE=Ethernet USERCTL=no PEERDNS=no IPV6INIT=yes
現状の情報を取得するときには、ifconfigコマンド(HWADDR, IPADDR, NETMASK, NETWORK, BROADCAST)、/etc/resolv.confファイル(DNSサーバ)、route -nコマンド(GATEWAY)で確認します。
36秒となっています。かえって時間が増えたようです。DHCPは意外と初期化時間には影響しないと思われます。
デフォルトでは、起動後にX Window Systemが起動した上にGDMのログイン画面が表示されます。これは、インストール時のデフォルトで起動時のランレベルが5に指定され、ランレベル5ではgdmが起動するようになっているからです。
# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault: :(略) # Run xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon
上記の1行目で起動時のランレベルが5となるよう設定されています。
上記の最後の行で、ランレベル5のときは、/etc/X11/prefdmスクリプトが実行されます。このスクリプトでは、システムのデスクトップ設定に基づき、GNOMEであればxdmが、KDEであればkdmが、それ以外であればxdmを起動しています。
/etc/inittabのinitdefaultをランレベル3とします。
id:3:initdefault:
特定の用途で使用する場合(制御系のシステム等)、起動のたびにユーザがログイン操作するのが煩わしい、遠隔起動するのでそもそもログイン操作する人がいない、ということがあります。この場合、電源ONで自動で立ち上がる設定としたいことがあります。
また、PC上に仮想ソフトウェア上でLinuxを起動するとき、ほとんど個人専用なので、自動ログインすると楽です。
GNOMEデスクトップの機能で自動ログインを設定する方法と、Linuxのランレベルで自動ログイン用の起動を行う方法があります。前者はお手軽ですが、GNOME限定です。ここでは後者の方法で設定します。
ほとんどこのページに記載のあるとおりです。
/etc/inittabの記述で抜粋した設定のコメントで"unused"となっているランレベル4を自動ログインにしてみます。
id:4:initdefault: : l4:4:wait:/etc/rc.d/rc 5 : ax:4:once:/etc/rc.d/rc.autox
起動時のデフォルトランレベルを4にします。また、ランレベル4での起動スクリプトは、ランレベル5と同じとします。ランレベル4のときに起動するスクリプトを/etc/rc.d/rc.autoxとします。
rc.autoxの記述は、参考URLを参照。
複数ユーザが共有するディレクトリも想定し、先に共通のグループdevを作成します。
# /usr/sbin/groupadd -g 1024 dev
ユーザーアカウントをグループ指定をして作成します。
# /usr/sbin/useradd -g dev -c "TAKAHASHI,Toru" torutk
既に作成済みのユーザーアカウントであれば、usermodでグループをdevに変更します。
# /usr/sbin/usermod -g dev torutk
ユーザーアカウントの削除はuserdelコマンドです。-rオプションでホームディレクトリ、メールスプールを合わせて削除します。
# /usr/sbin/userdel -r torutk
ログイン時に設定される環境は、以下のファイルに記述されている内容が反映されたものです。
Xに関するデスクトップ設定、およびフォント設定は、CentOS 5 Xデスクトップ設定メモのページに記述しています。
CentOS 5.1のDVD-Rを入れると、/media/CentOS_5.1_Final にマウントされるので、/etc/yum.repo.d/CentOS-Media.repo の内容を以下に修正し、
[c5-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS_5.1_Final/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-beta
以下コマンドでネットワークのリポジトリは参照せずローカルのメディアを参照します。
# yum --disablerepo=\* --enablerepo=c5-media [command]
公開リポジトリに接続できない環境では、ローカル・エリア・ネットワーク内に公開リポジトリをミラーリングしたサイトを用意します。
LAN上にWebサーバを置き、その下にリポジトリディレクトリを用意します。
http://hoge/centos +-- RPM-GPG-KEY-CentOS-5 +-- 5 +-- addons (公式ミラーでは空となっている) +-- centosplus (カーネルの各種バリエーション、DRBDなど。通常不要) +-- extras (使用頻度の低い?パッケージ群) +-- os | +-- i386 (この下にDVDの内容をそっくりコピー) | +-- CentOS | +-- NOTES | : +-- updates +-- i386 (この下に更新データが置かれるのでrsyncでミラーする)
osの下はDVDイメージ内容そのままなので、DVDからコピーします。
centosディレクトリ直下には公開リポジトリのGPG-KEYファイルをコピーしておきます。
centos$ wget http://ftp.riken.go.jp/Linux/caos/centos/RPM-GPG-KEY-CentOS-5
updatesの下は定期的に更新されるファイルなので、CentOS配布サイトとの間で定期的に同期をとりたいところです。
rsyncでCentOSのミラーサイトと同期するコマンドは以下となります。
$ rsync -avH rsync://ftp.riken.jp/centos/5/updates/i386 \ --delete /var/www/html/centos/5/updates/
これを、cronで定期実行するように設定しておきます。
T.B.D.
yum-utilsパッケージに含まれる reposync コマンドで同期します。rsyncプロトコルが通らない場合、こちらの方法を使用します。
$ reposync -r updates -n -d -p /var/www/html/centos/5/
ディレクトリ構成が違ってしまうので、シンボリックリンクで逃げます。
$ ls -l /var/www/html/centos/5/updates RPMS -> i386/RPMS i386 $
[base] baseurl=http://reposerver.localdomain/centos/$releasever/os/$basearch/ gpgkey=http://reposerver.localdomain/centos/RPM-GPG-KEY-CentOS-5 : [updates] baseurl=http://reposerver.localdomain/centos/$releasever/updates/$basearch/ gpgkey=http://reposerver.localdomain/centos/RPM-GPG-KEY-CentOS-5 :
manによるヘルプ表示を日本語にするには、man-pages-ja パッケージをインストールします。
# yum install man-pages-ja
Fedora 8ベースが必要なので、Fedora 6ベースのCentOS 5ではちょっと厳しいかな、と思ってましたが、RHEL 5用にCompiz Fusionのバイナリパッケージを提供しているサイト「Alcance Libre」がありました。(サイト集に記載)
そのサイトからcompiz-fusionを入れようとしたら、依存関係で25パッケージの更新となります。ちょっと不安ですね。
CentOS 5にはパッケージが用意されているので、yumでインストールします。
nVIDIAドライバのインストールで記述した設定を行っていないと、Compizをインストール後、[システム]メニュー[設定]→[デスクトップ効果]を選び、[デスクトップ効果を有効にする]ボタンを押すと、3Dデスクトップ化はされるものの、アプリケーションウィンドウからウィンドウフレームが消えてしまいます。
標準でCentOSに含まれているJavaは、GCCのものであまり使えないので、SunからLinux版Javaを入手します。
標準でCentOS 5.1に含まれているGCCはVer.4.1.2です。
CentOS 5.3から、標準のGCC 4.1.2とは別にGCC 4.3.2も提供されるようになりました。パッケージ名はgcc43と別名になっており、コマンドも/usr/bin/gcc43と標準のGCC 4.1.2とは重ならないようになっています。
なお、ソースから新しいバージョンのGCCをインストールした記録は、最新版GCCのインストールと活用ページに記述しています。
Eclipse CDTについては、Eclipse CDTメモ ページにCentOSへのインストール方法を含めて記述しています。
GUIツールキットQtは、CentOS 5.1ではVer.3.3.6およびVer.4.2.1が標準パッケージとして提供されています。しかし、ソフトウェア開発では開発対象プログラムによって設計で規定したバージョンを使うことが多いので、任意のバージョンをインストールする必要が生じます。
パッケージ管理機構(RPM)を通さず直接インストールすると、後々の問題の原因となるので、RPMパッケージを作ってインストールします。
Qtのインストールについては、CentOS 5を使う:Qt4.xをインストールする ページに記述しています。
$HOME/.Xresourcesに記述します。
emacs*Background: DarkSlateGray emacs*Foreground: White emacs*pointerColor: Orchid emacs*cursorColor: Orchid emacs*bitmapIcon: on emacs*font: -shinonome-gothic-medium-r-normal-*-12-*-*-*-*-*-*-* emacs*geometry: 81x45+480+30
SKKによる日本語入力環境を設定します。
まず、Apelが必要です。以下URLからダウンロードします。
work$ tar xzf apel-10.7.tar.gz work$ cd apel-10.7 apel-10.7$ make : apel-10.7$ sudo make install : apel-10.7$
次に、DDSKKを以下URLからダウンロードします。
work$ tar xzf ddskk-13.1.tar.gz work$ cd ddskk-13.1 ddskk-13.1$ make : ddskk-13.1$ sudo make install : ddskk-13.1$
SKK辞書を以下URLからダウンロードします。
work$ gunzip SKK-JISYO.L.gz work$ sudo cp SKK-JISYO.L /usr/share/skk/ work$
辞書ファイルのパスを.emacsに設定します。
(setq skk-large-jisyo "/usr/share/skk/SKK-JISYO.L")
課題管理システムの一つTracをインストールします。Tracはpythonで記述されているので、あらかじめpythonをインストールしておきます。また、pythonのインストーラが"python-setuptoolsを使用するので、こちらもインストールします。
# yum install python python-setuptools
tracは、CentOSのパッケージにも用意されていますが、英語版です。別途日本語化作業がインタアクト株式会社によって行われ無償で提供されています。2008/08/13現在、Trac-0.11.ja1 が最新ですのでこれを入手します。
work$ unzip Trac-0.11.ja1.zip : work$ cd Trac-0.11.ja1 Trac-0.11.ja1$ sudo python ./setup.py install :
インストール途中で、Genshiパッケージをインターネットからダウンロードしようとするため、インターネット非接続環境だとインストールが途中でエラーとなります。そのときは、GenshiのPython 2.4用eggを別途入手して先にインストールします。
work$ sudo easy_install Genshi-0.5.1-py2.4-linux-i686.egg :
後でBASIC認証やダイジェスト認証を使う場合、ユーザアカウント作成用コマンドをインストールしておくと便利です。デフォルトではインストールされないので、手動でコピーします。
Trac-0.11.ja1# cp contrib/htdigest.py /usr/lib/python2.4/site-packages/Trac-0.11.ja1-py2.4.egg/trac/ Trac-0.11.ja1# cp contrib/htpasswd.py /usr/lib/python2.4/site-packages/Trac-0.11.ja1-py2.4.egg/trac/
ApacheからCGI(FastCGI、mod_python)経由で実行する方法と、httpでアクセス可能なtrac専用デーモンを実行する方法の2つがあります。簡単なのは後者です。
# tracd --port 8889 --basic-auth *,/var/trac/projects/passwd,trac -e /var/trac/projects -d
この例は、ポート番号8889でtracデーモンを起動し、ユーザ認証手段にBASIC認証(認証ファイルは/var/trac/projects/passwd)、プロジェクト(複数可能)を収容するディレクトリに/var/trac/projectsを指定し、デーモンとして実行しているものです。
/etc/samba/smb.conf に [homes] セクションを記述します。
[homes] comment = Home Directories browseable = no writable = yes
ホームディレクトリ以下のディレクトリ・ファイルには、SELinuxの設定に基づいてセキュリティ・コンテキストが割り当てられます。/etc/selinux/targeted/contexts/files/file_contexts.homedirs に記述されている設定によると、一部ディレクトリ・ファイルを除き、user_u:object_r:user_homt_tとなります。
ホームディレクトリ以下のパターン | SELinux設定 | 備考 |
ホームディレクトリ自体 |
user_u:object_r:user_home_dir_t |
|
wwwディレクトリ以下 | user_u:object_r:httpd_user_content_t | |
webディレクトリ以下 | ||
public_htmlディレクトリ以下 | ||
その他一般のディレクトリ・ファイル | user_u:object_r:user_home_t |
sambaのプロセスはデフォルトではuser_home_t コンテキストにはアクセスが許可されません。そのときは、論理(boolean)パラメータの"samba_enable_home_dirs"を有効にします。(デフォルト無効)
# setsebool samba_enable_home_dirs 1
ホームディレクトリ内のpublic_htmlは、Webサーバ(httpd)からアクセス可能とするため、httpd_sys_content_tコンテキストとなっています。これはSambaからアクセスできないタグです。そこで、httpdおよびSambaの双方からアクセスできるよう、public_content_rw_tコンテキストに変更します。
~$ chcon -t public_content_rw_t public_html -R ~$
ファイルのセキュリティコンテキストは、user_home_tに変更します。
複数のファイルをまとめて変更するコマンド例を以下に紹介します。上述でpublic_htmlのセキュリティコンテキストは設定済みな想定で、そこを除外しています。
~$ find . -type f -o -name "public_html" -prune -exec chcon -t user_home_t {} \; ~$