Rust와 Tokio로 다시 구현한 사용자 공간 AppleTalk 스택 TailTalk, 커널 지원 제거에 대응
- Rust와 Tokio로 작성된 사용자 공간 AppleTalk 스택 TailTalk이 공개됨. 리눅스 커널이 AppleTalk 지원을 제거한 뒤에도 빈티지 맥의 LocalTalk 네트워크를 계속 쓰기 위한 대체 구현임
- TailTalk 데몬은 protobuf 형식으로 AARP와 DDP만 제공함. 하나의 TashTalk 또는 USB 기기를 여러 프로그램이 동시에 쓸 수 있게 하는 것과 Netatalk의 사용자 공간 프로토콜 프런트엔드로 기능하는 것이 목적임
- 저장소는 스타 68개, 포크 4개, 커밋 182개, 태그 31개. 최근 커밋은 InkTalk 보드 설계 수정으로, StyleWriter에서는 HSKo를 직접 구동해야 프린터가 데이터를 보내고 ImageWriter에서는 HSKi를 계속 샘플링해야 버퍼 오버런을 막을 수 있다는 실측 결과를 반영함
- 작성자는 같은 저장소에서 현대 기기를 LocalTalk 네트워크에 직접 연결하는 장치와 80~90년대 애플 프린터용 네트워크 어댑터 에뮬레이터도 함께 개발 중이라고 밝힘
Hacker News opinions
AppleTalk이 중단된 프로토콜이라고 하는데 뭔지 모르는 사람용 설명 좀 해줘.
옛날 클래식 맥(80년대 후반에서 90년대)에서 근거리 네트워크 만들 때 쓰던 프로토콜임. 위키백과에 역사 정리 잘 돼 있고, 결국 이더넷과 TCP/IP가 이겼다는 흐름도 나옴.
비교하자면 마지막 실용 용도가 파일 공유, 그중에서도 레거시 타임머신이었음. 애플이 걷어내고 SMB랑 WebDAV를 밀었지.
이런 걸 기다렸음. 라즈베리파이에 돌리던 옛 Netatalk 구성 이제 치울 수 있겠다. 고맙다.
덕분에 GlobalTalk라는 것도 처음 알았어. 사람들이 자기 AppleTalk 네트워크를 인터넷으로 연결하는 프로젝트더라.
리눅스 커널이 AppleTalk을 버린다는 소식 보고 사용자 공간에서 기능을 되살리는 쪽에 완전 찬성임. 같은 논리로 옛 파일시스템도 FUSE로 옮겨두면 커널에서 빠져도 사용자는 그냥 갈아타면 되잖아.
FUSE는 이식성도 좋아서 좀 손보면 macOS, Haiku, BSD 계열까지 커버됨.
성능이 중요하지 않다면 LKL이나 UML로도 재밌게 놀 수 있음. UML은 리눅스 커널 전체를 사용자 공간 프로세스로 돌리는 거고, guestfish 같은 도구가 디스크 이미지 수정에 씀. LKL은 커널을 라이브러리로 쓰는 방식인데 단일 스레드 제약이 있고 리눅스 밖에서도 됨.
어 내 프로젝트가 해커뉴스에 올라올 줄은 몰랐네. 이 스택에 맞춰서 임베디드용 소형 하드웨어도 만들고 있음. 하나는 현대 기기를 LocalTalk에 직접 물리는 거고, 다른 하나는 구하기 힘든 80~90년대 애플 프린터용 네트워크 어댑터를 흉내내는 것임. 68kmla 스레드에 개발 과정 전부 적어뒀음.