Theppitak's blog

My personal blog.

30 สิงหาคม 2548

Random Samba Tricks: Printing

มาต่อกันที่เรื่องเครื่องพิมพ์ ก่อนจะพูดถึงส่วนที่เกี่ยวกับ Samba ก็คุยกันเรื่องระบบการพิมพ์ของลินุกซ์เสียหน่อย

การเซ็ตเครื่องพิมพ์บนลินุกซ์ ก็มีสองส่วนหลักๆ คือติดตั้งระบบ print spooling กับติดตั้ง driver ของเครื่องพิมพ์

ระบบ print spooling ก็คือตัวจัดคิวงานพิมพ์ ใน BSD Unix จะใช้ระบบ LPR ต่อมามีการพัฒนา LPRng (LPR next generation) ขึ้นมาใหม่ ใช้เป็น print spool หลักใน RedHat อยู่พักนึง แล้วก็มี CUPS (Common Unix Printing System) ซึ่งทำอะไรๆ ได้ครบวงจรกว่า และก็ขอแนะนำให้ใช้ตัวนี้

บน debian สั่ง "apt-get install cupsys" ก็ได้ CUPS ส่วนที่เป็น print server มา ส่วนโปรแกรมสั่งพิมพ์ทั้งหลายจะอยู่ในแพกเกจ cupsys-client ซึ่งรวมคำสั่งแบบ System V หรือ cupsys-bsd ซึ่งรวมคำสั่งแบบ BSD หรือจะลงไว้ทั้งคู่เลยก็ได้ กันเหนียว

cupsys มีเครื่องมือ config ผ่านเว็บมาให้ โดยเปิดเว็บเบราว์เซอร์ ชี้ไปที่ "http://localhost:631/" ซึ่งนอกจากการ config แล้ว ยังดูและจัดการคิวงานพิมพ์ได้ด้วย แต่ถ้าใช้ GNOME ก็อาจจะติดตั้ง gnome-cups-manager เพิ่ม ซึ่งจะได้เครื่องมือแบบเดียวกันในแบบ GUI รวมทั้ง tray icon สำหรับเรียกดูคิวงานพิมพ์อย่างรวดเร็วด้วย

ด้วยเครื่องมือดังกล่าว คุณสามารถจัดการอะไรกับเครื่องพิมพ์ได้หลายอย่าง แต่ไม่แนะนำให้ใช้ add printer! เพราะจะมีเครื่องมือที่ทำงานได้ดีกว่า ซึ่งจะพูดถึงต่อไป

อีกส่วนหนึ่งของการติดตั้งเครื่องพิมพ์ก็คือ การติดตั้ง driver ซึ่งมีโครงการ foomatic ที่ LinuxPrinting.org รวบรวมฐานข้อมูลเครื่องพิมพ์ชนิดต่างๆ แล้วสร้างไฟล์ PPD (Postscript Printer Description) ได้ตามต้องการ ซึ่งไฟล์นี้ เมื่อป้อนให้กับ Ghostscript driver ที่ CUPS ใช้ ก็ทำให้ CUPS สามารถพิมพ์เอกสารออกทางเครื่องพิมพ์นั้นๆ ได้

foomatic ยังสนับสนุน print spooler แบบอื่นๆ นอกจาก CUPS ด้วย อาจจะลองศึกษาเอกสารจาก LinuxPrinting.org ได้ ถ้าสนใจ

ลงมือติดตั้งเครื่องพิมพ์ โดยทำเป็นขั้นๆ ดังนี้:

  1. ติดตั้ง foomatic-db-engine, foomatic-db, foomatic-db-hpijs
  2. add printer ด้วย GUI หรือ command line ก็ได้:
    • command line: ดูไฟล์ /usr/share/doc/foomatic-db-engine/USAGE.gz จะอธิบายวิธีการอย่างละเอียด ถ้าสรุปสั้นๆ ก็คือ:
      • หารุ่นเครื่องพิมพ์ในฐานข้อมูล โดยสั่ง "foomatic-configure -O | less" แล้วค้นหายี่ห้อและรุ่นของเครื่องพิมพ์จากข้อมูล XML ที่ได้ ข้อมูลที่สำคัญคือ <id> และ <driver>
      • ติดตั้งเครื่องพิมพ์ด้วยคำสั่ง "foomatic-configure -s cups -n ตั้งชื่อเครื่องพิมพ์ -c <connection> -p <id> -d <driver> -o PageSize=A4" (ตรงส่วน <connection> จะอธิบายต่อไป)
    • GUI: ติดตั้ง foomatic-gui ซึ่งจะเป็น GNOME frontend สำหรับ foomatic-configure ที่อธิบายข้างบน เวลาสั่งอาจใช้ gksu ช่วยแปลงร่างเป็น root: "gksu foomatic-gui"

ตรงส่วน <connection> นั้น จะอยู่ในรูป URL เช่น parallel:/dev/lp0 หรือ usb:/dev/usb/lp0 หรือถ้าเป็นเครื่องพิมพ์ที่ share ผ่าน Windows ก็ smb://<server>/<share>

ตรงนี้แหละ ที่เคยต้องใช้ trick

คือพยายามพิมพ์ออกเครื่องพิมพ์ของ WinXP ที่ share แบบ public โดยอ้าง printer เป็น smb://<server>/<share> แล้ว มันเงียบฉี่ โดยใน print spool ของ CUPS มันฟ้องประมาณว่า access denied (จำ message ไม่ได้) เลยค้นเว็บจนเจอคนที่ลองใช้ smb://admin:mypassword@<server>/<share> แล้วใช้ได้ ก็ปรากฏว่ามันใช้ได้จริง!

หมายเหตุ 1: ใน debian มีแพกเกจ foomatic-filters-ppds ที่เก็บไฟล์ PPD สำเร็จรูปเอาไว้สำหรับเครื่องพิมพ์ ทุกรุ่น ที่ foomatic สนับสนุน ทำให้สามารถ add printer ได้ด้วยเครื่องมือของ CUPS โดยตรง แต่แพกเกจนี้มีขนาดใหญ่พอสมควร โดยมากจึงไม่แนะนำให้ใช้

หมายเหตุ 2: ใน debian มีแพกเกจ cups-pdf ซึ่งจะเพิ่ม PDF printer ให้กับ CUPS เมื่อติดตั้งเสร็จ สามารถใช้ gnome-cups-manager เพิ่มเครื่องพิมพ์ได้ โดยจะถูก detect พบโดยอัตโนมัติ

ไว้คราวหน้าต่อเรื่องการ share printer ผ่าน samba

0 ความเห็น:

แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)

<< กลับหน้าแรก

hacker emblem