แชร์ไฟล์/พรินเตอร์ผ่านโปรโตคอล AppleTalk ด้วยลินุกซ์

ที่ห้องแล็ป IRL พรินเตอร์จะต่อตรงกับเครื่อง Yggdrasil แล้วก็แชร์ผ่าน Samba ให้คนอื่นๆ ได้ใช้ แต่แล้วก็เกิดมีเครื่อง Apple PowerBook และ Apple iBook โผล่เข้ามาในเน็ตเวิร์ค แรกๆ ก็ไม่คิดว่าจะยุ่งยากอะไรจนกระทั่งได้รู้ว่า MacOS X มันไม่สามารถพิมพ์ผ่าน SMB ได้ …แปลกแฮะ ที่จริง OSX ก็มี SMB นะครับ แต่ว่ามันใช้ได้กับไฟล์เท่านั้น .. เท่าที่ google หาดูก็มีทางออกอยู่ 2-3 ทางคือ ซื้อ DAVE มาใช้ โปรแกรมนี้คงเรียกได้ว่าเป็น Samba for Mac แต่ไม่ฟรี (~ US$150) .. หรืออีกทางนึงก็คือคอนฟิกให้ Yggdrasil รู้จัก AppleTalk แล้วแชร์ไฟล์และพรินเตอร์ผ่าน netatalk .. อืมม.. วิธีหลังนี่น่าสนใจครับ :)

เคอร์เนลของลินุกซ์มี AppleTalk นานพอสมควรแล้ว และมีแพคเกจสำหรับแชร์ไฟล์ ไดเรคทอรี่ และพรินเตอร์ได้ .. แพคเกจที่ว่านี่ก็คือ netatalk (อ่านว่า เนต–ทอล์ค ลากเสียง ‘เนต’ ยาวๆ) .. ก่อนอื่น จัดการกับเคอร์เนลซะก่อน เช็คดูก่อนว่าเคอร์เนลสนับสนุน AppleTalk หรือยัง ถ้ายังก็ต้อง recompile เคอร์เนลครับ

CONFIG_ATALK=y or m

จากนั้นติดตั้ง netatalk มี rpm เยอะแยะ หาดาวน์โหลดเอา ดีฟอลต์คอนฟิกฯ จะแชร์โฮมไดเรคทอรีให้อัตโนมัติ ค่อนข้างสะดวก ที่ต้องเพิ่มเข้าไปก็เป็นพวก แชร์พรินเตอร์ หรือ ไดเรคทอรีอื่นๆ

สำหรับลินุกซ์ทะเล ใช้ CUPS ก็แก้ /etc/atalk/papd.conf โดยเพิ่ม

HP4:
:pr=|/usr/bin/lpr:
:op=root:
:pd=/etc/cups/ppd/HP4.pdd:

บรรทัดแรก เป็นชื่อพรินเตอร์ที่จะปรากฏเมื่อเชื่อมผ่าน AppleTalk

บรรทัดที่สอง เป็นคำสั่งในการพิมพ์งาน กรณีของ CUPS จะใช้คำสั่งอย่างที่ปรากฏในตัวอย่างนี้ ส่วนอื่นๆ .. google เอา

บรรทัดที่สาม เป็น queue operator ของทะเลใช้ lp หรือไม่ก็ root ไปเลย

บรรทัดสุดท้าย เป็น ppd ที่จะใช้ ..ปกติแล้วเมื่อติดตั้งพรินเตอร์ CUPS จะสร้าง ppd เก็บไว้ที่ /etc/cups/ppd ก็เอามาใช้ได้เลย

ส่วนแชร์ไดเรคทอรี สามารถเพิ่มใน /etc/atalk/AppleVolumes.default เช่น

/usr2/public "Shared Space"

จากนั้นก็สตาร์ทเซอร์วิส atalk และ/หรือ คอนฟิกให้เรียกใช้เมื่อบูต

ทางฝั่งเครื่องแมค ให้ enable AppleTalk ใน System Preference -> Network จากนั้นก็เพิ่มพรินเตอร์เข้าไปในระบบโดยเลือกตามรูป

อย่าลืมเลือก Printer Model เป็น Generic เพราะเท่าที่ทดสอบดูถ้าเลือกเป็นอย่างอื่นจะพิมพ์ไม่ออก หลังจากเพิ่มเข้าไปแล้วเน็ตเวิร์คพรินเตอร์นี้ก็จะเข้าไปเป็นพรินเตอร์ตัวนึงของระบบ ตั้งเป็นดีฟอลต์ก็ได้ถ้าต้องการ

จากนั้นก็ลองสั่งพิมพ์เอกสารดู ..

ถ้าไม่สำเร็จ ให้ลองดู log ของ atalk และ cups ที่เซิร์ฟเวอร์ครับ จากนั้นก็ตัวใครตัวมันละครับ แก้ปัญหากันเอาเอง :P .. ที่จริงยังเหลือไม้ตายอีกทางหนึ่งคือ พิมพ์ผ่าน IPP (Internet Printing Protocol) ไปที่ CUPS บน Yggdrasil .. แต่เอาไว้โอกาสหน้าก็แล้วกัน