<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tipset &#187; Linux</title>
	<atom:link href="http://hasumi.info/~h2/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://hasumi.info/~h2</link>
	<description>MacやiPhone/iPod Touch関連のTipsを書くハズが発散してるページ</description>
	<lastBuildDate>Wed, 04 Jan 2012 14:23:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OpenVPN導入2@Ubuntu 9.10</title>
		<link>http://hasumi.info/~h2/2010/02/04/openvpn%e5%b0%8e%e5%85%a52ubuntu-9-10/</link>
		<comments>http://hasumi.info/~h2/2010/02/04/openvpn%e5%b0%8e%e5%85%a52ubuntu-9-10/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:03:53 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1709</guid>
		<description><![CDATA[前回からのつづきです
証明書や秘密鍵などの生成が終わったので，サーバの設定に入ります
設定ファイルの雛形があるので，コピーして使います
なぜかサーバ用だけ固められているので，展開しましょう

% sudo cp /usr [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hasumi.info/~h2/2010/02/03/openvpn導入1ubuntu-9-10/">前回</a>からのつづきです</p>
<p>証明書や秘密鍵などの生成が終わったので，サーバの設定に入ります</p>
<p>設定ファイルの雛形があるので，コピーして使います<br />
なぜかサーバ用だけ固められているので，展開しましょう</p>
<pre class="brush: text;">
% sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
% sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
% sudo gunzip /etc/openvpn/server.conf.gz
</pre>
<p>構成はL2トンネル＋ブリッジにします</p>
<p>サーバの設定ファイルは以下の通り（IPとかは環境に応じて修正して下さい）</p>
<ul>主な変更箇所は</p>
<li>接続時，自宅ネットワークのDNSサーバを参照</li>
<li>TLS-AUTHを使用</li>
<li>暗号化アルゴリズムに256bitのAESを使用</li>
<li>リンクMTUを1472に設定</li>
<p>MTUはいずれ最適化しようと思いますが，ドキュメントに</p>
<blockquote><p>
However,  for many cases, using a value of 1472 will maximize performance for TUN devices over IPv4.
</p></blockquote>
<p>と書いてあったので，とりあえず1472を指定（実はうちIPv6）<br />
フラグメントしてようが，とりあえず繋がってるのでよしとしますｗ<br />
もうすぐIPv6とおさらばするので</p>
<pre class="brush: text;">
port 1194
proto udp
dev tap0
ca CAの証明書
cert サーバの証明書
key サーバの秘密鍵
dh DHパラメータ
ifconfig-pool-persist ipp.txt
server-bridge 192.168.86.10 255.255.255.0 192.168.86.101 192.168.86.125
push &quot;dhcp-option DNS 192.168.86.10&quot;
keepalive 10 120
tls-auth 共通鍵 0
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun
log-append  /var/log/openvpn.log
verb 4
link-mtu 1472
</pre>
</ul>
<p>クライアントの設定ファイルもサーバに合わせて変更しましょう</p>
<ul>
<pre class="brush: text;">
client
dev tap
proto udp
remote VPNサーバの名前orアドレス 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca CAの証明書
cert クライアントの証明書
key クライアントの秘密鍵
ns-cert-type server
tls-auth 共通鍵 1
cipher AES-256-CBC
comp-lzo
verb 4
link-mtu 1472
</pre>
</ul>
<p>次にブリッジの設定です<br />
ブリッジ操作用のコマンドを使うのでインストールしましょう</p>
<pre class="brush: text;">
% sudo apt-get install bridge-utils
</pre>
<p>ブリッジの作成と削除を行うスクリプトの雛形があるので，コピーして使います</p>
<pre class="brush: text;">
% sudo cp /usr/share/doc/openvpn/examples/sample-scripts/bridge-st* /etc/openvpn/
</pre>
<p>まず，ブリッジの作成を行うbridge-startスクリプトです<br />
ブリッジにデフォゲを設定するように変更しました</p>
<pre class="brush: text;">
#!/bin/bash                                                                                     

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

# Define Bridge Interface
br=&quot;br0&quot;

# Define list of TAP interfaces to be bridged,
# for example tap=&quot;tap0 tap1 tap2&quot;.
tap=&quot;tap0&quot;

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth=&quot;eth0&quot;
eth_ip=&quot;192.168.86.10&quot;
eth_netmask=&quot;255.255.255.0&quot;
eth_broadcast=&quot;192.168.86.255&quot;
eth_gateway=&quot;192.168.86.1&quot;

for t in $tap; do
    openvpn --mktun --dev $t
done

brctl addbr $br
brctl addif $br $eth

for t in $tap; do
    brctl addif $br $t
done

for t in $tap; do
    ifconfig $t 0.0.0.0 promisc up
done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
route add default gw $eth_gateway $br
</pre>
<p>つづいて，ブリッジの削除を行うbridge-stopスクリプトです<br />
ブリッジの削除後，eth0をもとの設定に戻すように変更しました</p>
<pre class="brush: text;">
#!/bin/bash                                                                                     

####################################
# Tear Down Ethernet bridge on Linux
####################################

# Define Bridge Interface
br=&quot;br0&quot;

# Define list of TAP interfaces to be bridged together
tap=&quot;tap0&quot;

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
eth=&quot;eth0&quot;
eth_ip=&quot;192.168.86.10&quot;
eth_netmask=&quot;255.255.255.0&quot;
eth_broadcast=&quot;192.168.86.255&quot;
eth_gateway=&quot;192.168.86.1&quot;

ifconfig $br down
brctl delbr $br 

for t in $tap; do
    openvpn --rmtun --dev $t
done

ifconfig $eth $eth_ip netmask $eth_netmask broadcast $eth_broadcast
route add default gw $eth_gateway $eth
</pre>
<p>ブリッジの作成・削除とOpenVPNサーバの起動・終了のタイミングは次の順で行います</p>
<ol>
<li>ブリッジの作成</li>
<li>OpenVPNサーバの起動</li>
<li>OpenVPNサーバの終了</li>
<li>ブリッジの削除</li>
</ol>
<p>OpenVPNの起動前にbridge-startを実行して，終了後にbridge-stopを行うようにします<br />
64-67行目と81-84行目を追加しました</p>
<pre class="brush: text;">
% sudo vim /etc/init.d/openvpn
 34 start_vpn () {
 ・・・
 60     # Check to see if it's already started...
 61     if test -e /var/run/openvpn.$NAME.pid ; then
 62       log_failure_msg &quot;Already running (PID file exists)&quot;
 63     else
 64       # Add bridge
 65       if [ -f /etc/openvpn/bridge-start ]; then
 66         /etc/openvpn/bridge-start
 67       fi
 68
 69       $DAEMON $OPTARGS --writepid /var/run/openvpn.$NAME.pid \
 70       $DAEMONARG $STATUSARG --cd $CONFIG_DIR \
 71       --config $CONFIG_DIR/$NAME.conf $script_security &lt; /dev/null || STATUS=1
 72     fi
 73     log_end_msg $STATUS
 74 }
 75 stop_vpn () {
 76   kill `cat $PIDFILE` || true
 77   rm -f $PIDFILE
 78   rm -f /var/run/openvpn.$NAME.status 2&gt; /dev/null
 79   log_end_msg 0
 80
 81   # Remove bridge
 82   if [ -f /etc/openvpn/bridge-stop ]; then
 83     /etc/openvpn/bridge-stop
 84   fi
 85 }
</pre>
<p>これで，OpenVPNサーバを起動すると</p>
<pre class="brush: text;">
% ifconfig
br0       ・・・
eth0      ・・・
lo        ・・・
tap0      ・・・

% route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.86.0    *               255.255.255.0   U     0      0        0 br0
default         192.168.86.1    0.0.0.0         UG    0      0        0 br0
</pre>
<p>のように，tap0とbr0が作られて，ゲートウェイが設定されるようになります</p>
<p>OpenVPNサーバを終了すると</p>
<pre class="brush: text;">
% ifconfig
eth0      ・・・
lo        ・・・

% route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.86.0    *               255.255.255.0   U     0      0        0 eth0
default         192.168.86.1    0.0.0.0         UG    0      0        0 eth0
</pre>
<p>のように，tap0とbr0は削除され，もとの設定に戻ります</p>
<p>細かいところですが，このままだとOpenVPNサーバの起動中にnetworkingを再起動すると，ルーティングテーブルがバグります<br />
テーブルを見れば分かるように，192.168.86.0についてはbr0が先に，デフォゲはbr0のメトリックの方が小さいので問題なく動きますが・・・<br />
ちょっと気持ち悪い</p>
<pre class="brush: text;">
% route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
192.168.86.0    *               255.255.255.0   U     0      0        0 br0
192.168.86.0    *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
default         192.168.86.1    0.0.0.0         UG    0      0        0 br0
default         192.168.86.1    0.0.0.0         UG    100    0        0 eth0
</pre>
<p>なので，networkingを再起動するときにOpenVPNサーバが動作していれば，OpenVPNサーバも一緒に再起動するようにしました<br />
76-80行目と92-95行目を追加しました<br />
本来ならnetworkingをstopする時にも，OpenVPNサーバを終了させるべきかも知れませんが，networkingをstopすることはまずないのでズボラしました</p>
<pre class="brush: text;">
% sudo vim /etc/init.d/networking
 75 force-reload|restart)
 76 &gt;... # Stop openvpn if running
 77 &gt;...if [ -e /var/run/openvpn.server.pid ]; then
 78 &gt;...&gt;...OPENVPN=&quot;TRUE&quot;
 79 &gt;...&gt;.../etc/init.d/openvpn stop
 80 &gt;...fi
 81
 82 &gt;...process_options
 83
 84 &gt;...log_action_begin_msg &quot;Reconfiguring network interfaces&quot;
 85 &gt;...ifdown -a --exclude=lo || true
 86 &gt;...if ifup -a --exclude=lo; then
 87 &gt;...    log_action_end_msg $?
 88 &gt;...else
 89 &gt;...    log_action_end_msg $?
 90 &gt;...fi
 91
 92 &gt;...# Restart openvpn
 93 &gt;...if [ &quot;$OPENVPN&quot; = &quot;TRUE&quot; ]; then
 94 &gt;...&gt;.../etc/init.d/openvpn start
 95 &gt;...fi
 96 &gt;...;;
</pre>
<p>OpenVPNサーバが起動している場合，bridge-startでeth0のアドレスが変更されて経路情報も消えているので，85行目の「ifdown -a &#8211;exclude=lo」で</p>
<pre class="brush: text;">
RTNETLINK answers: No such process
SIOCDELRT: No such process
</pre>
<p>といわれますが，特に問題はありません</p>
<p>以上で，OpenVPNの設定はオシマイです</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2010/02/04/openvpn%e5%b0%8e%e5%85%a52ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OpenVPN導入1@Ubuntu 9.10</title>
		<link>http://hasumi.info/~h2/2010/02/03/openvpn%e5%b0%8e%e5%85%a51ubuntu-9-10/</link>
		<comments>http://hasumi.info/~h2/2010/02/03/openvpn%e5%b0%8e%e5%85%a51ubuntu-9-10/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 15:02:15 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1696</guid>
		<description><![CDATA[出先や実家から自宅のネットワークにアクセスするためにVPNを導入しています
PPTPは論外として，自宅鯖移行のついでにiPhone/iPod TouchがサポートしているL2TP over IPsecも考えたのですが，プ [...]]]></description>
			<content:encoded><![CDATA[<p>出先や実家から自宅のネットワークにアクセスするためにVPNを導入しています</p>
<p>PPTPは論外として，自宅鯖移行のついでにiPhone/iPod TouchがサポートしているL2TP over IPsecも考えたのですが，プロトコルの仕様が少し曖昧なせいかプラットフォームによっては安定しないそうなので（実際安定しなかった），OpenVPNにしました</p>
<p>以下，作業ログです</p>
<p>インストール</p>
<pre class="brush: text;">
% sudo aptitude install openvpn
</pre>
<p>サーバとクライアントの確認に証明書を使いますが，貧乏なのでオレオレ証明書です</p>
<p>OpenVPNには認証局や証明書を作成するためのeasy-rsaという便利なスクリプトがついています</p>
<pre class="brush: text;">
% cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
</pre>
<p>まず，オレオレ認証局 (CA) を作ります<br />
sourceコマンドを使用する箇所があるので，rootでシェルを起動しましょう</p>
<pre class="brush: text;">
% sudo -s
</pre>
<p>varsを適宜書き換えます<br />
KEY_SIZEは2048bit以上にすることを強くオススメします<br />
オレオレなので他は何でもOKです</p>
<pre class="brush: text;">
# vi vars
export KEY_SIZE=2048
export KEY_COUNTRY=&quot;国&quot;
export KEY_PROVINCE=&quot;州&quot;
export KEY_CITY=&quot;都市&quot;
export KEY_ORG=&quot;組織&quot;
export KEY_EMAIL=&quot;メアド&quot;
</pre>
<p>作業に必要な環境変数を設定して，スクリプトを実行します</p>
<pre class="brush: text;">
# . ./vars
# ./clean-all
# ./build-ca
</pre>
<p>いくつか質問されるので答えましょう<br />
基本Enter連打でOKです</p>
<p>続いて，サーバの秘密鍵と証明書を作ります</p>
<pre class="brush: text;">
# ./build-key-server サーバ名
</pre>
<p>いくつか質問されるので答えましょう<br />
基本Enter連打でOKですが，チャレンジパスワードを聞かれます</p>
<p>さらに，クライアントの秘密鍵と証明書を作ります</p>
<p>一般的には，クライアントが自分で鍵と証明書要求CSRを作って，認証局が署名して返します<br />
具体的には，クライアントがbuild-reqやbuild-req-passスクリプト（パスフレーズで保護された証明書を作成）で生成したCSRに，CAがsign-reqスクリプトで署名します</p>
<p>今回は自分以外に使用者がいないので，認証局上で直接クライアントの鍵を作ってしまいます</p>
<pre class="brush: text;">
# ./build-key クライアント名
</pre>
<p>いくつか質問されるので答えましょう<br />
基本Enter連打でOKですが，チャレンジパスワードを聞かれます</p>
<p>最後に，DiffieHellmanパラメータを生成します</p>
<pre class="brush: text;">
# ./build-dh
</pre>
<p>秘密鍵とDHパラメータは管理者以外が読めないようにしておきましょう</p>
<pre class="brush: text;">
# chmod 600 keys/*.key
# chmod 600 keys/dh2048.pem
</pre>
<p>直接生成したファイルを参照しても構いませんが，「/etc/openvpn」以下に必要なファイルを置きましょう<br />
自分はkeysというディレクトリを作成して，その中にまとめてあります</p>
<pre class="brush: text;">
# mkdir /etc/openvpn/keys
# cp keys/CA証明書 /etc/openvpn/keys/
# cp keys/サーバ証明書 /etc/openvpn/keys/
# cp keys/サーバ秘密鍵 /etc/openvpn/keys/
# cp keys/DHパラメータ /etc/openvpn/keys/
</pre>
<p>クライアントにCAの証明書と秘密鍵を渡します<br />
秘密鍵の受け渡しは安全な方法で</p>
<p>TLS-AUTHの共通鍵も生成しておきます<br />
念のためアクセス権が600になっているか確認しましょう</p>
<pre class="brush: text;">
# openvpn --genkey --secret /etc/openvpn/keys/ta.key
</pre>
<p>次回につづく</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2010/02/03/openvpn%e5%b0%8e%e5%85%a51ubuntu-9-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ATOK X3 for LinuxをUbuntu 9.10 (Karmic Koala) x86_64版にインストール</title>
		<link>http://hasumi.info/~h2/2010/02/02/atok-x3-for-linux%e3%82%92ubuntu-9-10-karmic-koala-x86_64%e7%89%88%e3%81%ab%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/</link>
		<comments>http://hasumi.info/~h2/2010/02/02/atok-x3-for-linux%e3%82%92ubuntu-9-10-karmic-koala-x86_64%e7%89%88%e3%81%ab%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 15:03:23 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[ATOK]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1684</guid>
		<description><![CDATA[ようやくKarmicに移行できたので，ATOKも入れ直してみました
以前書いた「ATOK X3 for LinuxをUbuntu 9.04 (Jaunty Jackalope) x86_64版にインストール」というエント [...]]]></description>
			<content:encoded><![CDATA[<p>ようやくKarmicに移行できたので，ATOKも入れ直してみました</p>
<p>以前書いた「<a href="http://hasumi.info/~h2/2009/05/28/atok-x3-for-linuxをubuntu-904-jaunty-jackalope-x86_64版にインストール/">ATOK X3 for LinuxをUbuntu 9.04 (Jaunty Jackalope) x86_64版にインストール</a>」というエントリとほとんど同じです</p>
<ol>
<li>Xから全員ログアウト</li>
<li>「Ctrl+Alt+F2」でコンソールに切り替え</li>
<li>CDをマウント</li>
<li>環境変数LANGを設定
<pre class="brush: text;">
% export LANG=C
</pre>
</li>
<li>空のファイル「/etc/gtk-2.0/gtk.immodules」を作成
<pre class="brush: text;">
% sudo touch /etc/gtk-2.0/gtk.immodules
</pre>
</li>
<li>CDドライブに移動して，スクリプトを実行
<pre class="brush: text;">
% cd /media/cdrom
% sudo bash ./setupatok_tar.sh
</pre>
</li>
<li>質問が3つ表示されるので順に「yes」，「/usr/bin/gtk-query-immodules-2.0」，「/etc/gtk-2.0/gtk.immodules」と答える</li>
<li>IA-32ライブラリをインストール
<pre class="brush: text;">
% sudo apt-get install ia32-libs
</pre>
</li>
<li>IIMFのライブラリをインストール
<pre class="brush: text;">
% cd bin/tarball/IIIMF
% tar zxvf iiimf-client-lib-trunk_r3104-js1.i386.tar.gz -C (どこか適当な場所)
% tar zxvf iiimf-protocol-lib-trunk_r3104-js1.i386.tar.g -C (どこか適当な場所)
% sudo mv (どこか適当な場所)/usr/lib/* /usr/lib32/
</pre>
</li>
<li>アップデート
<ol>
<li><a href="http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=042459">ATOK X3 for Linux アップデートモジュール</a>（wgetの場合は<a href="http://www3.justsystem.co.jp/download/atok/up/lin/atokx3up2.tar.gz">コチラ</a>）</li>
<li>解凍
<pre class="brush: text;">
% tar zxvf atokx3up2.tar.gz
</pre>
</li>
<li>ATOKのアップデート
<pre class="brush: text;">
% cd atokx3up2/bin/ATOK
% sudo tar zxvf atokxup-20.0-3.0.0.i386.tar.gz -C /
</pre>
</li>
<li>IIMFのアップデート
<pre class="brush: text;">
% cd ../IIMF
% sudo tar zxvf iiimf-server-trunk_r3104-js3.i386.tar.gz --exclude=’./usr/lib’ -C /
% sudo tar zxvf iiimf-server-trunk_r3104-js3.i386.tar.gz ./usr/lib
% sudo mv usr/lib/* /usr/lib32/
</pre>
</li>
<li>GTKのアップデート
<pre class="brush: text;">
% sudo tar zxvf iiimf-gtk-64-trunk_r3104-js3.x86_64.tar.gz -C /
% sudo tar zxvf iiimf-gtk-trunk_r3104-js3.i386.tar.gz --exclude=’./usr/lib’ -C /
% sudo tar zxvf iiimf-gtk-trunk_r3104-js3.i386.tar.gz ./usr/lib
% sudo mv usr/lib/gtk-2.0/immodules /usr/lib32/gtk-2.0/
</pre>
</li>
<li><a href="http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=044668">ATOK X3 for Linux Ubuntu 9.04(GTK+ 2.16) 対応モジュール</a>（wgetの場合は<a href="http://www3.justsystem.co.jp/download/atok/up/lin/atokx3gtk216.tar.gz">コチラ</a>）</li>
<li>モジュールのインストール
<pre class="brush: text;">
% sudo tar zxvf atokx3gtk216.tar.gz -C /
</pre>
</li>
</ol>
<li>CDをアンマウント</li>
<li>好みに応じてIIIMFステータス非表示ツールを設定
<ol>
<li>公式サイトから<a href="http://support.justsystems.com/faq/1032/app/servlet/qadoc?QID=037494-1">IIIMFステータス非表示ツール</a>をDL（wgetの場合は<a href="http://www3.justsystem.co.jp/download/atok/ut/lin/iiimf_status_hide.gz">コチラ</a>）</li>
<li>「/opt/atokx3/bin/」に展開し，パーミッションをroot:root (755)にする</li>
<li>「/etc/X11/xinit/xinput.d/iiimf」の末尾に「/opt/atokx3/bin/iiimf_status_hide」を追加</li>
</ol>
</li>
<li>起動設定
<pre class="brush: text;">
% sudo bash /opt/atokx3/sample/setting_debian4.sh
</pre>
</li>
<li>「Ctrl+Alt+F7」でXに切り替え</li>
<li>再ログイン</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2010/02/02/atok-x3-for-linux%e3%82%92ubuntu-9-10-karmic-koala-x86_64%e7%89%88%e3%81%ab%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PT2設定 予約録画</title>
		<link>http://hasumi.info/~h2/2010/02/01/pt2%e8%a8%ad%e5%ae%9a-%e4%ba%88%e7%b4%84%e9%8c%b2%e7%94%bb/</link>
		<comments>http://hasumi.info/~h2/2010/02/01/pt2%e8%a8%ad%e5%ae%9a-%e4%ba%88%e7%b4%84%e9%8c%b2%e7%94%bb/#comments</comments>
		<pubDate>Sun, 31 Jan 2010 15:05:44 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PT1/PT2]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1674</guid>
		<description><![CDATA[
日経Linuxの記事用に開発された録画予約システムのepgrecを使用します
Ajaxを使ったUIで，市販のHDDレコーダのように番組表を見ながら予約できます
epgrecは公式サイトからDLできますが，日経Linux [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://hasumi.info/~h2/wp-content/uploads/2010/01/epgrec.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2010/01/epgrec-150x150.png" alt="epgrec" title="epgrec" width="150" height="150" class="alignnone size-thumbnail wp-image-1675" /></a></p>
<p>日経Linuxの記事用に開発された録画予約システムの<a href="http://www.mda.or.jp/epgrec/">epgrec</a>を使用します</p>
<p>Ajaxを使ったUIで，市販のHDDレコーダのように番組表を見ながら予約できます</p>
<p>epgrecは公式サイトからDLできますが，日経Linux2010年2月号に収録されてるバージョンは受信可能電波の自動スキャン機能が使えます</p>
<ol>
<li>epgdump
<ul>
epgrecではEPGデータの取得にepgdumpが必要です<br />
<a href="http://2sen.dip.jp/dtv/">2SN</a>のアップ板からDLできます</p>
<pre class="brush: text;">
% tar zxvf epgdumpr2-utf8.tar.gz
% cd epgdumpr2/
% make
% sudo cp epgdump /usr/local/bin
</pre>
<p>録画したtsファイルがあれば，epgdumpをテストしてみましょう<br />
出力ファイルに「-」を指定すると標準出力に出力されます</p>
<p>地デジの32chを録画した場合</p>
<pre class="brush: text;">
% epgdump 0032ontvjapan.com test.ts -
</pre>
<p>BSの場合</p>
<pre class="brush: text;">
% epgdump /BS test.ts -
</pre>
</ul>
</li>
<li>epgrec
<ul>
epgrecのインストールはWordPressとかとほぼ同じで簡単です</p>
<p>データをMySQLに格納するので，epgrec用のデータベースとユーザを作ります</p>
<pre class="brush: text;">
mysql&gt; create database epgrec;
Query OK, 1 row affected (0.00 sec)
mysql&gt; grant all privileges on epgrec.* to h2@localhost identified by 'パスワード';
mysql&gt; flush privileges;
</pre>
<p>ソースを任意の場所に展開します<br />
自分は「/var/www/epgrec」に展開しました</p>
<pre class="brush: text;">
% sudo tar zxvfp epgrec-nk201002sp.tar.gz -C /var/www/
</pre>
<p>epgrecはEPGの定期更新や予約録画にcronとatを使うので，「/etc/at.deny」から「www-data」を削除しておきましょう</p>
<p>録画データの保存先は別パーティションの「/home」以下にしたいので，リンクを張っておきました</p>
<pre class="brush: text;">
% sudp mkdir /home/tv
% sudo chown h2:h2 /home/tv
% chmod 777 /home/tv
% cd /var/www/epgrec/
% ln -s /home/tv tv
</pre>
<p>あとは，ブラウザでepgrecにアクセスして，指示に従って設定するだけです</p>
<p>設定が終わると，EPG更新用の設定をcronの設定ディレクトリにコピーして，cronを再起動するように指示されます</p>
<pre class="brush: text;">
% sudo cp /var/www/epgrec/cron.d/getepg /etc/cron.d/
% sudo service cron restart
</pre>
</ul>
</li>
</ol>
<p>epgrecは便利ですが，そのまま外部に公開するのは<strong>危険</strong>です<br />
認証もないし，MySQLのパスワードも丸見えです</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2010/02/01/pt2%e8%a8%ad%e5%ae%9a-%e4%ba%88%e7%b4%84%e9%8c%b2%e7%94%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PT2設定 とりあえず録画まで</title>
		<link>http://hasumi.info/~h2/2010/01/31/pt2%e8%a8%ad%e5%ae%9a-%e3%81%a8%e3%82%8a%e3%81%82%e3%81%88%e3%81%9a%e9%8c%b2%e7%94%bb%e3%81%be%e3%81%a7/</link>
		<comments>http://hasumi.info/~h2/2010/01/31/pt2%e8%a8%ad%e5%ae%9a-%e3%81%a8%e3%82%8a%e3%81%82%e3%81%88%e3%81%9a%e9%8c%b2%e7%94%bb%e3%81%be%e3%81%a7/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 17:53:26 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PT1/PT2]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1649</guid>
		<description><![CDATA[昨年末，なんとなくノリで買ってしまったPT2をようやくセットアップしました
一番苦労したのはUbuntu 9.10 (Karmic) x64のインストールですｗ
Karmicはこれまでデスクトップ，ノート，VMと5台を越 [...]]]></description>
			<content:encoded><![CDATA[<p>昨年末，なんとなくノリで買ってしまったPT2をようやくセットアップしました</p>
<p>一番苦労したのはUbuntu 9.10 (Karmic) x64のインストールですｗ</p>
<p>Karmicはこれまでデスクトップ，ノート，VMと5台を越える環境でインストールを試みてきたのですが，まともに起動したことがありませんでした</p>
<p>今回も例に漏れず，セットアップ直後からちょっとおかしかったんですが，なんとか無事に起動にこぎ着けました</p>
<p>なのに・・・アップデートするとudevのバグで起動不可能</p>
<p>ググったらLive CDを使った修復法が見つかりましたが，Live CDにはmdモジュールがないので，RAID必須な自分はAlternateしか持ってない（ブランクメディアもない）</p>
<p>方法としては，procとかをマウントして，chrootしてapt-get dist-upgardeするモノだったので，インストーラを途中で止めてやってみたんですが，今度はファイルシステムを認識しなくなりました・・・＞＜</p>
<p>この時点で5時間以上経過・・・<br />
追求するのは面倒なので9.04 (Jaunty)  を入れて，アップグレードすることに</p>
<p>結論としてはこれが一番まちがいなく，ラクでした</p>
<p>無事OSが入ったところで，ようやくPT2の設定を開始</p>
<p>ちょうど今月の日経Linuxの特集2が「PT2で地デジ録画システムを作る」だったので，基本は付録DVDに収録されていたものを使いましたが，記事用に改良されたepgrec以外は全てネットでDLできます</p>
<ol>
<li>B-CAS用カードリーダー
<ul>
	使用したカードリーダは<a href="http://www.gemalto.com/japan/product/pctwin.html">Gemalto PC Twin</a>です<br />
	USBのCCID (Chip/Smart Card Interface Devices) クラス対応なので簡単です</p>
<pre class="brush: text;">
% sudo apt-get install libccid libpcsclite-dev pcsc-tools
</pre>
<p>lsusbでカードリーダが認識されているのを確認したら，B-CASをさしてカードが認識されてるか調べましょう</p>
<pre class="brush: text;">
% pcsc_scan
PC/SC device scanner
V 1.4.15 (c) 2001-2009, Ludovic Rousseau &lt;ludovic.rousseau@free.fr&gt;
Compiled with PC/SC lite version: 1.4.102
Scanning present readers...
0: Gemplus GemPC Twin 00 00

Fri Jan 29 07:47:08 2010
 Reader 0: Gemplus GemPC Twin 00 00
  Card state: Card inserted,
・・・
     Japanese Chijou Digital B-CAS Card (pay TV)
</pre>
</ul>
</li>
<li>ビルド用環境の準備
<ul>
いろいろビルドするので，要りそうなものを入れておきましょう<br />
カーネルモジュールをビルドするのでヘッダも要ります</p>
<pre class="brush: text;">
% sudo apt-get install build-essential autoconf automake linux-headers-`uname -r`
</pre>
</ul>
</li>
<li>ARIB STD-B25解除用プログラム
<ul>
付録DVDのものを使用しましたが，<a href="http://www.marumo.ne.jp/db2009_4.htm#19">まるも製作所</a>でもDL出来ます</p>
<pre class="brush: text;">
% tar zxvf arib25-0.2.4.tar.gz
% cd arib25-0.2.4/src
% make
% sudo make install
</pre>
</ul>
</li>
<li>ドライバと録画ツール
<ul>
付録DVDより新しいものがあったので，<a href="http://hg.honeyplanet.jp/pt1/archive/tip.tar.bz2">リポジトリ</a>からDLしました<br />
まずはドライバ</p>
<pre class="brush: text;">
% tar jxvf tip.tar.bz2
% cd pt1-ee357d8f987f/driver/
% make
% sudo make install
</pre>
<p>つづいて録画ツール<br />
記事用に改良されたepgrecを使うにはパッチを当てる必要がありますが，パッチは付録DVDに収録されているバージョン用です<br />
パッチを見ると分かりますが，ソースファイルを1つ追加して，Makefileに追加したファイル用のエントリを追加しているだけなので，適当に修正しました<br />
雑誌の付録なので，これ以上詳しく書くのは止めておきます</p>
<pre class="brush: text;">
% cd ../recpt1/
% ./autogen.sh
% ./configure --enable-b25
% make
% sudo make install
</pre>
</ul>
</li>
</ol>
<p>ここまで終わったら，再起動します</p>
<p>再起動後，dmesgを確認しましょう</p>
<pre class="brush: text;">
% dmesg | grep pt1
[    9.879815] pt1-pci.c: r14:0c752a0a1e55 2010-01-25
[   11.487094] pt1_thread run
</pre>
<p>デバイスファイルも出来ているはずです</p>
<pre class="brush: text;">
% ls- al /dev/*pt1*
crw-rw-rw- 1 root video 251, 0 2010-01-30 01:49 /dev/pt1video0
crw-rw-rw- 1 root video 251, 1 2010-01-30 01:49 /dev/pt1video1
crw-rw-rw- 1 root video 251, 2 2010-01-30 01:49 /dev/pt1video2
crw-rw-rw- 1 root video 251, 3 2010-01-30 01:49 /dev/pt1video3
</pre>
<p>いよいよ録画です<br />
<a href="http://www.maspro.co.jp/contact/bro/bro_ch.html">マスプロのページ</a>などで自分の住んでいる地域の物理チャネルを確認しましょう</p>
<p>とりあえずTVQ (26ch) を30秒録画してみます</p>
<pre class="brush: text;">
% recpt1 --strip --b25 26 30 test.ts
</pre>
<p>録画したtsファイルはVLCなどで見ることができます</p>
<p>録画だけでなくストリーミングも出来ます<br />
録画時間を「-」にすると無制限録画になります<br />
ポートを指定しない場合はUDP1234が使用されます<br />
/dev/null に捨てずに同時に録画することもできます</p>
<pre class="brush: text;">
% recpt1 --udp --addr 視聴するPCのアドレス --port ポート番号 --strip --b25 26 - /dev/null
</pre>
<p>自分はMacのVLCで見ていますが，MacのVLCにはバグがあるようです<br />
URLを「udp://録画PC:1234/」としても，メディアリソースロケータの欄を見ると先頭に「http://」が挿入されて「http://udp://録画PC:1234/」にアクセスしようとするので，「http://」を削除する必要があります<br />
ただなぜかこれだけでは再生されず，さらに続けて「udp://」にアクセスすると再生が開始されます</p>
<p>チャンネル変更もできます</p>
<pre class="brush: text;">
% recpt1ctl --pid recpt1のプロセス番号 --channel チャンネル番号
</pre>
<p>たまたまやっていた24をとってみました<br />
URLが「udp://」になっているのが分かると思います<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2010/01/recpt1.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2010/01/recpt1-150x150.png" alt="recpt1" title="recpt1" width="150" height="150" class="alignnone size-thumbnail wp-image-1666" /></a></p>
<p>地デジはインターレスなので「インターレス解除」を「破棄」にしましょう</p>
<p>PT2は優秀ですね〜<br />
Atom330＋IONのPCですが，Xを起動して，録画+別の番組をストリーミングしても，CPU使用率は1〜2%です</p>
<p>とりあえず今回はここまで</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2010/01/31/pt2%e8%a8%ad%e5%ae%9a-%e3%81%a8%e3%82%8a%e3%81%82%e3%81%88%e3%81%9a%e9%8c%b2%e7%94%bb%e3%81%be%e3%81%a7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Zabbixのトリガーを修正</title>
		<link>http://hasumi.info/~h2/2009/12/13/zabbix%e3%81%ae%e3%83%88%e3%83%aa%e3%82%ac%e3%83%bc%e3%82%92%e4%bf%ae%e6%ad%a3/</link>
		<comments>http://hasumi.info/~h2/2009/12/13/zabbix%e3%81%ae%e3%83%88%e3%83%aa%e3%82%ac%e3%83%bc%e3%82%92%e4%bf%ae%e6%ad%a3/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 22:37:34 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Zabbix]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1611</guid>
		<description><![CDATA[ZabbixのテンプレートTemplate_Linuxには，ApacheやSyslogのデーモンが生きているか監視して，問題があれば障害を報告するトリガーがあります
監視方法には，

Zabbixサーバがポートにアクセス [...]]]></description>
			<content:encoded><![CDATA[<p>ZabbixのテンプレートTemplate_Linuxには，ApacheやSyslogのデーモンが生きているか監視して，問題があれば障害を報告するトリガーがあります</p>
<p>監視方法には，</p>
<ul>
<li>Zabbixサーバがポートにアクセスしてデーモンの生存を調べる方法</li>
<li>Zabbixエージェントがデーモンのプロセスを監視する方法</li>
</ul>
<p>の2種類があります</p>
<p>今回の対象は，後者のプロセスの監視です</p>
<p>Template_Linuxのトリガーは，Apacheのデーモン名はhttpd，Syslogのデーモン名はsyslogdであることを前提にしています</p>
<p>ですが，ディストリビューションによっては，Apacheのデーモンの名前がapacheやapache2だったりと多少異なりますし，Syslogもsidのようにrsyslogの採用が増えてきました</p>
<p>ということでちょっと変更して修正してやりましょう</p>
<p>ホストにテンプレートをリンクしたままの人も多いと思いますが，自分は最初リンクさせてアイテムやトリガーなどを継承した後，アンリンクして個々のホストに応じてカスタマイズしています</p>
<p>今回の変更もホストにテンプレートをリンクしたまま行う場合は，テンプレート自体を変更する必要があります</p>
<p>変更自体はいたって簡単です</p>
<p>Apacheの場合は次の通り</p>
<ol>
<li>Itemsから&#8221;Number of running processes apache&#8221;を選択</li>
<li>Keyを&#8221;proc.num[httpd]&#8220;→&#8221;proc.num[apache2]&#8220;などに変更</li>
</ol>
<p>Syslogの場合も同様です</p>
<p>これでApacheやSyslogが落ちてる時は，「Apache is not running on ・・・」や「Syslogd is not running on ・・・」のような障害が報告されるようになります</p>
<p>プロセス数の監視はデーモンが生きているかはもちろん，負荷などの状態を把握するのにも便利なので，ポートの監視よりオススメです</p>
<p>最近Zabbixネタばっかりですね<br />
しかも内容がどんどん薄くなってるような・・・</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2009/12/13/zabbix%e3%81%ae%e3%83%88%e3%83%aa%e3%82%ac%e3%83%bc%e3%82%92%e4%bf%ae%e6%ad%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zabbix 1.8のグラフの文字化けに対応</title>
		<link>http://hasumi.info/~h2/2009/12/12/zabbix-1-8%e3%81%ae%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ae%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%ab%e5%af%be%e5%bf%9c/</link>
		<comments>http://hasumi.info/~h2/2009/12/12/zabbix-1-8%e3%81%ae%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ae%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%ab%e5%af%be%e5%bf%9c/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:02:51 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Zabbix]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1599</guid>
		<description><![CDATA[前回インストールした Zabbix 1.8なんですが，日本語表示にしたときにグラフの凡例が化けていました

自分は別にかまわないのですが，教育用に立てたzabbixなので日本語の方がとっつきやすいかなぁと思って，直してみ [...]]]></description>
			<content:encoded><![CDATA[<p>前回インストールした Zabbix 1.8なんですが，日本語表示にしたときにグラフの凡例が化けていました<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-7.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-7-150x150.png" alt="zabbix18-7" title="zabbix18-7" width="150" height="150" class="alignnone size-thumbnail wp-image-1589" /></a></p>
<p>自分は別にかまわないのですが，教育用に立てたzabbixなので日本語の方がとっつきやすいかなぁと思って，直してみました</p>
<p>化け方から見て，フォントが日本語の文字のグリフに対応するデータを持ってないのが原因だと思われるので，<br />
とりあえずIPAフォントに変更してみます</p>
<p>環境は前回と同じで，Debian sid x64です</p>
<p>まずはaptでフォントをインストール</p>
<pre class="brush: text;">
$ sudo aptitude install otf-ipafont
</pre>
<p>次に，zabbixのフロントエンドの中にfontsディレクトリがあるので，そこにIPAフォントのリンクを張ります<br />
拡張子をotfではなくttfにしてリンクを張ってますが，これはzabbixがotfだとフォントを読み込んでくれないためです<br />
IPAフォントはOpenTypeですが，中身はTrueTypeなので問題ないでしょう</p>
<pre class="brush: text;">
$ cd /var/www/zabbix/fonts/
$ sudo ln -s /usr/share/fonts/opentype/ipafont/ipag.otf ipag.ttf
</pre>
<p>つづいて，zabbixがグラフに使用するフォントを変更</p>
<pre class="brush: text;">
$ sudo vim /var/www/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
→define('ZBX_GRAPH_FONT_NAME', 'ipag');
</pre>
<p>これで一応日本語表示できます<br />
ただ，どう考えても見難いですよね<br />
英語表示にした時も見づらい・・・<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-9.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-9-150x150.png" alt="zabbix18-9" title="zabbix18-9" width="150" height="150" class="alignnone size-thumbnail wp-image-1603" /></a> <a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-10.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-10-150x150.png" alt="zabbix18-10" title="zabbix18-10" width="150" height="150" class="alignnone size-thumbnail wp-image-1604" /></a></p>
<p>ということでIPAはやめて，お気に入りのmeiryoKeConsoleにしました<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-11.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-11-150x150.png" alt="zabbix18-11" title="zabbix18-11" width="150" height="150" class="alignnone size-thumbnail wp-image-1605" /></a> <a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-12.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-12-150x150.png" alt="zabbix18-12" title="zabbix18-12" width="150" height="150" class="alignnone size-thumbnail wp-image-1606" /></a></p>
<p>大分見やすくなったんではないでしょうか？<br />
みなさんも好きなフォントで試してみてください</p>
<p>本当は表示言語毎にフォントを変えるようにした方がいいのかも知れませんが，実運用はやっぱり英語の方がよさそうだし，面倒なのでこれで妥協します</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2009/12/12/zabbix-1-8%e3%81%ae%e3%82%b0%e3%83%a9%e3%83%95%e3%81%ae%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91%e3%81%ab%e5%af%be%e5%bf%9c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>早速Zabbix 1.8を入れてみた</title>
		<link>http://hasumi.info/~h2/2009/12/09/%e6%97%a9%e9%80%9fzabbix-1-8%e3%82%92%e5%85%a5%e3%82%8c%e3%81%a6%e3%81%bf%e3%81%9f/</link>
		<comments>http://hasumi.info/~h2/2009/12/09/%e6%97%a9%e9%80%9fzabbix-1-8%e3%82%92%e5%85%a5%e3%82%8c%e3%81%a6%e3%81%bf%e3%81%9f/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 19:31:03 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Zabbix]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1575</guid>
		<description><![CDATA[ ]]></description>
			<content:encoded><![CDATA[<p>今日（といっても昨日ですが），予想より早くZabbix 1.8が出たので早速入れてみました</p>
<p>以下，簡単な手順メモ</p>
<p>環境はDebian sid x64です<br />
apacheとphp5は入ってるものとします</p>
<p>基本的な流れは<a href="http://www.zabbix.com/documentation/1.8/manual/installation">インストールマニュアル</a>に従ってます</p>
<ol>
<li>zabbix用のユーザの作成<br />
一般ユーザとUID, GIDを区別できるようにしたいので，適当な値を調べて指定します<br />
ログインとかはしないのでその辺はセオリー通り</p>
<pre class="brush: text;">
$ sudo groupadd -g 107 zabbix
$ sudo useradd -u 105 -g zabbix -d /dev/null -s /bin/false zabbix
</pre>
</li>
<li>ソースのDLと展開
<pre class="brush: text;">
$ wget http://prdownloads.sourceforge.net/zabbix/zabbix-1.8.tar.gz
$ tar zxvf zabbix-1.8.tar.gz
</pre>
</li>
<li>DBの設定<br />
まず，zabbix用のDBとユーザを作成します</p>
<pre class="brush: text;">
mysql&gt; create database zabbix character set utf8;
mysql&gt; grant all privileges on zabbix.* to zabbix@localhost identified by 'パスワード';
mysql&gt; flush privileges;
mysql&gt; quit;
</pre>
<p>続いて，作成したDBにSQLファイルを読み込みます</p>
<pre class="brush: text;">
$ cat zabbix-1.8/create/schema/mysql.sql| mysql -u zabbix -p zabbix
$ cat zabbix-1.8/create/data/data.sql | mysql -u zabbix -p zabbix
$ cat zabbix-1.8/create/data/images_mysql.sql | mysql -u zabbix -p zabbix
</pre>
</li>
<li>ビルド<br />
proxyは使わないので，serverとagentをビルドします<br />
DBMSはMySQL，NET-SNMPとIPMIも使うのでオプションを次のようになります<br />
Jabberもおもしろそうなので使ってみます</p>
<p>build-essentialしか入っていない場合は，libmysqlclient-dev, libcurl-dev (=libcurl4-openssl-dev), libsnmp-dev, libiksemel-dev,  libopenipmi-devあたりが必要になるでしょう</p>
<p>ただ，（うちだけ？）configureスクリプトが不安定なので注意が必要です<br />
libiksemel-devを入れても</p>
<pre class="brush: text;">
checking for IKSEMEL... configure: error: Jabber library not found
</pre>
<p>といわれるので，&#8211;with-jabber=/usr/lib とするとなぜか通るようになります（configureはいったいどこ探してるんでしょうかね？）<br />
さらに不思議なのは，その後&#8211;with-jabberに戻しても通るようになってることです<br />
あと&#8211;with-openipmiを指定してもIPMIがnoになるのですが，同じオプションで30回くらい繰り返すとOpenIPMIになりました<br />
意味不明です・・・</p>
<p>PCがおかしい？<br />
いやいや，VMだしOSインストール直後なんですけど・・・</p>
<p>そういえば，1.6の頃も&#8211;enable-agentが効いてないことがあったなぁ</p>
<p>ともあれ，configureオプションは次の通り<br />
なんかバギーなので実行後，最後に表示される設定一覧で指定した通りになってるか確認しましょう</p>
<pre class="brush: text;">
$ cd zabbix-1.8
./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-jabber
・・・
Configuration:

  Detected OS:           linux-gnu
  Install path:          /usr/local
  Compilation arch:      linux

  Compiler:              gcc
  Compiler flags:        -g -O2   -I/usr/include/mysql  -DBIG_JOINS=1    -DUNIV_LINUX -DUNIV_LINUX     -I/usr/local/include -I/usr/lib/perl/5.10/CORE -I. -I/usr/include     -I/usr/include

  Enable server:         yes
  With database:         MySQL
  WEB Monitoring via:    cURL
  Native Jabber:         yes
  SNMP:                  net-snmp
  IPMI:                  openipmi
  Linker flags:             -L/usr/lib -lOpenIPMI -lOpenIPMIposix     -L/usr/lib/mysql  -liksemel    -lcurl  -L/usr/lib -lnetsnmp -lcrypto  -L/usr/lib -lnetsnmp -lcrypto
  Libraries:             -lm -lresolv      -lmysqlclient   -liksemel -lcurl  -lnetsnmp 

  Enable proxy:          no

  Enable agent:          yes
  Linker flags:             -L/usr/lib -lOpenIPMI -lOpenIPMIposix
  Libraries:             -lm -lresolv 

  LDAP support:          no
  IPv6 support:          no
・・・
$ sudo make install
</pre>
</li>
<li>ポート名の登録<br />
管理対象のマシンの/etc/servicesにエントリを追加</p>
<pre class="brush: text;">
zabbix_agent    10050/tcp
zabbix_trap     10051/tcp
</pre>
</li>
<li>サーバの設定<br />
サンプルをコピーして編集します<br />
1.8では項目の説明が分かりやすくなってます</p>
<pre class="brush: text;">
$ sudo mkdir /etc/zabbix
$ sudo cp misc/conf/zabbix_server.conf /etc/zabbix/
$ sudo vim /etc/zabbix/zabbix_server.conf
</pre>
<p>変更箇所のみ</p>
<pre class="brush: text;">
LogFile=/var/log/zabbix/zabbix_server.log
PidFile=/var/run/zabbix/zabbix_server.pid
DBUser=zabbix
DBPassword=パスワード
FpingLocation=/usr/bin/fping
</pre>
</li>
<li>エージェントの設定<br />
サンプルをコピーして編集します</p>
<pre class="brush: text;">
$ sudo cp misc/conf/zabbix_agentd.conf /etc/zabbix/
$ sudo vim /etc/zabbix/zabbix_agentd.conf
</pre>
<p>変更箇所のみ</p>
<pre class="brush: text;">
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Hostname=ホスト名（アクティブチェックを利用する際はサーバの設定と要統一）
</pre>
</li>
<li>PIDファイルとログファイル用のディレクトリを作成
<pre class="brush: text;">
$ sudo mkdir /var/run/zabbix
$ sudo mkdir /var/log/zabbix
$ sudo chown zabbix:zabbix /var/run/zabbix
$ sudo chown zabbix:zabbix /var/log/zabbix
</pre>
</li>
<li>起動スクリプトを作成<br />
まず，サーバ</p>
<pre class="brush: text;">
$ sudo cp misc/init.d/debian/zabbix-server /etc/init.d/
$ sudo vim /etc/init.d/zabbix-server
</pre>
<p>変更箇所のみ</p>
<pre class="brush: text;">
DAEMON=/usr/local/sbin/${NAME}
PID=/var/run/zabbix/$NAME.pid
</pre>
<p>続いて，エージェント</p>
<pre class="brush: text;">
$ sudo cp misc/init.d/debian/zabbix-agent /etc/init.d/
$ sudo vim /etc/init.d/zabbix-agent
</pre>
<p>変更箇所のみ</p>
<pre class="brush: text;">
DAEMON=/usr/local/sbin/${NAME}
PID=/var/run/zabbix/$NAME.pid
</pre>
<p>起動時に自動で起動するように設定します</p>
<pre class="brush: text;">
$ sudo update-rc.d zabbix-server defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'zabbix-server' missing LSB tags and overrides
insserv: warning: script 'zabbix-agent' missing LSB tags and overrides

$ sudo update-rc.d zabbix-agent defaults
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'K01zabbix-server' missing LSB tags and overrides
insserv: warning: script 'zabbix-agent' missing LSB tags and overrides
insserv: warning: script 'zabbix-server' missing LSB tags and overrides
</pre>
<p>LSB（Linux Standard Base）タグがないと警告がでます<br />
起動順序に依存関係がある場合うまくいかないこともあるので，適当にLSBタグを書いておきましょう</p>
<p>一度リンクを消します</p>
<pre class="brush: text;">
$ sudo update-rc.d -f zabbix-server remove
$ sudo update-rc.d -f zabbix-agent remove
</pre>
<p>起動・終了スクリプトにタグを追加します<br />
serverがagentより先に起動し，後で終了するように指定します</p>
<pre class="brush: text;">
$ sudo vim /etc/init.d/zabbix-server
### BEGIN INIT INFO
# Provides: zabbix-server
# Required-Start: $network mysql
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Zabbix Server start/stop script
# Description: Start and stop Zabbix Server daemon
### END INIT INFO

$ sudo vim /etc/init.d/zabbix-agent
### BEGIN INIT INFO
# Provides: zabbix-agent
# Required-Start: $network mysql zabbix-server
# Required-Stop: zabbix-server
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Zabbix Agent start/stop script
# Description: Start and stop Zabbix Agent daemon
### END INIT INFO
</pre>
<p>もう一度update-rc.dを実行</p>
<pre class="brush: text;">
$ sudo update-rc.d zabbix-server defaults
$ sudo update-rc.d zabbix-agent defaults
</pre>
</li>
<li>Webフロントエンドのコピー
<pre class="brush: text;">
$ sudo mkdir /var/www/zabbix
$ sudo cp -a frontends/php/* /var/www/zabbix/
$ sudo chown -R root:root /var/www/zabbix
</pre>
</li>
<li>デーモンの起動
<pre class="brush: text;">
$ sudo /etc/init.d/zabbix-agent start
$ sudo /etc/init.d/zabbix-server start
</pre>
</li>
<li>フロントエンドの設定<br />
ブラウザでフロントエンドにアクセスすると，タイムゾーンが設定されていないといわれたので設定</p>
<pre class="brush: text;">
$ sudo vim /etc/php5/apache2/php.ini
date.timezone = Asia/Tokyo
$ sudo /etc/init.d/apache2 restart
</pre>
<p><a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-1.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-1-150x150.png" alt="zabbix18-1" title="zabbix18-1" width="150" height="150" class="alignnone size-thumbnail wp-image-1583" /></a></p>
<p>いろいろチェック項目にエラーがあるので設定を変更します</p>
<pre class="brush: text;">
$ sudo vim /etc/php5/apache2/php.ini
post_max_size = 16M
max_execution_time = 300
mbstring.func_overload = 2
$ sudo aptitude install php5-mysql php5-gd
$ sudo /etc/init.d/apache2 restart
</pre>
<p><a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-2.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-2-150x150.png" alt="zabbix18-2" title="zabbix18-2" width="150" height="150" class="alignnone size-thumbnail wp-image-1584" /></a></p>
<p>続いて，DBの設定です<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-3.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-3-150x150.png" alt="zabbix18-3" title="zabbix18-3" width="150" height="150" class="alignnone size-thumbnail wp-image-1585" /></a> <a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-4.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-4-150x150.png" alt="zabbix18-4" title="zabbix18-4" width="150" height="150" class="alignnone size-thumbnail wp-image-1586" /></a></p>
<p>あとは，今設定した内容の設定ファイルをDLして設置するだけ<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-5.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-5-150x150.png" alt="zabbix18-5" title="zabbix18-5" width="150" height="150" class="alignnone size-thumbnail wp-image-1587" /></a></p>
<p>ログイン画面です<br />
デフォルトのIDはadmin, パスワードはzabbixです<br />
すぐログインして変更しましょう<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-6.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-6-150x131.png" alt="zabbix18-6" title="zabbix18-6" width="150" height="131" class="alignnone size-thumbnail wp-image-1588" /></a></p>
<p>ちらっと使ってみた感じですが，細かいところがいろいろ修正されていて使い勝手が向上しています<br />
Zabbixエージェントに加えてSNMPやIPMIを利用しているので，各ホストが何で監視されているのか把握しやすくなったのがうれしいです</p>
<p>ためしに表示言語を日本語にするとグラフが化けますね〜<br />
化けるのはグラフだけなので，設定の問題ではなさそうな気がします<br />
どうせ英語で使うので大した問題ではないです<br />
<a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-7.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-7-150x150.png" alt="zabbix18-7" title="zabbix18-7" width="150" height="150" class="alignnone size-thumbnail wp-image-1589" /></a> <a href="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-8.png"><img src="http://hasumi.info/~h2/wp-content/uploads/2009/12/zabbix18-8-150x150.png" alt="zabbix18-8" title="zabbix18-8" width="150" height="150" class="alignnone size-thumbnail wp-image-1590" /></a>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2009/12/09/%e6%97%a9%e9%80%9fzabbix-1-8%e3%82%92%e5%85%a5%e3%82%8c%e3%81%a6%e3%81%bf%e3%81%9f/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ルータのsyslogをログサーバに転送する</title>
		<link>http://hasumi.info/~h2/2009/12/04/%e3%83%ab%e3%83%bc%e3%82%bf%e3%81%aesyslog%e3%82%92%e3%83%ad%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%90%e3%81%ab%e8%bb%a2%e9%80%81%e3%81%99%e3%82%8b/</link>
		<comments>http://hasumi.info/~h2/2009/12/04/%e3%83%ab%e3%83%bc%e3%82%bf%e3%81%aesyslog%e3%82%92%e3%83%ad%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%90%e3%81%ab%e8%bb%a2%e9%80%81%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 15:02:01 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[ネットワーク]]></category>
		<category><![CDATA[Cisco]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[RTX/SRT]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1499</guid>
		<description><![CDATA[ルータなどのネットワーク機器は大量のログを保管できないが，その代わり大抵のルータはsyslogサーバにログを転送することができる
今回ログサーバに採用したのはDebian lenny
インストール直後はほとんど何も入って [...]]]></description>
			<content:encoded><![CDATA[<p>ルータなどのネットワーク機器は大量のログを保管できないが，その代わり大抵のルータはsyslogサーバにログを転送することができる</p>
<p>今回ログサーバに採用したのはDebian lenny<br />
インストール直後はほとんど何も入ってなくて軽いのが決め手</p>
<p>他にもUnix系のOSなら大抵syslogサーバを使っている<br />
Windowsにはsyslogサーバは入ってないけど，ちょっとしたテストなんかには<a href="http://www.geocities.co.jp/SiliconValley-Cupertino/3223/software/gstsyslogd/software.html">GST Syslog Server</a>が便利</p>
<p>lennyはsyslogではなくrsyslogを採用している</p>
<p>直接 /etc/rsyslog.conf を編集してもいいけど，お作法に従って /etc/rsyslog.d 以下にファイルを置いて読み込ませる</p>
<p>ファシリティはlocal0とします</p>
<p>設定ファイルの名前は *.conf であれば何でもOK<br />
今回はYAMAHA RTX1200のログなので /etc/rsyslog.d/rtx1200.conf にしました<br />
ログファイルの名前もお好きに</p>
<pre class="brush: text;">
$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/rtx1200.log
</pre>
<p>ファイアウォールがある場合は UDP 514番ポートを開けておきましょう</p>
<p>rsyslogを再起動します</p>
<pre class="brush: text;">
$ sudo /etc/init.d/rsyslog restart
</pre>
<p>ついでにローテーションの設定もしておきます<br />
/etc/logrotate.d/rsyslog に 先ほど指定したログファイルを追加するだけでOK<br />
logrotateはデーモンではないので，cronからlogrotateが実行される際に変更したファイルも読み込まれます</p>
<p>大量にログが転送されてくるとか，シビアなコンディションの場合はlogrotateを使わずにrsyslogのログローテーション機能を使った方が確実でしょう</p>
<p>あとは，ルータの設定です</p>
<p>ログレベルはnoticeとします<br />
YAMAHAならこんな感じ</p>
<pre class="brush: text;">
# syslog host 鯖のアドレス
# syslog facility 16
# syslog notice on
</pre>
<p>Ciscoならこんな感じかな</p>
<pre class="brush: text;">
# logging 鯖のアドレス
# logging facility local0
# logging trap 5
</pre>
<p>当たり前ですが，ntpとかでルータと鯖の時間併せておきましょう</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2009/12/04/%e3%83%ab%e3%83%bc%e3%82%bf%e3%81%aesyslog%e3%82%92%e3%83%ad%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%90%e3%81%ab%e8%bb%a2%e9%80%81%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MBRのおさらい</title>
		<link>http://hasumi.info/~h2/2009/11/02/mbr%e3%81%ae%e3%81%8a%e3%81%95%e3%82%89%e3%81%84/</link>
		<comments>http://hasumi.info/~h2/2009/11/02/mbr%e3%81%ae%e3%81%8a%e3%81%95%e3%82%89%e3%81%84/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 14:27:23 +0000</pubDate>
		<dc:creator>p0n</dc:creator>
				<category><![CDATA[PC]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://hasumi.info/~h2/?p=1371</guid>
		<description><![CDATA[先日お亡くなりになったMacBookのHDD
データがなくなったのは仕方ないが，なんとか活用できないものか？
Intel Macは既にEFIを利用していて，パーティションテーブルにはGPTを採用している
そして，Wiki [...]]]></description>
			<content:encoded><![CDATA[<p>先日お亡くなりになったMacBookのHDD<br />
データがなくなったのは仕方ないが，なんとか活用できないものか？</p>
<p>Intel Macは既にEFIを利用していて，パーティションテーブルにはGPTを採用している<br />
そして，Wikipediaによると<a href="http://ja.wikipedia.org/wiki/GUIDパーティションテーブル">GPT</a>はディスクの後方にもGPTヘッダーとパーティションテーブルを備えているらしい</p>
<p>互換性を保つためGPTではLBA0にMBRが存在するらしく，ディスク全体がひとつのパーティションであるように見えるらしいが，問題のHDDのLBA0には欠損があるようで読み取れなかった</p>
<p>ということで，このHDDを利用して，勉強がてらパーティション情報を復活させてみようと思う</p>
<p>その前に確認の意味も込めてMBRのおさらいをしてみる</p>
<p>実験台にされたのはUbuntu 9.04 (64bit) メインのLinuxマシン<br />
こいつはソフトウェアRAIDを組んでるマシンだが今回は片方のディスクを対象にする</p>
<p>このディスクの情報は下記の通り</p>
<pre class="brush: text;">
% sudo sfdisk -l /dev/sda

ディスク /dev/sda: シリンダ数 60801、ヘッド数 255、63 セクタ/トラック
ユニット = 8225280 バイトのシリンダ、1024 バイトのブロック、0 から数えます

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+      7       8-     64228+  fd  Linux raid 自動検出
/dev/sda2          8    1831    1824   14651280   fd  Linux raid 自動検出
/dev/sda3       1832   56783   54952  441401940    5  拡張領域
/dev/sda4          0       -       0          0    0  空
/dev/sda5       1832+  56540   54709- 439450011   fd  Linux raid 自動検出
/dev/sda6      56541+  56783     243-   1951866   82  Linux スワップ / Solaris
</pre>
<p>まず，MBRを取り出してやる<br />
MBRはHDDのCHSだとC:0 H:0 S:1，LBAだと0から512バイトの領域なので</p>
<pre class="brush: text;">
% sudo dd if=/dev/sda of=mbr bs=512 count=1
</pre>
<p>取り出したMBRをダンプしてやる<br />
zオプションを使ってることから明らかなように作業はLinuxでやってます</p>
<pre class="brush: text;">
$ od -tx1z -Ax mbr
・・・
0001b0 00 00 00 00 00 00 00 00 18 cd 01 00 00 00 80 01  &gt;................&lt;
0001c0 01 00 fd fe 3f 07 3f 00 00 00 c9 f5 01 00 00 00  &gt;....?.?.........&lt;
0001d0 01 08 fd fe ff ff 08 f6 01 00 20 1f bf 01 00 fe  &gt;.......... .....&lt;
0001e0 ff ff 05 fe ff ff 28 15 c1 01 a8 84 9e 34 00 00  &gt;......(......4..&lt;
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  &gt;..............U.&lt;
000200
</pre>
<p>MBRの大半はIPLで占められていて，先頭から446バイト後方にパーティションテーブルが，さらに64バイト後方に2バイトのシグネチャ (0xAA55) がある</p>
<p>ダンプ結果を見ると確かにシグネチャ 0xAA55が確認できる<br />
（リトルエンディアンな点に注意）</p>
<p>0&#215;0001b8-0&#215;0001bbの4バイトには，ディスクIDも確認できる</p>
<p>ダンプデータから，パーティションテーブルの情報を抜き出して見る<br />
パーティションテーブルには4つのエントリがあり，各エントリの構成は先頭から順に，次のようになっている</p>
<ul>
<li>ブートフラグ (8bits)</li>
<li>開始位置 (CHS) (24bits)</li>
<li>パーティションタイプ (8bits)</li>
<li>終了位置 (CHS) (24bits)</li>
<li>開始位置 (LBA) (32bits)</li>
<li>セクタ数 (LBA) (32bits)</li>
</ul>
<p>また，CHS形式の値は先頭から順に，次のようになっている</p>
<ul>
<li>Head (8bits)</li>
<li>Cylinder上位 (2bits)</li>
<li>Sector (6bits)</li>
<li>Cylinder下位 (8bits)</li>
</ul>
<p>従ってパーティションの情報は次の通り</p>
<table border=0 cellpadding=2 cellspacing=2>
<tr>
<td bgcolor="#bbbbff" >Partition</td>
<td bgcolor="#bbbbff" >Boot Flag</td>
<td bgcolor="#bbbbff" >Partition Type</td>
<td bgcolor="#bbbbff" >Start (CHS)</td>
<td bgcolor="#bbbbff" >End (CHS)</td>
<td bgcolor="#bbbbff" >Start (LBA)</td>
<td bgcolor="#bbbbff" >Sector Counts</td>
</tr>
<tr>
<td bgcolor="#ddddff" >1</td>
<td bgcolor="#ddddff" >80h</td>
<td bgcolor="#ddddff" >FDh</td>
<td bgcolor="#ddddff" >C:0 H:1 S:1</td>
<td bgcolor="#ddddff" >C:7 H:254 S:63</td>
<td bgcolor="#ddddff" >63</td>
<td bgcolor="#ddddff" >128457</td>
</tr>
<tr>
<td bgcolor="#ddddff" >2</td>
<td bgcolor="#ddddff" >0h</td>
<td bgcolor="#ddddff" >FDh</td>
<td bgcolor="#ddddff" >C:8 H:0 S:1</td>
<td bgcolor="#ddddff" >C:1023 H:254 S:63</td>
<td bgcolor="#ddddff" >128520</td>
<td bgcolor="#ddddff" >29302560</td>
</tr>
<tr>
<td bgcolor="#ddddff" >3</td>
<td bgcolor="#ddddff" >0h</td>
<td bgcolor="#ddddff" >05h</td>
<td bgcolor="#ddddff" >C:1023 H:254 S:63</td>
<td bgcolor="#ddddff" >C:1023 H:254 S:63</td>
<td bgcolor="#ddddff" >29431080</td>
<td bgcolor="#ddddff" >882803880</td>
</tr>
<tr>
<td bgcolor="#ddddff" >4</td>
<td bgcolor="#ddddff" >0h</td>
<td bgcolor="#ddddff" >0h</td>
<td bgcolor="#ddddff" >C:0 H:0 S:0</td>
<td bgcolor="#ddddff" >C:0 H:0 S:0</td>
<td bgcolor="#ddddff" >0</td>
<td bgcolor="#ddddff" >0</td>
</tr>
</table>
<p>基本パーティションと拡張パーティションをあわせて3つしかないので4番目のエントリは0で埋められている</p>
<p>ブートフラグを見ると第1パーティションにブート可能を示す80hが格納されており，他のパーティションには0hが格納されている</p>
<p>BIOSによってMBRが0&#215;7C00にロードされると，IPLはブートフラグが80hになっているパーティションを探す</p>
<p>古いBIOSでは，パーティションテーブルの先頭から順に1バイトずつ，DL, DH, CL, CHレジスタに格納される<br />
つまり，DLレジスタでこの80hをドライブナンバー，DHでヘッド数，CHでシリンダ数の下位8ビット，CLの第7-8ビットでシリンダ数の上位2ビットを指定してINT 13hをコールすることで，パーティションテーブルのブートレコードが読み込まれる</p>
<p>拡張INT 13hでは，CHSではなくLBAを利用する</p>
<p>ちなみに，GRUBなどはIPLを書き換えて独自のブートプロセスをとるため，この限りではない</p>
<p>CHS方式では1024個のシリンダしか扱えないので，最近の大容量のHDDではCHSによるジオメトリではなくリニアなLBAを使用するが，CHSのエントリとしては1023/254/63が格納されている</p>
<p>sfdiskの結果をみると，H:254 S:63は固定で，シリンダの値としてディスク容量から算出された1024より大きな値が表示されている</p>
<p>パーティションはシリンダの境界から始めるのがルールだが，第1パーティションだけは例外でMBRの次のヘッダである C:0 H:1 S:1から始まる</p>
<p>LBAの開始アドレスとそのパーティションのセクタ数を足してみると，次のパーティションの開始アドレスになっており，リニアにアドレスが振られていることが分かる</p>
<p>パーティションタイプは，FDhがLinuxのソフトウェアRAID，05hが拡張領域．他にもNTFSなら0&#215;07とかになる</p>
<p>続いて，CHSとLBAの変換方法はHDDの基本的な構造から考えれば自明</p>
<p><strong>CHS->LBA</strong><br />
　LBA = C * 1トラックのセクタ数 * ヘッド数 + H * 1トラックのセクタ数 + S &#8211; 1<br />
　　　 = (C * ヘッド数 + H) * 1トラックのセクタ数 + S &#8211; 1<br />
<strong>LBA->CHS</strong><br />
　C = LBA / 1トラックのセクタ数 / ヘッド数<br />
　H = (LBA / 1トラックのセクタ数) % ヘッド数<br />
　S = LBA % 1トラックのセクタ数 + 1</p>
<p>計算してみると分かるが，LBAから算出した値はsfdiskの表示する1024を超えたシリンダ番号と一致する</p>
]]></content:encoded>
			<wfw:commentRss>http://hasumi.info/~h2/2009/11/02/mbr%e3%81%ae%e3%81%8a%e3%81%95%e3%82%89%e3%81%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

