2012年12月31日月曜日

2012年末に思うこと

大晦日に「グーグル ネット覇者の真実」を読んでて、つい4年前に買ったGoogleの技術に関する本も読み返してます。

グーグル ネット覇者の真実

なんというかこの10年ちょっとの間に、ネットの変化(あえて進化とはいいません)のめまぐるしさを思い返してました。それと同時に考えたのが、ここ2,3年の企業や個人へのネット攻撃です。
世の中のセキュリティソフトにも色々ありますが、やっぱりproxyが一番確実だろうと思います。まだ一般的な個人ユーザにそれを提供する会社はないですが、GoogleとかAmazonがその気になったりするんじゃないかと考えてしまいました。
Googleは最良の検索サービスを提供するんだから、さらに一歩進んで「安心」まで提供を始めたりして。。。(それがさらに検索の件数を増やすだろうから)そしてAmazonは自身が販売しているKindle FireのWebがAmazonのクラウド前提のサービスらしいから、Amazon会員ならセキュリティを無料で提供、なんてサービスやりかねんなという気がしています。(その分、子供も安全にwebを使えるとか宣伝文句をうたって)

どちらも必要なコンピュータパワーを考えると気が遠くなりますが、どちらの会社もそれを可能にする基盤システム(OS、ファイルシステム含めて)を自前で揃えてます。来年末くらいにはやりそうでこわい。

ところでファイルシステムで考えたのが、これだけ必要なデータが増えると、ファイルシステムは従来のファイル名によるデータ取得のような(windowsでいうとFATテーブル)ではまかないきれなくなり、DBになるんでしょうね。(昔、windows XPのときに、M$がWinFSとかいうDBでファイルシステムを構築しようとしているという話をきき、当時のPCのパワーでは「無茶だ」と一笑に付しました。実際M$も早々にあきらめましたし。)この状況だと、このデータ量を管理しようと思うと、従来のファイルシステムでは無理ですね。(家庭用のPCでも、もう10年もたない気がする。大体、HDDの容量がTB超えてくるとメンテナンスしないとだんだん使い物にならなくなってくるけど、普通の人にはそんな感覚わからないだろうし。)

linux( Ubuntu ) 古いカーネルの削除

前もどっかでメモした記憶があるんですが、ちょっと困った状態にPCがなり調べてたら、設定やらコマンドが昔と変わってたので、一応メモ。

1.現状
ノートPC(aspire-one)はいろんな実験環境で、windows-XPにUbuntu-11、これにさらにBT5R3をインストールしたという、かなり危ない状態です。BT5R3はUbuntuベースなんで、先に入ってたUbuntu-11と特に問題も起こさず、boot-loaderは同じgrubだったのはよかったんですが、なぜかboot時のメニューリストでUbuntu-11の方が5,6個でてくる状態に・・・

2.調査
こんなときは、grubの設定ファイル(/etc/grub.d/grub.conf)を修正してやれば、と思って「そういえば、現状Ubuntuが2個入ってるけど、どちらのgrub設定で動いてるんだ?」としばし悩み、順当に考えれば、後から入れたBT5R3だろうとそちらで起動。
ところが設定ファイルが見つかりません。/etc/grub.dの下は何かのスクリプトしかない。いつからこんな風になったんだ?しばらく悩んで思い出したのが、そういえばgrubは/boot/grubにあることを。さっそくそこを調べると、何か大量のファイルがあり(以前は設定ファイルと少しだった気が)、grub.confはやはり存在しません。
それらしいのがないか見てみると、grub.cfgというのが見つかりこれだろうと中を見ると、ファイルの最初がなんかスクリプトっぽくて、その後ろにありました、起動時の選択リストのデータが。それで判明したのが、Ubuntu-11の方は何度かカーネル更新してたらしく、古いカーネルが削除されずに残っていて(でも、Ubuntu-11を使っているときはとくに起動時にメニューは増えませんでした)、BT5R3をインストール時に、ご丁寧に調べてくれて、それを全部起動時の選択リストにいれてくれていたことでした。

3.修正
さて現状の状況が把握できました。ということはBT5R3側の/boot/grub/grub.cfgを何とかすればいいんですが、このファイルはread-onlyでファイルの最初に直接編集するな、/usr/sbin/grub-mkconfigを使えとのこと。試しに起動してみると、なにもコマンド入力は要求されず、HDDの状態を自動的に調べて、起動可能なシステムを設定ファイルに列挙するスクリプトのようです。

(1)古いカーネルの削除
ということでまずはUbuntu-11の古いカーネルの削除から始めます。Ubuntu-11でシステムを起動して、以下のコマンドでインストールされているlinux-imageをリストアップします。

dpkg -l | grep linux-image

表示されてくるものは、linux-image-2.6.15-23-386だったり、linux-image-2.6.15-23-genericとかでてきますが、基本注意するのはバージョンの数字のところです。残したい最新のバージョンだけ注意して、古いものを以下のコマンドで削除します。(慎重に作業してください!間違えると、取り返しがつきません。)

sudo apt-get remove --purge linux-image-2.6.15-23-generic


(2)grub設定ファイルの更新
さてこれで古いカーネルは削除できたので、/usr/sbin/grub-mkconfig(当然、sudoつけます)でgrubの設定ファイルを更新してやればいいだろうと、そのままUbuntu-11で実行しましたが、でもここで更新されるgrub設定ファイルはBT5R3のgrubからは見えない位置・・・ ダメじゃん!
今のPCはBT5R3のgrubで起動しているはずなので、BT5R3でシステムを起動しなおして、/usr/sbin/grub-mkconfigを実行しましたが、今度はBT5R3インストール時とは異なり、Ubuntu-11のファイルシステムは調べてくれません。(-"-)
当たり前といえば当たり前の結果に暫く悩み、結局grub.cfgの手動修正を実行、無事起動時にでてくる大量のシステム選択リストはきれいになりました。


PS
その後、別のPCでも同様の問題が発生しました。よくよく調べてみると、ちゃんと以下の様にオプションを与えてあげないとダメでした。(前回は何もオプションなしでやったので、本来grub.cfgに出力される内容を画面に出力していただけで終わっていた)

> /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg

これで異なるディストリビューションのカーネルも調べて、設定ファイルに反映してくれるようになりました。



2012年12月23日日曜日

Nexus7のアプリ開発

Nexus7のアプリ開発用に、eclipseの環境を整備していましたがその後何にもしてませんでした。せめてHelloAndroidくらい動作を確認しようと思い立ち、まずNexus7の設定を見るも、「開発者向けオプション」が見当たらない(;°ロ°) 何これ?こんなんで大丈夫なのかと思ってUSB接続してみるも、やはりデバイスが認識されていません。だいたい、USB接続するとどうしてもドライブと認識されてしまっているから、これじゃダメでしょ。ググってみて、調べて見つけました、なんというかGoogleの遊び心なのか、これくらい自分で調べれる人じゃなきゃこんなオプションを有効にしちゃだめよ、という意味なのか。昔のMicrosoftにもあった、隠し技で開発者向けオプションがでるようになり、USBデバッグモードをOnにできました。

さあこれでいいだろうと思っても、USB接続するとやはりドライブとして認識してしまい、あいかわらずeclipseからデバイスとして表示されません。再度、ググってみるとドライブとして認識するときMTPという通常のドライブ、それとPTPはカメラデバイスとして認識するようで、PTPにしないとだめなようです。ただ、それでもUSB接続するとやはりドライブとして認識されてしまいますが、今度はドライバがエラーが表示されるようになりました。

さらにググって、ASUS(Nexus7の製造メーカね)のNexus7のページをみると、USBドライバをDLできます。これをDLして、Windowsのデバイスマネージャから(ってことはMacはまた難しいかな、なんかこの展開、Galaxy S2のときと同じだな)ドライバの更新を行い、ドライバのエラーがでなくなり、無事eclipseのデバイスで認識できるようになり、HelloAndroidを実行できました。

それぞれの詳細な方法は割愛しますが、なんともあいかわらずハードルが高い・・・

PS.
ところでMac BookでのAndroid開発ですが、あいかわらずGoogle USB Deviceは非対応です。でもGoogleのHPを見てみると、MacやLinuxは自前のDevice driverでいいとのこと(でも前は、2.3の最初のときだけはよかったけど、その後の更新でダメになったけど。。。)。まあ試してみるかとやってみたら、1回目は何か問題がでてきましたが、Nexus7を一度抜いて、eclipseを再起動したらあっさりうまくいきました。安定してくれるといいけど。。。(ちなみに、そのHPにAndroid4.2からのUSBデバッグモードをOnにする隠し技が記載されてました)

PS(その2)
結局、今はWindows、Macとも安定してNexus7上にてデバッグできています。MTPも特にそのままで何も問題が起きません。当初悩んだのがなんだったのか、という状態です。しかし、実機デバッグが安定してできると快適です。なにせPC上のemulatorが起動は遅いわ、動作も遅いわでひどい状態ですから。AndroidをPC上で直接動かしちゃえというプロジェクトも進行しているそうです。