2009年03月19日

ルートファイルシステムにInternal memory cardを使う

N810の内蔵メモリは256MB。
色々インストールすると、結構すぐに一杯になってしまいます。
Internal Memory Cardは2GBもあるのに…と悔しがっていたら、KimitakeさんがInternal Memory Cardをルートファイルシステムにする方法を教えてくださいました。(感謝!)

以下の3つのサイトを参考にしつつ、実際に試してみます。

Boot from MMC for N800 - Kimitake's blog
http://kimitakeblog.net/item/500

Booting from a flash card - maemo.org wiki
http://wiki.maemo.org/Booting_from_a_flash_card

Partitioning a flash card - maemo.org wiki
http://wiki.maemo.org/Partitioning_a_flash_card

この先の手順で使用するいくつかのパッケージはデフォルトで設定されているリポジトリには入っていないものがあります。なので以下のリポジトリをパッケージマネージャから追加しておいてください。
Catalogue name : Maemo Chinook
Web address : http://repository.maemo.org/
Distribution : chinook
Components : free non-free

ついでにmaemo ExtrasDisabledのチェックを外しておきましょう。

ここから先、全ての作業はrootで実施してください。
rootの取得はopensshをインストールするのが一番簡単だと思います。
(作業もみんなリモートから出来ますし)

まずはパーティショニングのためにe2fsprogsをインストールします。
apt-get install e2fsprogs

パーティショニングの対象となるInternal Memory Cardをumountします。中身はきれいさっぱり消してしまうので、必要なファイルがあれば別の場所にコピーしておくのをお忘れなく。
umount /dev/mmcblk0p1

ではパーティションを切りましょう。
sfdisk /dev/mmcblk0

するとディスクの現状態が表示され、最後に
/dev/mmcblk0p1 :

と表示されていると思います。これが第1パーティションの設定プロンプトになります。第1パーティションは512MBのVFATにしたいので、以下のとおり入力します。
/dev/mmcblk0p1 :1,16384,6
/dev/mmcblk0p1 1 16384 16384 524288 6 FAT16
太字の部分が入力した内容です。
同様に第2パーティションも設定します。こちらは残り(約1.5GB)のext2です。
/dev/mmcblk0p2 :16385,,
/dev/mmcblk0p2 16385 61439 45055 1441760 83 Linux
第3、第4パーティションは設定しないので何も入力せずにEnterを押してください。私の環境だと何故か第3パーティションが出来てしまうんですが、気にしないことにしています。
最後にディスクに書いていいか聞かれますので、yを入力します。
Do you want to write this to disk? [ynq] y

これでパーティショニングは完了したので、一度再起動します。
reboot

第1パーティションは自動でマウントされている(はず)ので、umountします。
umount /dev/mmcblk0p1

先ほど作成したパーティションをフォーマットします。
mkdosfs /dev/mmcblk0p1
mke2fs /dev/mmcblk0p2

続いてbootmenuをインストールします。
まずはインストールで必要になるwgettarをインストールしましょう。(tarは標準で入っているbusyboxのものだとうまく行かないのでこちらのバイナリを使用します)
apt-get -y --force-yes install wget
mkdir -p /home/user/bin
cd /home/user/bin
wget http://www.nmacleod.com/nokia/bin/tar
chmod +x tar

bootmenuをダウンロードし、ファイルを展開します。
cd /home/user/bin
wget http://fanoush.wz.cz/maemo/initfs_flasher.tgz
tar zxvf initfs_flasher.tgz
cd /home/user/bin/initfs_flasher/

bootmenuをカスタマイズするために、設定ファイルを記述します。
cp bootmenu.conf.n8x0.example bootmenu.conf
vi bootmenu.conf

内容はこんな感じにしました。
(先々を考えてExternal memory cardからもboot出来るようにしてます)
# bootmenu customisation file

# timeout for automatic selection when no key is pressed
MENU_TIMEOUT=3

# menu items
MENU_MIN=1 # first item index

#no need to redefine
#MENU_1_NAME="Internal flash"
#MENU_1_ID="flash"

MENU_2_NAME="Internal MMC card, partition 2, ext2"
MENU_2_ID="mmc2"
MENU_2_DEVICE="${INT_CARD}p2"
MENU_2_MODULES="mbcache ext2"
MENU_2_FSTYPE="ext2"
MENU_2_FSOPTIONS="noatime"
[ -d "/sys/block/${INT_CARD}/${MENU_2_DEVICE}" ] || MENU_2_NAME="(${MENU_2_NAME}) N/A"

MENU_3_NAME="External MMC card, partition 2, ext3"
MENU_3_ID="mmc1"
MENU_3_DEVICE="${EXT_CARD}p2"
MENU_3_MODULES="mbcache jbd ext3"
MENU_3_FSTYPE="ext3"
MENU_3_FSOPTIONS="noatime" #",data=writeback"
[ -d "/sys/block/${EXT_CARD}/${MENU_4_DEVICE}" ] || MENU_4_NAME="(${MENU_4_NAME}) N/A"

MENU_4_NAME="Power off (when not on charger)"
MENU_4_ID="off"

#last item index, change if you add/remove items
MENU_MAX=4

initfsを作成します。
./initfs_flash

途中で色々聞かれますが、全部yesと答えてしまってOKです。
作成にはそこそこ時間がかかります。のんびり待ちましょう。
最後にrebootを求められるので、素直に従いましょう。

再起動したら、デフォルトのブートデバイスを設定します。
chroot /mnt/initfs cal-tool --set-root-device ask:mmc2

内蔵メモリにある現在のシステムを全てInternal memory cardにコピーします。
mkdir /mnt/mmc2
mkdir /mnt/internal
mount /dev/mmcblk0p2 /mnt/mmc2
mount -t jffs2 /dev/mtdblock4 /mnt/internal
/home/user/bin/tar cf - -C /mnt/internal . | /home/user/bin/tar xvf - -C /mnt/mmc2

コピーが終わったらumountして再起動しましょう。
umount /mnt/mmc2
umount /mnt/internal
rmdir /mnt/mmc2 /mnt/internal
reboot

うまく行っていれば再起動後にbootmenuが出てくるはずです。
Internal MMC card, partition 2, ext2を選択してEnterを押してください。
(押さなくても3秒でタイムアウトして起動してくるはずですが)

さて、ルートファイルシステムが大きくなったか確認してみましょう。
df -h
/dev/mmcblk1p2 1.4G 245.6M 1.0G 19% /
こんな感じに表示されればOKです。(他にもいろいろ出ますが)

ちょっと気になる事が1つ。内蔵→Internal Memory Cardとシステムを移動すると、ディスクの使用量が倍くらいに跳ね上がってしまうんです。これってファイルシステムのブロックサイズの問題とか、そういう理由なんですかね?まぁそれを補って余りあるくらいパーティションサイズは大きくなるのでいいんですけど。

上記の作業中、もし運悪くN810が起動しなくなってしまった場合(私も一度なりました)は、慌てず騒がず本体の初期化をしましょう。初期化用のツール(本来の用途はSoftware Updater)は以下で提供されています。

Nokia USA - Software update - Nokia N810 support
http://www.nokiausa.com/A4686323

ツールをダウンロードしてインストールしたら、

1.N810の電源を切る(切れなければ電池抜く)
2.十分に充電したらACアダプタを外す
3.Software Update Wizardを導入したPCにUSBケーブルで接続する
4.Swapキー(左側の四角が2つ重なったアイコンのヤツ)を押しながら電源ON
5.PC側でSoftware Update Wizardを起動する
6.指示に従ってアップデート開始

とすれば元に戻ります。Don't panic!
ちなみに戻しの手順はいつもこちらのページを参考にさせていただいております。(感謝!)

サルにもわかるN810(OSアップデート) - 一口! - Yahoo!ブログ
http://blogs.yahoo.co.jp/hinoe_uma66/12835323.html

Enjoy! ;-)
posted by 月水和尚 (とも) at 16:29 | Comment(5) | TrackBack(0) | Nokia/Symbian

2009年03月10日

Dropboxが超便利!

オンライン同期サービスのDropboxが超便利!
個人的にずっとオンラインストレージに対して不満に思っていた、

・ネットワークに繋がってないと使えない
・都度ファイルをダウンロードすることになるので重い
・サービスが消滅したらファイルは全滅?


という部分が見事に解消されています。素晴らしい。

所謂オンラインストレージの場合、データはネットワーク上に持ちます。それをドライブとしてマウントしたり、専用のソフトで扱ったり、ブラウザからアクセスしたりすることになると思います。常にネットワークを利用し、常に最新のファイルがサーバ上にしか存在しないため、上に書いたような不満を感じてました。(ローカルキャッシュするとか色々工夫しているサービスもありますが、あまり根本的な解決策にはなっていない)

これがDropboxの場合、データは基本的にローカルに持ちます。そのためネットワークに繋がってなくてもファイルは利用可能ですし、アクセス速度もローカルHDDと同等。(当たり前ですなね)

では何がオンラインなのかというと、Dropboxではある特定のディレクトリ配下を監視して、ファイルに変更があった場合に変更内容をサーバにアップロードする、という動作をします。アップロードは自動で行われますし、ネットワークに繋がっていない場合はアップロードを待機して、あとでネットワークに繋がったときに溜まっていた変更分をまとめてアップロードしてくれます。

アップロードされたファイルはサーバに保管されるだけではなく、他の同期対象のPCに対して自動的に配信されます。もちろん、ネットワークに繋がってない(電源すら立ち上がってない)場合でも全然問題なくて、ネットワークに繋がった(電源が立ち上がった)あとで最終更新からの変更分をまとめてダウンロードしてくれます。同期対象のPCが全て同じ状態に保たれてくれるため、隔地バックアップみたいな効果も生まれると思います。

もちろん、普通のオンラインストレージのようにブラウザ経由でファイルを取り出すことも可能ですし、自動でバージョン管理もしてくれているので過去日付のファイルを取り出すことも可能です。そしてブラウザ経由ならiPhone/iPod Touchからでもアクセスできます。(実はやったことないんですが)

同期用のクライアントもWindows、Mac、Linuxと対応されているので、マルチプラットフォーム環境でのファイル同期も思いのままです。

…と、ここまでいいことずくめで書いてきたDropboxですが、1つだけ注意点。それは、所謂オンラインストレージと違い、利用可能なストレージが増えることはないという点。データは全部ローカルにあり、サーバではその最新版を保管、複数拠点での同期、バージョン管理をしているだけなので、追加ディスク的な使い方は出来ません。個人的には全然問題ないんですが、例えばNetbookを使っていてローカルストレージが16GBしかないのでオンラインで増量を!と言うようなニーズには残念ながら向きません。ご注意下さい。

個人的には使用頻度の高いファイル(例えばメモ書きとか)はDropbox、それほど使わないけどどこからでも利用できると便利なファイル(例えばマニュアルとか)はオンラインストレージと、それぞれのサービスの利点を理解してうまく使い分けるのが一番いいのではないかなと思ってます。

Dropboxのサービスは2GBまでは無料で使えます。有料版は50GBまで。私は持ち歩きたいデータはそんなにないので、無料版のまま使わせてもらってます。今だと紹介キャンペーンをやっていて、以下のリンクからユーザ登録していただけると+250MBのスペースがもらえます。(つまり2.25GB使えることになる)

https://www.getdropbox.com/referrals/NTQ4NzM3Mzk

ちなみに登録していただけると、私にも+250MBのスペースがいただけます。自分だけもらえるんだと紹介リンクもやらしいかな…と思ったんですが、お互い幸せになれるのであえてご紹介。アフェリエイトっぽいのは嫌い!という方は、もちろん普通に登録していただいても問題ないですよ。

最後に念のための注意点を1つ。

通信はSSLで暗号化されていますし、サーバ側もそれなりのセキュリティ対策をしているとは思いますが、インターネットを介したサービスである以上情報漏洩のリスクがないとは言い切れません。それこそシステム的にものすごい強固であっても、自分が設定したパスワードの強度が低ければ不正ログインされる可能性だってありますし。

なのでDropboxでどんなファイルを同期するかについては、ご自身でしっかりと考えていただきますようお願いいたします。インターネットは怖いところなので、最後に自分を守るのは自分自身です。(これは自戒の意味も込めて)

…とは言え、私はある程度名の知れたサービスは基本的に信じることにしているので、それなりに重要なファイルでもあまり気にせず同期対象にしてしまっていますが。カード番号を書いたテキストファイルはさすがにやめとこうかな、とかその程度ですね。(全然自戒してない>自分)

単独PC上にあるデータのオンラインバックアップとして、会社と自宅のPCの同期用として、他にもいろんな使い方が考えられると思います。個人的には一押しのサービスなので、興味がある方は是非とも使ってみてください。何と言っても、無料ですしね!
posted by 月水和尚 (とも) at 11:24 | Comment(0) | TrackBack(0) | Webサービス

2009年03月09日

VMware Infrastructure Clientをubuntuで動かす

最近VMware ESXiがすごくお気に入りです。

それまではずっと仮想化=Xenの人だったのですが、各ディストリビューションでのXenのサポートがあまり進んでない(むしろ最近後退すらしているような気が…)のと、ESXiがあまりにもさくさく使えるのと相まって、すっかり浮気気味です。(もちろんXenの方が便利なシーンもたくさんあるのですが)

ただESXiのネックは、専用の管理クライアントが必要なこと。Xenのように実機のコンソールからログインしてCUIレベルでさくさく管理というわけにはいきません。(コンソールからログインも出来るらしいのですが、unsupportedな手順になってしまうので)

さらに困った事には、管理クライアントであるVMware Infrastructure ClientはWindowsでしか動きません。ESXi上のサーバにLinuxしか使わない環境でもWindowsが必須なんてあんまりだ…。

というわけで、VMware Infrastructure ClientをLinuxで動かしてみました。こちらで検証した環境はubuntu 8.04ですが、特にubuntuに特化した事はしてないと思うので他のディストリビューションでも似たような手順で実現可能だと思われます。

基本的な手順はこちらの内容を参考にさせていただきました。

vmware infrastructure client on ubuntu … an update
http://www.virtualinsanity.com/index.php/2009/02/02/vmware-infrastructure-client-on-ubuntu-an-update/

まずはWineをインストールするのですが、公式リポジトリにある1.0ではうまく動いてくれないため、WineHQにある最新の開発版(2009/03/09時点で1.1.16)をインストールするために、以下の2つのコマンドを実行します。
wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | sudo apt-key add -
sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/hardy.list -O /etc/apt/sources.list.d/winehq.list

これで最新の開発版が使えるようになりました。
いつものようにWineをインストールします。
sudo apt-get install wine

続いてWineの導入補助スクリプト(という表現でいいのかな?)であるwinetricksを導入します。導入と言っても、スクリプトをダウンロードしてくるだけなので以下のコマンド1つだけでOKです。
wget http://www.kegel.com/wine/winetricks

保存する場所はたぶんどこでも大丈夫です。
そうしたらwinetricksが利用するcabextractも導入します。
sudo apt-get install cabextract

winetricksを使って必要なWindowsコンポーネントを導入します。
sh winetricks dotnet20 ie6 winxp

途中で(Windowsユーザには)見慣れたダイアログボックスが出てくると思うので、普通にインストールを進めちゃってください。

以上でクライアントを導入する環境は整いました。ESXiが稼働しているサーバから、クライアントアプリをダウンロードしてインストールします。(普通にexeファイルをダブルクリックすればWineが良きに計らってくれます)

これで準備万端…と言いたいところなのですが、どうもWineの通信関連に問題があるらしく、クライアント−サーバ間の通信にSSL(HTTPS)を使うとクライアント側が落ちてしまうとの事。HTTPで通信しようとしてもデフォルトではHTTPSにリダイレクトされてしまいます。そこでHTTPでのアクセスを可能にするためにサーバ側の設定を変更します。これは正規の手順ではないので、本番稼働中のサーバなど、ダウンが許されないサーバでは絶対に行わないでください

まずはESXiにコマンドレベルでログインします。そのために、ESXiが稼働している実機のコンソールにてAlt+F1を押します。するとコマンドっぽい画面(表現下手でスミマセン…)に変わるので、キーボードからunsupportedと打ち込んでEnterを押します。打ち込んだ文字は画面には表示されませんが、気にしないでください。するとパスワード入力のプロンプトが表示されるので、サーバ導入時に設定したパスワードを入力してEnterを押します。無事に完了すると、見慣れたLinuxのコマンドプロンプトが現れます。

ここで修正すべきファイルは /etc/vmware/hostd/proxy.xml で、ファイルに記述されている httpsWithRedirecthttpAndHttps に変更します。viなどで普通に変更されてもいいですが、たぶん以下のコマンドを実行すれば意図したとおりに変更されると思います。
cd /etc/vmware/hostd
cp proxy.xml proxy.xml.org
sed 's/httpsWithRedirect/httpAndHttps/' proxy.xml.org > proxy.xml

修正が完了したらESXiを再起動しましょう。
reboot

再起動が完了したら、いよいよクライアントから接続します。
IP Address / Nameの部分は通常IPアドレスだけ記述すればOKなのですが、それだとHTTPSで通信を始めてしまうため、明示的に http://xxx.xxx.xxx.xxx とプロトコル名込みで記述してください。ここまで全ての手順が正しく完了していれば、VMware Infrastructure Clientが無事に起動してくれると思います。

まだざっとしか使っていませんが、現時点で分かっている不具合は以下のとおりです。

・Consoleが使えない
・右クリックが軒並み全滅
・Getting Startedの表示がおかしい

Getting Startedは設定で消せちゃうようなタブなので特に影響はなく、右クリックに関してもメニュー等別の方法で目的の処理までたどり着けるようなのですが、Consoleが使えないのはちょっと致命的。Linuxクライアントから新しいVMを作るのはちょっと無理のようです。トラブルシューティングなども最後はコンソールからの操作が頼りなので何とか解決してくれるといいんですが、今のところどうしようもないみたいです。ひょっとしたらWineのバージョンが上がったら解決するかも…と淡い期待。(それよりも本家VMwareからLinuxクライアントが出てほしいところですが)

とは言え、とりあえずVMの操作やリソース状態の確認、データストアの操作などは問題なくできるので、それなりに利用価値はありそうです。通常の運用端末はLinuxにしておき、いざという時は別途WindowsPCを持ち込んで対処するとか。(少なくともWindowsのライセンス数の削減には貢献できそう)

ワッサーで助言を下さった@kimitakeさん、@umqさん、@naru01さん、ありがとうございました!
posted by 月水和尚 (とも) at 15:20 | Comment(0) | TrackBack(0) | Linux(ディストリビューション固有)
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。