温度監視

CPUの温度、HDDの温度を監視するための設定メモ。


まずは、監視するためのツールをインストール。

# yum install lm_sensors hddtemp

・lm_sensors:CPUの温度や電圧などのセンサ値を取得するためのもの。
・hddtemp :HDDの温度を取得するためのもの。


次に、lm_sensorsの設定。
以下のコマンドを入力すると、

# sensors-detect


ずらずら〜とメッセージが表示されます。
時々、選択子が表示されますが、全てEnterキーを連打。

# sensors-detect revision 4609 (2007-07-14 09:28:39 -0700)

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

We can start with probing for (PCI) I2C or SMBus adapters.
Do you want to probe now? (YES/no):  
Probing for PCI bus adapters...
Use driver `i2c-i801' for device 0000:00:1f.3: Intel 82801BA ICH2

We will now try to load each adapter module in turn.
Module `i2c-i801' already loaded.
If you have undetectable or unsupported adapters, you can have them
scanned by manually loading the modules before running this script.

To continue, we need module `i2c-dev' to be loaded.
Do you want to load `i2c-dev' now? (YES/no): 
Module loaded successfully.

We are now going to do the I2C/SMBus adapter probings. Some chips may
be double detected; we choose the one with the highest confidence
value in that case.
If you found that the adapter hung after probing a certain address,
you can specify that address to remain unprobed.

    ----- 途中カット! -----

I will now generate the commands needed to load the required modules.
Just press ENTER to continue: 

To make the sensors modules behave correctly, add these lines to
/etc/modprobe.conf:

#----cut here----        <-(1)
# I2C module options
alias char-major-89 i2c-dev
#----cut here----

To load everything that is needed, add this to some /etc/rc* file:

#----cut here----        <-(2)
# Chip drivers
modprobe w83627hf
# sleep 2 # optional
/usr/bin/sensors -s # recommended
#----cut here----

If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones! You really
should try these commands right now to make sure everything is
working properly. Monitoring programs won't work until the needed
modules are loaded.

Do you want to overwrite /etc/sysconfig/lm_sensors? (YES/no): 

最後まで完了したら、メッセージ中の(1)の部分を/etc/modprobe.confに付け加える。
(2)に関しては、自動的に/etc/sysconfig/lm_sensorsに追記されるので何もしなくていいらしい。


次に、ハードディスクの温度を監視するためのhddtempを設定。
こちらはいたって簡単、/etc/sysconfig/hddtempに監視するハードディスクの設定を記述するだけ。

#
# hddtemp(8) daemon options.  Add at least the disk(s) you want to monitor here.
#
##HDDTEMP_OPTIONS="-l 127.0.0.1"
HDDTEMP_OPTIONS="-f /etc/hddtemp.db -l 127.0.0.1 /dev/sda"

HDDTEMP_OPTIONSの最後に、監視するハードディスクを/dev/sdaとか/dev/sdbとかで記述します。
複数ある場合は、半角スペースで区切って記述します。


これで、各種センサー値を取得できるようになったので、
最後に、それを表示するためのGNOME用のアプレットをインストール。

# yum install gnome-applet-sensors


これで、めでたくステータスバー(?)にCPUやHDDの温度を表示可能に!!

キャッシュネームサーバ(DNS)

LAN内からインターネット出きるようにするために、Fedora8にBINDをキャッシュネームサーバとしてインストール。
(Linuxをルータとして使用する場合)


まずは、BINDをインストール

# yum install bind bind-chroot caching-nameserver

しかし、caching-nameserverでエラーが、、、
どうもFedora8には、caching-nameserverパッケージが用意されていないようです。


仕方ないので、以下のサイトとFedora7のcaching-nameserverパッケージの内容を参考に手動で設定。
インターネットサーバ構築 講義メモ - ネームサーバの設定
インターネットサーバ構築 講義メモ - キャッシュ専用ネームサーバ


まず、bind-chrootがインストールしている場合、bindの基準フォルダが

/var/named/chroot/

に設定されます。
以下の設定ファイルのパスも、すべて上記フォルダからの相対パスとなります。


1./etc/name.confを以下のように変更

//
// named.caching-nameserver.conf
//
// Provided by Red Hat caching-nameserver package to configure the
// ISC BIND named(8) DNS server as a caching only nameserver 
// (as a localhost DNS resolver only). 
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
// DO NOT EDIT THIS FILE - use system-config-bind or an editor
// to create named.conf - edits to this file will be lost on 
// caching-nameserver package upgrade.
//
options {
//	listen-on port 53 { 127.0.0.1; };
//	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
//	allow-query     { localhost; };
	allow-query     { localnets; };
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
//view localhost_resolver {
//	match-clients 	   { localhost; };
//	match-destinations { localhost; };
//	recursion yes;
//	include "/etc/named.rfc1912.zones";
//};

include "/etc/named.rfc1912.zones";
include "/etc/named.rfc3330.zones";


2./etc/named.rfc1912.zonesが、caching-nameserverでの定義と違うため以下のように変更。

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package 
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// 
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "." IN {
	type hint;
	file "named.ca";
};

zone "localdomain" IN {
	type master;
	file "localdomain.zone";
	allow-update { none; };
};

zone "localhost" IN {
	type master;
	file "localhost.zone";
	allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.local";
	allow-update { none; };
};

zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
	file "named.ip6.local";
	allow-update { none; };
};

zone "255.in-addr.arpa" IN {
	type master;
	file "named.broadcast";
	allow-update { none; };
};

zone "0.in-addr.arpa" IN {
	type master;
	file "named.zero";
	allow-update { none; };
};


3.不必要な問い合わせを行わないように、/etc/named.rfc1912.zonesをベースに/etc/named.rfc3330.zonesを作成

// Private addresses
zone "10.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "16.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "17.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "18.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "19.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "20.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "21.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "22.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "23.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "24.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "25.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "26.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "27.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "28.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "29.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "30.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "31.172.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "168.192.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// Loopback addresses
zone "127.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// Link local addresses
zone "254.169.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// TEST-NET
zone "2.0.192.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// 6to4 Relay Anycast (RFC 3068)
zone "99.88.192.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// Network Interconnect Device Benchmark Testing
zone "18.198.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "19.198.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// Multicast addresses
zone "224.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "225.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "226.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "227.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "228.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "229.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "230.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "231.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "232.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "233.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "234.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "235.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "236.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "237.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "238.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "239.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// Class-E addresses
zone "240.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "241.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "242.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "243.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "244.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "245.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "246.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "247.in-addr.arpa" IN {
	type master;
	file "named.zero";
};

// Unassigned addresses
zone "248.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "249.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "250.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "251.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "252.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "253.in-addr.arpa" IN {
	type master;
	file "named.zero";
};
zone "254.in-addr.arpa" IN {
	type master;
	file "named.zero";
};


4.caching-nameserverと同じになるように、/var/named/に以下のファイルを作成
localdomain.zone

$TTL	86400
@		IN SOA	localhost root (
					42		; serial (d. adams)
					3H		; refresh
					15M		; retry
					1W		; expiry
					1D )		; minimum
	         IN NS		localhost
localhost	IN A		127.0.0.1


localhost.zone

$TTL	86400
@		IN SOA	@       root (
					42		; serial (d. adams)
					3H		; refresh
					15M		; retry
					1W		; expiry
					1D )		; minimum

	        IN NS		@
	 	IN A		127.0.0.1
		IN AAAA		::1


named.broadcast

$TTL    86400
@               IN SOA  localhost.      root.localhost. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
	IN	NS	localhost.


named.zero

$TTL    86400
@               IN SOA  localhost.      root.localhost. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
	IN	NS	localhost.


named.local

$TTL	86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      localhost.
1       IN      PTR     localhost.


named.ip6.local

$TTL	86400
@       IN      SOA     localhost. root.localhost.  (
                                      1997022700 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
       IN      NS      localhost.
1      IN      PTR     localhost.


5.bindの各設定ファイルは、アクセス権のグループが"named"でないとエラーが発生して起動しないため、グループを変更

# chgrp named /var/named/chroot/var/named/*


異常で、設定は完了。後は、再起動して正常に動作するか確認するだけ。

Fedora 8 インストール

不定期に更新する日記ですが、またまたFedora 8が公開されたので、インストール&設定メモメモ。


理研のサーバから必要なイメージをダウンロード、DVDにやいてインストール。

http://ftp2.riken.jp/fedora/releases/8/Fedora/i386/iso/


インストール自体は、今まで通り画面にしたがって進めていく。
これでめでたくインストール完了。

VNC設定

クライアントからリモートデスクトップできるようにVNCサーバの設定。

vncのパッケージのインストール

# yum install vncserver

xinetdの設定

/etc/servicesへVNCへ接続するためのポートを記述。
ここでは、解像度ごとに数種類登録しています。
また、ポート番号は、5900+ディスプレイ番号になります。

# Local services
vnc-800x600x24		5901/tcp	# vnc  800x 600 24 bit
vnc-1024x768x24		5902/tcp	# vnc 1024x 768 24 bit
vnc-1280x1024x24	5903/tcp	# vnc 1280x1024 24 bit

また、xinetdへサービスを登録するために、/etc/xinetdに以下のファイルを作成。
ここでは、3つの解像度用に3つ登録しています。

  • vnc-800x600x24
service vnc-800x600x24
{
	disable		= no
	socket_type	= stream
	wait		= no
	user		= nobody
#	group		= tty
	server		= /usr/bin/Xvnc
	server_args	= -inetd -geometry 800x600 -depth 24 -query localhost -once PasswordFile=/etc/vnc_passwd
	log_on_failure	+= USERID
}
  • vnc-1024x768x24
service vnc-1024x768x24
{
	disable		= no
	socket_type	= stream
	wait		= no
	user		= nobody
#	group		= tty
	server		= /usr/bin/Xvnc
	server_args	= -inetd -geometry 1024x768 -depth 24 -query localhost -once PasswordFile=/etc/vnc_passwd
	log_on_failure	+= USERID
}
  • vnc-1280x1024x24
service vnc-1280x1024x24
{
	disable		= no
	socket_type	= stream
	wait		= no
	user		= nobody
#	group		= tty
	server		= /usr/bin/Xvnc
	server_args	= -inetd -geometry 1280x1024 -depth 24 -query localhost -once PasswordFile=/etc/vnc_passwd
	log_on_failure	+= USERID
}

vncパスワードの設定

セキュリティのために、接続時にパスワードを入力するように設定。

# vncpasswd /etc/vnc_passwd
Password:
Verify:
# chmod 644 /etc/vnc_passwd

セキュリティ設定2

インターネット側から使えるとちょっと危険なのでLAN内に制限します。
制限する方法としては、hosts.allow,hosts.denyを使う方法と、サービスに記述する方法があります。
ここでは、hosts.allow,hosts.denyを使うことにします。
参照の順番は、hosts.allowが参照され、ここに記述がないものについては、hosts.denを参照して許可・不許可が決まります。
...allow、deny両方にないサービスは許可?
vncの設定は、、、

  • /etc/hosts.allow
#
# hosts.allow	This file describes the names of the hosts which are
#		allowed to use the local INET services, as decided
#		by the '/usr/sbin/tcpd' server.
#
Xvnc : 172.16.0.100
Xvnc : 172.16.1.
  • /etc/hosts.deny
#
# hosts.deny	This file describes the names of the hosts which are
#		*not* allowed to use the local INET services, as decided
#		by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!
ALL : ALL

gdm設定

最後に、gdmの設定。
gdmの設定ファイルでXDMCPを有効にします。

  • /etc/gdm/custom.conf
[xdmcp]
Enable=true

これで、クライアントからリモート接続できるはず。

いつの間にかFC6

FC5をインストールしてから放置状態だったんだけど、、、気がつけばFC6に!!
早速、FC5で運用しているルータ兼ファイルサーバをFC6に入れ替えようと思います。

http://fedora.redhat.com


まずは、ダウンロードから。
Fedora ProjectのHP、または国内のミラーサーバからインストールディスクイメージを取得。

http://fedora.redhat.com/Download/

http://ftp.riken.jp/Linux/fedora/core/

http://ftp.kddilabs.jp/Linux/packages/fedora/core/

FC5でLegacy nVidiaドライバを使う

最新のnVidiaのドライバでは、古いTNT2チップがサポートされていないため、
標準の遅い"nv"ドライバを使わないといけない。
どうにかして、FC5上でTNT2にnVidiaのドライバを使うための方法を調査。

必要なもの

NVIDIA-Linux-1.0-7174-pkg1.run
nv-legacy-linux-2.6.16.patch
kernel-devel-<バージョン>.rpm

kernel-develインストール

現在のKernelが2.6.16-1.2122_FC5.i686なので、それに該当するKernel-develをインストール。

パッチ

以下のフォーラムからNVIDIAドライバのパッチを取得。
nV News Forums - UNOFFICIAL patch for 7174 and linux2.6.166
(http://www.nvnews.net/vbulletin/showthread.php?t=67068)

nVidiaドライバインストール

1.ドライバ解凍&パッチ適用
以下の手順にてドライバを解凍し、パッチを適用後、ドライバをインストール。
ただし、FC5ではカーネルソースの展開されるパスが変わっているため、インストール時に明示的に指定する必要がある。

# NVIDIA-Linux-x86-1.0-7174-pkg1.run --extract-only
# cd NVIDIA-Linux-x86-1.0-7174-pkg1/
# patch -p0 < nv-legacy-linux-2.6.16.patch
# ./nvidia-installer --kernel-source-path=/usr/src/kernels/<バージョン>


2.モジュールのコピー
FC5では、xorg関連のパスも変わっているため、手動でモジュール等をコピー。

モジュール:nvidia_drv.o, nvidia_drv.so

# cd /usr/X11R6/lib/modules/drivers
# cp * /usr/lib/xorg/modules/drivers/

モジュール:libglx.so

# cd /usr/lib/xorg/modules/extensions
# mv libglx.so old_libglx.so
# ln -s /usr/X11R6/lib/modules/drivers/libglx.so.1.0.7174 ./libglx.so


3.xorg設定変更
ディスプレイのドライバとして"nv"ではなく"nvidia"を使うようにxorg.confを修正。

/etc/X11/xorg.conf

Section "Module"
	Load  "dbe"
	Load  "extmod"
	Load  "fbdevhw"
	Load  "glx"
	Load  "record"
	Load  "freetype"
	Load  "type1"
	Load  "dri"
EndSection

    ・・・

Section "Device"
	Identifier  "Videocard0"
	Driver      "nv"
	VendorName  "Videocard vendor"
	BoardName   "nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]"
EndSection

Section "Module"
	Load  "dbe"
	Load  "extmod"
	Load  "fbdevhw"
	Load  "glx"
	Load  "record"
	Load  "freetype"
	Load  "type1"
#	Load  "dri"
EndSection

    ・・・

Section "Device"
	Identifier  "Videocard0"
	Driver      "nvidia"
	VendorName  "Videocard vendor"
	BoardName   "nVidia Corporation NV5M64 [RIVA TNT2 Model 64/Model 64 Pro]"
EndSection

以上でインストール終了。
再起動すればnVidiaのロゴが表示されて画面描画が早くなります。



・・・と言いたいところだが、そうはいかず、起動途中でエラーが発生し、xorgが起動しないはず。
SELinuxの設定を"Permissive"に変えれば正常に動作することから、
原因は新しいモジュールに、SELinuxのラベルが付いていないためと思われる。
が、SELinuxには詳しくないため、この調査はまた後日。

カーネルソースの取得

カーネルのソースは、yumでは取得できない。

以下の方法で取得します。
1.カーネルソースを取得するためのツールをインストール。

# yum install yum-utils

2.カーネルのソースを取得。

$ yumdownloader --source kernel

sourceリポジトリが有効になっていない場合は、

$ yumdownloader --source --enbalerepo=updates-source kernel

カーネルソースのインストール場所

/sr/src/kernels/<カーネルバージョン>/


参考
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/853downsrpm.html