QNAP TS412のnetatalkを置き換えようとして挫折した話
前、QNAPのNAS(TS-412)を持っていました。やった事を、次のページにまとめています。
[amazonjs asin="B00C1T4AOA" locale="JP"]これ以外でも、機能を拡張しようと奮闘していましたが、諦めた事があります。
- QNAP TS-412でチャレンジした事 : プラスα空間 (2013年8月14日)
先日、需要はないと思いつつ、過去の事を思い出しながら記事を書きました。
- QNAP TS412でVPN(IPsec)をやろうとして挫折した話 : プラスα空間 (2015年6月2日)
実は、書いていない事はもう一つあって、それはnetatalkのインストールです。QNAPの基本機能としてAFPサーバ機能があり、netatalkがインストールされています。ですが、インストールされているnetatalkのバージョンが古いです。そのため、(当時の)最新のnetatalkをインストールしようとしました。
インストールは、やはりパッケージを作ってインストールする方が管理が楽です。
以下、当時のインストール状況です。インストールできて、単体での動作はしました。ですが、QNAPのnetatalk環境と共存しようとして(netatalkバイナリだけを置き換えて、QNAPが持っていたnetatalkの環境を利用しようとした)、できなくて諦めました。
一応、以下の方法でインストールはできましたが、実用的ではありませんでした。こんな無駄な事はしないで、メーカが用意しているnetatalk環境で我慢して使うというのが正解だと思います。良い子は真似しちゃダメです。
必要ライブラリのインストール
Netatalkをインストールするためには、幾つかの必須ライブラリがあります。QNAP OSで調査した所、Berkley DBとlibpam以外は、既存のipkgでなんとかなったはずです。たぶん。
Berkeley DB 5.2のインストール
Berkeley DB自体はQNAPにインストールされているのですが、netatalkをビルドするための環境が足りません。そのため、Berkeley DBのipkファイルを作ってインストールしました。
まずは、次のところからソースをダウンロードします。ダウンロードするためには、ユーザー登録が必要です。
ダウンロードし終わったら、QNAPにコピーします。
# cd /opt # mkdir work # cd work # mkdir BerkeleyDB # cd BerkeleyDB # mkdir libdb52-dev (何らかの方法で、tarファイルをコピーしてくる) # tar xvzf db-5.2.42.tar.gz # cd db-5.2.42/build_unix # ../dist/configure --with-uniquename --prefix=/opt # make (かなり時間がかかります) # make DESTDIR=/opt/work/BerkeleyDB/libdb52-dev install # rm -rf /opt/work/BerkeleyDB/libdb52-dev/opt/docs # cd ../..
途中で、"doc"を消しているのは、ファイルサイズが大きい(90MB以上)のと、参照するつもりが無いからです。必要だと思う方は、消さずに残しておいて下さい。
次に、パッケージファイルを作るための"control"ファイルを作ります。
# mkdir CONTROL # vi control
次の内容を記載します。
Package: libdb52-dev
Architecture: arm
Priority: optional
Section: util
Version: 5.2.42
Maintainer: Oichinokata <webmaster@oichinote.com>
Source: http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html
Description: Oracle Berkeley DB 11g provides a collection of well-proven building-block technologies
Depends:
Conflicts:
“Maintainer:"の行は、あなたのお名前に変更しておいて下さい。
# ../ipkg-build.sh libdb52-deb (結構時間がかかります)
これで、ipkファイル"libdb52-dev_5.2.42-1_arm.ipk"ができているはずです。
次に、インストールします。
# ipkg install libdb52-dev_5.2.42-1_arm.ipk
これで終了です。
libpamインストール
認証のために必要です。これもパッケージ化してインストールしてます。ですが、当時のメモに残していたのは、ダウンロードする所までしか書いていませんでした。
手順は次の通りです。
# wget http://www.linux-pam.org/library/Linux-PAM-1.1.6.tar.bz2 # tar xjvf Linux-PAM-1.1.6.tar.bz2 # ./configure --prefix=/opt --enable-db=no # ipkg install flex
netalkのビルドの準備
必要とされるパッケージは、次の通りです。ipkgコマンドでインストールします。
# ipkg install libdb52 # ipkg install gconv-modules # ipkg install openssl-dev # ipkg install coreutils # ipkg install findutils
libdb52をインストールしてますが、なんでだろう? 先に、BerkleyDBをインストールしてるのに?
ACLのincludeファイルだけ取り出してコピーします。ACLを有効化する為に必要です。
# mkdir /opt/work # mkdir /opt/work/acl # cd /opt/work/acl/ # wget http://mirrors.zerg.biz/nongnu/acl/acl-2.2.51.src.tar.gz # tar xvzf acl-2.2.51.src.tar.gz # cd acl-2.2.51/include # cp -av acl.h /opt/include/sys
netatalkのビルド
その当時は、netatalk 3.0.4が最新でした。
アーカイブの取得と展開
# mkdir /opt/work # mkdir /opt/work/netatalk # cd /opt/work/netatalk # wget http://sourceforge.net/projects/netatalk/files/netatalk/3.0.4/netatalk-3.0.4.tar.bz2 # tar xvjf netatalk-3.0.4.tar.bz2 # cd netatalk-3.0.4
Configureの実行
# ./configure --prefix=/opt --with-bdb=/opt
QNAPは、独自構成のLinuxなので、–with-init-styleは使えません。
Configure結果の確認
Using libraries: LIBS = -ldl CFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -D_U_="__attribute__((unused))" -g -O2 PTHREADS: LIBS = CFLAGS = -pthread SSL: LIBS = -L/opt/lib -L/opt -lcrypto CFLAGS = -I/opt/include -I/opt/include/openssl LIBGCRYPT: LIBS = -L/opt/lib -lgcrypt -lgpg-error CFLAGS = -I/opt/include -I/home/slug/optware/cs08q1armel/staging/opt/include BDB: LIBS = -L/opt/lib -ldb-5.2 CFLAGS = -I/opt/include/db5 LDAP: LIBS = -lldap CFLAGS = LIBEVENT: bundled Configure summary: INIT STYLE: none AFP: Extended Attributes: ad | sys ACL support: yes CNID: backends: dbd last tdb UAMS: DHX ( SHADOW) DHX2 ( SHADOW) RANDNUM (afppasswd) clrtxt ( SHADOW) guest Options: Zeroconf support: no tcp wrapper support: no quota support: no admin group support: yes valid shell check: yes cracklib support: no ACL support: yes Kerberos support: auto LDAP support: yes dbus support: no dtrace probes: no Paths: Netatalk lockfile: /var/lock/netatalk Documentation: Docbook: no
う〜ん、PAMの事が載ってないな。
コンパイル
# make
ipkファイルの作成
次の記事を参考にして下さい。
- QNAPでipkファイルを作る: プラスα空間 (2013年4月4日)
ipkg作成ディレクトリに仮インストール
# mkdir /opt/work/netatalk/netatalk_3.0.4-1 # make DESTDIR=/opt/work/netatalk/netatalk_3.0.4-1 install
controlファイルの作成
# cd /opt/work/netatalk/netatalk_3.0.4-1 # mkdir CONTORL # vi control
controlファイルの中身の例は、次の通りです。
ackage: netatalk3
Architecture: arm
Priority: optional
Section: util
Version: 3.0.4-1
Maintainer: Oichinokata <webmaster@oichinote.com>
Source: http://sourceforge.net/projects/netatalk/files/netatalk/3.0.4/netatalk-3.0.4.tar.bz2
Depends: libdb52 gconv-modules openssl libgcrypt openldap-libs
Conflicts: netatalk
Description: Netatalk is a freely-available Open Source AFP fileserver.
Maintainerを、ご自身のお名前に変更して下さい。
afp.confファイルの作成
# cd /opt/work/netatalk/netatalk_3.0.4-1/opt/etc # vi afp.conf
次の内容に書き換えます。
[Global]
mac charset = MAC_JAPANESE
afpstats = yes
vol preset = my default values
[my default values]
file perm = 0400
directory perm = 0700
[Multimedia]
path = /share/MD0_DATA/Multimedia
[Download]
path = /share/MD0_DATA/Download
[Recordings]
path = /share/MD0_DATA/Recordings
[Web]
path = /share/MD0_DATA/Web
[Usb]
path = /share/MD0_DATA/Usb
[Public]
path = /share/MD0_DATA/Public
file perm = 0777
directory perm = 0777
[username]
path = /share/MD0_DATA/username
ipkファイルの作成
ipkg-utilsに含まれている、ipkg-buildがPATHに含まれている事が前提です。
- QNAPでipkファイルを作る: プラスα空間 (2013年4月4日)
# cd /opt/work/netatalk # ipkg-build netatalk_3.0.4-1
インストールと確認
インストール
# ipkg install netatalk3_3.0.4-1_arm.ipk Installing netatalk3 (3.0.4-1) to root... Configuring netatalk3 Successfully terminated.
確認
# /opt/sbin/afpd -V afpd 3.0.4 - Apple Filing Protocol (AFP) daemon of Netatalk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Please see the file COPYING for further information and details. afpd has been compiled with support for these features: AFP versions: 2.2 3.0 3.1 3.2 3.3 CNID backends: dbd last tdb Zeroconf support: No TCP wrappers support: No Quota support: No Admin group support: Yes Valid shell checks: Yes cracklib support: No EA support: ad | sys ACL support: Yes LDAP support: Yes D-Bus support: No DTrace probes: No afp.conf: /opt/etc/afp.conf extmap.conf: /opt/etc/extmap.conf state directory: /opt/var/netatalk/ afp_signature.conf: /opt/var/netatalk/afp_signature.conf afp_voluuid.conf: /opt/var/netatalk/afp_voluuid.conf UAM search path: /opt/lib/netatalk// Server messages path: /opt/var/netatalk/msg/
サービスの起動と停止
QNAPのAFPDの停止
管理画面から、AFPを停止して下さい。
インストールしたnetatalkの起動
# /opt/sbin/netatalk
インストールしたnetatalkの停止
# ps aux | grep netatalk 10855 admin 924 S /opt/sbin/netatalk 11447 admin 568 S grep netatalk # kill 10855
メモ
結構はまったこと。makeの途中で、次のエラーで落ちていました。
libtool: link: object name conflicts in archive: .libs/libcnid.lax/libcnid_dbd.a//opt/work/netatalk/netatalk-3.0.2/libatalk/cnid/dbd/.libs/libcnid_dbd.a
libutilと言うスクリプトが、’sort -uc’を使っていました。元々QNAPに入っているsortはbusyboxの物で、必要とされるオプションが足りません。
他にも、findもbusyboxの物だったので、必要とされるオプションが足りません。
それぞれ、corutilsとfindutilをインストールする事で、解決しました。
[amazonjs asin="B00VW99HM0" locale="JP"]
ディスカッション
コメント一覧
まだ、コメントがありません