home / software / Here

Samba on Pogoplug

accs #Counter


おしながき(注意:書きかけなので間違い多数)

はじめに

Pogoplugというパーソナルクラウドデバイスがあります。販売開始時より遅い、というネガティブな意見がいろいろ書き込みがありました。
自分でも購入して使っていたのですが、やはり遅い。最近はCloudEngines社の行く末も怪しいので、いろいろ調べてみるとPogoplugにLinuxを入れているページが見つかりました。主な目的としてはファイルサーバにする(もともとファイルサーバじゃないか、という声もありますが)ことで、sambaを何らかの形で導入しています。
ネットの特に日本語の情報は非常に助かるのですが、とくに古いものもあり、結構悩んだので最近の情報を含めてここに記載したいと思います。

種類

Pogoplugに容易にインストールできるLinuxのディストリビューションはいろいろあるようです。もともとPogoplugはオリジナルのlinuxで動いています。これにsambaなどの機能を追加するものがopenpogoですが、開発は現在ストップしているようです。
利点としてはオリジナルの機能を残したままsambaを使えることでしょうか。
他に、ArchlinuxとDebianにpogoplug対応のものがあるようです。どちらかというとPogoplugにとってはArchlinuxの方がメジャーに思えますが、Debianの枯れた環境もとくにファイルサーバには魅力的です。私は最初はArchlinux ARMをインストールしていたのですが、なぜかフリーズしていることがよくあり、Debianに入れ替えました。

また、ARMのブートローダーとしてU-bootというのがありますが、ディストロとは別にこのU-bootにかなり種類があり、「このU-bootではこれが動く」っていうのが異なり、混乱のもとになります。U-bootはPogo上のFlashに書き込んでしまうので、失敗すると文鎮化する元にもなるわけです。まとめると、

Archlinux ARMのインストール

手持ちには黒いPogoplug(POGO-P25)というのとPogoplug Mobileというのがありました。P25の方が日本で最初に売り出したモデルなので持っている人も多いと思うのですが、Archlinux ARMのサポートからはすでに外れています。Community baseで開発が続いているようなのですが、英文の掲示板の内容を追いかけていかないとインストールは困難です。自分も最初はこれで試したのですが、フラッシュメモリに瑕疵があり、途中で文鎮化してしまいました。他の人の成功例をみたいところですが、P25でのlinux運用は初心者にはやや難しく、samba運用だけならOpenPogoを使用した方が安全でしょう。
もう一台のPogoplug Mobileはオークションでは捨て値で落札可能だと思います。こちらの方が非力ですが、簡単に導入できるのでおすすめです。

インストールに際しては本家のここのInstallationの項目を参考にするのがいいと思います。本家では、pogoplugで全てをまかなおうとしているので複雑ですが、自分のやったのは以下の通り。

  1. USBメモリを用意。自分は4GBのを購入。
  2. 手元のlinux端末でext3の領域を3GB, linux swapの領域を1GB確保
  3. tarはlinuxのでいいので、本家のごとくwgetでwget http://archlinuxarm.org/os/ArchLinuxARM-kirkwood-latest.tar.gzとし本体をダウンロード(200MBくらいある)
  4. USBメモリを適当にマウントし、tar zxvfで解凍する。ここまでが本家でいうところの9番目あたり。
  5. Pogoplugにsshログインし、killall hbwd
  6. U-bootインストーラーをダウンロードし実行(本家の11番)
  7. USBメモリをPogoplugにさして、/sbin/reboot

これであっけなく動きます。USBポートが1個しかないので、USBハブをかましていますが問題なく動作します。

Archlinux ARMの設定

Pogoplugにサーバとして働いてもらうには、たぶん以下のような設定が必要です。なるべくクライアント側をいじりたくないので、サーバ側でなんとかしようと思います。

  1. IPアドレスは固定
  2. sambaをちゃんとインストールする
  3. WINSサーバも作動させる

Archlinuxはとくに決まったリリースというものはなく、つねにUp to dateな組み合わせになっています。IP周りの設定も変更になっておりネット上での情報も交錯しています。本家のwikiを見るのが正しいのですが、wikiにも3種類のIPアドレスの指定方法が書いてあり、どれをやったらいいのかわからないところがあります。

本家のここには、「静的(static)IPアドレスはArch Linuxの最も標準的なネットワークツールで設定することができる。どのツールを使うにせよ、おそらく以下の情報(IPアドレス、サブネットマスク、ブロードキャストアドレス、ゲートウェイアドレス、DNSアドレス)を準備する必要がある」とあり、続けて以下の記載があります。

netctl
静的IPでnetctlのプロフィールを作成するには、Address, Gateway, DNSと同様にIP=Staticオプションを設定する。netctl#Wiredを参照のこと。
systemd-networkd
systemdにより提供されているsystemd-networkdサービスは簡単な設定ファイルを使用して静的IPの設定をすることができる。systemd-networkd#Wired adapter using a static IPを参照のこと。
dhcpcd
dhcpcd#Static profileを参照のこと。
手動設定(Manual assignment)
略・・・

とあり、とにかく一時的なIP割り当て以外には3つ方法があるらしいということがわかります。とりあえずこのどれかを用いて設定してみることにします。

netctlを使ってみる

最初に書いてあるから最初に試してみた方がいいに違いないと思い、netctlを使ってみます。「Systemd-networkdとnetctlサービスは衝突(conflict)する可能性があるから、systemd-networkdを設定するときは全てのnetctlサービスを使用停止すること」と書いてあります。「ただし、netctl はネットワークインターフェイスデバイスが既に起動している場合 (例えば dhcpcd を使っている場合) はプロファイルを実行しません。 」という記載もあり、いろいろ調べてみるとnetctlを使う場合はsystemd-networkdやdhcpcdも停止する必要があるようで、少なくともdhcpcdとnetctlは共存できなそうです。systemd-networkdとnetctlは共存できるようなことも書いてありますが、トラブルの原因となりそうなので停止させることとします。
さて、マニュアルのここをつまみ食いしながら訳してみます。日本語wikiの内容はやや古く、netctlに関する記載が不十分になっています。

netctlのプロフィールファイルは/etc/netctl/に置かれており、例となるファイルは/etc/netctl/examples/にある。設定の見本にはethernet-dhcp, etherenet-static, wireless-wpa, wireless-wpa-staticがある。見本のプロフィールを使用するには、/etc/netctl/examples/から/etc/netctl/にファイルをコピーし必要に応じて編集。まず必要となるのはプロフィール中のInterface名。これは$ ip linkなどで得ることができる。
インターフェースごとに一つのプロフィールしか使用しない場合や、プロフィールを手動で切り替えたい場合はBasic methodを参照。サーバやワークステーション、ルータがこれにあたる。複数のプロフィールを頻繁に切り替えるときはプロフィールの自動切り替え(Automatic switching of profile)を使用。ラップトップの場合がこれ。
プロフィールの自動切り替えのため、netctlはifplugd, wpa_actiondという2つの特別なsystemdサービスを持っている。
静的IPを設定に含めたい場合は、ExcludeAuto=noという記載をnetctl-ifplugd@interface.serviceに含める必要がある。このプロフィールではDHCPを優先する設定になっているので、もし静的IPを使用したい場合は、Priority=2を静的IP設定の項目に追加し、DHCPのプロフィールをPriority=1と設定すべき。
「ExcludeAutoは自動プロフィール切り替えからこのプロフィールを除外するかどうかの設定。Wireless, DHCP接続ではnoで、他の場合はyesに設定する。(netctl.profile(5))」と書いてある。

ということは、1.netctl-ifplugdの動作中に静的IP設定を優先する設定とするか、netctl-ifplugdサービスを止めて、静的IP設定のプロフィールのみ有効化するか、の2つの方法があることになりそうです。
どこを探してもnetctl-ifplugdの設定をするところが見当たらないので、後者の設定でいこうと思います。
/etc/netctlの下にeth0というファイルを作成します。中身は以下の通り。

Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.xxx.yyy/24')
#Routes=('192.168.0.0/24 via 192.168.1.2') Gateway='192.168.xxx.1'
DNS=('aaa.bbb.ccc.ddd')
Priority=2
ExcludeAuto=no

なにが効いているのかわからないのですが、Priority=2としてほかの設定より優先(数字がデカい)ようにしてみました。ExcludeAutoはよくわからんのですがnoにしてみた。
その上で、

# systemctl disable netctl-ifplugd@eth0.service
# netctl start eth0
とやってみたところ、動作している模様。そのあと

# systemctl stop dhcpcd.service
とやってdhcpcdも止めてみた。
/sbin/rebootとしたところ、固定ipになっているようだ。
と思ったら、DHCPのアドレスと固定IPアドレス、どっちからもアクセスできる。どうなってるの? systemd-networkdが動いてるからか?

メモ
#systemctl status dhcpcd@eth0.service #systemctl is-enabled dhcpcd@eth0.service #systemctl statud systemd-networkd #systemctl is-enabled systemd-networkd

Last modified: Fri Jan 15 22:42:43 JST 2016