HN 日本語サマリー

← 一覧へ戻る
プログラミング

TailTalk: RustとTokioによるモダンな非同期ユーザースペースAppleTalkスタック

TailTalk: A modern async user space AppleTalk stack with Rust and Tokio (github.com)

65 pointsby zdw13 コメント

要約

TailTalkは、RustとTokioを用いてゼロから構築された、Linux、Mac、Windows上で動作するユーザースペースAppleTalkスタック構築のためのツールキットです。Netatalkやカーネルドライバに依存せず、ファイル共有や古いMacとの通信を可能にします。現在開発中のプロトタイプであり、GUIやデーモンも提供されています。

全文翻訳

TailTalk

[画像: Crates.io] [画像: docs.rs]

TailTalkは、Linux、macOS、Windowsシステム上で、EtherTalkまたはLocalTalkネットワーク経由で、完全にユーザースペースで動作するAppleTalk実装を構築するための「ツールキット」として設計されています。Netatalkやカーネルドライバへの依存は一切なく、ゼロから構築されており、必要なのはRAWソケットおよび/またはTashTalk互換デバイス(LocalTalk用)と、古いコンピュータに対する忍耐だけです。複数の実装を同じマシン上で同時に実行できる、完全なAppleTalkスタックを提供します。

このプロジェクトは、古いMacとの間でファイルをコピーしたり、LaserWriter、ImageWriter、ネットワーク接続されたStyleWriterに印刷したり、それらと通信するためのモダンな非同期ソフトウェアを書いたりできるようにするために開始されました。現在、TailTalkはルーターがないセットアップでのみ動作します。ルーターが存在するネットワークにスムーズに参加できるようにするための作業が進められていますが、まだメインラインコードには含まれていません。

スタックの各部分は、当時のMacで実行されていたように、可能な限り「ゼロコンフィグ」であることを目指しています。接続して起動すれば、特別な設定なしで動作するはずです。

このプロジェクトはまだ開発途中のプロトタイプであり、バグや機能不足が予想されます。

TailTalk GUI

TashTalk USBで使用するための現在のユーザー向けプログラムです。AFPサーバーが含まれており、LocalTalkポートを搭載して出荷されたほとんどのMacで動作するはずです。また、Stuff-Itアーカイブやフロッピーディスクイメージをインポートし、リソースフォークを保持したまま共有パスにロードして、リモートクライアントから利用可能にすることができます。

さらに、LocalTalk対応のLaserWriter、ImageWriter、StyleWriterを、AirPrint / IPPプリンターとしてモダンなネットワークに共有したり、モダンなプリンターをクラシックMacに共有したりすることもサポートしています。最新リリースはここで見つけることができます。

https://github.com/FeralFirmware/TailTalk/releases/latest

特徴

主要なAppleTalkプロトコルのほとんどに対するパケットパーサーと完全な非同期API。

  • AppleTalk Address Resolution Protocol (AARP)
  • Datagram Delivery Protocol (DDP)
  • Name Binding Protocol (NBP)
  • AppleTalk Transaction Protocol (ATP)
  • Printer Access Protocol (PAP)
  • AppleTalk Session Protocol (ASP)
  • AppleTalk Filing Protocol (AFP)
  • AppleTalk Data Stream Protocol

さらに、TashTalkとの連携もサポートしています。

AARP/DDPアンダーレイは、インプロセス(デフォルト)で実行するか、インターフェースを所有し、UnixまたはUDPソケット上のprotobufプロトコルを介して複数のクライアントにDDPソケット、アドレス指定、ルーティングルールを提供する共有デーモン tailtalkd で実行できます。これはTailTalk(TalkStack::builder().daemon_unix(..))またはプレーンなCクライアントから使用可能です。詳細は docs/daemon-protocol.md を参照してください。

ビルド

前提条件

このプロジェクトにはRust 1.90以上が必要です。これは rustup.rs からインストールできます。これにより、お使いのOSとCPUアーキテクチャに合ったコンパイラがデフォルトでインストールされます。

このプロジェクトでは、Linux用のAppImage、macOS用のAppバンドル、Windows用のインストーラーのビルドに cargo-packager を使用します。 cargo install cargo-packager でインストールしてください。

Windowsのみ

rustup book で指定されているWindows MSVCの前提条件がインストールされていることを確認してください。

Windowsでは、npcap SDKをマシン上のどこかに保存しておく必要があります。これは npcap.com から入手できます。LIB環境変数をSDKを解凍したフォルダ(例: `C:
pcap-sdk-1.13
Lib

x64`)に設定してください。

ビルドの実行

前提条件がインストールされたら、このリポジトリのルートで cargo build --release を実行してすべてをビルドするか、TailTail GUIのみをビルドする場合は cargo build -p tailtalk-gui --release を実行します。

ビルド後、バイナリは target/release/ に配置されます。

その後、OSに応じて以下のコマンドを実行します。

# Linux
cargo packager --release -f appimage -p tailtalk-gui
# macOS
cargo packager --release -p tailtalk-gui
# Windows 
cargo packager --release -f nsis -p tailtalk-gui

生成されたバンドルは dist/ に配置されます。

TashTalk USB

クイックスタートガイド: Setup.md

TashTalk USBは、Silicon Labs CP210x USB-to-UARTブリッジ(VID 10c4、PID ea60)を使用します。

Linux

cp210x カーネルモジュールはおそらく既にインストールされていますが、デフォルトではデバイスノードはrootのみがアクセスできます。root権限なしでユーザーにアクセス権を付与するには、udevルールを作成します。

echo 'SUBSYSTEM==