自宅ルータを Vyatta で構築してみたくなり、秋葉原の ark でマシンを調達しました。 Broadcom の BCM57780 チップが搭載された NIC がマザーボード J&W MINIX™ H61M-USB3 だったのですが、Vyatta.org によると Broadcom の NIC が Certificated Hardware に載っていなくて心配でした。まぁ定評のある NIC メーカだから動くだろう と楽観視していたのですけど、案の定動きました。vyatta.org の Certificated Hardware にコミットしたら “user tested” として掲載してもらえました。
http://www.vyatta.org/hardware/interfaces
こんな感じに見えています。
# dmesg | grep Broadcom [ 3.284646] tg3 0000:03:00.0: eth0: attached PHY driver [Broadcom BCM57780](mii_bus:phy_addr=300:01) [ 3.524122] tg3 0000:05:00.0: eth1: attached PHY driver [Broadcom BCM57780](mii_bus:phy_addr=500:01) 今回は、基本的な設定 (PPPoE, NAT, DHCP) 周りを記していきます。
環境は…
+--------+ | Modem | +--------+ | | pppoe0 +--eth0--+ | vyatta | +--eth1--+ | 192.168.1.0/24 +----------+ | |192.168.1.10 +--------+ +--------+ | CPE | | DNS | +--------+ +--------+ として記します。
...
今週/先週?、Hacker News で取り上げられた Mosh を自宅 と会社で使い始めた。SSH 代替なソフトウェアで、SSP (State Synchronization Protocol)over UDP で動作している。MIT が開発したそうだ。
動作は、クライアントがシーケンス番号と共にデータグラムをサーバに送信し、同期し 続ける。クライアントがローミングし IP アドレスが代わる等した時、以前より大きい シーケンス番号と共に正当なパケットが送信されたとサーバが認識した場合のみ、サー バは新しいソース IP アドレスを新たなクライアントだと認識する。もちろん、この場 合のローミングは NAT 越しの IP 再アサイン時やクライアントのネットワークインター フェース切り替えやノート PC を新たな無線アクセスポイント配下へ移動した場合も同 様に動作する。めちゃ便利やん。Mosh は SSP を2経路持ち、1つはクライアントからサー バへユーザの打ったキーの同期を取る。もう一方はサーバからクライアントへで、スク リーンの状態をクライアントへ同期を取るためだ。
つまり、ノート PC やその他モバイル機器の IP アドレスが変わったとしても接続性は 担保され、また ノート PC のスリープ解除後にも接続性は確保され続ける。また、UDP で動作しているので、フルスクリーンの vim や emacs 等での再描画の遅延等も起こり にくそうだ。あと Ctrl-C 。TCP だと、キータイプがサーバプログラムに伝わらない状 況はプログラムプロセスが混雑しているとよくあるのだが、SSP over UDP での Ctrl-C はそういうことが無いそうだ。
また、認証機構は SSH に任せているので sshd は引き続き稼働させておく必要がある。 mosh は接続する先のユーザが一般ユーザ権限で動作させるプログラムでしかない。つ まり mosh daemon は必要ないようだ。
実際にインストールしてみた。Mac の場合、homebrew で
...
ノート PC を購入するといつも Debian Gnu/Linux sid をインストールするのだけれど も、X Window System や InputMethod をインストールして利用し始められるところま での手順っていつも忘れる。メモとしてブログに載せておきます。
console 上での ctrl:caps swap 設定 取りあえずこの設定をしないと、何も操作出来ない。Caps Lock と Control キーを入 れ替える設定です。
/etc/default/keyboard を下記のように修正
XKBOPTIONS="ctrl:swapcaps" 下記のコマンドで設定を反映。
% sudo /etc/init.d/console-setup restart sid の sources.list 設定 Debian Gnu/Linux をノート PC にインストールする時は必ず sid を入れます。新し目 のソフトウェアを使いたいから。
deb http://ftp.riken.jp/Linux/debian/debian/ unstable main contrib non-free deb-src http://ftp.riken.jp/Linux/debian/debian/ unstable main contrib non-free 下記のコマンドで dist-upgrade
% sudo apt-get update % sudo apt-get dist-upgrade iwlwifi のインストールとネットワーク設定 買うノート PC はいつも ThinkPad。大体 intel チップな Wi-Fi モジュールが搭載さ れているので、iwlwifi を使う。
...
長年 Gnu screen 愛用者だったのだけど完全に tmux に移行しました。
愛用している iterm2 との相性も良く、好都合な点が幾つかあり移行する価値がありました。
ただ、サーバサイドでの利用は諦めました。問題だったコピペ問題をクリアしている tmux のバージョンが Debian sid から取得出来たのだけど、まだまだ完成度高くなく..。
よって、Mac に tmux をインストールして作業するようになりました。インストール方法はこれ。
予め https://github.com/mxcl/homebrew/wiki/installation に したがって homebrew をインストールする必要あり。
% brew update % brew install tmux インストールしたら .tmux.conf の作成に入る。prefix キーは C-t にしたかった。screen 時代から これを使っていて指がそう動くから。
# prefix key set-option -g prefix C-t またステータスライン周りの設定。色なども自分で選択すると良い。
# view set -g status-interval 5 set -g status-left-length 16 set -g status-right-length 50 # status set -g status-fg white set -g status-bg black set -g status-left-length 30 set -g status-left '#[fg=white,bg=black]#H#[fg=white]:#[fg=white][#S#[fg=white]][#[default]' set -g status-right '#[fg=white,bg=red,bold] [%Y-%m-%d(%a) %H:%M]#[default]' # window-status-current setw -g window-status-current-fg white setw -g window-status-current-bg red setw -g window-status-current-attr bold#,underscore # pane-active-border set -g pane-active-border-fg black set -g pane-active-border-bg blue UTF-8 有効化やキーバインド設定等は…
...
pages.github.com は github.com の WEB ホスティングサービスです。これを利用して octopress のブログを 構築する方法をメモしていきます。
まず、github.com に “${好きな名前}.github.com” という名前のレポジトリを github.com 上で作成します。 レポジトリの作成は普通のレポジトリ作成と同じ方法で行えます。しばらくすると “${好きな名前}.github.com のページがビルド出来ました” という内容でメールが送られてきます。
pages.github.com によると、レポジトリページで “GitHub Page” にチェックを入れろと書いてありますが、情報が古いようです。 2012/03/20 現在、この操作の必要はありませんでした。
次に octopress の環境構築。
octopress は、jekyll ベースのブログツールです。markdown 形式で記事を書くのですが、emacs や vim 等 好きなエディタを使って記事を書けるので便利です。最近 “Blogging with Emacs” なんてブログをよく目にしたと 思うのですが、まさにソレですよね。エンジニアにとっては嬉しいブログ環境です。
まずは、rvm の環境構築を。octopress は ruby 1.9.2 以上が必要なので用意するのですが rvm を使うと 手軽に用意出来るので、今回はその方法を記します。
参考 URL は http://octopress.org/docs/setup/rvm/ です。
まずは準備から。私の環境は Ubuntu Server 10.04 LTS なのですが、下記のパッケージが必用になります。
% sudo apt-get install gcc make zlib1g-dev libssl-dev 下記のコマンドを実行すると、rvm がインストールされます。
...
Carbon な API は排除していくべきと Apple も言っているようですし、自宅も会社も Cocoa な emacs を使うようになりました。
その手順を書いていきます。
ソースとパッチでビルドも出来るのですが、homebrew 使うとメチャ楽なので今回はそれを使います。 homebrew は公式サイトに詳しいことが書いてありますけどインストールがワンラインで済みます。 あと、事前に AppStore で Xcode を入れてください。
% /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)" だけです。
そして Cocoa な emacs インストール。
% brew install --cocoa emacs % sudo mv /usr/local/Cellar/emacs/24.1/Emacs.app /Applications/ 以上です..。簡単すぎる。先人たちのおかげですね。
次は時間見つけて anything.el のことを書こうかなぁと思ってます。
参考 URL : http://mxcl.github.com/homebrew/
上の画像は conky というツールのキャプチャです。
conky は x window で使える linux マシンのステータスを文字・グラフ描画で表現してくれるツールです。
透明にしたりグラフ表示を派手にすることも出来るのだけど、わたしは上図のようにステータスバーとして使ってます。Window Manager に openbox という素っ気ないものを使うようにしてるので、これ自体がファイラーもステータスバーも無いんです。なので conky を利用して ‘時間’, ‘バッテリ残量’, ‘AC アダプタ有無’, ‘ネットワーク使用量’ 等を表示してます。
deviantart に rent0n86 さんという方が投稿した作品があって、それをこちょこちょ自分用にいじって使ってます。
debian gnu/linux な GUI 環境があれば…
% sudo apt-get conky-all % cd $HOME % wget https://raw.github.com/chobiwan/dotfiles/master/.conkyrc で、この環境を作れます。
表示する内容は環境に合わせて修正すると楽しいです。幅は minimum_size パラメータで合わせてください。
パラメータ一覧は、公式 Wiki サイト に正しい情報が載っています。
話変わるけど、enlightenment 17 が完成度高くならない理由ってなんなのでしょうかね? 16 を愛用していただけに残念。
github.com は便利なのだけどプライベートなレポジトリを作るのにお金払うのはもったいないので自宅サーバに SSH 経由の Git サーバを構築した。その時の手順をメモしておきます。
gitosis という便利なツールがあって、これを使うとあっという間に環境構築できます。私の環境は debian Gnu/Linux Squeeze なのですが apt-get で必要なモノを入れました。gitosis は git で持ってきます。
remote% sudo apt-get update remote% sudo apt-get install git git-core python python-setuptools remote% cd $HOME/usr/src remote% git clone git://eagain.net/gitosis.git remote% cd gitosis remote% sudo python setup.py install SSH でアクセスする先のユーザを作ります。
remote% sudo adduser --shell /bin/sh -gecos --group \ --disable-password --home /home/git git 作業端末で rsa な SSH 公開鍵を生成して ${remote} サーバは転送する。
local% ssh-keygen -t rsa ... インタラクティブに答える local% scp .ssh/id_dsa.pub ${remote}:/tmp/ 転送した鍵を元に ${remote} サーバ上で git レポジトリを初期化する。
...