2012年12月30日日曜日

Cuboxでコンテンツフィルタ+キャッシュサーバを構築する。


  • スマートデバイス(Android、iOS両方)でブラウジング中に出てくる広告が超ウザい。
  • スマートデバイスのブラウザで「戻る」ボタンを押しても、キャッシュ再読み込みではなくページの再取得をしてしまう。
  • 宅内の端末が増えてきたので、adblockやFilterProxy等の設定をするのが面倒。


という問題を解消するため、Debian-Squeezeを入れたCuboxにSquidGuard+Squid+Polipoを入れて、宅内LAN用のコンテンツフィルタとキャッシュサーバを立てたので、その時のメモをまとめておく。


■TXキュー長の変更
CuboxのNIC(カードじゃないけど…)は内部でバッファを持っているので、OSのTXキュー長を"0"に設定しておく。
(ちなみにデフォルト値は"1000")
# ifconfig eth0 txqueuelen 0


■Polipoのインストール
外部サーバとの通信高速化のためPolipoを利用する。
キャッシュプロキシには後述のSquidを利用するため、Polipo側のキャッシュは利用しない。
# sudo apt-get install polipo
# nano /etc/polipo/config
うちのconfigはこんな感じ。
とりあえずIPv4にのみ対応させておいたけど、そろそろIPv6にも対応させておいたおいた方がいいかな…。
Debian-Wheezyが出たら(もしくは引っ越し後に)考えよう。
--------------------------------------------------
proxyAddress = "0.0.0.0"
allowedClients = 127.0.0.1, 192.168.1.0/24
chunkHighMark = 819200
objectHighMark = 512
diskCacheRoot = ""
localDocumentRoot = ""
disableIndexing = false
disableServersList = false
dnsQueryIPv6 = no
dnsUseGethostbyname = yes
pmmFirstSize = 524288
pmmSize = 262144
relaxTransparency = maybe
--------------------------------------------------
設定したらPolipoを再起動しておく。
# sudo /etc/init.d/polipo restart


■Squidのインストール
Squidをキャッシュプロキシとして利用する。
PolipoとSquidのどちらを親プロキシにするかは諸説あるが、今回は
クライアント → (SquidGuard) → Squid → Polipo → 外部サーバ
となるよう、Polipoを親プロキシとして設定する。
# apt-get install squid
# cp -p /etc/squid/squid.conf /etc/squid/squid.conf.org
# nano /etc/squid/squid.conf
以下はCuboxをSDカードのみで利用し、メモリキャッシュのみで運用する場合の設定例。
MicrosoftUpdateやニコニコ動画等のページ、cgi等の結果はキャッシュしないようにしている。

--------------------------------------------------
redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 5
redirector_bypass on
acl query urlpath_regex cgi-bin \? \.php$ \.asp$ \.shtml$ \.cfm$ \.cfml$ \.phtml$ \.php3$ \.js \.jsp
acl nocache-domain dstdomain .microsoft.com .nicovideo.jp .smilevideo.jp
always_direct allow query
always_direct allow nocache-domain
no_cache deny query
no_cache deny nocache-domain
acl all src all
(以下、acl関連は省略)
http_port 8080
cache_peer 127.0.0.1 parent 8123 7 no-query no-digest no-netdb-exchange http11 default
hierarchy_stoplist cgi-bin ?
cache_mem 256 MB
cache_dir null /var/tmp
maximum_object_size 20480 KB
access_log none
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
negative_ttl 1 minutes
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all
half_closed_clients off
visible_hostname ProxyServer
nonhierarchical_direct off
prefer_direct off
never_direct allow all
tcp_recv_bufsize 65535 bytes
hosts_file /etc/hosts
ipcache_size 4096
forwarded_for off
coredump_dir none
pipeline_prefetch on
--------------------------------------------------


ウチではeSATA接続のSSD上にキャッシュを配置しているため、実際には"cache_mem"をコメントアウトし、以下の設定を有効にしている。
--------------------------------------------------
cache_dir coss [cache_dir]/cache_s  128 block-size=512 max-size=16384  membufs=4
cache_dir coss [cache_dir]/cache_m 1024 block-size=512 max-size=131072 membufs=8
cache_dir aufs [cache_dir]/cache_l 4096 16 64
maximum_object_size 1024 MB
--------------------------------------------------
redirect_programにSquidGuardを指定しているため、サービス再起動等はSquidGuardのインストール後に行う。



■SquidGuardのインストール
コンテンツフィルタとしてSquidGuardを利用する。
# apt-get install squidGuard
# cp -p /etc/squid/squidGuard.conf /etc/squid/squidGuard.conf.org
フィルタ用のブラックリストは用意されていないため、別途取得して展開しておく。以下はその取得例。
# cd /tmp
# wget http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist
# tar zxvf bigblacklists.tar.gz
# cd blacklists
# cp -Rf * /var/lib/squidguard/db/
# cd /var/lib/squidguard/db
# chown -R proxy:proxy db
フィルタリングしたいブラックリストをSquidGuardに設定する。
# nano /etc/squid/squid.conf
ウチの設定はこんな感じ。
good と local は、自前で用意したホワイトリストとブラックリストを設定している。存在しない場合は設定自体の削除が必要。
usersとdefaultの設定を分ける必要は無いけど、まぁ将来の拡張用ということで。

--------------------------------------------------
dbhome /var/lib/squidguard/db
logdir /var/log/squid
src users {
    ip 192.168.1.0/24
}
dest good {
    domainlist good/domains
    urllist good/urls
}
dest local {
    domainlist local/domains
    urllist local/urls
    expressionlist local/expressions
}
dest antispyware {
    domainlist antispyware/domains
    urllist antispyware/urls
}
dest ads {
    domainlist ads/domains
    urllist ads/urls
}
dest spyware {
    domainlist spyware/domains
}
acl {
    users {
        pass good !local !antispyware !ads !spyware all
        redirect http://[CuboxAddress]/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u
    }
    default {
        pass good !local !antispyware !ads !spyware all
        redirect http://[CuboxAddress]/cgi-bin/squidGuard.cgi?clientaddr=%a+clientname=%n+clientident=%i+srcclass=%s+targetclass=%t+url=%u
    }
}
--------------------------------------------------
ここまで来たら、一旦SquidGuardの設定をチェック。

# squid -f /etc/squid/squid.conf -z
問題が無いようなら、SquidGuardで設定したブラックリスト、ホワイトリストをBerkleyDB化してSquidを再起動する。
# squidGuard -d -C all
# service squid reload
# /etc/init.d/squid restart
あとはクライアント側からCuboxの8080ポートをプロキシに設定すれば設定完了。
とりあえず、Squidのみの状態で一週間、Polipoも入れた状態でさらに一週間使ってるけど、特に問題らしい問題も発生していないので、安定してると言えるかと。

Cuboxの今後の課題(というか、やりたいこと)は…

  • Privoxy+Ziproxyでフィルタリングの強化&高速化
  • IPv6対応
  • 透過プロキシ化
  • DNSキャッシュサーバを構築して高速化
  • L2TP/IPSecのVPNサーバを構築

くらいかなぁ。
RaspberryPiと違って、NICが1000Baseに対応してるのと、AES復号化に使える専用コプロセッサを積んでるのはCuboxの強みだしね。

RaspberryPiは、ひとまずMPDサーバとか、宅内WebAPサーバとして使っていくことにしよう。
…丁度よく、「月刊Stereo」2013年1月号付録のUSB-DAC『LXU-OT2』も確保してあることだし!

【2015/04/11追記】CuboxからRaspberryPi2にキャッシュサーバを移行したため、興味のある方はそちらもご覧ください。
キャッシュサーバとownCloudサーバをRaspberryPi2に移行する-IPv6対応(1)

2012年9月9日日曜日

CuboxへDebian-SqueezeをNetworkInstallする


armhfなWheezyがstableになってないからSqueezeにしてみた。
…なんかタイトルといい、「アルファがベータをカッパらったらイプシロンした。なぜだろう?」に近いものがあるな…。
主に参考にしたサイトはこちら。

■SolidRun CuBox Wiki
Debian Installer netboot

■真・死して屍拾う者無しw
SolidRun CuBox を使ってみる(その1〜その7)

他にもいろいろと参考にしたサイトはあるけども、自分にとって一番勉強になったのが上記のサイト。
先人の方々、ホントにありがとうございます…m(__)m

【前提】
・インストール先のSDHCは1パーティション構成とする。
・FAT32でフォーマットしたUSBメモリからネットワークインストーラを起動する。
・インストール作業はLinux母艦と接続したシリアルコンソール上で行う。

【物理的に準備するもの】
・CuBox一式(付属のSDカードも含む)
・Linux母艦(今回はUbuntu12.04入りのEeePC901-Xを使用)
・有線LANのネット接続環境
・MicroUSBケーブル
・USBメモリ(60MB程度しか使わない)
・インストール対象のMicroSDカード(今回はSDHC32GB-CL10のものを使用)
…あとはタップリの時間、ですかね…。

【下準備】
■CuBox側
CuBoxは有線LANに接続し、電源アダプタは抜いておく。
インストール対象のMicroSDカードは、母艦での操作に使用しないのでCuBoxに差しておく。

■母艦側
(1)uboot関連のmake用に、uboot-mkimageをインストールする。
(ここで「u-boot-tools」も同時にインストールされる)
それと、ターミナルからシリアルコンソールに接続するためのcuコマンドもインストールしておく。
$ sudo apt-get install uboot-mkimage
$ sudo apt-get install cu
(2)SolidRun社のCuBox-Wiki「Debian Installer netboot」で指定されているリンクから、Debian-Squeeze(stable)のネットワークインストーラーイメージを取得。
$ wget http://ftp.debian.org/debian/dists/stable/main/installer-armel/current/images/versatile/netboot/initrd.gz
(3)取得したネットワークインストーラーイメージから、u-boot用の「uInitrd」に変換する。
$ mkimage -A arm -O linux -T ramdisk -C gzip -n "Debian netboot" -d initrd.gz uInitrd
(4)CuBox付属SDカードの先頭パーティション(容量が少ない方)から「boot」以下にあるカーネル「uImage」をコピーする。

(5)CuBox付属SDカードのセカンドパーティション(容量が多い方)から、「lib/modules」以下のカーネルドライバを全てgzipで圧縮しコピーする。
$ cd /[MountedMedia]/lib/modules
$ tar -cf - 2.6.32.9-dove-5.4.2|gzip -c - >  2.6.32.9-dove-5.4.2.tar.gz
(6)以下の内容の「boot.txt」を作成する。
CuBox付属SDカードの内容からは、起動パーティションとカーネル読み込みアドレスを変えてあります。
(読み込みアドレスはu-boot上で"printenv"した時の値から抜粋)
赤太字部分はCuBox付属SDカードの/boot/boot.scrとの差分
----------↓boot.txtの内容はここから↓----------
echo ======== Setting bootargs ========
setenv bootargs 'console=ttyS0,115200n8 vmalloc=384M root=/dev/mmcblk0p1 video=dovefb:lcd0:1920x1080-32@60-edid clcd.lcd0_enable=1 clcd.lcd1_enable=0'
echo ======== Loading kernel ========
ext2load mmc 0:1 0x2000000 /boot/uImage
echo ======== Booting kernel ========
bootm 0x2000000
----------↑boot.txtの内容はここまで↑----------

(7)上記の「boot.txt」から「boot.scr」を生成する。
$ mkimage -A arm -O linux -T script -C none -n "U-Boot script" -d boot.txt boot.scr
(8)ここまでで準備した…
・「uImage」 (u-boot用カーネル)
・「2.6.32.9-dove-5.4.2.tar.gz」(u-boot用カーネルドライバ群)
・「uInitrd」 (u-boot用ネットワークインストーラーイメージ)
・「boot.scr」(u-boot用カーネルの起動用スクリプトファイル)
…の4ファイルをUSBメモリへコピーする。

【インストール作業】
■母艦とCuBoxの接続
(1)CuBoxと母艦をUSBで接続。(CuBox側のMicroUSB-B端子に接続する)
(2)接続後、dmesgで接続先のシリアルコンソールを確認しておく。
(以下の赤太字部分が接続先。環境によって変わるので注意!)
$ dmesg

FTDI USB Serial Device converter now attached to ttyUSB0
(3)接続先のシリアルコンソールに対してアクセス権を設定しておく。
$ sudo adduser lassie dialout
$ sudo chmod a+rw /dev/ttyUSB0
(4)ターミナルからCuBoxのシリアルコンソールに接続。
$ cu -l ttyUSB0 -s 115200
"Connected."と出れば成功。

■Debianのインストール
(1)USBメモリをCuBoxのUSB#0(上段)に差し込んでCuBoxを起動する。
ターミナルに起動メッセージが流れるが、
"Hit any key to stop autoboot:  3"
の表示が出たら、3から0へカウントダウンする間に何かのキーを押す。

(2)u-bootコンソールから以下のコマンドを叩いて、USBからインストーラーを起動する。
> usb start
> mmcinfo
> setenv bootargs console=ttyS0,115200n8
> fatload usb 0:1 0x2000000 uImage
> fatload usb 0:1 0x3000000 uInitrd
> bootm 0x2000000 0x3000000
(3)インストールオプションの設定
"Select a language"
→ここではインストーラの表示言語ではなく、Linux上の"LANG"パラメータで指定するローカライズを設定する。
ここはローカライズ無しの"C"を選択。

"Select your location"
"Asia">"Japan"を選択。
この後、ネットワーク設定に入るが、DHCP環境下なら特に設定無く次へ進む。

"Configure the network"
→ホスト名を設定。次の画面ではネットワーク接続用のドメインを設定。

"Choose a mirror of the Debian archive"
"Japan">"ftp.jp.debian.org"を選択。次の画面では接続用のProxyを設定。

"Download installer components"
→「カーネルが無いよ!」と言われているが、後で「uImage」を入れるから大丈夫。
"Yes"を選択。

"Set up users and passwords"
→以下の順番でrootパスワードと一般ユーザーのアカウントを設定する。
1.rootのパスワードを設定する。確認含めて2回。
2.一般ユーザーのフルネームを設定する。
3.一般ユーザーのアカウントを設定する。
4.一般ユーザーのパスワードを設定する。確認含めて2回。

"Partition disks"
→以下の順番でMicroSDのパーティションを設定する。
1.「ソフトウェアRAIDが使えないよ!」と言われるが、使わないので無問題。
"Continue"を選択。
2.次の画面ではパーテイションの設定をガイドに任せるか手動で設定するかを選択する。
ここでは1パーティション構成にするため"Guided - use entire disk">"MMC/SD card #1 (mmcblk0)">"All files in one partition (recommended for new users)">"Finish partitioning and write changes to disk">"Yes"を選択する。
ここで、SDカードのパーティション構成は以下のように設定される。
----------↓SDHC32GBのパーティション構成↓----------
MMC/SD card #1 (mmcblk0) - 31.9 GB SD SU32G
> #1 primary 30.6 GB B F ext3 /
> #5 logical 1.3 GB F swap swap

----------↑SDHC32GBのパーティション構成↑----------

「/」がext3でフォーマットされるが、SDカード等のフラッシュメモリではext4の方が高速なので、後の作業で変換する。
※2パーティション以上の構成にする場合は、「boot.scr」も編集する必要があるので注意!

"Install the base system"
→「カーネルが無いよ!」と(以下略)
"Yes"を選択。

"Configuring popularity-contest"
→通称popcon。投票しないので"No"を選択。

"Software selection"
→必要なパッケージをチェック。ウチの構成はこんな感じ。
----------↓パッケージ設定例↓----------
[ ] Graphical desktop environment
[*] Web server
[ ] Print server
[*] DNS server
[*] File server
[ ] Mail server
[ ] SQL database
[*] SSH server
[ ] Laptop
[*] Standard system utilities
----------↑パッケージ設定例↑----------

GUIは緊急用に入れておいて、後でgdmで切る、っていう手もあるけど、まぁ勉強のために今回は入れない方向で。
Mailも悩んだけど、RaspberryPiを使い始めたらまた考えよう、ということで一旦保留。
WebServerはMuninで使うためチェック。DNSは…OCN環境下のYouTube対策に、宅内DNSも検討しとこうかな、と…。
SSHとStandard system utilitiesはほぼ必須かと。
この後はインストールするパッケージ毎に必要な設定を聞かれる。

"Continue without boot loader"
→「何か特殊なアーキテクチャだからブートローダー入らんかった」(意訳)という感じ。
後で「boot.scr」を入れればいいので"Continue"を選択。…他に選択肢なんか無いけど。

"Finish the installation"
まだ終わっちゃらめぇぇぇ!!!壊れちゃうよぉぉぉ!!!
…まぁ、「壊れちゃう」は言い過ぎだけど。
このまま再起動されても自動起動してくれないので"Go Back"を選択。
"Go Back"を選択。(大事な事なので2度)

"Debian installer main menu"
→ここから今までの選択内容の見直しができるが、今回は手作業でチョイチョイ修正するので"Execute a shell">"Continue"を選択。
さて、コマンドが打てる状態になったところで、以下を実行する。

[ext4への変換(CuBox側)]
SDカードのアクセスは、ext3よりもext4の方が高速に行えるため、インストール時にext3でフォーマットされた「/」の領域をext4に変換する。
(正確には、ext4相当の情報に書き換えておき、後で母艦側でfsckを行い実際のext4変換を行う)
# tune2fs -O extents,uninit_bg,dir_index /dev/mmcblk0p1
# nano /target/etc/fstab
→fstab中のext3となっている部分をext4に書き換えておく。
[no journaling modeにする]
パフォーマンス重視な人はこちらも。
# tune2fs -c 0 -O ^has_journal /dev/mmcblk0p1
ただ、瞬断等のデータ破壊が怖いので、ウチの場合は次の「journal_data_writeback」モードにしておいた。

[journal_data_writeback modeにする]
フルジャーナルより早くて、ノンジャーナルよりは安心、という中庸設定。
ジャーナル情報があれば、間違ってrm-rfしても、extundeleteで復活できるってのは大きなメリットだと思うので、ウチの場合はこちらを採用。
# tune2fs -c 0 -o journal_data_writeback /dev/mmcblk0p1
[USBメモリからのファイルコピー]
あとはUSBメモリの「uImage」「2.6.32.9-dove-5.4.2.tar.gz」「boot.scr」をCuBoxのSDカードに書きだしてやればひとまずOK。
このExecute Shellの段階では、CuBoxのSDカードは「/target」にマウントされている。
# mount -t vfat /dev/sda1 /mnt
# cd /mnt
# cp boot.scr uImage /target/boot/
# cd /target/lib/modules/
# gunzip -dc /mnt/2.6.32.9-dove-5.4.2.tar.gz |tar -xf -
# sync
# exit
exitでシェルを抜けると"Debian installer main menu"が出てくるので、"Finish the installation">"Continue"を選択して終了。


自動的に再起動されるのでしばらく待つと、カーネルが起動する…が、これまでの手順でext4変換を行なっていると、ここでカーネルパニックになってしまう。
これはfsckによるext4変換が完全に終了していないため。
fsckはデバイスをマウントしていない状態で行う必要があるが、Execute ShellではResourceBusyでMicroSDをアンマウントできない。そのため、母艦側でfsckを実行してやる必要があるのだ。

[ext4への変換(母艦側)]
CuBoxの電源を抜き、USBメモリとMicroSDカードを抜き取り、MicroSDカードは母艦側に挿し込む。
母艦側では「フォーマット情報がおかしいからマウントできないよ」(意訳)と言われるため、ターミナルを開いてfsckを実行する。
MicroSDカードのデバイス番号はdmesgで調べておくこと。
# sudo fsck -f /dev/[DeviceNo]
これでデバイスのext4変換が完了するので、MicroSDをCuBoxに戻し、電源を入れると、ようやくDebianが起動する。
あとはrootに入ってsudoの設定をするなり、パスを切るなりご自由に…。

今回はLinuxターミナルからのシリアルコンソール接続やら、u-bootのコマンドやら、色々勉強になって良かった。
RaspberryPiやBeagleBoard(PandaBoard)等のおかげでARMサーバも普及しつつあるみたいだし、今回の経験も今後に生きる…といいなぁ…。

2012年9月7日金曜日

Ubuntu12.04を入れたAZにUbuntu12.10用のTegra2ドライバを入れてみた


2chAZスレPart7で2012/7/18版のTegra2ドライバを入れてた人がいたので、CuBoxのためにarmhf界隈の現状を知っておこうと、早速試してみた。

■Ubuntu12.04(Precise)のインストール
12.04.1が出た今でも、ARM用のUbuntuは12.04のまま。
インストール自体は前回同様だけど、いまだに発生するクラッシュレポートにウンザリしたため以下の対処を追加した。

■クラッシュレポートを無効にする
$ sudo nano /etc/default/apport

最下行のenabledを"0"に変更。

■Tegra2ドライバの入手
ここまでの時点でubuntu_backup等でバックアップを取っておくことを推奨。
そしてここからが本番。

Launchpadの「nvidia-tegra 15.1.0-0ubuntu1 (armhf binary) in ubuntu quantal」から
「nvidia-tegra_15.1.0-0ubuntu1_armhf.deb」を、
同じくLunchpadの「“nvidia-graphics-drivers-tegra” 15.1.0-0ubuntu1 source package in Ubuntu」から
「nvidia-graphics-drivers-tegra_15.1.0.orig.tar.gz」をダウンロード。

■Tegra2ドライバのインストール
「nvidia-tegra_15.1.0-0ubuntu1_armhf.deb」インストール後、「nvidia-graphics-drivers-tegra_15.1.0.orig.tar.gz」を解凍し、ABI11用の「tegra_drv.so」を「/usr/lib/nvidia-tegra/xorg」以下にコピー。

$ sudo cp [Unzipped-tegra_drv.so] /usr/lib/nvidia-tegra/xorg/

Xを再起動すれば完了。


画面表示がキビキビするけど、たまにフリーズしたり、マウスカーソルが消失したりと、割と動作が不安定なので、デスクトップ端末として使うならQuantalに期待かなぁ…。
RaspberryPi到着までの間、このままX切って、USB-LANアダプタ使ってVPNサーバにしてみるのも手か。

そして結構頻繁にクラッシュレポートが出ることから、現状のarmhfの安定性にも不安を感じる結果となったので、CuBoxの方はarmhfなDebian-WheezyのSatble版がリリースされるまで、armelなDebian-Squeezeで運用することにするか…。
EeePC901-Xで動作してるUbuntu12.04はこんなに不安定じゃないから、新しいアーキテクチャ(例えばarmhf64とか)が出ても、対応したDebianのStable版が出るまでは本採用を見送るのが吉、ということなのかもなぁ。

2012年9月2日日曜日

CuBox到着!

Android端末等でブラウジング中に表示される広告が非常にウザい!

Proxy立てて広告フィルタリングすれば良くね?

という短絡思考で(またかよ)7/25に購入したCuBoxが、ようやく手元に到着したので、到着までの流れを記録しておく。

■7/25 購入~支払完了
SolidRunのWebStoreより購入手続きを実施。支払はPayPalで。
購入手続き前にPayPalに英語表記の住所も登録しておくと、配達トラブルを防いだり、購入先のお店で確認がスムーズに進んだりと、色々と便利なのでオススメ。
今回は、その日のうちに購入手続きと支払手続きはスムーズに完了。

■7/29 おおまかな出荷日の連絡~出荷待ち
SolidRunより「色々混雑してて大変だけど、8/15までには出荷するよ!」(超訳)との英文メールが到着。
「おおまかな出荷日」と書いたのは…8/15を過ぎても何の連絡も無かったため。
まぁ、海外のCuBox関連のフォーラムでも…
Q:出荷日を過ぎても出荷されないんだけど…。
A:みんなそうだよ!あの会社の『出荷日連絡』なんてジョークだと思って、ゆっくり待ってるといいさ!
(超訳)
…みたいなやりとりを良く見かけたので、出荷日が2~3週ズレるなんてのは当然のことだと思っておいた方が良いみたい。

■8/24 出荷連絡~行方不明
SolidRunから出荷連絡のメールが到着。
…しかし、イスラエル郵便局のページからEMS番号で追跡しても「そんな荷物知らない」とのつれないお返事。そんな状態が2日程続く。

■8/26 日本に向けて配達
EMS番号追跡でようやくヒットしたかと思ったら「日本に向けて配達したよ!」との突然の追跡結果。まぁ、無事が確認できたので何より。
ここからは日本に到着するまで、イスラエル郵便局のページでも日本郵便のページでも追跡不可能。

■8/28 日本到着
日本郵便のページからEMS番号検索をかけると、ようやく「国際交換支店に到着」のステータスに。
ここから税関通るまで待ち状態が続く…。

■8/29 通関手続~発送
思ったより早く「通関手続中」「国際交換支店から発送」のステータスに。
ここで「国際交換支店から発送」のステータスが二度表示された場合は、税関通るのに時間がかかるらしいけど、今回は難なく発送されたようで一安心。
あとは届くのを待つだけだ!

■8/30 最寄りの郵便局に到着
■8/31 手元に到着!
…というわけで、購入から到着まで一ヶ月ちょい。5週間くらいかかったけど、昨年末の受付開始から、年初にかけての注文ラッシュの頃に比べたら、ずいぶん早く届くようになったんじゃないだろうか?

ちなみに、8/12に注文したRaspberry Piの方は「Despatch expected within 16 week(s)」ということなので…まぁ、こっちはそんなに急ぐ用事で使うわけではないので、今年中に着けばいい方なんじゃないだろうか(^^;
Raspberry Piについては、今ならModMyPiのページから注文すると、RSComponentsで注文するより早く届くそうな。


しかし…見事なまでの小ささ。文庫本2冊を平積みにするスペースがあれば、CuBoxが6台置けちゃうぞ。
ちなみに、初期ロットとセカンドロット以降では、シリアルポートの位置(本体側面S/PDIF下部→背面)と、付属するSDカードの容量(2GB→4GB)が違うようだ。ウチのはセカンドロット以降のヤツだね…。

さて、今はちょっと仕事が忙しいので、落ち着いたら…

・EeePC901:内蔵無線LAN→CrystalHDに換装したら、Ubuntu上のXBMCでメディアサーバに。
・CuBox:Squid+Polipoで、スマートデバイス用のコンテンツフィルタ兼宅内Proxyサーバに。他いろいろ。
・RaspberryPi:L2TP/IPSecなVPN専用サーバに。

という構成に組み上げてみるかね。
…RspberryPiが届くまで、DynabookAZをVPNサーバーに仕立てて使ってみてもいいかもなぁ…。

2012年3月11日日曜日

AZにARM版Ubuntu12.04DailyBuild(20120309)を入れてみた


AZ上のOneiricで(依存関係を解決してやれば)Netwalker用のFreeRDP1.0のバイナリが動く。

超快適

Preciseならarmhfだし、もっと快適になるんじゃね?

という短絡思考で我慢できずに、AZにPreciseのDailyBuildを投入。
(もちろんOneiric環境のバックアップは取った上で)
先日試したベータ版では事あるごとに内部エラーを連発していたので、使い物になるまではもっと大変かなぁ…と思っていたら、ベータ版の時より格段に安定しててビックリ。
現状をまとめてみると…

【Oneiricからの(現時点での)進化】
・何もしなくてもスピーカーから音が出る。
・何もしなくてもzramが有効になっている。
・Remminaが標準のリモートデスクトップクライアントになった。
・FreeRDPのライブラリが1.0系になった。

【現状の問題点】
・アーキテクチャがarmhfになったため、TegraのドライバーはOneiric(armel)のものが使えない。
・Unity(Gnome)+Metacityの組み合わせではオーバーレイスクロールバーが掴めない。
 (LXDEでは大丈夫)
・Remminaを最大表示時、画面上部のツールバーが表示されない。

【以前から引き続き存在する問題点】
・Remmina(FreeRDP)使用時は英語キーボード配列で扱われる。

…というところ。個人的にはそれほど重大な問題点もないから、このまま正式リリースまで使い続けてみるかなぁ。
今回やったことは、使わないソフトの削除と、使わないサービスの停止の他は以下の通り。
1.5GHzオーバークロックカーネルは…バックアップ取ってから試してみようかと。


■Ubuntuインストール
インストール自体は公式ページの通り。

■キーボードマッピング問題の解決
# sudo nano .Xmodmap
以下の記述を追加。

keycode 234 = Escape
keycode 81 = backslash bar
keycode 84 = backslash underscore

■少しだけ起動高速化(DualCore以上:AZはTegra2なので有効)
$ sudo apt-get install preload

■日本語名のディレクトリを英語に変更
$ LANG=C xdg-user-dirs-gtk-update

■その他文字化け封じのおまじないコマンド(個人的なexperimental)
まだgeditが日本語文字コードを誤認することがあるため、以下はPreciseでも有効。
まぁ、LXDEの標準エディタはLeafpadだから、必要ないかもしれないけど…。

$ gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8','CURRENT','SHIFT_JIS','EUC-JP','ISO-2022-JP','UTF-16']"
$ gsettings set org.gnome.gedit.preferences.encodings shown-in-menu "['UTF-8','SHIFT_JIS','EUC-JP','ISO-2022-JP','UTF-16']"
$ sudo dpkg-reconfigure locales
$ sudo gedit .dmrc

[Desktop]セクションに以下を追記。

Language=ja_JP.UTF-8
Layout=jp

■LXDE導入(WindowManagerもMetacity→OpenBoxとなる)
$ sudo apt-get update
$ sudo apt-get install lxde

■Ubuntuソフトウェア・センター
clamtk : ウィルススキャナ
ClipIt : クリップボード履歴
Synaptic : パッケージマネージャ。転ばぬ先の杖?

■Synapticパッケージ・マネージャ
コマンドラインから「sudo apt-get install [Package-name]」で入れればSynapticで入れる必要も無いが…。

chkrootkit : rootkit侵入防止
sysv-rc-conf : サービス管理エディタ


LXDEが思いのほか快適だったから、Precise正式リリース後はEeePC901XにLubuntu入れてみるかなぁ…。

2012年3月4日日曜日

ARM版Ubuntuインストールメモ


Dynabook AZが安くなってたので、ARM版Ubuntuの勉強とか、色んな理由を考えて購入。
話題のロシアンカスタムROMのv4bを入れたりした後にUbuntu化したので、その時のメモを公開。
今後はazsetupの中身を勉強がてら展開して、Preciseリリース後に役立てるとしよう…。


【ARM版(DynabookAZ用)Ubuntuインストールメモ】
■Ubuntuインストール
インストール自体は公式ページの通りに、特に問題なくアッサリと。

■zramswapの設定
いわゆる、昔懐かし「RAMダブラー」。少メモリ機種のパフォーマンス改善に。
ARM版Preciseからは標準でインストール済み。
$ sudo wget -O /etc/init/zramswap.conf 'https://wiki.ubuntu.com/ARM/TEGRA/AC100?action=AttachFile&do=get&target=zramswap.conf'


■少しだけ起動高速化(DualCore以上:AZはTegra2なので有効)
$ sudo apt-get install preload

■日本語名のディレクトリを英語に変更
$ LANG=C xdg-user-dirs-gtk-update

■その他文字化け封じのおまじないコマンド(個人的なexperimental)
$ gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8','CURRENT','SHIFT_JIS','EUC-JP','ISO-2022-JP','UTF-16']"
$ gsettings set org.gnome.gedit.preferences.encodings shown-in-menu "['UTF-8','SHIFT_JIS','EUC-JP','ISO-2022-JP','UTF-16']"
$ sudo dpkg-reconfigure locales
$ sudo gedit .dmrc

[Desktop]セクションに以下を追記。
Language=ja_JP.UTF-8
Layout=jp

■Webから入手
UbuntuTweak
Google Chrome→ソフトウェアセンターのChromiumでも可。
☓:Dropbox→ARM版は存在しない!WebI/Fで操作するか、UbuntuOneで我慢。
エプソン用プリンタドライバは必要であればここから。

■FirefoxExtention
Synapticから入れるとUpdateに対応できないためFirefoxから個別に導入した方が良い。
※Ubuntu Firefox Modificationsは誤動作の元になるため無効化しておくこと。

■Ubuntuソフトウェア・センター
clamtk : ウィルススキャナ
ClipIt : クリップボード履歴
Comix : 漫画ビューア
GParted : Gnome用ディスクパーティションエディタ
Remmina : リモートデスクトップクライアント(Preciseからは標準アプリになった)
→FreeRDP1.xのライブラリをクロスコンパイルすれば早くなるかも?(1.x系はRDP8に対応したため)
Synaptic : パッケージマネージャ。以前は標準で入っていたが、Oneiric辺りから非標準になっている。
pyRenamer : 複数ファイルのリネーマ

■Synapticパッケージ・マネージャ
chkrootkit : rootkit侵入防止
sysv-rc-conf : サービス管理エディタ

■xfce4導入
$ sudo apt-get update
$ sudo apt-get install xfce4*

■azsetup(以下、2chAZスレPart6の659氏の記述要約)
ubuntu 11.10を一通りインストールし終わったところでこのパッケージを導入すると効果的です。
AZ上のUbuntu11.10の動作環境を整備し改善します。
行うことは以下
・日本語環境を整備します
・動画コーデックを入れて動画ファイルを再生可能にします
・flashプラグインをインストールしyoutubeなどでフラッシュを見ることができるようにします
・nvidia-tegraグラフィックドライバーを入れて描画を高速化します
・スピーカーから音が出るようにします(注意)
(注意)
カーネルを置き換えるので立ち上がらなくなったときのために
重要なユーザーデータがあるときはバックアップを取ってから行なってください。
カーネルはこれを使ってます→https://lists.launchpad.net/ac100/msg00316.html
リンクが切れてるので実際はhttp://startx.ro/~janiのlinux-image-2.6.38-1001-ac100_2.6.38-1001.1_sound__armel.deb

$ sudo -s
# rm /var/lib/apt/lists/*
# echo "deb http://dl.dropbox.com/u/34541889/dynabookaz/ ./" > /etc/apt/sources.list.d/659.list
# apt-get update
# apt-get install azsetup

再起動後(コマンドラインより)alsamixerで
Lineのmute解除(おそらく解除されている)
SpeakerOut MuxをSpeaker Mix
SpeakerOut N Muxをmute
にセットするとスピーカーから音が出るようになります。

さらにこの後やっておくと便利な事
演奏・音量関係(f1,f2,f3,f4,f10,f11,f12)のファンクションキーをキーボードショートカットで定義
firefoxとthunderbirdのアドオンのグローバルメニューエクステンションを無効化

■キーボードマッピング問題
# gedit .Xmodmap
以下を追記。
keycode 234 = Escape

■不要サービスを停止
以下のURLを参考に。
http://misyakudouji.blog55.fc2.com/blog-entry-126.html
http://www.obenri.com/_minset_cent3/daemon_cent3.html

ファンクションキーのF9に対応するキーが無いのはアレだけど、日本語入力時はF7~F9の代わりにCTRL+I,O,Pを使ってる人なので無問題。
WindowsCE時代にJornadaで慣れておいて良かった…。

現状問題なく使えてるし、利用用途のメインがWifi経由のRDPクライアントとはいえ、実使用で5時間以上電池が持つので、現状のEeePC901Xよりも利用頻度は高くなりそう。
キーボード付きで、使い慣れてるOSが使えて、薄くて軽くて完全ワイヤレスなのはいいなぁ…。

2012年2月29日水曜日

URUU!年


とりあえず自分の備忘録的なブログを立ち上げてみる。そんな2月29日。
しかし、閏年ってイベント性低いよな…"29日"って他の月には普通にある日だからか?
"1月32日"とか、"13月1日"とかならもっと盛り上がるんだろうけど、困る人も多そうだ…。