netatalkとは
netatalkは、
Unix系OS上で動作する、macOS向けのファイルサーバ機能を提供するオープンソースソフトウェアです。主な役割は、
Appleが開発したファイル共有プロトコルであるAFP(
Apple Filing Protocol)を通じて、macOSや
Classic Mac OSとの間でファイルのやり取りを可能にすることです。
特徴
メタデータ保持: macOSのファイルシステムであるHFSやHFS+が持つ、リソースフォークやFinder情報といったメタデータを完全に保存することを目的として設計されています。最近のmacOSで利用される拡張属性(EA)も同様に扱います。これらのメタデータは、可能な限りサーバ側のファイルシステムの拡張属性に保存されますが、それが不可能な場合は隠しファイルとして保存されます。
Time Machine: macOSのバックアップソフトウェアであるTime Machineの保存先として利用できます。これにより、macOSのバックアップをnetatalkが動作するサーバに保存することが可能になります。
AppleTalk対応: Appleの旧製品で使用されていたAppleTalkネットワークプロトコルも実装しています。これにより、古いMacintoshともファイル共有が可能になります。
AppleTalkは、TCP/IPが普及する以前にApple製品で利用されていたネットワークプロトコルです。netatalkは、AppleTalkを構成する以下のプロトコルをサポートしています。
DDPとAARP:
AppleTalkの基本的なプロトコルであるDDP(Datagram Delivery Protocol)とAARP(
AppleTalk Address Resolution Protocol)は、
カーネルが処理します。netatalkは、それよりも上位のプロトコルを扱います。したがって、
カーネルがDDPとAARPをサポートしていない場合は
AppleTalkは利用できません。
atalkd: AppleTalkの基本的な機能を有効にするためのデーモンです。
afpd: AFP over TCPを実現するデーモンです。atalkdと連携することでAFP over
AppleTalkも実現できます。
papd: 印刷用プロトコルPAP(Printer Access Protocol)を実装するデーモンです。[CUPS]もサポートしており、AppleTalkプリンタとしてnetatalkを選択することで、様々なプリンタに印刷できます。
timelord: Columbia
AppleTalk Package (CAP)のソースからのリバースエンジニアリングによって作成された、時間合わせのためのデーモンです。ただし、現在のmacOSではNTPが利用可能なため、timelordは通常使用されません。
macipgw: AppleTalk上でIPパケットをカプセル化するMacIPのデーモンです。
発音について
netatalkがミシガン大学で開発されていた頃のFAQには、発音が「'ned--to.k」と記述されていました。最初の't'は弱く'd'のように発音し、最初の'a'は曖昧母音であるとされていました。しかし、実際には開発元でもこのように発音された事実はなく、様々な読み方があるため、現在のFAQでは発音に関する記述は意図的に除外されています。
利用例
Unix系OS: LinuxディストリビューションやBSD系OSなど、多くのUnix系OSでnetatalkのパッケージが提供されています。
NAS製品: NAS製品では、NFS、SMB(CIFS)、AFPなどのファイル共有プロトコルをサポートするために、netatalkが利用されることがあります。
jailbreakされたiOSデバイス: iPod touch、iPhone、iPadなどのiOSデバイスで、Apple社の認可を受けていないアプリケーションをインストールするjailbreak環境において、netatalkが配布されています。
歴史
netatalkは、ミシガン大学のResearch Systems Unix Groupによって開発が開始されました。当初は、AppleTalkネットワークプロトコルをBSD系OS上で実装し、Mac OSのサーバとして機能させることを目的としていました。
歴史的な出来事
初期: 同様の機能を持つソフトウェアとしてCAPがありましたが、開発が停止したためnetatalkが広く利用されるようになりました。
AFP over TCPの実装: Adrian SunのパッチによってAFP over TCPが実装され、2000年にSourceForgeに移行しました。
netatalk 1.6: Mac OS Xからのアクセス時にデータが破壊される問題を解決しました。
netatalk 2.0: AFP 3.1をサポートし、Unicodeファイル名、2GiB以上のファイルサイズ、CUPSの統合、シングルサインオン、Kerberos Vなどを実装しました。バージョン2.0.4では旧Mac OSからのCJKファイル名に対応し、2.0.5ではTime Machineに対応しました。
netatalk 2.1: AFP 3.2をサポートし、拡張属性サポート、
Solarisおよび
Open[[Solaris]]上の
ZFSでのACLサポートなどを追加しました。
IPv6にも対応しました。
netatalk 2.2: AFP 3.3をサポートし、Mac OS X LionからTime Machineによるバックアップができない問題を解決しました。Bonjourに対応し、Solaris以外でのACLにも対応しました。
netatalk 3.0:
AppleTalk機能を削除し、AFP over TCP専用となりました。メタデータは可能な限り拡張属性に保存するようになり、設定ファイルも
Sambaを模倣したINIフォーマットに変更しました。
netatalk 3.1: Spotlight検索機能を実装し、AFP 3.4をサポートしました。3.1.8ではSambaとの拡張属性の扱いを統合するためのオプションが追加されました。
netatalk 3.2: 最新の環境でビルドできるように複数の改良が行われました。
netatalk 4.0: 一旦廃止したAppleTalk機能を復活させ、MacIPを実装するデーモンmacipgwが追加されました。
国際化対応
AFPでは、サーバ名、ボリューム名、ファイル名の国際化対応が重要です。
netatalk 1.x: NLSまたはCAPエンコーディングを使用して非
ASCII文字を扱っていました。CJK環境ではCAPエンコーディングを利用していました。日本語環境では
EUC-JPやShift_JISを利用するためのパッチが存在しました。
netatalk 2.x: ファイル名の扱いをUnicodeベースに変更し、macOSに対応しました。Classic Mac OSはUnicodeベースではないため、変換テーブルを用意して対応しました。当初はMacJapaneseのテーブルが含まれておらず、iconvを介してShift_JISに変換していました。バージョン2.0.4でMacJapaneseなどのテーブルが追加されました。
netatalk 3.0: CAPエンコーディングが削除されました。
出典
netatalk 公式サイト
netatalk コードリポジトリ
関連項目
AppleTalk'>AppleTalk
Apple_Filing_Protocol'>AFP (
Apple Filing Protocol)
AppleTalk_Package'>CAP (Columbia AppleTalk Package)
AppleDouble'>
AppleDouble