Skip navigation

Category Archives: LinkStation

しばらくの間、Debianをぶち込んだLinkStationは順調に動いてた。さすがに当初の目標のIMAP serverを立てるところまでは行かなかったけど、print serverとしてもfile serverとしても問題なく動いていた。

過去形なのは、最近、全然print serverとして動いてくれないからだったりする。この家に引越してきた際にも発生したんだけど、一回LinkStationからプリンタを抜いてしまったり、プリンタの電源を落としてしまうと、CUPSが全くプリンタを認識してくれなくなってしまう。

過去二回ほどは、なんかの拍子に認識してくれて、そのまま連続稼働していたので問題なかったけど、如何せん、なんで動くようになったかが分からないまま使い続けているので、問題が再発した時に全く手の打ちようが無かったりする。

今回も、タコ足の電源タップを変えるので、電源を抜いてしまったんだけど、案の定、繋ぎ直した後にCUPSがプリンタを認識してくれなくなってしまった。

で、そのまま今に至る。

lsusbをするとちゃんと、

Bus 003 Device 001: ID 0000:0000
Bus 003 Device 005: ID 04f9:000d Brother Industries, Ltd HL-1440 Laser Printer
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000

といった感じで、OS自体はUSBプリンタの存在を認識しているにも関わらず、CUPSをちゃんと設定しても、
Unable to open USB device "usb:/dev/usblp0": No such device
とか言われてしまって、一向にプリントアウト出来ない。

しかも、基本的に、Debianをいじる時は、100%分かってやっている訳じゃなくて、「まぁ、動けばいいか」ぐらいの気持ちでやってるので、どこをどうすればいいか分からなかったりする。

で、取りあえず、いまinstallされてるヤツを全部upgradeしたら問題が解決するかもしれないと思って、やってみたら、更に症状が悪化してしまった…

以前のCUPSのバージョンでは、ちゃんと プリンタのデバイスを選ぶ際にUSB printer #1とかっていう選択肢があったけど、upgrade後にはその選択肢すら消えてしまった… 自分で/etc/cups/printers.confを勝手に書き換えて、
DeviceURI usb:/dev/usblp0
を追加してみたものの、CUPSがUSBプリンタを認識してないから、選択肢に出てこない訳で、それを無理やり変えてみても、全然駄目っぽい。

まだ、upgradeする前の状況ならば、「電源を落とす前は動いていた」って言えるけど、無闇にupgradeしてしまったおかげで、更に状況を悪化させてしまった…なんか、一番最初にパソコンを使い始めて四苦八苦してた頃みたい。あの頃は、時間が豊富にあったから、「調子悪くなったら、インストールし直し」とか出来たけど、今はそんな余裕無いし。

直す方法はどうでもいいから、とりあえずまたなんかの拍子に動いてくれたらいいんだけど。

あー、また訳分からない事を書いてしまった。次回こそは普通のヤツを…

あまりに時間が空いてしまうと、何をやっていたのか分からなくなってしまうので、とりあえず時間を見つけてチョコチョコと作業することにする。

その前に、LinkStation Hackの情報山盛りなLinkStation Wikiをホストしているサーバが変わることによってURLの方も変更になるらしい。www.linkstationwiki.orgは07/28/06まででそれ以降は消滅してしまう。新しいサイトはwww.linkstationwiki.netになる。

さて、前回はLinkStationをFile server + Print server化するところまでやった。やっと、買った時の機能まで戻ったという感じ。

ところが、数ページのファイルを印刷するときは何の問題もなくプリントされるけれども、論文のような30ページ強のファイルを印刷すると決まって

Remote host did not accept data file (32)

と言われてしまい印刷することが出来ないコトが判明した。

どうやら、いろいろとApplicationをinstallしたせいか、/dev/hda1にspool領域が確保できていない様子。という訳で、LinkStationWikiのFAQ→Generalに書いてある方法にしたがって、
/home
/usr
/var
の3つのdirectoryを/dev/hda3に移してsymbolic linkを/dev/hda1に張ることにする。

とりあえず、問題なく終了した模様。

LinkStationをPrint Serverとして使うためには、まず本体のUSBコネクタを認識させなければいけない(面倒くさい)。という訳で以下のモノをインストール。
apt-get -install usbutils hotplug

続いてプリンタドライバ関連のモノをインストール。
apt-get install cupsys cupsys-bsd cupsys-client cupsys-driver-gimpprint cupsys-driver-gimpprint-data cupsys-pt cups-pdf

apt-get install gs-common gs-esp gs-gpl gsfonts xpdf

USBポートを認識させるおまじない?
mknod /dev/usblp0 c 180 0
(後で分かったことだけれども、これはLinkStation前面のUSBポートを認識させていたっぽい。ボクの場合は、後ろのポートにUSBケーブルを繋いでいたので、mknod /dev/usblp1 c 180 0とする必要があったみたい)

そして、CUPS関連の設定をWebベースのインターフェイスで行えるようにするために、/etc/cups/cupsd.confを編集する。cupsd.confの最後の方にある

<Location />
Order Deny,Allow
Deny From All
Allow From 127.0.0.1
</Location>


Allow From 192.168.1.*
(もしくはAllow From @LOCALでもいいかも)
を追加。

更に

<Location /admin>
</Location>

にも
Allow From 192.168.1.*
を追加。

これで、http://LinkStation’sIP:631/printersにアクセスする。
rootでログインして、Add Printer。
追加するプリンタに名前を付ける。(LocatinとかDescriptionとかは空欄でも可)
DeviceでUSB Printer #1を選択。

ところが、gimpprintがサポートしていないため、使いたいプリンタ(Brother HL-1440)のドライバが表示されない。

という訳で、
apt-get install cupsomatic-ppd
でプリンタドライバの追加。

本来ならば、linuxprinting.orgから必要なモノだけをダウンロードすれば良かったんだろうけど、とりあえず、いまいち分からないコトもあるので、お徳用パックを入れ込んでみる。

http://LinkStation’sIP:631/printersにアクセスし直して、これまでの手順を繰り返すと、今度はきちんと表示された。同じBrother HL-1440のドライバとして3つものモノがリストアップされている。
Brother HL-1440 Foomatic/hl1250 (recommended) (en)
Brother HL-1440 Foomatic/hpijs (en)
Brother HL-1440 Foomatic/ljet4 (en)

とりあえずrecommendされているモノを使うことにする。
Printer BrotherHL1440 has been added successfully.
と表示されてプリンタが追加される。

Printersに戻ってPrint Test Pageをすると、きちんとテストページが印刷された。

ところが、macやwinのプリンタ設定を完了させる前に、一回USBケーブルを抜いて、PowerBookに差してプリントアウトして、USBケーブルを元に戻すと、Test pageすら印刷されなくなってしまった。

lsusbしてみると
Bus 003 Device 002: ID 04f9:000d Brother Industries, Ltd HL-1440 Laser Printer
となってみたので、
mknod /dev/usblp1 c 180 0
とやってAdd PrinterのDeviceのところでUSB #2を選んでみると、無事問題なくプリンタが認識されてプリント出来るようになった。

Windowsからこの共有プリンタを使うには
プリンターセットアップwizardでnetwork printerを選び、httpでの接続を選んで

http://LinkStation’sIP:631/printers/Printer_Name

とする。(Printer_Nameは自分でつけたプリンタの名前を入れる)そして、プリンタドライバを選んで終了。

MacではPrinter Setup UtilityでIP Printerを選び、
Protocol = LPD
Address = LinkStationのIPアドレス(http://もport #もいらない)
として、名前を付けてプリンタドライバを選ぶ。

OS Xはnativeでpdfをサポートしているから問題ないけれども、Windowsでpdfをつくるために、LinkStationをPDF writerとして使いたい。そのためにCUPSのweb interface(http://LinkStation’sIP:631/)でVirtual Printer (PDF printer)を追加する。Windwos側で新しく作ったPDF printerを登録してpdfに変換したいfileを印刷すると、LinkStationの/home/username/cups-pdfにpdf fileが作成される。

とりあえず、何とかちゃんと動くようになったsmb.confをココにuploadしておく。

LinkStationWikiにあるGeneralFirmwareFlashを読んだ上で、FreeLink firmwareをinstallする。

PCとLinkStationを直に繋ぐ。HD-HLAN120の場合、クロスケーブルに変換するスイッチを入れておく。その際、PC側のIPアドレスを手で設定する必要がある。

firmwareをupdateし終わったと思ったら、最後の最後に、renewal failedみたいなメッセージが出てかなり焦ったけど、PCから外してネットワークに戻したら、ちゃんとルーターに認識されていたので、壊れた訳では無かったらしい。

というわけで、telnetでLinkStationに接続してみる。すると、あっけなくアクセスできた。hackとかそういうレベルじゃなくて、もうここまで来ると、ソフトのインストールとなんら変わりがない。これで、やっとLinkStationに「穴」が開いたので、後はGeneralFreeLinkTutorialにしたがってさまざまな設定をして必要なapplicationを入れる。

ところが、Sambaの設定でつまずいてしまう。Sambaが動かせないと、LinkStationがただのDisplayなしのLinuxマシンになってしまう…

Sambaの設定は、/etc/samba/smb.confを手で書いてもいいし、Webminを使って設定してもいい。普通はSWATを使って設定するコトが多いみたいだけど、TurorialではWebminでの設定を強く勧めていたので、何も疑うことなしにWebminを使ってみる。

最初の問題は、mac側からもwin側からもLinkStationのvolumeは見えるのに、IDとpasswordを入れても認証ではじかれてしまうというモノだった。ここまでサクサク来ていただけに、ショック。大体、LinuxのコトもSambaのコトもよく分かっていないのに、他人の書いたマニュアルをただなぞっていただけなので、何が悪いかすらも分からない。

Webminなんかを使わずに、webでいろいろと情報を漁って、smb.confを手で書いて、Sambaのpasswordとかの設定も自分でやったほうが、いろいろと理解できるし、問題があっても発見しやすかったと反省。

やっとのことで、passwordを設定しているにもかかわらず、passwordを空欄にしてアクセスするとLinkStation上のshare volumeをmount出来ることに気づく。

それにしても、むちゃむちゃ気持ち悪い。確かに、password無しでアクセスできるのは、自宅のLAN内で自分だけで使っていく分にはなんの問題もないし、逆に都合がいいと思う。だけど、問題なのは、そういう設定にしてないはずなのにも関わらず、password抜きでアクセスできるし、更にpassword抜きじゃないとアクセスできないコト。

結局、この問題が片付くまでにすごく時間を費やしてしまった。Sambaをクリーンインストールしようとしたり(これって、ホント初心者が困ったときに絶対にやることだと思うけど…なんかきちんと手順を踏まなかったんじゃないかって思って、クリーンインストール⇒マニュアルに忠実に従った作業、みたいな)、自分でweb上の情報を漁って一からsmb.confを書いてみようとしたり。結局のところ、これはどれも問題を解決しなかった。Debianのコトが何となく分かってきたり、Sambaのコトがちょっとずつ分かるようになってきたっていう特典はあったものの…

やっと分かったのは、結局のところ、「分かりやす過ぎる」Webminの問題だっていう結論に落ち着いた。
上手く説明できないけど、interfaceが丁寧に書かれているので、実際に出来ない(or 出来ていない)コトも出来ていると錯覚していたコトが問題だった。

具体的には、WebminでのSambaの設定では、Unix userをSamba useに変換するコトが出来る (Debian上でのuser nameとSambaを使用するときのuser nameは必ずしも同じでなくてもいい)。ボタンをクリックするだけで、自動的に既存のUnix userをSamba userとして登録してくれるわけだけれども、Samba userのパスワードを管理する画面でUse Current Passwordという項目があった。

ボクはUnix userをSamba userに変換したし、Use Current Passwordというオプションもチェックしてあったので、てっきりUnix userのpasswordもSamba user側に引き継がれたモノと思っていた。しかし、現実は違っていて、どうやらSamba userにはpasswordが設定されていない状態になっていたみたいだ。

これだけならば、まだ救いがあったと思うし、もうちょっと早く問題に気づけたかもしれない。けれども、WebminではSambaの設定項目にnull(空白の?) passwordを許可しないっていうオプションがあって、それにチェックがついていたので、passwordを入れないでアクセスするコトすら考えてもみなかった。(実際にpassword抜きでアクセスすることが出来るのに気づいたのは、むかついて認証画面でパスワードも入れずにキーボードを連発していて偶然に見つけた…)

ホントに、このLinkStationWikiGenaral ArticlesDebian Tutorialsに蓄積されている情報はすごいと思うし、そこまで上手くorganizeしている彼らの努力はすごいと思うけど、「何だかよく分からないけど出来ちゃった」的なコトが起こるので、
Linuxの世界にこれから足を踏み入れようとする場合、あんまり良くないかもしれない。

その点、日本のHack Kitの方が難易度が高くて、敷居も高いけど、そっちの方が自分でいろいろ勉強するかもしれない。(でも、アメリカ流の方が断然やり方的にスマートな気がする。Windowsマシンが必要っていうのがuniversalじゃないっていう意味でスマートさに欠けると思うけど…)

という訳で、やっとLinkStationをDebian化して、Samba serverを立ち上げて他のマシンとLinkStationのvolumeを共有できるところまでこぎ着けた。

とりあえず、macからの日本語のファイルやら32文字以上のfile nameを扱えるようにNetatalkを入れる必要が
ありそうだけど、とりあえず、それは後回し。print serverとして使えないと、元々のLinkStationの機能するら果たせていないことになるし、すごく不便なので、とりあえずここら辺を読んでprinterを接続できるようにしないといけない。

それにしても、ホント、Sambaの設定ではつまずいたけど、LinkStationのDebian化に関しては、本当にDocumentがよく整っていたし、ツール(=FreeLink firmware)もちゃんと出来ているで、驚いたし、アメリカのLinkStation hack communityに感謝したい。

これからの予定

  • print server化
  • Netatalkの導入 ← ここら辺で定期的なバックアップの仕組みが作れたら最高かも
  • fetchmailの導入とIMAP server

昨日書いたように、LinkStationをいじってIMAPサーバを立てたり色々なことを出来るようにするには、基本的には何らかのカタチで他のマシンからremoteでコントロール出来るようにする必要がある。アメリカで一般的に行なわれているのは、Buffaloから提供されているfirmware updaterを改造してfirmwareを書き換えることで外側からのaccessを可能にする。

Buffaloのfirmware updaterは元々Windows上でしか動かないので、基本的には、このアメリカ流のやり方はWindowsが無いと実行出来ない。けれども、The LinkStationWikiGeneral Firmware Flashには、

The firmware updater only runs under Windows. Users of other operating systems must manually flash the LinkStation.

って書いてある。このGeneral Manual Flashを読んでみると、firmware updaterから必要なfileを取り出して、sshもしくはtelnet経由でそれを上書きするらしい。

良く分からないのは、LinkStationに穴を開けて、ssh/telnetを使えるようにする為にfirmware updaterを使うはずなのに、どうやってそれをやる前にsshのsessionを確保するか、というコト。General Manual Flashには他ほど詳しく記述されている訳ではないので良く分からないけど、ひょっとしたら、日本流のやり方でHDを一回他のマシンでmountして、telnetdだけでも取りあえず入れておくのかもしれない。

Macだけを使ってやることが目的ではなく(もちろん、出来るに越したことは無いけど)、最終的にIMAPサーバを立てることが目的なので、今回はWindows上でfirmware updaterを動かして作業することにする。

The LinkStationWikiでは、二種類のfirmware updaterが提供されている。OpenLink firmwareは取りあえずLinkStationに穴を開けてくれるらしい。取りあえず、

utelnetd
telnet server
dropbear
SSH (version 2 only) server and client
busybox
multi-call binary (一つの バイナリで複数の機能を提供する)
Unixの基本コマンド群が一つの実行ファイルに詰め込まれている
その他のバイナリーとライブラリ

をインストールするっぽい。

FreeLink firmwareはLinkStationを制御しているLinuxをDebianで置き換えてしまうらしい。OpenLinkで穴を開けて、好きなLinuxのdistributionを入れるのもアリだけど(サムライhackではVineを入れることが多いっぽい)、FreeLinkを使えば、OpenLinkもいらないので、取りあえず今回はこれでいこうと思う。

複数のコンピュータを使い出すようになると、受信したり送信したメールがあちこちのマシンに散乱して不便になってしまいがちだ。例えば、一つのマシンから送信したモノを他のマシンから参考できないとか、どのマシンで受信したか分からなくなってしまうとか。

これまでは、一番原始的な解決方法として、PowerBook G4 12″をメインマシンにして、emailをチェックする時はPB G4でやっていた。でも、こんなに色々便利になってきたのに、メインマシンに捕らわれているのはあんまりうれしくない。どのコンピュータを使っていても同じmail boxやaddress bookを共有したいし、どのコンピュータでも読んだメールは既読になっていて欲しいし、同じ送信メールを共有したい。

と言う訳で、この状況を打開する為の計画を考えてみた。結論的には、(自分の持っているskillを考えると)かなり遠く長い道のりになりそうな予感。

取りあえず、いくつかの条件を挙げてみたい。

  • どこにいても、どのマシンを使っても同じemail環境
  • emailに関する全てのresourceを共有
  • web mailは使わない
  • コストをかけない(っていうか出来るだけタダで)
  • できる限り容量の制限を無くす

一番手っ取り早いのは、複数のアカウントに届くメールを、gmailとかに転送する設定にしておいて、POPでつなげたり、web mailを使ったりするコトだと思う。けど、基本的にweb mailは嫌いだからemail clientを使いたい。かと言って、全てのコンピュータからPOP接続すると、送信済みのメールとかが共有されないし、address bookとかも共有されない。

.macを使うっていうのはかなり理想に近いような気もするけど、
sync自体ではaddress bookやrule、smart mailbox等の同期はサポートしているけど、別にメールボックスを共有してる訳じゃない。ココで紹介されているみたいにiDisk上に~/Library/Mailを置いて、そこにシンボリックリンクを張るのはかなりスマートだと思うけど、いずれにせよ、.macに年に$99.95っていうのはちょっと高すぎる。

基本的に、全てのアクセスするマシンでemailの環境を、email clientを使いつつ、syncさせるためには、IMAPを使うしかないはず。(c.f. IMAPを使っていつでもどこでもメールの読み書き:Hotwired)

gmailがIMAP対応してくれていたら、こんなことにはならないけど、当面IMAP対応はしてくれないみたい。同様に、UCSDのアカウントもIMAPが上手くいかないし、日本のISPのアカウントはIMAP対応していない(web mailを提供すれば十分だと考えているっぽい)。

と言う訳で、色々と探してみたら、fetchmailで複数のアドレスからメールを取って来つつ、自前でIMAPサーバを立てるという結論に落ち着いた。(関連情報はfetchmailとかIMAPでググると出てくるはず)

じゃあ、どうやったらコレが実現するのか?

古いマシンでもあれば、Linuxを入れて自宅サーバ構築、なんてのもアリかもしれない。例えば、

IBM PC110(ウルトラマンPC)で自宅サーバを構築

とかみたいに。

でも、あいにく、手持ちのマシンは全て用途があるし、24時間稼働させておくコトも出来ない(っていうか、したくない)。レンタルサーバ借りてっていうのもコストがかかるのでダメ。

あー、そういえば、いいモノがあった。

一年程前にBuffaloのLinkStationを買った。これは、コストパフォーマンスの良いNASで、ファイルサーバとして使えるだけではなく、プリントサーバとしても使えるのでかなり重宝していた。LinkStationはタダ単にNetworkにつなげられるHDというわけではなく、ちゃんとCPUも載っているし、Linuxで制御されている(はず)。

だから、LinkStation(や玄箱)は日本では一部の人達にとってかなり遊び甲斐のあるオモチャとして使われているっぽい。hackして他のサーバ用途にも使われているらしい。本とかも出てるし、玄箱のhack kitまで存在する。

LinkStation/玄箱 をハックしよう←このsiteもhackしたLinkStationで動いてるらしい!

と言う訳で、LinkStationをhackして(他人がやったことをfollowするだけなので、hackというのはおこがましいけど)IMAPサーバを立てるコトに挑戦。

基本的に、日本におけるサムライhackの第一歩は、LinkStationに内蔵されているHDを一旦取り出してLinuxでmountして、LinkStationへのtelnet接続を可能にする、っていうのが主流っぽい。これはCDでbootできるKnoppixを使ってもいけるらしい。MacのHDを換装したりしたことはあるけど、HDの増設はやったことないし、それをWinでやれって言われると、ちょっと躊躇する。手元にあるPCは仕事用だからいじりたくない。

で、さらに調べてみると、Yankee-hackの仕方はどうやら違うっぽい。基本的なアイディア(=LinkStationにtelnet接続出来るようにする)っていうのは共通だと思うけど、それをHDを一旦取り外してLinuxでmountしてからやる訳ではなく、LinkStationのfirmwareを書き換えるコトによって実行するっぽい。んー、なんかこれなら出来そうかも。たぶん、firmwareの書き換えをするために、PCを使う必要がありそうだけど、それぐらいなら問題なさそう。出来ればmacで全部やりたいところだけど…

The LinkStationWiki: LinkStation hackのアメリカ総本山

と言う訳で、次回に続く(かな?)

Follow

Get every new post delivered to your Inbox.