-->

2010-01-31

munin-nodewin32のmemoryのswap

この記事は munin-nodewin32 の memory の swap に関しての参考です。

Visual C++ 2008 Express Edition でテストしました。
munin-nodewin32/svnroot/munin-node/src/plugins/memory/MemoryMuninNodePlugin.cpp
-    ".\n", mem.ullTotalPhys-mem.ullAvailPhys, mem.ullTotalPageFile-mem.ullAvailPageFile, mem.ullAvailPhys);
+    ".\n", (mem.ullTotalPhys-mem.ullAvailPhys), ((mem.ullAvailPageFile<=mem.ullTotalPageFile)?(mem.ullTotalPageFile-mem.ullTotalPhys-mem.ullAvailPageFile+mem.ullAvailPhys):0), (mem.ullAvailPhys));
http://support.microsoft.com/kb/277021/ja

予測(間違っています)
コミットチャージトータル = メモリートータル + スワップトータル
スワップトータル = コミットチャージトータル - メモリートータル

コミットチャージ空き = メモリー空き + スワップ空き
スワップ空き = コミットチャージ空き - メモリー空き

スワップ現在 = スワップトータル - スワップ空き
             = コミットチャージトータル - メモリートータル - コミットチャージ空き + メモリー空き

cygwin の /proc/meminfo と値が違うので間違っています。
メモリの利用とスワップファイルの利用の合計ではないです。
# 間違っている
(ullTotalPageFile - ullAvailPageFile) >= (ullTotalPhys - ullAvailPhys)

こちらは確認した限りでは、あっています。
ullTotalPhys + pagefile.sysのサイズ = ullTotalPageFile

2010-01-29

kurobox-hgのバックアップ

この記事は u-boot をインストールした kurobox-hg に関する参考です。
この記事はkurobox- hgにu-bootを入れました。の補足です。

u-boot で em-mode に入ります。
ネットカットを別サーバーで起動し kurobox-hg を起動します。
nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666

入力した文字の内容です。
s
run writeng
run emboot

em-mode で起動後に telnet で接続します。
telnet 192.168.0.2

入力したコマンドです。
圧縮ファイル作成には時間がかかります。
終了後ダウンロードして解凍テストなどを行います。
成功している場合 gzip.2010-01-29.err は0バイトです。
$ mkdir /root/hda1
$ mount /dev/hda1 /root/hda1
$ mkdir /root/hda3
$ mount /dev/hda3 /root/hda3
$ cd /root/hda3
$ (tar cvf - ../hda1/ 2>tar.2010-01-29.err | gzip -9 -f - 1>./hda1.2010-01-29.tar.gz 2>gzip.2010-01-29.err) &
$ echo -n 'OKOK' > /dev/fl3
$ echo -n "OKOK" > /dev/mtdblock2 
$ reboot

chrootのテスト(glibc-2.10.1-r1)
失敗しますが解決方法の1つはglibcのバージョンダウンです。
u-boot では既存の古いカーネルを通さないので、この例の場合は無関係です。
$ mount /dev/hda1 /mnt/gentoo
$ mount -t proc none /mnt/gentoo/proc
$ mount -o bind /dev /mnt/gentoo/dev
$ chroot /mnt/gentoo /bin/bash
chroot: No such file or directory
$ cd /
$ tar xvzf /tmp/EM_mode_binaries.tar.gz
bin/
bin/sfdisk
bin/fdisk
bin/bzip2
bin/date
bin/chroot
$ chroot /mnt/gentoo /bin/bash
FATAL: kernel too old

http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=1&chap=6
http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?cmd=read&page=LinkStation%2F%E7%8E%84%E7%AE%B1%2FBootLoader%2FU-Boot&word=uboot#ueac0094
http://genbako.vodapone.com/



追記。リードオンリーにしてhda1の"/"からバックアップしたほうが良い。
mkdir /root/hda1
mount -o ro /dev/hda1 /root/hda1

mkdir /root/hda3
mount /dev/hda3 /root/hda3

cd /root/hda3/
mkdir 2011-05-29

cd /root/hda1/
(tar cvf - . 2>/root/hda3/2011-05-29/tar.2011-05-29.err | gzip -9 -f - 1>/root/hda3/2011-05-29/hda1.2011-05-29.tar.gz 2>/root/hda3/2011-05-29/gzip.2011-05-29.err) &

mod_extract_forwarded

この記事は apache の手前にリバースプロキシを設置する場合の参考です。

.htaccess の allow,deny は mod_rpaf では無視されます。
nginx に X-Forwarded-For を設定します。
$ less /etc/nginx/nginx.conf
...
location ~ "\\.(?:php|cgi)$" {
        proxy_pass        http://localhost:8081;
        proxy_set_header  X-Forwarded-For  $remote_addr;
}
...

mod_extract_forwarded をインストールします。
mod_extract_forwarded は apache2 の時はソースを書き換えてコンパイルするというのは昔の話のようです。
$ sudo emerge -av www-apache/mod_extract_forwarded

configtest でエラーが出るので mod_proxy をインストールします。
/etc/make.conf
$ grep ^APA /etc/make.conf
APACHE2_MODULES="${APACHE2_MODULES} proxy"

/etc/conf.d/apache2
$ diff /etc/conf.d/apache2.2010-01-29 /etc/conf.d/apache2
35c35
< APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D PHP5 -D RPAF"
---
> APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D PHP5 -D PROXY -D EXTRACT_FORWARDED"

確認します。
$ cat /var/www/localhost/htdocs/.htaccess
Order Allow,Deny
Allow from 192.168.0.0/16
Allow from 127.0.0.0/8

mod_rpaf の場合、.htaccessで拒否しても外部からアクセスするとアクセス可能でした。
mod_extract_forwarded の場合 .htaccess で拒否すれば権限無しになりました。
[29/Jan/2010:07:46:28 +0900] が mod_extract_forwarded インストール後のアクセスです。
xxx.xxx.xxx.xxxは同じIPアドレスです。
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:30:49 +0900] "GET /phpinfo.php HTTP/1.0" 200 52986
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:30:51 +0900] "GET /phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.0" 200 2524
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:31:03 +0900] "GET /phpinfo.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.0" 200 2146
xxx.xxx.xxx.xxx - - [29/Jan/2010:07:46:28 +0900] "GET /phpinfo.php HTTP/1.0" 403 274

2010-01-25

Memory Fox

これは Firefox に関する参考です。

インストールすると使用するメモリが減りました。
https://addons.mozilla.org/en-US/firefox/addon/53880
●ツール => アドオン => Memory Fox
[v] Activate Automatically ...
...
Primary Memory   [ 10]
Secondary Memory [ 30]
●ツール => Memory Fox => Activate Memory Fox

firefoxのせいで使っている内にコミットチャージが搭載メモリ以上になる場合に利用すると良いです。
firefox 3.5 => 3.6 に変更した後、すぐに入れたので 3.6 が良かったのか memoryfox が良かったのか確認できていません。
その際に一度アドオンを整理しています。
インストールされているアドオンが減ったのが良かったのかもしれません。
起動し続けてもタスクマネージャで確認したところ使用メモリが増え続けないので、なにかで効果がありました。

画像がランダムに表示されないサイトが、よく閲覧するサイトの場合に設定を減らします。
問題の無い画像が多いサイトの表示スピードが遅くなります。
about:config
network.http.max-connections-per-server             8  // 3 ~ 8
network.http.max-persistent-connections-per-proxy   4
network.http.max-persistent-connections-per-server  2  // 2 ~ 3

2010-01-20

port 52646

この記事は xdm に関する参考です。

port 52646 を利用してるのは xdm でした。
startwin.batで起動する設定を入れたためと思われます。
$ sudo lsof -i:52646
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
xdm     6650 root    4u  IPv4   9800      0t0  TCP *:52646 (LISTEN)
xdm     7030 root    4u  IPv4   9800      0t0  TCP *:52646 (LISTEN)

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/664useportps.html
port 52646 を xdm が利用しているのはランダムなため、固定のポートではありませんでした。

genlopと同じようにemergeの処理時間を取得するコマンド
$ sudo splat sys-devel/gcc-4.3.4
 * sys-devel/gcc-4.3.4

        Emerged at: 日  1月 10 08:56:05 2010
        Build time: 23 minutes, and 11 seconds

2010-01-17

chkrootkitのインストール

この記事は chkrootkit のワーニングに関する参考です。

インストールをする。
$ sudo emerge -av chkrootkit

実行するとエラーが沢山出ます。
Searching for suspect PHP files... /usr/bin/find: head terminated by signal 13
/usr/bin/find: head terminated by signal 13
...

対処法を探して試したら出なくなりました。
http://bugs.gentoo.org/265478
$ sudo chkroot
$ wget "http://bugs.gentoo.org/attachment.cgi?id=212985&action=view"
$ cd /usr/portage/app-forensics/chkrootkit/
$ sudo ebuild chkrootkit-0.48-r1.ebuild digest
$ sudo emerge -av chkrootkit

対処の内容が元々のパッチ無しのchkrootkit-0.48をインストールしているので戻しました。
$ sudo emerge --sync && sudo layman -S && sudo eix-update
$ sudo emerge -av chkrootkit

すると戻してからsudo chkrootkitを実行してもfindのエラーは出なくなりました。
バイナリの表示のようなものが出るようになりました。
chrootkit内部の実際に出るコマンドを単独で実行しても出ます。
/usr/bin/find /tmp /var/tmp  -type f -exec head -n1 {} \; | grep php 2> /dev/null

ccacheのファイルに反応しています。
find /var/tmp/ccache/ -type f -exec head -n1 {} \;|grep php

ccacheのファイルを消すとエラーが出なくなります。
$ sudo CCACHE_DIR="/var/tmp/ccache" CCACHE_SIZE="2G" /usr/bin/nice /usr/bin/ccache -C

エラーが消えました。
... 
Searching for suspect PHP files... nothing found
Searching for anomalies in shell history files... nothing found
...

結論は chrootkit の内部の find コマンドの動作によってエラーが変わります。
(1) findに引っかかる最初のファイルがバイナリの場合、その後のマッチしたデータの代わりにfindのエラーが表示され続けます。
(2) findに引っかかる最初のファイルがテキストの場合、その後に引っかかるテキストやバイナリが表示されます。
findのマッチするファイルの順番は/var/tmp/ccacheの中身が最初にマッチする場合emergeでccacheを使っているとemergeの後に(1)(2)が変化することがあります。
/tmp/にphpという文字列を含むテキストファイルやバイナリファイルを置くと確認できます。

/usr/sbin/chkrootkit のfindでスペースを出力すると、バイナリファイルの先頭行が最初のマッチでもテキストとして認識されます。
(-exec echo -n " " を追加します。)
(chkrootkitを再インストールすると戻ります。)
###
   ### Suspect PHP files
   ###
...
      fileshead="`${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec echo -n " " -exec head -n1 {} \; | grep php 2> /dev/null`"

オプションを追加すれば出力が減ります。
chkrootkit -q

2010-01-14

crossdevのインストール

2010-7-11 追記 この記事は間違っています。

この記事は違うcpuでdistcc を使うの補足です。

distccをインストールして起動します。
http://www.gentoo.org/doc/ja/distcc.xml

kurobox-hg 側のバージョンを確認します。
$ emerge -pv binutils gcc linux-headers glibc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] sys-devel/binutils-2.18-r3  USE="nls -gold -multislot -multitarget -test -vanilla" 0 kB
[ebuild   R   ] sys-kernel/linux-headers-2.6.27-r2  0 kB
[ebuild   R   ] sys-devel/gcc-4.3.4  USE="fortran nls -altivec -bootstrap -build -doc (-fixed-point) -gcj -gtk (-hardened) (-libffi) -mudflap (-multilib) -multislot (-n32) (-n64) -nocxx -nopie -nptl -objc -objc++ -objc-gc -openmp -test -vanilla" 0 kB
[ebuild   R   ] sys-libs/glibc-2.9_p20081201-r2  USE="gd nls -debug -glibc-omitfp (-hardened) (-multilib) -profile (-selinux) -vanilla" 0 kB

CPUが早い方の gentoo の入ったパソコンで同じバージョンをインストールします。
その際USEをそろえます。
sudo USE="-nptl -gtk -multilib -openmp mudflap" crossdev -t powerpc-unknown-linux-gnu --binutils 2.18-r3 --gcc 4.3.4 --kernel 2.6.27-r2 --libc 2.9_p20081201-r2

確認します。
$ emerge -pv cross-powerpc-unknown-linux-gnu/binutils cross-powerpc-unknown-linux-gnu/gcc cross-powerpc-unknown-linux-gnu/linux-headers cross-powerpc-unknown-linux-gnu/glibc

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/binutils-2.18-r3  USE="nls -gold -multislot -multitarget -test -vanilla" 0 kB [1]
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/linux-headers-2.6.27-r2  0 kB [1]
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/gcc-4.3.4  USE="fortran (multilib) nls (-altivec) -bootstrap -build -doc (-fixed-point) -gcj -gtk -hardened -libffi -mudflap -multislot (-n32) (-n64) -nocxx -nopie -nptl -objc -objc++ -objc-gc -openmp -test -vanilla" 0 kB [1]
[ebuild   R   ] cross-powerpc-unknown-linux-gnu/glibc-2.9_p20081201-r2  USE="gd (multilib) nls -debug -glibc-omitfp -hardened -profile (-selinux) -vanilla" 0 kB [1]

早い方のgentooのpackage.keywords, package.mask, package.useに設定が追加されます。
その際 kurobox-hg 側に同じようなマスクを追加します。
>sys-devel/binutils-2.18-r3
>sys-devel/gcc-4.3.4
>sys-kernel/linux-headers-2.6.27-r2
>sys-libs/glibc-2.9_p20081201-r2

早い方の gentoo にインストールしたパッケージが消されないように登録します。
$ sudo grep cross-powerpc-unknown-linux-gnu /var/lib/portage/world
cross-powerpc-unknown-linux-gnu/binutils
cross-powerpc-unknown-linux-gnu/gcc
cross-powerpc-unknown-linux-gnu/glibc
cross-powerpc-unknown-linux-gnu/linux-headers

kurobox-hg 側の emerge の設定に distcc を追加します。
$ grep -i distcc /etc/make.conf
FEATURES="distcc"
DISTCC_HOSTS="192.168.0.100 192.168.0.100 192.168.0.100 192.168.0.100 192.168.0.100"

updateのコマンドを実行します。
(例) $ sudo emerge --update --deep --newuse --verbose --tree --with-bdeps=y --jobs=10 --load-average=5 --keep-going -ask world

成功している場合、付属のコマンドで、経過が出力されます。
cpu貸りる側。
$ sudo DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 1|grep -v ^$
 29861  Blocked                                                            [0]
 29856  Preprocess  io.cc                                     192.168.0.100[0]
 29757  Preprocess  base.cc                                   192.168.0.100[1]
 29792  Preprocess  versionsort.cc                            192.168.0.100[2]
 29860  Preprocess  header.cc                                 192.168.0.100[3]

cpu貸す側。
$ sudo tcpdump tcp port 3632 -n -v

gccなどの使われないパッケージも有ります。
pump emerge を使うと、より使うそうだが php で試したらセグメンテーション違反になりました。
libtool を使うものと相性が悪いらしいです。
cpu 借りる側の cpu 以外の性能も悪ければ cpu 貸す側は phenom9350e 以下で余裕で足ります。
この例の場合、このcpu1個で足ります。topなどでロードアベレージが0.5いきません。

後日、再度 pump emerge -av php をやったら大丈夫でした。

2010-01-13

emergeの処理時間を取得する

emergeの処理時間を取得するコマンドです。
* app-portage/genlop
     Available versions:  0.30.5 0.30.7 ~0.30.8 0.30.8-r1 0.30.8-r2 {bash-completion}
     Homepage:            http://www.gentoo.org/proj/en/perl
     Description:         A nice emerge.log parser

セキュリティに問題のある更新をチェックするコマンドです。
あまり更新しないシステムでも、なんらしか警告がでれば更新を検討します。
$ glsa-check -t all
This system is not affected by any of the listed GLSAs

cat /proc/loadavg | awk '{print $1}' が3以下の場合、同時に8個までemargeします。
emerge --jobs=8 --load-average=3 systemなど

普通の場合の出力が表示されません。
終わったら最後に一括で表示されます。
同時にやるとまずいものの場合には同時にやっていないようです。

エラーが出た場合にエラーのパッケージと、それの更新が必要なパッケージを無視して自動で再開します。
emerge --keep-going systemなど

実際に実行したところ、再開していました。
python_set_active_version(): 'dev-lang/python:2.6' isn't installed

~が付いているので入らなさそうだが、なぜエラーになったのかは不明です。
[I] dev-lang/python
     Available versions:
        (2.4)   2.4.4-r5 2.4.4-r6 2.4.4-r14 ~2.4.4-r15
        (2.5)   2.5.2-r7 ~2.5.2-r8
        (2.6)   ~2.6-r2

コマンドの例
$ grep MAKE /etc/make.conf
MAKEOPTS="-j5"
$ sudo emerge --update --deep --newuse --verbose --tree --with-bdeps=y --jobs=8 --load-average=3 --keep-going --emptytree system 1>/var/tmp/scriptlog/emerge_`date +%Y-%m-%d_%H-%M-%S`.log 2>&1 &

2010-01-12

kurobox-hgにu-bootを入れました。

この記事は kurobox-hg に uboot を入れる際の参考です。

久しぶりにkurobox-hgの電源を入れたら動きませんでした。
ハードディスクがUSB変換ケーブルの UD-500SA で認識しませんでした。
パソコンの中に着けたら認識しました。
この変換ケーブルは以前も認識したりしなかったりで困まりました。

中身はglibc2.3までしか元々のカーネルが認識しないので、再起動するとエラーになるのを確認したところまでとなっていました。
/dev/hda1 / ここをglibc2.4以上にしたので動かなかった。
/dev/hda2 loader.oで指定した /
/dev/hda3 swap
/dev/hda4 /mnt2

これにする前の近いバックアップはあったので、それを使ってhda1~3で入れ直しました。
もう常時起動はしないので、失敗しても良さそうなので、u-boot を入れました。
http://genbako.vodapone.com/

ランプの1~3回の説明の部分は、説明どおりにやっても変化しないので、失敗したかと思ったが、ncコマンドは動いたので成功しました。
IPアドレスが192.168.11.150から変わる前までは見れるようでした。
$ sudo ifconfig eth0:0 192.168.11.149 netmask 255.255.255.0
$ nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666

同じサイトにある2.6.25のuImageの方をvmlinux.Ubootに名前を変えてコピーしました。
試していないがEMモードにも入れそうでした。
http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?cmd=read&page=LinkStation%2F%E7%8E%84%E7%AE%B1%2FBootLoader%2FU-Boot&word=uboot#ueac0094
これでglibcのバージョンを上げることができます。

再起動しても起動できました。
$ uname -a
Linux kuroboxhg 2.6.25.1-kuroboxHG #9 Sun May 4 21:29:57 JST 2008 ppc 82xx MPC8241 GNU/Linux
$ eix -c glibc -I
[I] sys-libs/glibc (2.10.1-r1(2.2)@2010年01月25日): GNU libc6 (also called glibc2) C library

2010-01-10

unbufferdのeccメモリを使うパソコンの調査

この記事は ecc メモリを利用できるマザーボードの参考です。

DDR3を使うとして調べました。
サーバー系のマザーボードは高いのと registerd eccの場合が多いので対象外です。

● M4N68T-M LE
athlon 605eなどと一緒に使います。
日本では売ってませんでした。
LE無しのバージョンが海外で売っていました。
amd は ecc の機能が最近のは全部あるそうだが、デスクトップ向けのマザーボードでは、ほぼasusだけが対応しているようです。
foxconnn のシネマにはあるようです。cinema2xxxというのはdd3ですが、売ってないようです。
genforce7025/630a に限定しなければ DDR3 で M4A78LT-M LE など他にもあるようです。

● DQ57TM
xeon L3426などの場合に使えるようです。
公式サイトの4つの pdf のうち1つに書いてあり他の pdf には L3426 に関しての記述はありませんでした。
公式サイト自体にも対応表に書いてありませんでした。
amtでリモート bios が使えるそうです。

620とx3430、マザーボードの差で15000円ほどintel高いです。605eとL3426で約22000円高いです。

値段を気にしないのであれば P7F-M も良いです。
LAN2つとipmi用のLAN1つがあります。これはサーバーの方に分類されていました。

mysqlの接続数

この記事は mysql の max_connections を300以上にする場合に、良い効果があるかもしれない設定の例です。

$ diff /etc/security/limits.conf.2010-01-10 /etc/security/limits.conf
52a53,54
> mysql soft stack 256
> mysql hard stack 256

確認のため再起動します。
$ mysqladmin -uroot debug

ログを確認します。
$ sudo grep -i stack /var/log/mysql/*
/var/log/mysql/mysqld.err:Running threads: 1  Stack size: 262144

接続数2000を上限として512KBにしておけば、確認しなくても大体安全です。

http://dev.mysql.com/doc/refman/5.1/ja/source-notes-linux.html
http://www.hirohama.biz/mysql/mt-search.cgi?IncludeBlogs=1&search=mysqladmin