このブログを検索

ラベル it の投稿を表示しています。 すべての投稿を表示
ラベル it の投稿を表示しています。 すべての投稿を表示

2011-10-15

Netwalkerセットアップ(4/5)

長いセットアップですが今回がようやくメイン。
電子辞書周りです。


●電子辞書ビューワ
電子辞書ビューワをインストールします。
netwalker用の辞書ソフトもありますが
たぶん専用SDカード刺さないと使えなくて使いづらいです。
自分で辞書を購入すれば、自分のSDカードに他データと一緒に入れられます。
で、netwalkerでよく使われているらしい辞書形式がEPWINGという形式。
一般的な形式で、市販のデジタル辞書はたいていこの形式でも売られているようです。
このEPWING形式を再生するのに使われるソフトがEBViewというソフト。
普通にインストールするとv3.6が入り、2gbの制限があるそうです。
v3.6.2をインストールすればその制限を突破できます。
今回はv3.6.2をビルドしてみます。

$ sudo aptitude install build-essential automake autoconf dh-make fakeroot debhelper dpkg-dev

まずlibebのビルド&インストール
$ sudo aptitude install zlib1g-dev help2man nkf

ソースを手に入れる
$ mkdir ~/eb
$ cd ~/eb
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/eb/eb_4.4.1-1.dsc
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/eb/eb_4.4.1.orig.tar.gz
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/eb/eb_4.4.1-1.diff.gz
$ dpkg-source -x eb_4.4.1-1.dsc
※「署名を検査できません」のエラーは問題なし

ビルド
$ cd eb-4.4.1
$ dpkg-buildpackage -rfakeroot
※dpkg-checkbuilddeps: Unmet build dependencies: などと出るようであれば
パッケージが不足しているので指示されたものをインストールする

再度ビルド
$ dpkg-buildpackage -rfakeroot
$ sudo aptitude remove libeb12 ebview
$ cd ..
$ sudo dpkg -i libeb13_4.4.1-1_armel.deb libeb13-dev_4.4.1-1_armel.deb

インストール
$ sudo aptitude install cdbs quilt libgtk2.0-dev

次にebviewのインストール
ソースを手に入れる
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/ebview/ebview_0.3.6.2-1ubuntu1.dsc
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/ebview/ebview_0.3.6.2.orig.tar.gz
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/e/ebview/ebview_0.3.6.2-1ubuntu1.diff.gz
$ dpkg-source -x ebview_0.3.6.2-1ubuntu1.dsc
※「署名を検査できません」のエラーは問題なし

ビルド
$ cd ebview-0.3.6.2
$ dpkg-buildpackage -rfakeroot
※dpkg-checkbuilddeps: Unmet build dependencies: などと出るようであれば
パッケージが不足しているので指示されたものをインストールする

再度ビルド
$ dpkg-buildpackage -rfakeroot
$ cd ..

インストール
$ sudo dpkg -i ebview_0.3.6.2-1ubuntu1_armel.deb

最後に不要なものをUninstall
$ sudo aptitude purge zlib1g-dev help2man nkf cdbs quilt libgtk2.0-dev
※build-essential automake autoconf dh-make fakeroot debhelper dpkg-dev
は今後も使う可能性があるので残しておく

これでアプリケーション→アクセサリから起動できるようになる。

ebviewの設定をする。
外部プログラムを変更する
ツール→オプション→外部プログラム
音声再生プログラム:totem %f
動画再生プログラム:totem %f     ※動作未確認
Webブラウザの起動コマンド:firefox %f     ※動作未確認
ファイルを開くデフォルトのコマンド:leafpad +%l %f     ※動作未確認

音声再生プログラムはaplayやaudaciousでもいいけど
aplayは途中停止ができない?audaciousは多重起動してしまうなど問題がある

辞書を入れる場所を作成する
今回は/mnt/data/epwingとする
$ sudo mkdir /mnt/data/epwing
$ sudo chown ユーザー:ユーザー /mnt/data/epwing

参考:
http://d.hatena.ne.jp/prima_coda/20100708/1278598848
http://hishida.s271.xrea.com/manual/EBPocket/EBShrink.html


●辞書(和英・英和)
とりあえずフリーの和英・英和辞書を入れてみます。

和英・EDICT

http://openlab.ring.gr.jp/edict/fpw/#edict
から
edict-fpw1.2.1.zipをダウンロードする
※/mnt/data/epwingに

$ unzip edict-fpw1.2.1.zip

アプリケーション→アクセサリ→EBView
ツール→オプション
辞書検索→辞書グループ

グループ名:和英英和辞典
として追加ボタン

次に
パス:/mnt/data/epwing
としてディスクを検索ボタン

Disk Search Resultというグループができてその下にEDICTがある
EDICTをクリックして上へ・下へボタンで先程作ったグループ下に移動させる


英和・GENE95

まずはfreepwingをビルドする
http://www.sra.co.jp/people/m-kasahr/freepwing/
からSourcecodeをダウンロードする
$ wget ftp://ftp.sra.co.jp/pub/misc/freepwing/freepwing-1.6.1.tar.bz2
$ tar -xjf freepwing-1.6.1.tar.bz2
$ cd freepwing-1.6.1
$ ./configure
$ make
$ sudo make install

次にgene95オリジナルとそれをepwing化するスクリプトを使う
http://www.namazu.org/~tsuchiya/sdic/data/gene.html
から
gene95.tar.gz

http://openlab.ring.gr.jp/edict/fpw/#gene95
から
gene95-fpw1.1.2-src.tar.gzをダウンロードする

さらに
ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/
から
jcode.pl-2.13
をjcode.plとしてダウンロードする
※/mnt/sd/workに

変換エンジンをインストールする
$ cd /mnt/sd/work
$ tar -xzf gene95-fpw1.1.2-src.tar.gz
$ tar -xzf gene95.tar.gz -C gene95-fpw1.1.2
$ sudo aptitude install epwutil

変換スクリプトを使う
$ cd gene95-fp1.1.2
$ fpwmake
※遅いので普段使いのPCにVMWare入れてやったほうが速いかも
$ fpwmake catalogs
$ fpwmake package
→gene95-fpw1.1.2.zipが作成される
$ cp gene95-fpw1.1.2.zip /mnt/data/epwing/.
$ cd /mnt/data/epwing
$ unzip gene95-fpw1.1.2.zip
$ rm gene95-fpw1.1.2.zip

以上で変換完了。
EBViewの和英英和辞典グループに追加する。


●辞書(wikipedia-ja)
wikipedia-jaのepwing変換済みが圧縮込みで公開されています。
それをインストールします。感謝!

.exeで圧縮されているためWindowsでダウンロードします。
http://sites.google.com/site/boookends/
からWikipedia(ja)0921Liteをダウンロードする(1.97GiB)
.exeを実行して解凍
中のepwingというフォルダをWikip_simple0606に変更する
名前変更したWikip_simple0606をNetwalkerの/mnt/data/epwingにコピーする。

EBViewの百科事典グループに追加する。

ちなみにLiteと通常版の違いは、図の数らしいです。
EBViewはなぜかWikipediaの画像等が再生できないので
Lite版でよいです。

参考:
http://bamboo-hill.air-nifty.com/diary/2010/01/wikipediaepwi-2.html


●辞書(wikipedia-enのベーシック英語版)
Windowsで
http://sites.google.com/site/boookends/en
からWikipedia(simple)0606をダウンロードする(322MiB)
.exeを実行して解凍
中のepwingというフォルダをWikip_simple0606に変更する
名前変更したWikip_simple0606をNetwalkerの/mnt/data/epwingにコピーする

EBViewの百科事典グループに追加する


●辞書(Uncyclopedia)
http://www.border.jp/saba/trunk2/
からUNCYC110822_ja.zipをダウンロードする

※/mnt/sd/work/に入れたとする
$ cd /mnt/sd/work
$ unzip UNCYC110822_ja.zip
解凍されたUNCYCフォルダを/mnt/data/epwingにコピーする


●辞書(その他)
他に入れてみたよさそうな辞書を紹介

口語訳聖書
http://www31.ocn.ne.jp/~h_ishida/jbible.html

PDD百科事典
http://www.vector.co.jp/soft/dl/data/writing/se312764.html

惡魔の辭典
http://openlab.ring.gr.jp/edict/fpw/#devil

ロジェーのシソーラス(類義語辞典)
http://openlab.ring.gr.jp/edict/fpw/#roget


●辞書圧縮
EBShrink
http://www31.ocn.ne.jp/~h_ishida/EBPocket.html#download_win
これでepwing形式のファイルを圧縮できる。
圧縮するとサイズが半分位になる代わりに少しアクセスが遅くなる。
上記で紹介したものは一部を除いて未圧縮のため圧縮するのもいいと思われる。

オススメ設定
・zip Level => 3
・Speed up index access => チェックON
・Keep original file => チェックOFF

一緒についてくるEBWinはepwing辞書ビューワ
確認に使える


これでNetwalkerの一通りのセットアップ完了。
外出中のお供にします。

続く

Netwalkerセットアップ(3/5)

●Wicd
標準のネットワークマネージャよりも使いやすいらしいものに変更する。
Synaptecでwicdをインストールする。
その後、wicdを使ってネットワーク接続をやり直す。


●Windows共有フォルダアクセス
Netwalkerからwindowsの共有フォルダへアクセスする。
結論から言うとGUIから操作はできるが、マウントはNetwalker標準ではできない。
NetwalkerのUbuntuにはcifsというモジュールが無いらしく、
自分でarm用にビルドしてやる必要がありそう。(野良ビルドしてくれてる人もいるけど)
とりあえずGUIから操作できれば問題ないので今回は諦め。

まずはWindowsネットワークを参照するためにsmbclientを入れる
$ sudo aptitude install smbclient libsmbclient samba-common
※最初から入っているはず

workgroupを変更する
$ sudo gedit /etc/samba/smb.conf
workgroup = の WORKGROUP をWindowsにあわせて変更する。

[global]
workgroup = WORKGROUP

これで場所→ネットワークにLANのコンピュータが表示される
ちなみにコマンドで参照する場合はこちら
$ smbclient -L windowsホスト名orIP -U ユーザー
で共有フォルダ一覧を参照できる。

次に実際にアクセス
場所→サーバへ接続 を選択し、
サービスの種類をWindows共有に変更する。

情報を入力する
サーバー名:Windowsホスト名orIP
共有する場所:共有フォルダ名
フォルダ:サブフォルダ?空欄でOK
ユーザ名:ユーザー
ドメイン名:ワークグループ?
ブックマークを追加する:今後も使うならチェック
ブックマーク名:ブックマーク追加する場合は任意の名前

以上でGUIから共有フォルダにアクセス可能。
ブックマークを追加した場合は、以後はブックマークからアクセス可能。

参考:
http://itmst.blog71.fc2.com/blog-entry-27.html
http://linux.kororo.jp/cont/server/smbclient.php


●vim
コマンドラインでのテキスト編集用に。
ただのviより機能が上らしい。
Synapticでvimをインストールする。

viだとなんかキー配置がおかしいような・・・?


●Leafpad
gEditの代わりとして入れる。
gEditよりとにかく起動が速くて良い感じ。

.txtファイルのデフォルトアプリケーションに変更する。
適当な.txtファイルを右クリック→プロパティ→開き方→追加
コマンドを直接指定するにて、
leafpad
を指定して追加。
一覧に追加されたleafpadにチェックを入れてダイアログ閉じる。

ただし、windowsの共有フォルダからは認識できないみたいで、
そこから直接開く場合はgeditが開いてしまう。


●NoteCase
SynapticでNoteCaseをインストール。
メモを階層構造で保存できる。画像も挿入できる。
普段使いのメモとしてはちょうどいい感じ。


●Evernote
→ダメだった
クライアントは残念ながらarmでは使えなかった。
しょうがないのでWEB版を使い、普段は別アプリを使うことにする。
ちなみにLinux用だけなく、クローンのnevernoteはLinux用はあるけどarm用だけ無い感じ。


●KeePassX
パスワードマネージャとしてKeePassXというのを入れる。
ネット上でなかなか評判がよさそう。
SynapticでKeePassXをインストール。


●chromium-browser-nnc
高速ブラウザだという噂のchromiumを入れてみる。
ただし9.04にはインストール出来ないので野良ビルドを入れる。

ソフトウェアソースに次を追加してからアップデート
deb http://nnc.dyndns.biz/netwalker_rep/ ./
$ sudo aptitude update

そしてSynapticでchromium-browser-nncをインストールすればOK。
普段使いとしてはfirefoxと使い比べて決めます。

参考:
http://nnc.dyndns.biz/netwalker_rep/#toc_1.5.1


●Firefox5~
Firefoxは標準で入っているけどバージョンが相当古い。
そしてアップデートもないので野良ビルドを入れる。
アップデート版を提供してくれている人がいたのでダウンロードした。

http://www1.axfc.net/uploader/N/so/130793.zip
キーワード:firefox5

インストール方法
$ unzip firefox5-fix.zip
$ cd firefox5
$ ./install.sh
※一般ユーザーで実行

また、そのままだと自動更新ができないらしい。
それをできるようにするパッチ。
※たぶん個人のサーバーに繋ぎにいっている

ARM用Firefox自動更新機能
http://dl.dropbox.com/u/34541889/tools/setauto.tgz
インストール方法
まずはFirefox5を一旦起動して設定ファイルを作っておく。その後終了。
$ tar xfz setauto.tgz
$ cd setauto
$ ./setup.sh
※一般ユーザーで実行

※上記2つを同時にするスクリプト(未確認)
http://dl.dropbox.com/u/34541889/tools/install-firefox.zip
$ unzip install-firefox.zip
$ cd install-firefox
$ ./install-firefox.sh

ハマったのが、設定画面がWindowsのように
ツール→オプションじゃなく、編集→設定のところ。
2時間くらい調べまくってしまったw
Linux用Mozilla製品はすべてそうみたいだ。

普通に起動するとアップデート版が起動する。
まずはブックマークはSync機能で同期させた。
そして普段使うアドオンを入れておく
・2ペインブックマーク
・All-in-One Sidebar
・Configuration Mania
・Download Statusbar
・Video DownloadHelper
・Extended Statusbar
・Grab and Drag
・PDF Download
・Pearl Crescent Page Saver Basic
・RemoveTabs
・Speed Dial
・Tab Mix Plus
・Thumbnail Expander
・keyconfig
・セッションマネージャ
・テキストリンク
など

Windowsだと検索ワードボックスをクリックすると全選択状態になるのにLinux版はなぜかならない。
これを解決する。
アドレスバーに about:config と入力してEnter
browser.urlbar.clickSelectsAllの値をtrueにする
タブを閉じる。

Firefoxキャッシュをメモリに置いて高速化&SSDretain化する。
アドレスバーに about:config と入力してEnter
browser.cache.disk.enableをfalseにする
browser.cache.memory.enableをtrueにする
browser.cache.memory.capacity(整数値)を新規作成し、8192にする

再起動

参考:
http://2chnull.info/r/mobile/1298787437/1-1001
http://shiremono.com/?p=5256
http://mozilla-remix.seesaa.net/article/40026111.html


●Thunderbird5
ThunderbirdもFirefox同様にバージョンを上げる。

http://www1.axfc.net/uploader/N/so/130838.zip
キーワード:tb5

インストール方法
$ unzip thunderbird5.zip
$ cd thunderbird5
$ ./install.sh
※一般ユーザーで実行

ARM用Thunderbird自動更新機能
http://dl.dropbox.com/u/34541889/tools/setauto2.tgz

インストール方法
まずはThunderbird5を一旦起動して設定ファイルを作っておく。その後終了。
$ tar xfz setauto2.tgz
$ cd setauto2
$ ./setup.sh
※一般ユーザーで実行

※上記2つを同時にするスクリプト(未確認)
http://dl.dropbox.com/u/34541889/tools/install-thunderbird.zip
$ unzip install-thunderbird.zip
$ cd install-thunderbird
$ ./install-thunderbird.sh

普段使っているaddonをインストールする
・CompactHeader
・Extra Folder Columns
※Lightning、MinimizeToTrayは動かなかった
※LightningはARM用libstdc++5があれば動くかも・・・?ビルドしてみたけどエラーでた
libstdc++6はあるけどそれだとダメっぽい。

参考:
http://2chnull.info/r/mobile/1298787437/1-1001


●Sunbird
NetwalkerにはSunbirdが入っているけども
近況としてはSunbirdの開発は確か終わっていて
後継としてThunderbirdアドオンとしてのLightningがある。

しかしNetwalkerのThunderbirdにはLightningがインストールできない。
しょうがないのでPIMとしてはSunbirdを使うことにする。
Googleカレンダーとの同期アドオンは最初から入っている。

参考:
http://banokoten-ron.blogspot.com/2009/11/libstdc5-ubunutu-910.html
http://blog.livedoor.jp/navcom/archives/50888967.html


●Adobe Flash 10.1
公式配布されているのは3だけど
それだと動かない物が多いらしい?
10.1をインストールすることができるらしい。

Flash Lite 3はインストールしていない状態でしか試していません。

ダウンロード:
http://www1.axfc.net/uploader/Sc/so/270833
キーワード:flash

ダウンロードしたら、展開する
$ unzip installflash.zip
$ cd installflash

Flashのインストール
$ sudo ./installflash.sh

Youtubeやニコニコ動画が再生できたらOK
Youtubeの場合は右下のアイコンで240pを選ばないとまともに再生できない
ニコニコ動画はそれなりにスムースに再生できました。

※Flashの削除
$ sudo ./removeflash.sh

参考:
https://forums.ubuntulinux.jp/viewtopic.php?id=7796


●speedcrunch
電卓アプリ
プリインストールされていない?
起動が速いらしいspeedcrunchを入れる
Synapticからspeedcrunchをインストール


●totem
動画プレイヤー。プリインストールされているtotemを使う。
これだとCPUの補助が受けられるらしい?
ネット上を見ていてもこれ以外のプレイヤーは遅くて使い物になってないぽい。
今回はtotemを少しでも高速化する

・サウンドドライバを変更
システム→設定→サウンドの「楽曲と動画」
サウンドドライバの設定を「自動検出」→「ALSA」にする

・PulseAudioの手動ON/OFF
PulseAudioというのはローカルファイル再生には不要なものらしく、
その割にCPUリソースを食うらしい。
これを普段はOFFにできるようにする。

$ sudo mv /etc/rc2.d/S50pulseaudio /etc/rc2.d/K50pulseaudio
※50の部分は環境依存?
$ sudo mkdir /etc/X11/Xsession.d.bak
$ sudo mv /etc/X11/Xsession.d/70pulseaudio /etc/X11/Xsession.d.bak/.
※70の部分は環境依存?

$ sudo leafpad /etc/pulse/client.conf
下記項目がコメントアウトされているので解除&変更する
autospawn = no
daemon-binary = /bin/true

再起動

以上で自動起動&自動復活がされなくなる。

ネットワーク経由で見るときなど?手動で起動停止したい場合は
$ pulseaudio --start
$ pulseaudio --kill
とする。

とりあえずOFFにした状態でニコニコから拾ってきたmp4が動くことを確認しました。

参考:
http://kapper1224.sakura.ne.jp/PALM20.html#10
http://kapper1224.sakura.ne.jp/PALM20.html#No27
http://japan.internet.com/linuxtutorial/20100813/2.html


●audacious
音楽プレーヤーとして人気があるらしいアプリ
Synapticでaudaciousをインストールする

そのままだと起動でエラーが出るので対策する
$ sudo mv /usr/lib/audacious/Input/adplug.so /usr/lib/audacious/Input/adplug.so.bak

アプリケーション→サウンドとビデオ
でAudaciousを起動する
枠を右クリック→設定→オーディオ
現在の出力Plugin:ALSA Output Plugin
に変更する。
デフォルトのPulseAudioは停止させるため

参考:
http://plaza.rakuten.co.jp/tutumikun/diary/200910120000/
http://basewall.kuciv.kyoto-u.ac.jp/dokuwiki/doku.php?id=netwalker


●Codec
audaciousで音をならすため、totemで動画を再生するため(?)、Codecをインストール
$ sudo apt-get install gstreamer0.10-ffmpeg gstreamer0.10-plugins-base gstreamer0.10-plugins-good gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse

とやると先ほどtotemで再生できたmp4を再生できなくなりましたが再起動で治りました。
エラー:「gstreamer上で一般的なストリームエラーが発生しました」

Codecを入れることで最初は再生出来なかったm4v(詳細不明)は再生できるようになりました。

参考:
http://kapper1224.sakura.ne.jp/PALM20.html


●totemでflv再生
youtubeなんかで落としてきたファイルは
これまでの手順で再生できない場合がある。
その場合は次のコマンドで変換すると再生できた。

$ sudo aptitude install ffmpeg
$ cd ファイルのあるフォルダ
$ for  vdo  in  *.flv;  do  ffmpeg  -i  "$vdo"  -vcodec  copy  -acodec  copy  "${vdo%%.flv}.mp4";  done
それなりに速く変換できる。

これをスクリプト化しておくと使いやすい
$ cd
$ mkdir lib
$ mkdir ./lib/flv2mp4
$ cd ./lib/flv2mp4
$ touch flv2mp4
$ chmod 755 flv2mp4
$ vim flv2mp4
下記スクリプトを作る
#! /bin/sh
for vdo in *.flv; do ffmpeg -i "$vdo" -vcodec copy -acodec copy "${vdo%%.flv}.mp4"; done
ショートカットをbinに入れる
$ sudo ln -s /home/ユーザー/lib/flv2mp4/flv2mp4 /usr/local/bin/flv2mp4

参考:
https://sharp-usersnet.jp/ldisp.asp?cno=1&tbno=0&cmode=4;;;;;&pro=mebius&f=first#data_top6551


●日本語変換
プリインストールのAnthyだと普段使いのGoogle日本語入力と違って使いヅライです。
なのでGoogle日本語入力のオープンソース版、Mozcをインストールします。
通常インストール出来ないので野良ビルドされた方のを使います。
chromインストール時に使ったソフトウェアソースからインストールできる。


インストール後、
$ sudo aptitude install scim-mozc mozc-server mozc-utils-gui
※scimの場合

$ sudo aptitude install ibus libibus1 ibus-gtk python-ibus ibus-mozc mozc-server mozc-utils-gui
※ibusの場合

再起動

システム→設定→SCIM入力メソッドの設定
IMエンジン→全体設定
Anthyを無効にする
フロントエンド→全体設定
キーボード配列を日本語にする

日本語入力モードにしてから上部メニューのキーボードの位置のアイコンをクリックしてMozcを選択する
ログオフ

参考:
http://plaza.rakuten.co.jp/kapper1224/diary/201101300000/
http://kapper1224.sakura.ne.jp/PALM20.html#No75


●ユーザー辞書
システム→設定→SCIM入力メソッドの設定
IMエンジン→Mozc
Dictionaly toolを選択して辞書ファイルを読みこませる。

ただしただでさえ非力なのであまり入れないほうがよさそう。

一応いくつか紹介。

2ちゃんねる系顔文字
http://matsucon.net/material/dic/
普段なら@版を使うけどnetwalkerだと押しづらいから通常版のほうがいいかも

ニコニコ大百科IME辞書
http://tkido.com/blog/1019.html

Google日本語入力強化辞書
http://blog.goo.ne.jp/typer_k20a/e/e9956e8c4a2f519a3689700aef56761f
現時点で最新版のv5-1版を落とせばOK

個人的には上記3つで十分。
下記mozc_01はBuild失敗したってのもあるけど、面倒なら上記で十分・・・?

mozc_01
http://www.geocities.jp/ep3797/mozc_01.html
→Build失敗。一応ある程度のところまではいったので手順を残しておく

$ sudo aptitude install devscripts debhelper libibus-dev libcurl4-openssl-dev libprotobuf-dev protobuf-compiler libqt4-dev libscim-dev libzinnia-dev

http://packages.ubuntu.com/lucid/python-support
からpython-supportパッケージをダウンロードしてインストールする
$ dpkg -i python-support-1.0.4ubuntu1_all.deb

http://packages.ubuntu.com/lucid/python/gyp
からgypパッケージをダウンロードしてインストールする
$ dpkg -i gyp_0.1~svn840-0ubuntu0.10.04.1_all.deb

http://packages.debian.org/sid/libgtest-dev
からlibgtest-devパッケージをダウンロードしてインストールする
$ dpkg -i libgtest-dev_1.6.0-1_armel.deb
ビルドする
$ lzcat mozc-ut-1.2.809.102.20110822.tar.lzma | tar xf -
$ cd mozc-ut-1.2.809.102.20110822/
$ cd doc-ut/script/
$ ./generate-zipcode-dic.sh
$ cd -
$ debuild -b -uc -us

ここで
debuild: fatal error at line 1329
というエラーが出て失敗。検索しても同様のエラーは見つからず断念。

最後に不要なパッケージをUninstallする
$ sudo aptitude purge devscripts debhelper libibus-dev libcurl4-openssl-dev libprotobuf-dev protobuf-compiler libqt4-dev libscim-dev libzinnia-dev gyp libgtest-dev

参考:
http://www.geocities.jp/ep3797/mozc_01.html
https://forums.ubuntulinux.jp/viewtopic.php?pid=61538


●画像ビューワ
GPicView
デフォルトのeogの代わりに軽いビューワ

GImageView
多量の画像を閲覧するためのビューワ

それぞれSynapticでインストールする。


●システムモニタ
conkyが使いやすいので採用する
$ sudo aptitude install conky

設定ファイルを
/home/ユーザー名/.conkyrc
というファイル名で作成する
今回設定したconkyrcファイルはこちら
更新間隔は3秒にしている。1秒にすると結構負荷があった。

conky起動(英語フォントで曜日を英語にするためにen起動)
$ LANG=en conky &

あとは自動起動に加えて、以降はシステム起動時に起動するようにするだけだが、
どうしてもうまく起動されなかった。
スクリプトで対応すればいいらしい。
$ cd
$ mkdir lib
$ mkdir ./lib/conky_en
$ cd ./lib/conky_en
$ touch conky_en
$ chmod 755 conky_en
$ vim conky_en

下記内容でスクリプトを作る
#! /bin/sh
sleep 30
LANG=en /usr/bin/conky &

ショートカットをbinフォルダに入れる。
$ sudo ln -s /home/ユーザー/lib/conky_en/conky_en /usr/local/bin/conky

そしてこれを自動起動に加えるとよい。
/usr/local/bin/conky

※ちなみにオリジナルは/usr/bin/conky

参考:
http://yaga.blog.so-net.ne.jp/2009-12-27-1
http://conky.sourceforge.net/variables.html
http://conky.sourceforge.net/config_settings.html
http://incompleteness-theorems.at.webry.info/201006/article_10.html
http://d.hatena.ne.jp/tettou77-2/20090427/1240820805
http://viva-ubuntu.com/applications-2/conky.html
http://yaga.blog.so-net.ne.jp/2009-12-24


続く

Netwalkerセットアップ(2/5)

●タッチパネル補正

最初は明らかにタッチパネルの反応がおかしいので補正する。
システム→システム管理→タッチパネルの補正
説明通りに操作し、ログオフ→ログインすると適用される。
画面端、特に下端がうまくいかない・・・これが限界なのか。


●マウス操作改善

システム→設定→マウス→全般タブ
ポインタの速度を加速、感度とも一番左にするといい感じ。


●SSD負荷軽減(noatime)

netwalkerはSSDを利用していて、これは書き換え可能回数が少ないらしい。
消耗しきってしまうと交換が必要だそうで。
ファイルアクセス日を更新しないようにして少しでも本体SSDの消耗を抑える。
$ sudo gedit /etc/fstab
そして編集する。
ubi0_0 / ubifs defaults 0 0
ubi0_0 / ubifs defaults 0 0

ubi0_0 / ubifs defaults,noatime 0 0
ubi0_0 / ubifs defaults,noatime 0 0
に変更する
そして次のコマンドを実行する
$ sudo mount -a

参考:
http://chirijiri.blog17.fc2.com/blog-entry-172.html
http://plaza.rakuten.co.jp/kapper1224/diary/201005180000/


●SSD負荷軽減(WriteBackとSwap)

キャッシュを頻繁に書き戻すとCPUを使う、

Swapも。これらの頻度を下げる。
$ sudo gedit /etc/sysctl.conf

以下の値を変更する。なければ追記する。
vm.swappiness = 10
vm.dirty_writeback_centisecs = 1500
vm.dirty_background_ratio = 30
vm.dirty_ratio = 60
設定を反映する。
$ sudo /sbin/sysctl -p

各値を簡単に記述。詳細は別途調べましょう。
vm.swapiness : 値が大きいほどSwapを使おうとする。デフォルト60
vm.dirty_writeback_centisecs : pdflushの起動間隔。デフォルト500
vm.dirty_background_ratio :pdflushする基準となるページ割合。デフォルト10
vm.dirty_ratio : dirty_background_ratioと同じ意味合いだが、これを超えると優先度の高いプロセスでpdflushする。デフォルト40

参考:
http://kiyoeri.gotdns.com:8086/pukiwikiplus/index.php?pdflush%E3%81%A8%E3%81%AF%EF%BC%9F
http://plaza.rakuten.co.jp/kapper1224/diary/201005180000/
http://raymonmon.blog38.fc2.com/blog-entry-25.html
http://isoya7.blogspot.com/2011/01/linux-vmswappiness.html


●ネットワーク接続

ネットワークに接続しないと使い物になりません。
USB経由でLANケーブルを差してもよいのですが、今回は普通に無線LANでいきます。Netwalkerは2.4ghzのb/gに対応しています。
うちには2.4ghzのb/g/nと5ghzのa/nがあり、2.4ghzの方に繋ぎました。
最初全然繋がらなくてアクセスポイントを再起動したりしてたら繋がるようになりました。
それ以降は常につながっていますが、ネットを見るかぎり他の人も最初は苦労していたみたいです。


●リカバリディスク(MicroSDカード)の作成

Netwalkerでfirefoxを立ち上げるとsharpのサイトに繋がる。
そこからリカバリディスクの作り方のサイトにいって指示通りにすればよい。
MicroSDカードは2GB以上のが必要。作成にはそれなりに時間がかかる。
ちなみに、それでリカバリするとデスクトップのランチャー的アイコンが全て消えた・・・?他にそういう情報がないので自分だけかもしれないが。。。
とりあえずデスクトップのアイコンはショートカットリンクをデスクトップに貼りつけて、サイズを引き伸ばしただけのものらしいので気にしないでおく。


●システムアップデート

初期状態だとリポジトリが古かったりして何もできないのでシステムアップデートする。
システム→システム管理→アップデートマネージャ
終わったら再起動する。

確認方法:
システム→システム管理→ソフトウェアソース
サードパーティソースに
deb http://old-releases.ubuntu.com/ubuntu jaunty main universe multiverse restricted

が含まれていたらOK
ファイルから見るのであれば
/etc/apt/sources.list
を確認するとよい。

システム→システム管理→Synaptec パッケージ・マネージャ
再読込ボタンでエラーが出ないことを確認する。

ちなみにNetwalkerに入っているUbuntu(9.04:Jaunty)はサポート期限が2010/10/23で終わっていて、NetwalkerのUbuntuは10以降にアップグレードできない。なのでシステムアップデートでサポート期限切れのリポジトリを参照するように変更する必要がある。




●リモートデスクトップできるようにする

netwalkerを使ってのシステム管理はしづらいので、xrdpをインストールしてwindowsからリモートデスクトップできるようにする。
ただ、synapticからインストールするとバージョンが古くてwindows7から接続できないので自前でビルドする。
→微妙に失敗。これだとキーが一部おかしいです。

アプリケーション→アクセサリ→端末
$ sudo aptitude update
$ sudo aptitude install git-core autoconf libtool libssl-dev libpam0g-dev libx11-dev libxfixes-dev tightvncserver scim scim-anthy
$ cd
$ mkdir work
$ cd work
$ git clone git://xrdp.git.sourceforge.net/gitroot/xrdp/xrdp
$ cd xrdp
$ ./bootstrap
$ ./configure
$ make
$ sudo make install

エラーなく終了。
$ xrdp --version
で見てみると0.6.0がインストールされた。
次にキーマップを作成

$ cd /etc/xrdp/
$ sudo /usr/local/bin/xrdp-genkeymap /etc/xrdp/km-0411.ini
$ sudo cp km-0411.ini km-e0200411.ini
$ sudo cp km-0411.ini km-e0210411.ini
$ sudo cp km-0411.ini km-e0010411.ini
このままだとキー配列がむちゃくちゃになるため設定ファイル?を編集する。
$ sudo gedit /etc/xrdp/startwm.sh
適当なところに下記を追記する

export XKL_XMODMAP_DISABLE=1

if [ "$LANG" = "ja_JP.UTF-8" ]; then
export XMODIFIERS=@im=SCIM
export GTK_IM_MODULE=scim
scim -d &
fi
xrdp実行

$ sudo /etc/xrdp/xrdp.sh start

この状態でwindows7からリモートデスクトップ接続してみる。
sesman-Xvncとかいうダイアログがでて、そこでnetwalkerのアカウント情報を入力。
・・・繋がったー
フォルダ名をアップデートしろとか出たのでとりあえずアップデートしといた。
日本語名を英語名に変えたいらしい。
#たぶんこれ、先ほどのシステムアップデート絡み?
以降はリモートデスクトップでらくらく操作。
・・・と思ったけど、キー配置がおかしいな・・・。
あんまり使えねぇ・・・。

参考:
http://blog.loadlimits.info/2010/02/linux%E3%81%A7%E8%A4%87%E6%95%B0%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0/
http://fukushimaya2.blog103.fc2.com/?mode=m&no=23


●タッチパネルの改善

次の操作でタッチパネルが改善されるらしい?

$ sudo gedit /etc/hal/fdi/policy/preferences.fdi

最後のの直前に下記を追記する

<device>
 <match key=\"input.x11_driver\" string=\"evtouch\">
      <merge key=\"input.x11_options.movelimit\" type=\"string\">1</merge>
      <merge key=\"input.x11_options.longtouchtimer\" type=\"string\">1</merge>
 </match>
</device>
そして再起動


参考:
https://forums.ubuntulinux.jp/viewtopic.php?id=7342


●長押しで右クリック

タッチ長押しで右クリックができるように設定を変更する。
システム→設定→マウス
再ログインを促されるので従う。

参考:
http://ascii.jp/elem/000/000/463/463472/index-3.html



●コマンド打ち間違えのエラーを速くする

$ cd /usr/lib
$ sudo mv command-not-found command-not-found.bak

参考:
http://www.kokoro-navi.com/diary3/cat11/pc-1/cat67/netwalker/



●swap領域

普段使い用のMicroSDカードを用意し、そこにswap領域を作成します。
高速化はあまり望めないそうですが、単にメモリを補助するという意味ではあったほうがいいそうです。
また、本体におくとSSDの寿命を減らしてしまうので外部メモリに保存します。

ちなみに本来SDカードはfat形式じゃないとだめだそうで、
例えばカメラなんかはfat形式じゃないと読めないらしい。
また、windowsはextは(普通には)読めない。
fat32には1ファイルのサイズが4gbまで。

今回はSDHCの32gbを用意しました。
512mbをswapに、ついでに残りをデータ領域にします。
データ領域は2つにわけ、
アプリケーションやドキュメントなどを入れる用にext3を1gb、
辞書や動画・音楽などの大容量データ用としてfat32で残り。とします。
fat32で収まらない4gb超え辞書ファイルなどがある場合はext3を増やすなりしましょう。
ext3(ext2+)はシンボリックリンク機能などが使えるが低速、fat32は逆にシンボリックリンク機能などが使えないがext2より高速。だそうです。
ほんとはext4を使いたいところだがnetwalkerは対応していないらしい。
まずgparted入れる
$ sudo aptitude install gparted
次にsdカードのデバイス名をチェックする

$ df

/dev/mmcblk0がそれっぽい。
フォーマットする
$ sudo gparted /dev/mmcblk0 &


デバイス→パーティションテーブルの作成
未割り当てを選択して

パーティション→新規
前を0mibにして、512mibを確保。linux-swapを選択して作成。
ここで一旦適用ボタン。→/dev/mmcblk0p1として作成された。

残りの未割り当てを選択して
パーティション→新規
1024mibを確保。ext3を選択して作成。
ここで一旦適用ボタン。→/dev/mmcblk0p2として作成された。

残りの未割り当てを選択して
パーティション→新規
残りが全て選択されていることを確認。fat32を選択して作成。
もう一度適用ボタン。→/dev/mmcblk0p3として作成された。

gpartedは終了する。
swapをonにする
$ sudo swapon /dev/mmcblk0p1

確認
$ free

問題なければ起動時に自動マウントさせる
swap領域のuidを調べる
$ sudo blkid /dev/mmcblk0p1

fstabに追記する
$ sudo gedit /etc/fstab

UUID=○×△□ none swap sw 0 0

再起動して認識されていることを確認する。
ちなみに、SDカードを抜くときは一旦次のコマンドを実行する。
$ sudo swapoff -a
挿し直したあとは再度swapon

swapついでにデータ領域も自動マウントする
$ mkdir /mnt/ext3(任意)
$ mkdir /mnt/fat32(任意)
$ sudo blkid /dev/mmcblk0p2
$ sudo blkid /dev/mmcblk0p3
$ sudo leafpad /etc/fstab

UUID=○○○○ /mnt/ext3 defaults,noatime 0 0
UUID=○○○○ /mnt/fat32 defaults,noatime,uid=ユーザー名,gid=ユーザー名,umask=022,utf8 0 0

参考:
http://crystal-atmosphere.air-nifty.com/blog/2009/12/netwalkerswap-9.html


●メモリ領域確保

不要な自動起動アプリをやめる
システム→設定→自動起動するアプリ
例えば

Bluetooth Manager
視覚支援

など

参考:
https://forums.ubuntulinux.jp/viewtopic.php?id=5850


●時計を合わせる

$ sudo ntpdate ntp.nict.jp
$ sudo hwclock -w

参考:
http://webos-goodies.jp/archives/introduction_of_netwalker.html


●ホスト名の修正

$ sudo gedit /etc/hostname
最初はユーザー名になっているのでこれを変更する

$ sudo gedit /etc/hosts

最初は下のようになっています
127.0.0.1 localhsot
127.0.1.1 ユーザー名
・・・
次のように変更
127.0.0.1 localhost ホスト名
127.0.1.1 ユーザー名
・・・
(20120806追記)誤りのある設定と思われるので削除

再起動

参考:
http://webos-goodies.jp/archives/introduction_of_netwalker.html


●ターミナル

何かするたびに”端末”を立ち上げるのは面倒なので、
常駐型のターミナルを入れる。結構便利。

SynaptecでTildaをインストール
端末から
$ tilda -C &
でコンフィグ画面をだす
次のような感じで設定する

General
 Start Tilda hiddenをチェック
 Enable Double Bufferingをチェック
 Fontのサイズを10に

Appearrance
 Height/WidhtのPercentageを90
 PositionのCenterd Horizontally/Verticallyをチェック

Scrolling
 Scrollbar isをRightに

Keybinding
 Grab Keybindingを押してF5かF6あたりに変更する
 初期設定のF1だとヘルプとかぶって変になる

コンフィグをCloseで自動起動する。
設定は微妙に反映されなかったりするので、
その場合は1タブずつやったりするとうまくいく。
tildaが多重起動された場合はexitで全部閉じればOK。

以降、
$ tilda &
で起動する。

とりあえずは自動起動に入れておく
システム→設定→自動起動するアプリ
コマンド→tilda

参考:
https://translations.launchpad.net/tilda/trunk/+pots/tilda/ja


●update-apt-xapiを抑制する

cronで実行されるもののひとつにcpuを食いつぶすものがあるので抑制。
必要なときにはどうせ実行されるらしい
$ sudo chmod 644 /etc/cron.weekly/apt-xapian-index

参考:
http://www.kokoro-navi.com/diary3/cat11/pc-1/cat67/netwalker/


●壁紙変更

netwalkerの解像度は1024x600
それにあう好みの画像を手にいれて、デスクトップを右クリックして変更できる。
画像は↓に置くのが良さそう?
/usr/share/backgrounds

参考:
https://sharp-usersnet.jp/pcstudio/disp.asp?cno=8&tbno=0&dno=6


●スクリーンセーバー

/home/ユーザー/Pictureフォルダに画像をおいて
システム→システム設定→Gnomeスクリーンセーバー
で画像を選択するといい感じ。
その際、パワーマネジメント等で表示するタイミング・時間を設定する。

参考:
https://sharp-usersnet.jp/pcstudio/disp.asp?cno=8&tbno=0&dno=6



●バッテリー表示改善

標準の表示だとすぐに無くなって見えるが実際はそうではないらしい。
表示を%表示に変える。
ソフトウェアソースに次を追加してからアップデート
deb http://homepage3.nifty.com/moyashi/netwalker/ ./

$ sudo aptitude update

Synaptecでbattwalker.rbをインストール
システム→設定→自動起動するアプリで
「/usr/local/bin/battwalker.rb」を登録する
この状態だと標準のものも表示されてしまうので
システム→設定→電源の管理
全般タブの「バッテリー残量がほとんどない時だけアイコンを表示する」を選択する

参考:
http://moyashi.air-nifty.com/hitori/2009/09/netwalker-battm.html


続く

Netwalkerセットアップ(1/5)

Netwalkerというものを購入しました。


2009年頃のSHARPの製品でちょっと古いのですが自分の理想にあっていたので買ってみました。
もともとポメラが欲しかったのですが
 
競合製品を調べているうちに、Netwalkerを存在を知り、電子辞書も欲しかったのでそのセットを・・・と思いNetwalkerを購入。

NetwalkerはPDAの部類で、一般的なNotebookよりもさらに小型でLinuxであるUbuntuがインストールされています。
色々やろうと思ったら人を選ぶみたいですが、そこがまた魅力的なところでした。

Netwalkerは現在2タイプ+オプション付きモデルの3タイプありました。

1つ目はPC-Z1

Notebookタイプでスタイラスペンで画面をタッチ、もしくはオプティカルポイントというタッチパッドのようなデバイスで操作、キー入力は主にキーボードという製品。キーボードはローマ字はフルキーボードと同じですが記号が特殊配置になっています。また、ふにゃふにゃしててキーピッチが狭く、タッチタイプは期待できないという評価です。(ここだけがポメラが断トツ優位でした)

2つ目はその後出たPC-T1

PC-Z1とスペックはあまりかわらないと思いますが、不評だったキーボードが廃止され、全面ディスプレイになっています。

3つ目はPC-Z1に辞書データSDカードを付属したPC-Z1J
辞書としては
広辞苑第六版、新英和中辞典、新世紀ビジュアル大事典、ことば選び辞典、現代用語の基礎知識2009年版、新和英中辞典、新冠婚葬祭事典
が使えます。

今回はこのPC-Z1Jを買いましたよ。
ちょっとしたメモ帳&電子辞書という使い方であれば、
Linuxに詳しくない人でもPC-Z1Jは普通に使えると思います。

ただし今回は、この辞書SDカードを使わない方向でセットアップしました。
理由はいくつかあります。
・辞書SDカードを挿した状態でないと辞書が使えない(多分)
・自分で購入、入手した辞書が使いたい
・色々データを入れようと思ったらSDカードなしの本体HDD(2GB)では不安
・辞書SDカードのデータは専用ビューワでしか閲覧できず増やせない(多分)
といったところです。

今回の主なセットアップを書きます
・辞書ソフトとしてフリーのEBViewをインストール
・辞書データはフリーのものをダウンロードしたり購入する
・ブラウザはFirefoxでデスクトップとSyncさせる(chromの方が速いらしいが)
・メーラはThunderbird(普段使いと変えるのは面倒なので)
・スケジューラはSunbird
(本当はThunderbird+LightningにしたかったがNetwalkerではLightningがなぜか動かなかった)
・メモ帳はNoteCaseという、ファイルをツリー形式で管理できるもの
(本当はEvernoteクライアントを入れたかったがNetwalker用にはなかった)

というわけで、以降の投稿でセットアップの詳細を記します。


2011-09-10

UbuntuでPT2(携帯用)

PT2のIF、epgrecを外部公開する際、普通にやるとiモード携帯からはうまく録画できないようです。
スタイルシートが使えない・・・?他のキャリアのは不明。

で、iモード携帯からも使えるようにした入り口を作った方がいました
http://sarami.pv.s-labo.com/blog/zatta.php?itemid=104&catid=24

ここにある「iモード用のepgrec」をインストールするシミュレーションをしてみます。

Downloadからモジュールをダウンロードする
iepgrec_20101001.tar.gz

$ tar -xvzpf epgrec-20100322.tar.gz
中にあるファイルを.../epgrec/直下に置く。
./epgrec/に3ファイル、./epgrec/templates/に2ファイル入ります。

そのままだとphpにエラーが出ている?ようなので少し修正します。
$ sudo vi /var/www/epgrec/iprogramTable.php
下の方の153行目くらい?にある
$ch_options .= "where skiop!='1' ORDER BY id"
という行の上に1行挿入して
$ch_options = ""
$ch_options .= "where skiop!='1' ORDER BY id"
このようにします。
どうやら初期化されてないのに.を使っているのがだめなよう・・・?
もしかしたら対処しなくても動くかもしれないけど念のため。


あとは携帯からiprogramTable.phpに接続すればOK。
これで外部公開していれば、外出先から携帯を使って録画もできますね。
ただ、前回紹介した外部公開用セキュリティを施していると、
携帯からだと毎回パスワードをきかれてやっかいかもです。
定型文にパスワード入れるなりして対応するしかないかなぁ。






2重シールド5C同軸ケーブル S5CFB(C)BK

2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

UbuntuでPT2(5/5)

おまけ
間違えている可能性が高いので参考程度に・・・

キーワードのバックアップ・リストア
$ sudo mysqldump -u root -p epg Recorder_keywordTbl > Recorder_keywordTbl_`date +%Y%m%d-%H%M%S`.sql
$ sudo mysql -u root -p epg < ダンプファイル名
 
局の追加
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/cron stop
$ sudo vi /var/www/epgrec/config.php
ここでちゃんねるを開放する
逆にちゃんねるをコメントアウトするのはまずいかも?
$ /var/www/epgrec/getepg.php
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/cron start



epgrec番組表が壊れたとき
$ mysql -u root -p
mysql>use epg;
mysql>delete from Recorder_channelTbl;
mysql>delete from Recorder_programTbl;
mysql>delete from Recorder_reserveTbl;
mysql>exit;
↓を実行
http://ホスト名/epgrec/install/step1.php

epgrecのDBが壊れたとき
$ mysql -u -root -p
mysql>drop database epg;
mysql>create database epg;
mysql>grant all privileges on *.* to [username]@localhost identified by '[Password]';
mysql>exit;
↓を実行
http://ホスト名/epgrec/install/step1.php

epgrec再インストール
$ cd
$ sudo rm -r /var/www/epgrec/settings
$ mkdir /var/www/epgrec/settings
$ chmod 777 /var/www/epgrec/settings
↓を実行
http://ホスト名/epgrec/

epgrec完全再インストール
$ cd
$ sudo rm -r /var/www/epgrec/
$ sudo tar -xvzpf epgrec-20100322.tar.gz -C /var/www/
→インストール手順へ戻る

(以下、2012/1/21追記)
Ubuntuを10.10以上に上げると、使われるドライバが変わってしまう
(→動かない?)
"/etc/modprobe.d/blacklist.conf"に
blacklist earth-pt1
を追記すればDVB版ドライバはロードされなくなり、問題なくなる。(?)
その後再起動が必要だが、うまくいかない場合は電源OFF→ONすると良いらしい。
参考:http://team2ch.org/blog/?p=1103


Ubuntuを11.10に上げるとスマートカード周りのバグで動作しない
よくわからないがこの辺参照
※うちはまだ10.04
参考:http://team2ch.org/blog/?p=1103


予約済み番組の予約モード変更
$ mysql -u root -p
> use epg;
> select id,keyword,autorec_mode from Recorder_keywordTbl;
ここで該当するキーワードのidを調べて
> update Recorder_keywordTbl set autorec_mode=1 where id='調べたID';
> update Recorder_reserveTbl set mode=1 where title like "%キーワード%";


録画予約一覧に古い予約が残った場合の削除
まず録画予約一覧で古い予約のidを調べる。
$ mysql -u root -p
> use epg;
> update Recorder_reserveTbl set complete=1 where id='調べたID';





2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)


2011-09-09

UbuntuでPT2(4/5)

UbuntuでPT2たぶんラスト
最後に、保存領域を外付けUSBに変更します。
epgrecの保存領域はapacheで公開している範囲に限られるそうなので、
シンボリックリンクで対応したいと思います。

まずデバイスの認識から

$ sudo parted -l
モデル: ST310005 20AS (scsi)
ディスク /dev/sdc: 1000GB
というのが外付けHDDです

$ sudo parted /dev/sdc
(parted) mklabel gpt
(parted) print
→サイズを知る、1000GBだった
(parted) unit GB
(parted) mkpart video ext4 0 1000GB
(parted) unit MiB
(parted) mkpart video xfs 1 -1
(parted) quit
第一引数(video)はラベルなので何でもいい
3つ目の1は、MiBなら1から始めたほうが良いらしい?
最後の-1は終端の意味


$ sudo apt-get install xfsprogs
$ sudo mkfs.xfs /dev/sdc -f
$ sudo mkfs.xfs -f -b size=4k -i size=512 -l size=128m,version=2 /dev/sdc1


meta-data=/dev/sdc isize=512 agcount=4, agsize=7630917 blks
= sectsz=512 attr=2
data = bsize=65536 blocks=30523665, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=65536 ascii-ci=0
log =internal log bsize=65536 blocks=2048, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=65536 blocks=0, rtextents=0

デバイスにはパーティションを指定するので注意-> sdc1
-b sizeはブロックサイズでデフォルト4kだけどわかりやすいように明示的にした
本当は64kくらいは指定できたはずだけど、4kを超えるとなぜかマウントできなかった
-iと-lの指定は速くなるらしいので一応つけてみた(ファイルコピー試してみても差はわからなかった)


マウントポイント作成
$ sudo mkdir /home/media/pt2
$ sudo chown www-data:www-data /home/media/pt2
$ sudo chmod 777 /home/media/pt2
試しにマウント
$ sudo mount -t xfs /dev/sdc1 /home/media/pt2
再起動時にマウントするようにする
$ sudo vi /etc/fstab
/dev/sdc1        /home/media/pt2 xfs defaults 0 0

シンボリックリンク作成
$ sudo ln -s /home/media/pt2 /var/www/epgrec/video
$ sudo mkdir /home/media/pt2/thumbs
$ sudo chmod 777 /home/media/pt2/thumbs
$ sudo chown www-data:www-data /home/media/pt2/thumbs
$ sudo ln -s /home/media/pt2/thumbs /var/www/epgrec/thumbs


※今回はまっさらの状態でやったけど
もし録画データがあったらだめかも。
その場合はデータベースを再作成して再セットアップか?



次にクオータを設定します。
epgrecはディスク残量を管理しないので自分でやる必要があります。
今回はソフトリミットを超えたらメール通知されるようにしてみます。

メールアドレスの設定
$ sudo vi /etc/aliases
$ sudo postalias /etc/aliases
www-data: メールアドレス
を記述する

quotaをONにする
$ sudo vi /etc/fstab
/dev/sdcの
defaults

defaults,usrquota
に変更する
※pt2の録画先

$ sudo umount /dev/sdc1
$ sudo mount /dev/sdc1
$ cat /proc/mounts | grep pt2
/dev/sdc1にusrquotaがついていればOK
※remountではダメだった
※xfsファイルシステムの場合はquotacheck不要らしい

$ quotaon -v /home/media/pt2
quotaon: Enable XFS group quota accounting during mount
quotaon: Enforcing user quota already on /dev/sdc1
こんな感じで出ればOK

xfs用quotaコマンド"xfs_quota"を管理モード(-x)で起動
$ sudo xfs_quota -x

とりあえずレポートを見てみる
xfs_quota>report -u -h /dev/sdc1

quota対象のファイルシステム一覧を表示 xfs_quota>path

対象となるファイルシステムをカレントにセット xfs_quota>path 000
www-dataユーザにソフトリミット750GB, ハードリミット800GBを設定
xfs_quota> limit bsoft=750g bhard=800g www-data
解除する場合は0に指定すればよいようだ。ちゃんとコマンドありそうだが未確認。
抜ける
xfs_quota> q


リミットが来ているユーザにメールを送信する仕組み
"warnquota"の準備をする。

デバイス情報を記述する
$ sudo vi /etc/quotatab
/dev/sdc: Your home directory
/dev/sdc1: Your home directory


以上で設定完了。
対象のファイルシステムにソフトリミットを超えたユーザファイルをおいてみる。

そして下記コマンドでメール送信。
$ sudo warnquota -s
※ちなみにメールは/etc/aliasesで設定する

メールが通知されたら、あとはwarnquotaをcronで実行するようにする。
$ sudo vi /etc/cron.daily/do-warnquota.cron
#!/bin/sh
warnquota -s


以上でquotaつき録画領域の完成です!


参考:
http://hinode.nao.ac.jp/~tonooka/SBSC/open/parted_howto.html http://ameblo.jp/kupok/entry-10792760992.html http://xoops.fens.net/modules/wiki/?Linux%2FMemo%2Fxfs%2F%E6%93%8D%E4%BD%9C%E6%96%B9%E6%B3%95 http://www.ftnk.jp/~fumi/cl/2005-11-18-8.html http://blog.stud.vg/2008/12/xfs-2tb.html http://sea-mew.jp/nox/modules/xpwiki/587.html

(追記2012/8/2) mkpartの引数間違い修正
(追記2012/8/2) mkfs.xfsコマンドの引数を変更
(追記2012/8/2) xfs_quota limitでコメントと引数が不一致だったのを修正
(追記2012/8/2)
デバイス名を/dev/sdc1ではなく/dev/sdcと記載していたのを全体的に修正
今までそれで問題なかったけど恐らく良くない状態だった
今回HDDを入れ替えるにあたりミスに気づいた



2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

apache2のデータディレクトリ変更

apache2のルートディレクトリを変更
通常/var/wwwがルートディレクトリですが
今回は/home/wwwに変更してみます。

defaultファイルを変更する
$ sudo /etc/init.d/apache2 stop
$ sudo cp -p /etc/apache2/sites-available/default /etc/apache2/sites-available/default.org
$ sudo vi /etc/apache2/sites-available/default
DocumentRoot /var/www

DocumentRoot /home/www
に変更

$ sudo cp -r -p /var/www /home/www
$ sudo /etc/init.d/apache2 start

参考
http://www.linux.net-japan.info/install08.html

mysqlのデータディレクトリ変更

mysqlのデータディレクトリは通常/var/lib/mysql
です。しかしこれだと、うちの環境のような、
homeディレクトリにだけ大容量ディスクをマウントしている環境だと困ります。
そこでこのデータディレクトリを/home以下に移してみます。

通常、confファイルのデータディレクトリを変更等すればよいだけなのですが、
うちの環境だとエラーがでて進みませんでした。
調べたところ、datadirを変更するとSELinuxという機能のために動かなくなるようです。
http://oksoft.blogspot.com/2009/12/issues-with-selinux-firewall.html

今回はそれをシンボリックリンクで解決します。

mysqlデータディレクトリを移動
$ sudo service mysql stop
$ sudo mv /var/lib/mysql /home/mysql

シンボリックリンク作成
$ sudo ln -s /home/mysql /var/lib/mysql

アクセス制御?を変更
$ sudo vi /etc/apparmor.d/usr.sbin.mysqld
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

/home/mysql/ r,
/home/mysql/** rwk,
に変更。

mysql再起動
$ sudo /etc/init.d/mysql start



参考:
http://tobysoft.net/wiki/index.php?Ubuntu%2Fmysql
http://gentoo.reichsarchiv.jp/item/28

mysql再インストール

mysqlが起動しなくなってしまいました。
ある日、PCを再起動するとmysqlに繋がらなくなって、
サービスを起動することもできない。
mysqld_safeも無理。

↓こんな感じになります。
$ sudo service mysql start
start: Job failed to start


で、再インストールを試みたのですが、通常、
$ sudo apt-get remove php5-mysql mysql-server*
でアンインストールすれば問題なく次にインストールできるらしいんですけど、
それじゃ何度やっても解消されない。

この辺の問題?
https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/573318


超いろいろ思考錯誤した結果解決しましたので
記録を残しておきます。

結論としては、mysql-commonを再インストール。が必要でした。


影響が大きいのでまずはシミュレーション
$ sudo apt-get -s remove --purge php5-mysql mysql-server* mysql-common
削除候補にmediatombが含まれてしまうTT


設定ファイルを退避させます
$ sudo cp -r -p /etc/mysql /etc/mysql.bak
$ sudo cp -r -p /etc/mediatomb /etc/mediatomb.bak

アンインストール
$ sudo apt-get remove --purge php5-mysql mysql-server* mysql-common
未使用パッケージがあったので一応削除
$ sudo apt-get autoremove --purge
フォルダが残っているので削除
$ sudo rm -r /etc/mysql
$ sudo rm -r /var/lib/mysql

インストール
$ sudo apt-get install php5-mysql mysql-server
起動確認
$ ps ax | grep mysql
5456 ? Ssl 0:00 /usr/sbin/mysqld
mysqldが起動していたら成功

設定ファイル戻す
$ sudo cp -p /etc/mysql.bak/my.cnf /etc/mysql/.
$ sudo service mysql restart

ここまでくるのに10時間はかかったような・・・
なんにせよ解決してよかったよかった。

あとは削除されてしまったmediatomb再インストール
$ sudo apt-get install mediatomb
起動確認
$ sudo ps ax | grep meditabom
5983 ? Ssl 0:00 /usr/bin/mediatomb -c /etc/mediatomb/config.xml -d -u mediatomb -g mediatomb -P /var/run/mediatomb.pid -l /var/log/mediatomb.log
mediatombが起動していたら成功

設定ファイル戻す
$ sudo cp -p /etc/mediatomb.bak/config.xml /etc/mediatomb/.
$ sudo /etc/init.d/mediatomb restart


めでたしめでたしでした。

2011-09-07

UbuntuでPT2(3/5)

さて前回でひと通りのセットアップが終わりましたが
epgrecはhttpサーバーなので外部公開も一応可能だそうです。
ローカル用に作られているのでセキュリティについては?ですが、
やるなら次の3つのことくらいをやっておくとよさそうです。
やらないとapacheが乗っ取られたりするそうです。

参考:
http://dambo.no-ip.org/pwiki/index
http://zeonic.ath.cx/jitaku/


一、認証をかける
パスワードファイルを暗号形式で作成する
$ sudo htpasswd -c /etc/apache2/.htpasswd ユーザー名

パスワードを設定する(公開フォルダでなければどこでもいい)
$ sudo vi /etc/apache2/apache2.conf

confファイルに次の記述を追記する

AuthType Basic
AuthName "Enter Password"
AuthUserFile /etc/apache2/.htpasswd
Require user ユーザー名


apache再起動
$ sudo /etc/init.d/apache2 restart

http://ホスト名/epgrecにアクセスしてパスワードを求められたら成功




二、クローラーを弾く
「.htaccessでクローラーIPを弾く」といった意味合いで各種紹介されている設定をapache2.confファイルに記述する。
例:

order allow,deny
allow from all
deny from env=○○○


○○○にはapache2.conf内で定義した定数が入り、定数にはフィルタリングルールが入る。



三、firewallの設定
Linuxのfirewallであるiptablesにてフィルタリングを行う

参考:
http://centossrv.com/iptables.shtmlhttp://www.najankai.com/wiki/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E3%81%AE%E6%A7%8B%E7%AF%89%28ubuntu%29
http://semiblackharp.blogspot.com/2010/01/iptables.html
http://d.hatena.ne.jp/Ubuntu/20080128/1201462048

まず現在の設定を確認してみる
$ sudo iptables -L -n

Ubuntuはデフォルトで、インストールされているソフトで必要なポートが自動的に開くようになっているらしい?

今回は手動でルールを決めて、なおかつ危険国からのアクセスを禁止するようにする。

まず参考サイトを見ながらまず設定用のスクリプトを用意する。
$ sudo vi /home/root/iptables_register/iptables.sh
$ sudo chmod 700 /home/root/iptables_register/iptables.sh
※参考サイトそのままだとUbuntu(?)の環境と合わないので
 いろいろ微修正が必要

いろんなサイトを統合してUbuntu用にデバッグしたところ↓な感じで落ち着いた
※全くわかってない上に適当なので間違えていたら教えて下さい
#!/bin/sh

# インタフェース名定義
#LAN=eth0

# 内部ネットワークのネットマスク取得
#LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`

# 内部ネットワークアドレス取得
#LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
#LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
LOCALNET=192.168.1.0/255.255.255.0

# ファイアウォール停止(すべてのルールをクリア)
#/etc/rc.d/init.d/iptables stop
iptables -F

# デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄

# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT

# 内部からのアクセスをすべて許可
iptables -A INPUT -s $LOCALNET -j ACCEPT

# 内部から行ったアクセスに対する外部からの返答アクセスを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SYN Cookiesを有効にする
# ※TCP SYN Flood攻撃対策
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf

# ブロードキャストアドレス宛pingには応答しない
# ※Smurf攻撃対策
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf

# ICMP Redirectパケットは拒否
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
done

# Source Routedパケットは拒否
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
done

# フラグメント化されたパケットはログを記録して破棄
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : '
iptables -A INPUT -f -j DROP

# 外部とのNetBIOS関連のアクセスはログを記録せずに破棄
# ※不要ログ記録防止
iptables -A INPUT ! -s $LOCALNET -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A INPUT ! -s $LOCALNET -p udp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A OUTPUT ! -d $LOCALNET -p tcp -m multiport --sports 135,137,138,139,445 -j DROP
iptables -A OUTPUT ! -d $LOCALNET -p udp -m multiport --sports 135,137,138,139,445 -j DROP

# 1秒間に4回を超えるpingはログを記録して破棄
# ※Ping of Death攻撃対策
iptables -N LOG_PINGDEATH
iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : '
iptables -A LOG_PINGDEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH

# 全ホスト(ブロードキャストアドレス、マルチキャストアドレス)宛パケットはログを記録せずに破棄
# ※不要ログ記録防止
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP

# 113番ポート(IDENT)へのアクセスには拒否応答
# ※メールサーバ等のレスポンス低下防止
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset

# ACCEPT_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを許可するユーザ定義チェイン作成
ACCEPT_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT
done
}

# DROP_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを破棄するユーザ定義チェイン作成
DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A DROP_COUNTRY -s $addr -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES DENY_COUNTRY] : '
iptables -A DROP_COUNTRY -s $addr -j DROP
done
}


# IPアドレスリスト取得
. /home/root/iptables_register/iptables_functions
IPLISTGET

# 日本からのアクセスを許可するユーザ定義チェインACCEPT_COUNTRY作成
iptables -N ACCEPT_COUNTRY
ACCEPT_COUNTRY_MAKE JP
# 以降,日本からのみアクセスを許可したい場合はACCEPTのかわりにACCEPT_COUNTRYを指定する

# 中国・韓国・台湾※からのアクセスをログを記録して破棄
# ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く)
# http://www.cyberpolice.go.jp/detect/observation.htmlより
iptables -N DROP_COUNTRY
#中国
DROP_COUNTRY_MAKE CN
#韓国
DROP_COUNTRY_MAKE KR
#台湾
DROP_COUNTRY_MAKE TW
#追加:北朝鮮
DROP_COUNTRY_MAKE KP
iptables -A INPUT -j DROP_COUNTRY

#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここから) #
#----------------------------------------------------------#

# 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ許可
# ※SSHサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY

# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可
# ※外部向けDNSサーバーを運用する場合のみ
#iptables -A INPUT -p tcp --dport 53 -j ACCEPT
#iptables -A INPUT -p udp --dport 53 -j ACCEPT

# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 外部からのTCP443番ポート(HTTPS)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 外部からのTCP21番ポート(FTP)へのアクセスを日本からのみ許可
# ※FTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY

# 外部からのPASV用ポート(FTP-DATA)へのアクセスを日本からのみ許可
# ※FTPサーバーを公開する場合のみ
# ※PASV用ポート60000:60030は当サイトの設定例
#iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT_COUNTRY

# 外部からのTCP25番ポート(SMTP)へのアクセスを許可
# ※SMTPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 25 -j ACCEPT

# 外部からのTCP465番ポート(SMTPS)へのアクセスを日本からのみ許可
# ※SMTPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY

# 外部からのTCP110番ポート(POP3)へのアクセスを日本からのみ許可
# ※POP3サーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY

# 外部からのTCP995番ポート(POP3S)へのアクセスを日本からのみ許可
# ※POP3Sサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY

# 外部からのTCP143番ポート(IMAP)へのアクセスを日本からのみ許可
# ※IMAPサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY

# 外部からのTCP993番ポート(IMAPS)へのアクセスを日本からのみ許可
# ※IMAPSサーバーを公開する場合のみ
#iptables -A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY

# 外部からのUDP1194番ポート(OpenVPN)へのアクセスを日本からのみ許可
# ※OpenVPNサーバーを公開する場合のみ
#iptables -A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY

# VPNインタフェース用ファイアウォール設定
# ※OpenVPNサーバーを公開する場合のみ
#[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/openvpn-startup

#追加
# 外部からのTCP123番ポート(NTP)へのアクセスを許可
# ※NTPサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 123 -j ACCEPT_COUNTRY


#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここまで) #
#----------------------------------------------------------#

# 拒否IPアドレスからのアクセスはログを記録せずに破棄
# ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと
# (/root/deny_ipがなければなにもしない)
if [ -s /root/deny_ip ]; then
for ip in `cat /root/deny_ip`
do
iptables -I INPUT -s $ip -j DROP
done
fi

# 上記のルールにマッチしなかったアクセスはログを記録して破棄
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP

# サーバー再起動時にも上記設定が有効となるようにルールを保存
#/etc/rc.d/init.d/iptables save
iptables-save > /etc/network/iptables

# ファイアウォール起動
#/etc/rc.d/init.d/iptables start


次に内部で使用する関数を作る
$ sudo vi /home/root/iptables_register/iptables_functions
$ sudo chmod 700 /home/root/iptables_register/iptables_functions
mailの設定をしておかないと固まるので注意

# IPアドレスリスト取得関数定義
IPLISTGET(){
# http://nami.jp/ipv4bycc/から最新版IPアドレスリストを取得する
wget http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# 最新版IPアドレスリストが取得できなかった場合
if [ ! -f cidr.txt ]; then
if [ -f /tmp/cidr.txt ]; then
# バックアップがある場合はその旨をroot宛にメール通知して処理を打ち切る
echo cidr.txt was read from the backup! | mail -s $0 root
return
else
# バックアップがない場合はその旨をroot宛にメール通知して処理を打ち切る
echo cidr.txt not found!|mail -s $0 root
exit 1
fi
fi
# 最新版IPアドレスリストを /tmpへバックアップする
/bin/mv cidr.txt /tmp/cidr.txt
}
※mail行のrootは予め/etc/aliasesで定義しておかないといけないと思う
 よくわからなければコメントアウトでいいかも


さらに、cron用のスクリプトを作る
$ sudo vi /home/root/iptables_register/iplist_check.sh
$ chmod 700 /home/root/iptables_register/iplist_check.sh
$ sudo cp -p /home/root/iptables_register/iplist_check.sh /etc/cron.daily/iplist_check.sh
パスをあわせないといけない

#!/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# 新旧IPLIST差分チェック件数(0を指定するとチェックしない)
# ※新旧IPLIST差分がSABUN_CHKで指定した件数を越える場合はiptables設定スクリプトを実行しない
# ※新旧IPLIST差分チェック理由はhttp://centossrv.com/bbshtml/webpatio/1592.shtmlを参照
SABUN_CHK=100
[ $# -ne 0 ] && SABUN_CHK=${1}

# チェック国コード
COUNTRY_CODE='JP CN KR TW KP'

# iptables設定スクリプトパス
IPTABLES=/home/root/iptables_register/iptables.sh

# iptables設定スクリプト外部関数取り込み
. /home/root/iptables_register/iptables_functions

# IPアドレスリスト最新化
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
[ ! -f /tmp/IPLIST ] && cp IPLIST.new /tmp/IPLIST

# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
if [ ${SABUN_CHK} -ne 0 ]; then
if [ $(diff /tmp/IPLIST IPLIST.new | egrep -c '<|>') -gt ${SABUN_CHK} ]; then
(
diff /tmp/IPLIST IPLIST.new
echo
echo "$IPTABLES not executed."
) | mail -s 'IPLIST UPDATE' root
rm -f IPLIST.new
exit
fi
fi
/bin/mv IPLIST.new /tmp/IPLIST
sh $IPTABLES > /dev/null
else
rm -f IPLIST.new
fi


これでOK

まずは手動で実行する
$ sudo sh iptables.sh
※数分かかる

再度
$ sudo iptables -L -n
で状況を確認し、IPがたくさん登録されていたりしたらOK



このままでは再起動後に消えてしまうので
起動のたびに適用されるように?する
参考:
http://shiro9211.jugem.jp/?eid=449

sudoだとうまくいかなかったのでrootになる
$ sudo su

iptablesの設定をエクスポート
$ iptables-save > /etc/network/iptables

iptablesを起動毎に設定するスクリプトを作成
$ vi /etc/network/if-pre-up.d/iptables
--
#!/bin/sh
iptables-restore < /etc/network/iptables







--

$ chmod 700 iptables




以上の3つで、外部公開しても多少マシ?


おまけ
設定クリア(全ポート閉じる?)
$sudo iptables -F


(20110910追記)
チェック国コード(COUNTRY_CODE)に韓国(KP)が抜けていたので修正
(20110910追記)
iptables_functionsのgunzipには-fつけた方がいいか・・?







2重シールド5C同軸ケーブル S5CFB(C)BK

2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)