開発用の純真無垢で高速なVMの作り方
CentOS 5.5をベースに、サクサク動く快適VMの作り方。
インストールは済んでいるものとする。
1. beep音を消す
デフォルトインストール時ではやけにBeep音が鳴ってうるさいので消す。
コンソールのBeep音を消す
/etc/inputrc に「set bell-style none」を記述する。
$ vi /etc/inputrc set bell-style none <- none にする
同様に、ターミナルのプロファイルからもbeep音が鳴らないようにする。
ターミナルを開き、[Edit] -> [Profiles] -> [Edit] -> General タブの [Terminal bell] チェックボックスをオフにする。
次にシステム全体でスピーカー関連を使用しないよう、pcspkr モジュールを読み込まないようにする。
$ vi /etc/modprobe.d/blacklist .... blacklist pcspkr <- 追加
2. 不要なサービスの停止
bluetooth 等不要なサービスが多数あるので、必要なもの以外全て停止する。
参考 : http://kajuhome.com/service_list.shtml
色々停止していった結果、ランレベル3で起動するサービスは以下のとおり。
$ chkconfig --list | grep 3:on anacron 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 crond 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:on 3:on 4:on 5:on 6:off irqbalance 0:off 1:off 2:on 3:on 4:on 5:on 6:off lvm2-monitor 0:off 1:on 2:on 3:on 4:on 5:on 6:off messagebus 0:off 1:off 2:on 3:on 4:on 5:on 6:off network 0:off 1:off 2:on 3:on 4:on 5:on 6:off rawdevices 0:off 1:off 2:off 3:on 4:on 5:on 6:off readahead_early 0:off 1:off 2:on 3:on 4:on 5:on 6:off rpcgssd 0:off 1:off 2:off 3:on 4:on 5:on 6:off rpcidmapd 0:off 1:off 2:off 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 vmware-tools 0:off 1:off 2:on 3:on 4:off 5:on 6:off xfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
3. IPv6 の無効化
IPv6は無用の長物なので消す。
有効にしていると名前解決などで時間を消費する場合があるので無用どころか害悪。
まず /etc/sysconfig/network に NETWORKING_IPV6=no を追加する。
$ vi /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no <- 追加 HOSTNAME=localhost.localdomain
次に、IPv6に関するモジュールを一切読み込まないよう、modprob.conf に追記する。
$ vi /etc/modprob.conf alias net-pf-10 off <- 追加 alias ipv6 off <- 追加
以上で IPv6 が消え去る。
4. SELinux を切る
インストール時に切っていなければ切る。
セキュリティ?開発用の仮想マシンでは設定しない。
別レイヤーに任せ、できるだけ仮想マシン内でのトラブルを防ぐ。
$ vi /etc/selinux/config ... SELINUX=disabled <- disabled にする ...
5. 不要な仮想コンソールを消す
使わなければ消す。
$ vi /etc/inittab .... # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 #2:2345:respawn:/sbin/mingetty tty2 <- コメントアウト #3:2345:respawn:/sbin/mingetty tty3 <- コメントアウト #4:2345:respawn:/sbin/mingetty tty4 <- コメントアウト #5:2345:respawn:/sbin/mingetty tty5 <- コメントアウト #6:2345:respawn:/sbin/mingetty tty6 <- コメントアウト ...
6. 不要なデバイスの削除
VMWarePlayer は勝手にCDドライブやフロッピードライブを付けるので、[仮想マシンの設定] の ハードウェアタブで消す。
必要なものは以下のとおり。設定はお好みで。
メモリ | 1024MB |
プロセッサ | 2 |
ハードディスク(SCSI) | 20 GB |
ネットワークアダプタ | ブリッジ |
ディスプレイ | 自動検出 |
7. /tmp の読み書きに実メモリを使うようにする
頻繁にIOが発生して、かつ揮発しても意味のないデータが残る /tmp を tmpfs でマウントする。
/etc/fstab にマウントする記述を書けば良い。
$ vi /etc/fstab ... tmpfs /tmp tmpfs defaults 0 0 <- 追加 ...
/tmp への read/write は一切IOが発生しなくなる。
ビルドなど重い処理を行う際に効果絶大。
8. sbin にパスを通す
デフォルトでは sbin にパスが通ってないので通す。
一般ユーザー、rootユーザー両者に。
$ vi ~/.bash_profile ... PATH=$PATH:$HOME/bin:/sbin <- 追加 ...
9. VMが実メモリを使うようにする
VMのバージョンによっては仮想マシンが実メモリを使用せず、HDDを用いてしまう。
結果IOが大量に発生してひどいパフォーマンスになってしまうので、実メモリを使うよう vmx ファイルを書き換える。
仮想マシンワーキングディリクトリの CentOS.vmx をテキストエディタで開き、以下の二行を追加する。
host.TSC.noForceSync = "TRUE"
mainMem.useNamedFile = "FALSE"
これでホストの実メモリを使用するようになる。
10. OS起動時に出る「udevd[2135]: add_to_rules : unknown Key 'ATTRS{hogehoge}'」を消す
やけに目に付くので消去する。
/etc/udev/rules.d/99-vmware-scsi-udev.rules 内の以下の2行をコメントアウトする。
$ vi /etc/udev/rules.d/99-vmware-scsi-udev.rules # Debian systems # ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware " , ATTRS{model}=="Virtual disk ", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'" ↑コメントアウト # SuSE / Ubuntu systems # ACTION=="add", SUBSYSTEMS=="scsi", ATTRS{vendor}=="VMware, " , ATTRS{model}=="VMware Virtual S", RUN+="/bin/sh -c 'echo 180 >/sys$DEVPATH/device/timeout'" ↑コメントアウト
これで不要なメッセージが消える。