2014年12月16日火曜日

松屋 Advent Calendar 16日目:島田スペシャルってなんぞや

こんにちは、島田と申します。
久々のアドベンドカレンダーですね。もう技術系で12月を書きたくないのですが、これならええやろうということで。

なんかここまでのアドベントカレンダーの中身を見ていると、松屋好きすぎる!てノリの記事が主な感じがしますので、最初はちょっと視点を変えて、今年の松屋を振り返ろうかと思います。

ことしの松屋を振り返って:プレミアム牛めしの憂鬱

今年の松屋といえば、2月の大雪による販売休止、プレミアム牛めし、トマトカレーガチ勢、トンテキ定食(TTT)の供給遅れなど、季節によりメニューがよく変わる松屋にして考えても山あり谷ありだったように思いますが、なんといってもプレミアム牛めしが話題をさらいました。

牛めし(あるいは牛丼)という食べ物は、昨今の日本では蕎麦やおにぎりなどとともに、セーフティーネット的な外食系の食べ物として認識されていることが多いのではないでしょうか。つまり、お金がなくてもこれなら食べられる、という安心感のある食べ物という位置づけに、松屋の牛めしも入っていると思います。

これは、趣味にお金つぎ込み過ぎて(以下略)という方から、本当に生活保護に頼っているという方まで、幅広い層がいるということを忘れてはならないでしょう。

なので、首都圏を中心にプレミアム牛めしに切り替わった際、価格に敏感な人を中心に非難の嵐が起きました。並290円→380円の大幅アップですのでそんな反応も無理はないでしょう。実際、僕が堀田で先行発売されたプレミアム牛めしを食べに行った際のツイートを見ても、謎リプツッコミの多くがそのような方々でした。




確かに肉がよく、昔の吉野家っぽい牛めしでよかったなーと思いましたし、そんな反応も多かったのですが、前の方がよかったという話もこれまた聞きました。ニューコークの如く、定番の味を変えるのは難しいに違いありません。

その後、全国でプレミアム牛めし化するんじゃないかという話もありましたが、現在おおむね首都圏でプレミアム牛めしの展開が止まっています。この松屋の方針は現在も非難や疑問を持つ人がいるんじゃないかなと思います(僕もそうです)が、恐らく松屋サイドでも、高級志向とセーフティーネット、あとは諸々のコスト上昇の間で揺れてるんじゃないかなと思う訳です。


このあたり、来年はどうなるでしょうか。個人的にはもう少し納得のいくプレミアム・非プレミアム牛めしの棲み分けになって欲しいなと願うばかりではあります...。


さて、お堅い話をしたところで、早速松屋に行くとしますか。

島田スペシャルってなんぞや

突然ですが、個人的な牛めしのこだわりは、牛肉が見えなくなるぐらいネギをかける派です。おろしネギもいいのですが、おろし無しでねぎなのです。そして、ポン酢をどばどばかけるのが好きです。これはもはや牛めしというより、ネギ丼にしか見えない強烈な見た目が印象的です。

これを、何かのパクリで島田スペシャル(しまだスペシャル)と勝手に言ってます。ただ、いつからそう言ってるかは明らかではなく、なんか去年ぐらいからそう言ってたらしいという感じです(適当)。Twitterは昔の履歴あさるのが面倒ですが、昔のおかのさんのツイートを借りると去年6月っぽい感じがしています。



で、何故こんなシンプルかつストレートな謎トッピングなのかといいますと。
島田スペシャルは、元々は讃岐うどんでやっていたのに由来します。丸亀製麺とかでは、カウンターでネギをかけ放題なのをいいことに、麺を覆うようにネギをかけて食べる訳です。


これがまたリーズナブルな貧乏料理っぽく、シャキシャキの野菜(といってもネギだけですが)が摂取できるので、個人的にイケるわけです。これを牛めしでやればどうやろう?とか思ったのが、島田スペシャルであります。なんとも単純です。


松屋で島田スペシャルな牛めしを食べる

では、実際に島田スペシャルを実践してみましょう。まずは当然ですが松屋に行き、適当な食券を買いましょう。

次に、食券を店員さんに渡し、それと同時に青ねぎ(60円)を注文しましょう。というのも、券売機にほとんどの場合は青ねぎが入ってないためです。また、ICカードとかも使えない(と思います、未確認ですが)ので小銭を店員さんに渡しましょう。ミニ牛めしなら1皿(60円)、並以上であれば2皿(120円)が適当だと思います。

すると、こんな感じで来ます。これが島田スペシャルの素です。

あとはネギを牛めしのうえにかけ、テーブルにあるポン酢をどばどばしましょう。これで島田スペシャルになりました。


以前おかのさんが実験したところによると、肉が見えなくなるぐらいまでになるには、単品ねぎを3皿注文しないといけないそうですが、僕としては2皿あればおおむね十分だと思っています。この辺はお財布や体と相談しつつ増減したほうがよいでしょう。


島田スペシャルの利点としては、なんといってもネギフリークにはたまらないシャキシャキとしたフルーティな食感の牛めしになることでしょうか。松屋のネギはそれほど辛くないですし、ネギとポン酢で味が締まりますので、牛めし自体も飽きない感じにぺろっと食べることができます。初音ミク好きな方にもお勧めです。

逆に欠点といえば、ネギを2皿以上注文すると店員さんに怪しまれること、ネギが苦手な方には地獄にしか見えないことでしょうか(苦手な方、すみません...orz)。あとネギの食べすぎは時に体にあかんので、ほどほどにしましょう。



いかがでしたでしょうか。是非お試しくださいとは言いづらいですが、こんなのもあります程度に笑っていただければ幸いです。
明日は、これまた新しい食べ方を提案されるのかなという感じのタイトルなjunjiruさんです。

2014年7月15日火曜日

めも:パーティションテーブルを壊した Dynabook AZ (AC100) を復旧する

この前 Dynabook AZ に入っていた Ubuntu を書き換え Arch を入れようとして dd してしまったところ、当然ながら AZ がブートできなくなってしまいました。 (よいこは真似をしない方がよい話ですね...orz)
ということで、予備の AZ を入手し、それを使って AZ のイメージバックアップ・リストアにチャレンジしてみました。

といっても、バックアップ方法はそこらじゅうで紹介されている通りであったりします。
具体的には、AC100 Wikiの該当ページにある 1-9 番を行います。

この中で、特に忘れがちなのが手順9の ac100.cfg の生成なのですが、これは滅茶苦茶になってしまったパーティションテーブルを復元時に nvflash で読み込ませるために必要なものです。忘れずに作っておきましょう。

$ dos2unix partitiontable.txt
$ ./parttable_to_cfg partitiontable.txt > ac100.cfg


バックアップを終えたら、次は壊したAZを復元してみます。パーティションテーブルが壊れているため、先のページの方法では単純に復元できません。以下のコマンドで適当に復元します。

$ ./nvflash --bl ../bootloader/harmony/fastboot.bin  --bct ac100.bct --setbct --configfile ac100.cfg --create --verifypart -1 --go

あとは、partition 5-14 を以下のように感じで書き込みます。なお partition 14は書き込むのにめっちゃ時間がかかります。
$ ./nvflash -r --download 14 part14.img

partiton 2, 4のみ以下のように書き込みます。partition3はPT(Partition Table)ゆえ、今回は書き込まなくてもうまくいきました。ただ、ケースによってはここも壊れているかもしれません、以下の要領(といってもパラメータが不明ですが...orz)で復元したほうがよいかと思います。
$ ./nvflash -r -q --rawdevicewrite 0 1536 part02.img
$ ./nvflash -r -q --rawdevicewrite 1792 1024 part04.img




あとはAZを再起動すると、普通に動くようになりました。めでたし。

そんなわけで、パーティション破壊が怖くなくなったのは大きいですね。opencocon の移植に取り掛かるとしましょうか。

2014年1月13日月曜日

Libretto 50 (とopencocon + RDP)で Windows8 を動かす

先日、店員Mさんの、Libretto 50 で Windows98 が動いているツイートを見て、そういえばウチには最強の Libretto 50 あるなぁ、というのを思い出し、こんな投稿をしてみました。


この写真は半年以上前のOSC大阪クラウドのもので、写真はおかのさんが撮ったのを使わせてもらいました。再放送で面白くもないやろと思ったのですが、どうも知ってたのはオープンソース界隈だけだったようで、先の投稿はそれ以外の皆さんに広がり、瞬く間にスマッシュヒットしてしまいました。

いやはや、知名度ないにも程がありましたね。

本当に Libretto 50 で Windows8 が動くんかいな、という話もいくつか頂いていますので、ここではカラクリの答えと、実際に動かす方法をお伝えしようかと思います。

あの写真は何だったのか

まず、僕は Windows の内部はそれほど詳しくないので、Libretto 50 マシン自体で Windows8 を走らせた訳ではありません。おそらく試されてる方は他に居そうな気がしますが、どちらにしろ非常に厳しいものと思います。

では、それはハリボテかというとそういう訳でもなく、ちゃんと動きます。

というのも、実は Libretto 50 上で、opencocon(おーぷんここん) という名前の Linux ディストリビューションが動いており、別の Windows8 マシンをリモートデスクトップ(RDP)プロトコルにて接続しているのです。

実際の動作はどうなってるかは、次のムービーをご覧ください。
非常に遅い上、タイルアプリは動きませんが、なんとかなっていることが判るかと思います。

 
(こんな感じに動きます。なお、SSH のポートフォワーディングを張ってる関係で、接続先ホスト名は localhost になっています。)

opencocon ってなんだ

ということで、この opencocon という名の、謎の Linux ディストリビューションは何かといいますと、旧型コンピュータをリモートデスクトップ(RDP)やVNC等のクライアント専用として、簡単に使えるようにしよう、という一点のみを目標としています。ですので、デスクトップ環境やカスタマイズ性がほとんど無い代わりに、RDPやVNC等の環境中にスムーズに入ることができるのです。


本来はライブCD形態にて配布しており、メモリ64MB以上を積んだ多くのPC/ATマシン(あと最近はRaspberry Pi)でお使いいただけます。それより古いマシンは動作対象外...とは表では言っているのですが、実際は Extreme Edition (勇者版)ということで tarball を提供しており、知識のある方は初代 Pentium 系のマシンに全手動インストールができるようにしています。

最近の Linux では、初期の Pentium 対応が壊れはじめており、なかなか苦戦していますが、そんな中でも opencocon では Libretto への執念を常に燃やしており、特に Libretto 50/60 はパイロットマシンとして、現在も頻繁に動作チェックを行っています。

ちなみによく聞かれますが、opencocon は私が製作しています。


Libretto 50 で opencocon を動かす

では、Libretto で Windows8 を動かすべく、opencocon を入れてみます。今回、簡単に導入できるように、取り急ぎ試作ディスクイメージを作ってみました(なお、改定のため置き換える可能性があります)。面白そうやなという勇者の皆様に、以下の方法を用意しました。
なお、RasPi の OS を入れ替える程度の Linux 知識が必要になります。また、無保証ですので、そこはご了承ください。

まず以下の環境を用意しましょう。
  • Libretto 50 / 60 (それ以外の機種ではテストできていません)
      メモリ 32MB  (16MBでも動かなくはありませんが、数段遅くなります。)
      ハードディスク 800MB以上、7GB以下 (スワップを多く使うため、CFカードは避けたほうがよいでしょう)
      ※ 旧型コンピュータは壊れていることがあります。異音、異臭等がありましたら直ちに使用を中止してください。
  • PCMCIA LANカード  (ここでは  ELECOM Laneed LD-CDL/T を使います。多くのPCMCIA LANカードが動くと思いますが、一部動かないものがありますのでご注意ください)
  • ネジ回し
  • USB-IDE変換ケーブル (ディスクイメージを流し込むのに使用します)
  • 接続先のWindows8マシン(8.1でも7でも構いませんが、Proである必要があり、またリモートデスクトップを有効にする必要があります。詳しくは、(少し古いですが)こちらの記事が参考になります。)

まずはネジ回しを使いハードディスクを取り出し、USB-IDE変換ケーブルに装着し、USBを搭載した別の Linux マシンに接続します。

(USB-IDE変換ケーブルを使ってインストールします。)

ハードディスクが見えたら、いったん認識されたパーティションをアンマウント(umount)して、 dd コマンドで現在のLibretto環境をバックアップしましょう。opencocon は他のディストリのようなデュアルブートは考慮していません。貴重な Windows は安全に保管しましょう。ここでは Libretto のハードディスクを /dev/sdb とします。

※ デバイス名をよく確認して、関係ないところに書きこまないよう気をつけてください。以下の操作はもちろん無保証です。

# dd if=/dec/sdb of=libretto-50.img

次に、opencocon v8a の Libretto 用イメージ(試作)をダウンロードします。

opencocon-v8a-libretto50-tmp-image.hdd.gz
(200MB  MD5:  22ffe7aa9e0db0c07338a91dbc9d12b6 )

ダウンロードしたイメージを解凍し、dd コマンドでハードディスクに書き込みましょう。

# gzip -d opencocon-v8a-libretto50-tmp-image.hdd.gz
# dd if=opencocon-v8a-libretto50-tmp-image.hdd of=/dev/sdb


これで準備は完了です。Librettoにハードディスクを戻し、元通りにネジを止めます。

あとはPCMCIA LANカードを取り付け、Libretto を起動しましょう。ブートメニューが表示されたら、[Enter] を入力します。しばらくするとメニューが表示されますので、後は 「Connect RDP」 を選択し、コンソールの指示にしたがい、ホスト名・ユーザ名などの情報を入力してください。これだけで接続が開始されます。

なお、DHCPがうまく取得できてないのを直したい等、コンソールに用事のある場合、メニュー画面(コレ自体がコンソール上で動いています)を右クリックし、[New Tab]を選択してください。


(opencocon のメニュー画面です。ほかにも X, VNC, SPICE にも対応しています。)

いかがでしょうか。opencocon の簡単さと、旧型コンピュータへの適応性を体験していただけるかと思います。

なんの意義があるのか

ところで、こんな環境作ってどうするんだ?という話が聞こえてくるかと思いますが、その答えは「客寄せパンダになるから」というのが最も明快でしょう。

最近の旧型コンピュータは性能が高く、そこで opencocon を使いRDP接続の実演をしていても、「無理してWindows8入れたんやな」と思われてしまうので、インパクトがまったくありません。なので、ある意味極端なマシンの動作実績が必要なのです。

その中でも、初期の Libretto は高い知名度を誇っていますし、現在でも熱心な愛好者が居ます。こういうステータスにあるマシンは息が長いのも見逃せません。



ということで、今年も各地のオープンソースカンファレンス(OSC)関西オープンフォーラム(KOF)で、opencocon と共に Windows8 の使える Libretto を実演していこうと思っていますので、よろしければお越しいただき、実際に触っていただければと思います。

さいごに

こういった旧型マシンを活用させるのは容易ではなく、相性や経年劣化、マシンの機嫌との闘いになるケースが多いです。この方法がうまくいくかは機嫌次第ってのもあるかと思いますが、参考になればと思います。

(ちなみに、ご不要なLibretto等の謎マシンがありましたら、お譲りいただければありがたいです。opencocon の開発に活用させて頂きます。)

写真を撮ってくれたおかのさん、Windows8 on Libretto 50に興味を持ってくれた皆様に感謝するとともに、思い出のマシンを思い出にさせない、その熱気を感じていただければ幸いです。ありがとうございました。

2013年12月24日火曜日

Eject でドミノ倒しを作る (Eject Advent Calendar 24日目)

こんにちは、Eject アドベントカレンダー 24日目ということで、menonon さんに続き、島田がお送りします。
先日は堅めな話で固めてみました。参考にならないと思いますが、Before Eject の深い話ということで、これでも気合の入った話を入れてみました。

では、今日は何をしましょうか。

とりあえずクリスマス・イヴですし、After Eject なネタを作ろうかと思いましたが、先日の言及の如く、僕はものづくりに少々慣れないところがあったりします。

実用的な Eject 後の用途といっても、家のレイアウト上電源スイッチは押し辛いですし、エアコンは冬でもあまり付けることはありません。ペットも居ませんし(その代わり、ぬいぐるみだらけな状況ですが)。


では何をすればよいでしょうか。

こういうときは逆に考えてみましょう。実用的な方法がなければ、とことん遊べばいいんじゃないか、と。


この頃のおもちゃ屋事情


そんな訳で、ふと乗り込んだのはトイザらス。

(大人になんかなりたないねん、でお馴染み。)


おもちゃ屋かよオイと言われそうなのですが、最近は15000円もあればAndroidタブレット(子供向け、又はKindle Fire)が入手できたりします。また、スマートフォンもどきの子供むけ端末も盛んに売られています。

(見よ、タブレットとスマートフォンっぽいのが6機種も見えるではないか。)
最近の流行りですと、艦これとかパズドラのパズル(?)とかもありましたね。お好きな方、自分用にいかがでしょうか。トイザらスですと、標準ではラッピング無しなので自分買いにもお勧めです。

そんな中で、親子連れに混じって購入してきたのはジェンガっぽい何かでした。だいたい1500円。

(製品名はウッディ・アンバランスとなってますね。)


さて、こいつはどういうゲームかといいますと、プレイヤーが振ったサイコロと同じ色(赤青緑)のブロックを抜き取り、上に積んでいきます。それだけですが。その名の通り結構アンバランスになるわけです。はい。

(本来はこうやって遊ぶそうです。欠けがあることに注目。)


ジェンガに Eject する



では、ここからが本題ですが、小手調べに、こいつに向けて Eject してみましょう。

(普通にズコーっていきますね。)

勢いよく崩れました。当たり前っちゃ当たり前なのですが...。


よく見ると、ジェンガは同じサイズの木の板でできています。ということで、次は、これを立てて並べてみましょう。

(こんな感じ。)


次に、これを Eject で突いてみましょう。


(失敗作。)

・・・しかし、ドミノって結構難しいですね。最初は机の材質の関係で、倒れることなくすべってしまいました。その後も何回か挑戦したのですが、途中で止まってしまったり、誤って倒してしまったり。いやはや、このゲーム奥が深いですね。(本来こんな用途のアンバランスじゃないのは、とりあえず置いといて・・。)

何度かやりましたが、結局完走せず。すみません、以下のムービーで許してくださいまし・・・orz。

(途中手押しでごめんなさい...)


ということで、ピタゴラのトリガーになり得ると先日書いた After Eject の用途としては、ドミノ倒しはありなんじゃないかなと思う訳です。しかし難しかった。もうアホなくらいに

...オチなくて申し訳ありませんorz。皆様よいお年を。

明日はあっきぃさんによるティロ・フィナーレです。

Linux Mint で Minecraft を動かして穴を掘る (Linux Mint Advent Calendar 24日目)

どうも、島田です。今回は Linux Mint の Advent Calendar ということで、昨日に続いて4回目の登場です。

昔話:OSS活動は休み休み


Mint に関わっていらっしゃる方は若い人が多いなぁと感じるので、話すチャンスがなかなかないと思います、(申し訳ないですが)ここでちょっとだけ僕の昔話をさせてください。

(当時の開発環境は3桁Hzの Celeron マシンと PC-9821 でした。 2001年9月11日撮影。 )


僕自身、10年前は確か FreeBSD や Kondara MNU/Linux を触り出したあたりからどっぷり嵌っていたと思います。そのうち、OSSの翻訳に手を出したり、プロジェクトを立ち上げて数人で活動していた時代がありました。
しかし、学業や他の趣味も気になるし、それだけでは仕事にもならない。OSS のプロジェクト管理もうまくいかず、方向性すら定まらない状態が続いていました。

最後はゴタゴタがあり、1年ほどでプロジェクトを解散し(当時はご迷惑おかけしました...)、翻訳もほぼ足を洗って、もうOSSなんてやるものか!という状態でした。今から思うと思い出したくない時期ともいえます。



・・・ただ、人生というのは不思議なもので、それまで学んできた Linux/BSD やプログラミングの知識は無駄になることはありませんでした。むしろ、ふと参加してみた小江戸らぐで発表し大いにウケて、さらに研究に活用されることになりました。そして、これらの成果が現在の opencocon になり、それをOSCで発表したのが縁でOSS 業界のトップランナー(?)として戻り、今に至ります。

思うに、少し若さがかすれてこないと、実の出るOSS活動はできないのかなぁという気がしています。なので、若いうちは浮気してもいいじゃないか、と思うわけです。

一言で言うと、「休み休みOSS活動しましょう」ということでしょうか。ご参考までに。



(2002年12月23日のスタンプがあるスクリーンショット。Windows 向けの OSS (左上)を書いていた時期でした。他に Jane や OpenWatcom といったOSSが見えます。)




では、今日のネタですが、Mint で Minecraft してみたいと思います。

Minecraft ってなんやねん


Minecraft とは、サンドボックスゲームです。角ばった世界の中で、あんな物やこんな物が自由にできます。クリエティブモードでは割とそれだけなのですが、サバイバルモードでは、それに加え邪魔者が色々と登場します。夜になるとモンスターが暗い場所に沸き、プレイヤーを攻撃したり、建物を壊しに来ます。
さまざまなブロックで造形できるほか、レッドストーン回路によるプログラミング(!)も可能です。Mod も多く、それらでより便利でカオスな遊び方もできます。

(こんな感じのゲームです。)


シェアウェアであり、かつオープンソースでもないのですが、それにも関わらずOSS業界でもプレイヤーが多かったり、Mod を作っている人がいたりします。身近なところで mikutter の人がサーバを立てていたりしますし。Java ベースなので、Windows でも Mac でも動きます。ということは、Linux でも動くはず...ですよね。

Mint で動かす


Minecraft を動かすには、グラフィックのそこそこ強いマシンと Java ランタイムが必要です。 Linux Mint では...どうも JRE がバンドルされている感じですね。なのでそちらの説明はパスして、Minecraft をダウンロードしましょう。Linux/Other 版から、 Minecraft Launcher (Minecraft.jar) をダウンロードします。

検索すると色々オプションを指定できますが、とりあえず Minecraft はこれだけで動きます。
Minecraft.jar のあるディレクトリで端末を開き、以下のように入力しましょう。

$ java -jar ./Minecraft.jar


(最初に起動すると、こんな画面です。)

アカウントを持っていない場合、まず Mojang のアカウントを作り、そのユーザ名とパスワードを指定しましょう。購入前に、確かちょっとだけ試用できたと思います。既に支払い済みであれば、そのアカウント名を入れましょう。

ログインすると、Launcher が起動します。「Play」を押すと、最初の一回は Minecraft の本体がダウンロードされます。そして、Minecraft が起動します。

(2回目以降のログイン画面です。)


いったん「Options」→「Language」を選択し、「日本語」を選びましょう。



あとは、他プラットフォームの Minecraft と同じですので、普通に生活しましょう。はじめての方はチューリトアルが参考になります。



えーと、これだけでオチはないのかオチは、とか言われそうですね。ありません。もうええやろ・・。

というわけで、私の方からはこのぐらいでお開きと致しましょう(というかすみませんorz)。ありがとうございました。明日(最終日ですね)は、ほたさんです。

2013年12月23日月曜日

Linux Mint で xrdp を試してみた (Linux Mint Advent Calendar 23日目)

どうも、島田です。今回は Linux Mint の Advent Calendar ということで、ほたさんに続いて3回目の登場です。皆様hackしていらっしゃいますでしょうか。

Advent Calender ってのもやっているとなかなか大変なもので、毎日続けるのは大変なことです。それだけならまだいいのですが、サボってる Advent 晒しが登場したりとか(仕事でもないのに毎日続かなくてもいいのでは?と思います...)、それの存在はおかしいと話してるところにあざ笑う奴が登場したりとか・・・。久々にこの業界のどす黒い部分を見た気がします。

おそらく、やり方に無理がある現状、来年はこの流行は続かないような気がします。

というのは置いといて、今日のネタは xrdp を試してみました、という1点です。なんとお手軽な。

xrdp って何や

RDPといえば、Windows-Windowsを接続するリモートデスクトップのプロトコルです。なので、一見プロプライエタリに見えるのですが、実はプロトコルに関する文章は公開されており、サードパーティのクライアント/サーバもあったりします。

その中で、 xrdp は Linux/BSD 上で RDP サーバをするソフトウェアということで、よく知られています。今回はさくっとこれを Mint 上で試してみましょう。


Mint で試してみよう

まず、サーバとなる Mint マシンにインストールしましょう。これ一発でできます。

$ sudo apt-get install xrdp vnc4server

これだけでRDPサーバとなり、接続することが可能になります。

ここで、何でVNCサーバも入れるんだ?というツッコミが来ると思いますが、どうも現行の xrdp は一部の処理を VNC サーバに任せてる部分がある感じです。(それが Desktop Session なのか VNC サーバ自体なのかは不明ですが...)

とりあえず、適当な RDP クライアントから xrdp へ接続してみましょう。Windows の「リモートデスクトップ接続」や、FreeRDP 等が使えると思います。

RDPクライアント側でサーバへ接続できたら、ユーザ名とパスワードを入力します。

(ログイン画面。0.6.0 の時点では NLA (ネットワークレベル認証)ではないようです。)

ログインすると、Cinnamon は正常に動きません。Fallback になってしまうようですね。
Cinnamon のベースとなっている GNOME っぽい外見の画面が表示されます。


(Cinnammon...というよりは GNOME ですね。これ。)


MATE は普通に起動しました。たぶん Mint で使う上ではこちらの方がよいかと思います。


(MATE での動作画面。VNCっぽい遅さが少しあるぐらいでしょうか。)

あとは動いてしまえば、Firewall 開けるなどして外部からアクセスしてもよし、内部のみで他の端末や opencocon なんかでアクセスしてもよし、といったところでしょうか。

課題

今のところ、 xrdp だけでは State-saving なセッションにならなかったり、日本語のキーコードの扱いがうまくいかなかったり等不具合も見られるのですが、有志によってあれこれ解析されている程度で、まだ簡単に薦められるような回答はないようです。しかしながら、日本のユーザ会らしき謎のページもできましたし、これから各 Linux/BSD 勢力の意見を集約して、より使いやすい実装になっていくものと思われます。

最近1年ぶりに xrdp 0.6.1 が出てるのでそちらもパッケージになったら試してみたいですね。

参考:日本xrdpユーザ会
http://xrdp.vmeta.jp/
http://www.slideshare.net/iwaokoichiro/xrdp-jp-osc2013fukuoka

ということで、明日は Mint で遊んでみよう、ということで、引き続き島田がお送りします。

2013年12月22日日曜日

opencocon livecdがEjectするまでの長い長い道のり (Eject Advent Calendar 22日目)

(☝ ՞ਊ ՞)☝ウイーン

というわけで、こんにちは、Eject アドベントカレンダー 22日目ということで、昨日の machshev さんに続き、島田がお送りします。


OSC界隈でも活発ですし、謎の世界進出も進みつつあるEjectソリューションなのですが、僕から見て以下の2派があるなぁという感じです。以下にちょっと説明します。

(Before Eject と After Eject)

Before Eject

OS、ソフトウェア、ミドルウェアで、CD-ROMドライブのトレイを開けるまでのフローを作る分野であると言えます。多くの場合は最終的にLinuxのejectコマンドを実行すると思いますが、それまでにラッパーを通してアプリにしたり、プロトコルにしたりといった作例がこれまであります。

一方、これらを自由に扱えるのはプログラマやLinux/BSDユーザ中心で、普通のユーザにはもしかして近寄りがたい部分が未だあるのかもしれません。

After Eject

では、After Eject と言えば、CDのトレイが開いた運動を、何かしらのエネルギーに変換する分野と言えるでしょう。ピタゴラ装置のトリガーが動いたあとの挙動、と言えば分かるでしょうか。

なので、恐らくオープンソースというよりは、Make等、ものづくりの分野に携わる方々が得意とするところじゃないかなと思います。僕の知る人とかは、アイデアはあるんだけど...という話を聞くのですが、この原因がまさに「アイデアはあるけど、手を動かす術が分からない」状態であるわけです。



このように、一言で Eject ソリューションといっても、少なくとも2つの分野があり、扱う方によって、得意不得意はどうしてもあるのかなという印象があります。

もちろん、各論も大切であり、それぞれ片方だけで論じても面白いし必要なのですが、両輪が相互にまわってこそ、楽しいEjectソリューションになると考えています。
今後は、ものづくりの分野でもEjectに興味を持っていく人を増やすべく、僕も模索していければいいかなぁと思ってる次第です。(Make は大規模すぎるので、手頃なところでニコ技等のコミュニティでしょうか...?)


ということで、しょっぱな硬い話で失礼しました。僕の方からは、2日に渡って適当なネタをお送りできればと思います。今日は Before Eject な話、23日は After Eject な話となります。

Before Ejectネタ : Linux Live CDのEject事情

さて、僕は opencocon という名前の Live CD ディストリビューションを作っています。CD をほとんど必須とするので、Eject とは縁があるような気がします。しかし、Eject するまでは結構長い道のりが必要となってしまいました。これまでの記録から、Eject できるようになるまでの試行錯誤をお送りします。

事情その1 : initramfs vs initrd

まず僕が取り組んだのは、Live CD を作るにあたってある意味当たり前の機能、すなわち、「Live CD の終了後に CD ドライブを Eject する」ことでした。しかし、最初に作った Live CD (opencocon v1)ではそれができませんでした。

この点、実はここで語るよりも、Plamo Linux で有名な、こじまさんが書いている記事が分かりやすいですし、opencocon でもまったく同じ結果になりました。


"とりあえず動くものができたので,P-Plamo 0.1としてメーリングリストで紹介したところ,「終了時にDVDをejectして欲しい」というリクエストがありました。〜当初は,終了処理の最後にでもejectコマンドを実行すればいいだろう,と簡単に考えていましたが,調べ始めたところ,かなり深刻な問題に気づきました。" --- ソースコード・リテラシーのススメ   第23回 ソースコード・リテラシー【実践編 2】


一言で何が嵌ったかというと、「initramfs でなく、initrd を使わないと Eject できない」ということでしょうか。

詳しい説明はばっさり割愛しますが、恐らく組み込みLinuxをご存知の方であれば、何を今更 initrd 使うねんと言いそうですし、Kernel のドキュメントを見ても、initrd はやり方が古いとか書かれてしまっています。

しかし、initrd は Live CD に必要な機能を入れるために必要だったのです。そう、すべては Eject のためだけなのです。

というわけで、その後 initrd に切り替え、コードの多くを書き換えた末、 opencocon v4 からは無事、終了後に Eject できるようになりました。その詳細は非常にどろどろとしている上、1年以上前の話なのでカットしますが、失敗CDの山を積んでしまったことだけは確かです...。


(opencocon 終了後のEject画面。ちなみに、お決まりのパターンは「kon-kon!」です)

事情その2 : たびたび壊れる対応

しかし、一旦は綺麗にできた感じがする opencocon の Eject 機能もたびたび壊れました。主に Kernel や基本的なコンポーネント (uClibc や busybox)のバージョンを上げた際に決まって何かがエンバグするのですが、Eject も度々できなくなってしまいました。

直近ですと opencocon v8 なのですが、気がついたら Eject できなくなっていたままリリースしてしまい(申し訳ありません...)、デバッグモードで何回 eject コマンドを手で叩いてもうまく動きませんでした。
opencocon は通常、容量節約のため busybox コマンドに同梱された eject を使用します。多分それの相性が悪くなったんだろう、ということで急遽本物の eject コマンドをバンドルするようにしました。パッケージ管理システム(opkg)の関係で、本物の eject は 「eject.eject」という、何とももにょもにょする感じのコマンド名になってしまいましたが、これを実行することでなんとか乗りきりました。それが現時点で最新リリースの opencocon v8a です。


(毎度おなじみ opencocon のメニュー画面)

事情その3 : Copy to RAM で Ejectしたい


Live CD はなぜ簡単に Eject できないのでしょうか? 答えは簡単で、CDにシステムの全てが収録されているからです。

もう少し詳しく言いますと、Live CD 内に squashfs と呼ばれるファイルシステムでシステム全体を固められたファイル(squashfs ファイル)を、CD 上から読み込んでいるためです。そのため、強制的に Eject すると、システム全体が止まってしまいます。CDドライブが2個以上ある時はその限りではないのですが、1個だけでは、想像の通り Eject することはできません。

しかし、抜け道はあります。squashfs ファイルをどこか別の場所にコピーし、CDから読み込むべきファイルを無くせばよいのです。
いくつかのディストリビューションにはそんな機能が実装されており、例えば、SlaxPorteus には Copy to RAM という機能があります。


 

(Slax の起動画面。Copy to RAM の起動項目がある。ついでに F1 で詳細な説明がある)

これを選択すると、squashfs ファイルをRAMディスクにまるごとコピーし、デスクトップ環境の起動後は CD を Eject してもよい状態となります。Slax や Porteus はファイルシステム全体のサイズが数百MB程度ですので、現在のコンピュータであれば、メモリをそれほど圧迫することはないでしょう。なので、あえて Eject するためのLive CDディストリビューションには、このような要件にすることは必須に近いと言えます。

では、opencocon でも実装しよう!ということで...と、その先は今年のKOF(関西オープンフォーラム)で発表したネタから抜粋するこんな感じです(PDFですが、事の経過はこちらをご覧ください。Webビューワなのはこちらからどうぞ)。

(KOFで発表したスライドから抜粋。しかし中はほぼEject話だったり)

一言で何がいけなかったかというと、「Linux の cp コマンドは非同期なので、sync してファイル処理を終わらせないと Eject できない」ということでした。なんと間抜けな...orz。

いやはや。Before Eject もここまで奥深いものがあるのか、となんとなく思ったこの頃です。

あれこれありましたが、その甲斐あって、 opencocon v8a では Copy-to-RAM として実装しました。メモリが256MB以上あれば、是非こちらで動かしてみてください。起動途中に Eject するので驚くと思いますw。

(opencocon v8a の起動画面。ここで Copy-to-RAM を選択しましょう。)

今後は

本当は opencocon で意図的にリモート Eject する仕組みを作ろうかなと思い、下準備をしているところです。内部的には Python をバンドルし始めたり等しているのですが、グルーとなる部分の構想があまり固まっていないのもまた事実ですし、本来クライアント専用OSと謳っている opencocon にサーバ的機能を加えてもよいのか?といった葛藤などがあったりします。この点はまた追っていくとしましょう。

長文失礼しました。明日は menonon さんです(☝ ՞ਊ ՞)☝ウイーン