CC: hai số chỉ thế kỉ,
* Thêm hệ thống tậptin vào đĩa mềm đã đ−ợc định dạng với lệnh
5.4.1 Khởi tạo và thiết lập máy in trong lpd
Việc sử dụng máy in có thể gây rắc rối cho ng−ời dùng. Tuy nhiên nếu quan tâm thêm một số hiểu biết về phần cứng, ng−ời dùng cũng có thể thiết lập cấu hình cho máy in một cách dễ dàng.
Hầu hết các máy in trên hệ thống Linux đều đ−ợc điều khiển bởi một ch−ơng trình chạy ngầm đ−ợc gọi là daemon lpd: ch−ơng trình này đ−ợc khởi động cùng với hệ thống. Trong suốt quá trình khởi động, daemon lpd sẽ đọc tập tin /etc/printcap
(tập tin này l−u trữ thông tin về máy in đ−ợc thiết lập trên hệ thống) để nhận dạng các phần đ−ợc áp dụng cho bất kỳ máy in nào gắn vào hệ thống.
Nói chung, không cần thay đổi daemon lpd, tuy nhiên đôi lúc cần phải nạp lại nó. Lệnh nạp daemon này là lpd.
Cú pháp lệnh:
Các tham số:
-l
Tuỳ chọn cho phép kích hoạt hệ thống ghi nhật ký l−u ý đến mỗi yêu cầu của máy in. Tuỳ chọn này sẽ hữu ích khi đang gỡ rối hệ thống máy in.
port#
xác định số cổng Internet đ−ợc sử dụng để kiểm tra thông tin cấu hình của hệ thống có bị ghi đè không.
Việc cài đặt lpd khá đơn giản, nó cho phép có thể giữ lại các tập tin trong hàng đợi in và từ từ in chúng. Tuy nhiên khi gặp rắc rối, lpd sẽ không gửi thông báo nào cho ng−ời dùng, và điều đó có thể gây khó khăn cho ng−ời dùng, nh−ng đây là b−ớc khởi đầu để tìm hiểu về công việc in ấn.
Về cơ bản, để thêm một máy in vào hệ thống lpd, phải thêm một đầu vào máy in vào trong tập tin /etc/printcap, và tạo một th− mục hàng đợi nh−: /var/spool/lpd.
Một đầu vào trong tập tin/etc/printcap có dạng sau (dấu hàng rào # tại dòng đầu tiên giải thích cho đầu vào, không phải là dấu nhắc shell):
# LOCAL djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh:
Các dòng trên định nghĩa một hàng đợi in gọi là lp, dj hoặc deskjet, th− mục hàng đợi là: /var/spool/lpd/dj và không giới hạn kích th−ớc lớn nhất đối với mỗi công việc in ấn, sử dụng thiết bị máy in /dev/lp0, và không có lề và không thêm tên của ng−ời in vào tr−ớc mỗi trang in.
Để hiểu thêm chi tiết về các đầu vào cần đọc trang man về tập tin printcap. Định nghĩa trên nhìn có vẻ rất đơn giản, nh−ng sẽ có một v−ớng mắc khó chịu (trừ khi gửi một tập tin mà máy DeskJet 500 có thể hiểu đ−ợc) là DeskJet 500 sẽ in những dòng rất lạ.
Ví dụ, khi gửi một tập tin văn bản thông th−ờng của Linux tới DeskJet 500, kết quả là nó in ra những dòng mới nh− sau:
This is line one. This is line two. This is line three.
Khi gửi một tập tin PostScript tới hàng đợi in thì hàng đợi sẽ tiếp nhận đ−ợc một danh sách lệnh PostScript. Hàng đợi đ−ợc in ra với hiệu ứng bậc thang (từ lệnh PostScript) tuy nhiên lại không có xảy ra điều gì đối với các trang in đối với máy in Postscript (nh− DeskJet 500, chẳng hạn).
Nh− vậy, cần phải thêm vào một bộ phận với chức năng lọc. Khi đọc trang man
về tập tin printcap, cần l−u ý đến hai thuộc tính if và of. if (input filter) chính là bộ phận cần đ−ợc bổ sung trong tr−ờng hợp nói trên.
Trong tr−ờng hợp viết một đoạn ch−ơng trình lọc nhớ bằng shell script thì đoạn ch−ơng trình này sẽ điều khiển việc trả về một dòng mới khi in và lúc đó hiệu ứng bậc thang sẽ đ−ợc loại bỏ. Do vậy, phải thêm vào dòng if trong đầu vào printcap ở trên nh− d−ới đây: lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh:
Sau đây là ví dụ về một đoạn ch−ơng trình lọc đơn giản:
#!perl
# The above line should really have the whole path to perl # This script must be executable: chmod 755 filter
while(<STDIN>){chop $_; print "$_\r\n";};
# You might also want to end with a form feed: print "\f";
Khi hoàn thiện các việc nh− trên, chúng ta đã có một hàng đợi in cho phép in các tập tin văn bản thông th−ờng theo đúng nghĩa của nó.
Chỉ còn một vấn đề là khi in ấn văn bản thuần túy thì không nhanh bằng khi in PostScript và các kiểu đồ họa hay định dạng khác. Vấn đề này rất dễ giải quyết bằng ph−ơng thức đơn giản là mở rộng vào bộ lọc trên. Nếu viết một bộ lọc có thể chấp nhận các loại tập tin là đầu vào và đ−a ra đầu ra cho mỗi tr−ờng hợp, khi đó sẽ có một hàng đợi in thông minh hơn.
Những bộ lọc nh− vậy gọi là magic filter. Không nên vô cớ viết các bộ lọc này trừ khi máy in in ra những dấu hiệu lạ. Có rất nhiều các bộ lọc đã đ−ợc viết sẵn trên mạng. ASP là một trong số những bộ lọc tốt nhất, hoặc hệ thống Linux đang sr dụng đã có sẵn công cụ cài đặt máy in sẽ tự động tạo ra các bộ lọc nh− vậy.
Có một điều l−u ý đối với các bộ lọc: một vài phiên bản cũ của lpd không chạy các bộ lọc if đối với các máy in mạng.