Chuẩn bị kỳ thi LPI 101: Hệ thống Window X

Chủ đề 110 (LPIC-1) Quản trị trình độ sơ cấp

Trong hướng dẫn này, Ian Shields tiếp tục chuẩn bị cho bạn tham gia kỳ thi 101 (LPIC-1) về quản trị trình độ sơ cấp của Viện Linux chuyên nghiệp (Linux Professional Institute® ). Trong hướng dẫn thứ năm này của loạt bài năm hướng dẫn, Ian giới thiệu cho bạn về Hệ thống Window X trên Linux®. Đến cuối hướng dẫn này, bạn sẽ biết cách cài đặt và bảo trì Hệ thống Window X. Hướng dẫn này trình bày cả hai gói chính cho X trên Linux: XFree86 và X.Org.

Ian Shields, Lập trình viên cao cấp, EMC

Ian Shields làm việc cho rất nhiều dự án Linux trên vùng Linux của developerWorks. Ông là một lập trình viên cao cấp của IBM tại Khu vực Tam giác nghiên cứu (Research Triangle Park - RTP), bang Bắc Carolina (NC). Ông đã đến với IBM ở Canberra, Úc, như là một kỹ sư hệ thống vào năm 1973, và từ đó đã làm việc về các hệ thống thông tin liên lạc và điện toán mọi nơi tại Montreal, Canada, và RTP, NC. Ông đã có một số bằng sáng chế và đã xuất bản một số bài báo. Ông tốt nghiệp đại học ngành toán học thuần tuý và triết học tại Đại học Quốc gia Úc. Ông có bằng thạc sĩ và tiến sĩ khoa học máy tính của Đại học Bắc Carolina.



10 09 2010

Trước khi bạn bắt đầu

Tìm hiểu xem các hướng dẫn có thể dạy cho bạn những gì và làm thế nào để bạn có thể tiếp thu được nhiều nhất từ các hướng dẫn đó.

Về loạt bài này

Viện Linux chuyên nghiệp (LPI-Linux Professional Institute) cấp chứng chỉ nhà quản trị hệ thống Linux ở hai trình độ: trình độ sơ cấp (còn gọi là "chứng chỉ cấp 1") và trình độ trung cấp (còn gọi là "chứng chỉ cấp 2"). Để đạt được chứng chỉ cấp 1, bạn phải vượt qua kỳ thi 101 và 102; để đạt được chứng chỉ cấp 2, bạn phải vượt qua kỳ thi 201 và 202.

developerWorks cung cấp các hướng dẫn để giúp bạn chuẩn bị cho từng kỳ thi trong bốn kỳ thi đó. Mỗi bài thi bao gồm một số chủ đề và mỗi chủ đề có một hướng dẫn tự học tương ứng trên developerWorks. Đối với kỳ thi LPI 101, có năm chủ đề và các hướng dẫn tương ứng trên developerWorks là:

Bảng 1. Kỳ thi LPI 101: Các hướng dẫn và các chủ đề
Chủ đề của kỳ thi LPI 101Hướng dẫn trên developerWorksTóm tắt hướng dẫn
Chủ đề 101Chuẩn bị cho kỳ thi LPI 101:
Phần cứng và kiến trúc
Học cách cấu hình phần cứng hệ thống của bạn với Linux. Đến cuối hướng dẫn này, bạn sẽ biết cách Linux cấu hình phần cứng có trong một máy tính cá nhân (PC) hiện đại như thế nào và bạn sẽ phải xem xét ở đâu khi có trục trặc.
Chủ đề 102Chuẩn bị cho kỳ thi LPI 101:
Cài đặt Linux và quản lý gói.
Giới thiệu về cài đặt Linux và quản lý gói. Đến cuối hướng dẫn này, bạn sẽ biết cách Linux sử dụng các phân vùng đĩa, cách Linux khởi động và cách cài đặt và quản lý các gói phần mềm như thế nào.
Chủ đề 103Chuẩn bị cho kỳ thi LPI 101:
Các lệnh GNU và UNIX.
Giới thiệu về các lệnh GNU và UNIX thường dùng. Đến cuối hướng dẫn này, bạn sẽ biết cách sử dụng các lệnh trong bash shell, bao gồm cách sử dụng các lệnh và các bộ lọc xử lý văn bản, cách tìm kiếm các tập tin và các thư mục và cách quản lý các tiến trình.
Chủ đề 104Chuẩn bị cho kỳ thi LPI 101:
Các thiết bị, các hệ thống tập tin Linux và các chuẩn phân cấp hệ thống tập tin
Học cách tạo các hệ thống tập tin trên các phân vùng đĩa, cũng như cách cho phép người dùng truy cập chúng, quản lý quyền chủ sở hữu tập tin và các hạn ngạch của người dùng và sửa chữa các hệ thống tập tin khi cần thiết. Bạn cũng được học về liên kết cứng và liên kết biểu tượng và cách để xác định vị trí các tập tin trong hệ thống tập tin của bạn và nơi đặt các tập tin.
Chủ đề Chuẩn bị cho kỳ thi LPI 101:
Hệ thống Window X.
(Hướng dẫn này).Tìm hiểu cách cài đặt và bảo trì Hệ thống Windows X. Xem chi tiết các mục tiêu dưới đây.

Để vượt qua kỳ thi 101 và 102 (và đạt được chứng chỉ cấp 1), bạn cần có khả năng:

  • Làm việc với các dòng lệnh Linux.
  • Thực hiện các nhiệm vụ bảo trì đơn giản: trợ giúp những người dùng, thêm những người dùng vào một hệ thống lớn hơn, sao lưu và phục hồi, tắt và khởi động lại.
  • Cài đặt và đặt cấu hình một máy trạm (bao gồm cả X) và kết nối nó với một mạng LAN hoặc kết nối một máy tính độc lập qua modem tới mạng Internet.

Để tiếp tục chuẩn bị cho chứng chỉ cấp 1, hãy xem hướng dẫn của developerWorks cho kỳ thi LPI 101, cũng như trọn bộ các hướng dẫn LPI của developerWorks.

LPI không chứng thực bất kỳ tài liệu hay kỹ thuật luyện thi riêng biệt nào của một bên thứ ba. Để biết thêm chi tiết, xin vui lòng liên hệ với info@lpi.org.

Về hướng dẫn này

Chào mừng bạn đến với "Hệ thống Window X", hướng dẫn thứ năm trong năm hướng dẫn được thiết kế để chuẩn bị cho bạn về kỳ thi LPI 101. Trong hướng dẫn này, bạn sẽ tìm hiểu về cách tạo và quản lý các phân vùng. Bạn sẽ tìm hiểu về việc thiết lập Hệ thống Window X trên Linux. Hướng dẫn này trình bày hai gói chính cho X trên Linux: XFree86 và X.Org.

Hướng dẫn này được cấu tạo theo các mục tiêu của LPI đối với chủ đề này. Nói chung, hãy chờ đợi sẽ có nhiều câu hỏi hơn trong kỳ thi dành cho các mục tiêu có trọng số cao hơn.

Bảng 2. Hệ thống Window X: Các mục tiêu của kỳ thi được trình bày trong hướng dẫn này
Mục tiêu của kỳ thi LPITrọng số của mục tiêuTóm tắt mục tiêu
1.110.1
Cài đặt và cấu hình X
Trọng số 5Cấu hình và cài đặt X và một trình chủ phông chữ (font) X. Kiểm tra xem vỉ (card) video và màn hình có được trình chủ X của bạn hỗ trợ không và tùy chỉnh và điều chỉnh X dành cho vỉ và màn hình ấy. Cài đặt một trình chủ phông chữ X, cài đặt các phông chữ và cấu hình X để sử dụng trình chủ phông chữ.
1.110.2
Thiết lập trình quản lý hiển thị
Trọng số 3Thiết lập và tùy chỉnh một trình quản lý hiển thị. Bật hay tắt trình quản lý hiển thị và thay đổi lời chào và độ sâu màu (bitplanes) mặc định của nó. Cấu hình các trình quản lý hiển thị để cho các trạm X sử dụng, chẳng hạn như các trình quản lý hiển thị X, GNOME và KDE.
1.110.4
Cài đặt và tùy chỉnh một môi trường của trình quản lý cửa sổ
Trọng số 5Tùy chỉnh một môi trường màn hình nền toàn hệ thống và trình quản lý cửa sổ, bao gồm cả các trình đơn của trình quản lý cửa sổ và các trình đơn của bàn điều khiển màn hình nền. Chọn và cấu hình một đầu cuối X và kiểm tra và phân giải các vấn đề phụ thuộc thư viện cho các ứng dụng X. Xuất khẩu một màn hình hiển thị X tới một máy trạm khách.

Điều kiện cần có trước

Để thu nhận được nhiều nhất từ hướng dẫn này, bạn cần phải có một kiến thức cơ bản về Linux và một hệ thống Linux đang hoạt động, trên hệ thống đó bạn có thể thực hành các lệnh được trình bày trong hướng dẫn này. Bạn cũng nên làm quen với sử dụng các ứng dụng giao diện người dùng đồ họa (GUI), tốt nhất là trong Hệ thống Windows X.

Hướng dẫn này dựa vào nội dung được trình bày trong bốn hướng dẫn trước trong loạt bài này, vì thế trước tiên bạn có thể cần xem lại các hướng dẫn của các chủ đề 101, 102, 103 và 104.

Các phiên bản khác nhau của một chương trình có thể định dạng kết quả đầu ra khác nhau, do đó kết quả của bạn có thể trông không chính xác như các liệt kê và các hình vẽ trong hướng dẫn này.


Cài đặt và cấu hình X

Phần này trình bày các tư liệu cho chủ đề 1.110.1 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 5.

Trong phần này, bạn tìm hiểu cách để:

  • Kiểm tra xem vỉ video và màn hình của bạn có được trình chủ (server) X của bạn hỗ trợ không.
  • Cấu hình và cài đặt X.
  • Tùy chỉnh và điều chỉnh X cho vỉ video và màn hình.
  • Cấu hình và cài đặt một trình chủ phông chữ X.
  • Cài đặt các phông chữ.

Lịch sử của hệ thống Window X

Hệ thống Window X, còn được gọi đơn giản là X hoặc X11, là một hệ thống cửa sổ dành cho hiển thị đồ họa (ảnh bitmap). X bắt nguồn tại MIT vào năm 1984 và được phát triển như một phần của dự án Athena, nhằm cung cấp một môi trường tính toán, sử dụng phần cứng khác loại nhau. X tách biệt các chức năng hiển thị thành một trình chủ hiển thịcác trình khách, cung cấp logic ứng dụng. Việc này trong suốt với mạng, do đó trình chủ hiển thị và trình khách không cần phải ở trên cùng một máy. Lưu ý rằng ý nghĩa của "trình khách" và "trình chủ" có phần nào đó ngược lại với những gì bạn thường nghĩ. Ngoài việc xử lý kết quả đầu ra sẽ được hiển thị, đầu phía trình chủ cũng xử lý đầu vào từ các thiết bị như bàn phím, chuột, các bảng đồ họa và màn hình cảm ứng.

X cung cấp một bộ công cụ cho các ứng dụng GUI, nhưng nó không chỉ rõ một giao diện người dùng. Trên hệ thống Linux điển hình, bạn sẽ lựa chọn giữa các màn hình nền KDE hoặc GNOME và bạn có thể cũng có một số trình quản lý cửa sổ khác có sẵn. Vì X không xác định rõ giao diện người dùng, nên các màn hình nền và các trình quản lý cửa sổ có vẻ bề ngoài khác nhau.

Vì X đã được phát triển để phục vụ cho một cộng đồng rộng lớn với các loại phần cứng tạp chủng, khác loại nhau, bạn sẽ thấy rằng các phiên bản khác nhau của trình khách và trình chủ X nói chung sẽ hoạt động tương tác khá tốt với nhau.

XFree86 và X.Org

Vào năm 1987, MIT đã muốn trao quyền kiểm soát X và Hiệp hội X MIT (MIT X Consortium) đã được thành lập như là một nhóm phi lợi nhuận để giám sát sự phát triển của X. Sau một vài sự thay đổi cương vị quản lý, Tập đoàn Open đã thành lập X.Org vào năm 1999. Từ năm 1992, phần lớn sự phát triển tích cực của X được XFree86 thực hiện, ban đầu đã tạo ra một cổng của X cho phần cứng 386 của Intel® 386 để sử dụng trong Linux, vì thế mà có tên XFree86. XFree86 gia nhập X.Org như là một thành viên không trả phí.

Mặc dù ban đầu được tạo ra cho 386, các phiên bản sau này của XFree86 đã hỗ trợ một số nền tảng khác nhau và nó đã trở thành phiên bản X trên Linux được sử dụng rộng rãi nhất. Sau một số tranh chấp về điều khoản cấp phép mới và mô hình phát triển của XFree86, Quỹ X.Org (X.Org Foundation) được thành lập. Phát triển từ phiên bản XFree86 mới nhất theo giấy phép trước đó, Quỹ X.Org đã tạo ra X11R6.7 và X11R6.8. Nhiều bản phân phối vẫn còn sử dụng XFree86, trong khi nhiều bản phân phối đã chọn X.Org để thay thế.

Hỗ trợ phần cứng video

Cả hai gói XFree86 và X.Org hỗ trợ rất nhiều các vỉ video hiện đại. Hãy tham khảo tài liệu trực tuyến dành cho bản phát hành của bạn (xem Tài nguyên). Một số nhà sản xuất không phát hành các trình điều khiển mã nguồn mở cho tất cả các chức năng, do đó bạn có thể cần phải tích hợp một trình điều khiển của nhà sản xuất vào hệ thống XFree86 của bạn. Hãy xem trang web của nhà sản xuất để tìm các trình điều khiển Linux được cải tiến hoặc cập nhật. Điều này thường phải làm đối với các trình điều khiển tăng tốc 3D. Ngay cả khi các khả năng phần cứng của vỉ video của bạn không thể được XFree86 sử dụng, vẫn có khả năng bạn có thể chạy trong chế độ vùng đệm khung (framebuffer) VESA (Video Electronics Standards Association - Hiệp hội các tiêu chuẩn cho các thiết bị điện tử Video).

Các màn hình hiện đại triển khai đặc tả Kênh dữ liệu hiển thị (Display Data Channel hay DDC) VESA, cho phép xác định bằng chương trình các thông tin và các khả năng của màn hình. Các công cụ cấu hình XFree86 (trừ xf86config) sử dụng thông tin này để cấu hình hệ thống X của bạn.

Một cách để xem X làm việc với phần cứng của bạn như thế nào là khởi động một bản phân phối trên đĩa CD trực tiếp, như Knoppix hoặc Ubuntu. Các bản phân phối này thông thường có khả năng tuyệt vời để phát hiện và sử dụng phần cứng của bạn. Nhiều bản phân phối đưa ra một sự lựa chọn cài đặt đồ họa, thường đòi hỏi việc phát hiện và sử dụng chính xác phần cứng của bạn.

XFree86

Hầu hết các bản phân phối bao gồm một phiên bản của XFree86 hoặc X.Org đã được đóng gói cho hệ thống. Nếu không, bạn có thể tìm một gói RPM hoặc .deb và cài đặt nó theo các kỹ thuật mà bạn đã học được trong hướng dẫn cho chủ đề 102 "Chuẩn bị cho kỳ thi LPI 101: Cài đặt Linux và quản lý gói."

Cài đặt XFree86

Nếu bạn không có sẵn một gói XFree86, thì bạn sẽ cần phải tải về các tập tin từ trang web của dự án XFree86 (xem Tài nguyên). Các gói dựng sẵn có sẵn cho Linux trên nhiều nền tảng phần cứng phổ biến hoặc bạn có thể cài đặt từ bản phân phối mã nguồn. Hướng dẫn này giả định bạn đang cài đặt một gói nhị phân của bản phát hành hiện tại (phiên bản 4.5.0).

Bạn sẽ cần phải tải về một số gói nhị phân nữa. Bạn cần sử dụng kiểm tra tổng (checksums) md5 có sẵn và các khóa GPG để kiểm tra hợp lệ các gói tải về của bạn. Bảng 3 liệt kê các tập tin cần thiết cho XFree86.

Bảng 3. Các tập tin cần thiết của XFree86
Tập tinMô tả
Xinstall.shKịch bản lệnh cài đặt.
extractTiện ích trích xuất các khối tập tin nén (tarball).
Xbin.tgzCác trình khách, các tiện ích và các thư viện thời gian chạy dành cho X.
Xlib.tgzCác tập tin dữ liệu cần thiết trong thời gian chạy.
Xman.tgzCác trang hướng dẫn sử dụng.
Xdoc.tgzTài liệu XFree86.
Xfnts.tgz Bộ phông chữ cơ bản.
Xfenc.tgzDữ liệu mã hóa phông chữ.
Xetc.tgzCác tập tin cấu hình thời gian chạy - phần 1.
Xrc.tgzCác tập tin cấu hình thời gian chạy - phần 2.
Xvar.tgzDữ liệu thời gian chạy.
Xxserv.tgzTrình chủ X của XFree86.
Xmod.tgzCác mô đun trình chủ X.

Nếu bạn không chắc chắn cần tải về phiên bản nào, thì hãy tải về tập tin Xinstall.sh cho một phiên bản mà bạn nghĩ là đúng nhất và sử dụng tùy chọn -check để kiểm tra hệ thống của bạn như trong Liệt kê 1.

Liệt kê 1. Kiểm tra để tìm các gói nhị phân XFree86 đúng
root@pinguino:~/xfree86# sh Xinstall.sh -check
Checking which OS you're running... uname reports 'Linux' version
'2.6.12-10-386', architecture 'i686'. libc version is '6.3.5' (6.3). Binary
distribution name is 'Linux-ix86-glibc23' If you don't find a binary
distribution with this name, then binaries for your platform are not available
from XFree86.org.

Với ví dụ này, bạn cần tìm kiếm gói "Linux-ix86-glibc23".

Bảng 4 liệt kê các tập tin tùy chọn cho XFree86. Với hướng dẫn này, bạn sẽ cần trình chủ phông chữ (font) và bất kỳ mục nào khác mà bạn muốn cài đặt.

Bảng 4. Các tập tin tùy chọn của XFree86
Tập tinMô tả
Xdrm.tgzMã nguồn của các mô đun nhân của trình quản lý biểu hiện trực tiếp (DRM).
Xfsrv.tgzTrình chủ phông chữ.
Xnest.tgz Trình chủ X lồng nhau.
Xprog.tgzCác tập tin tiêu đề X, các tập tin cấu hình và các thư viện để phát triển các ứng dụng X.
Xprt.tgzTrình chủ in ấn X.
Xvfb.tgz Trình chủ X vùng đệm khung ảo.
Xtinyx.tgz Các trình chủ TinyX.
Xf100.tgz Các phông chữ 100dpi.
Xfcyr.tgz Các phông chữ Cyrillic (bảng chữ cái của các ngôn ngữ Slavơ).
Xfscl.tgzCác phông chữ mở rộng được (Speedo, Type1 và TrueType).
Xhtml.tgzPhiên bản HTML của tài liệu tham khảo.
Xps.tgzPhiên bản PostScript của tài liệu tham khảo.
Xpdf.tgzPhiên bản PDF của tài liệu tham khảo.

Trước khi bạn cài đặt XFree86, bạn nên sao lưu dự phòng các thư mục /usr/X11R6, /etc/X11 và /etc /fonts của bạn do nội dung của chúng có thể bị thay đổi khi cài đặt XFree86. Bạn có thể sử dụng các lệnh tar, cp hay zip để làm điều này. Khi bạn đã sẵn sàng để cài đặt XFree86, hãy chuyển đến thư mục ở đó có các tập tin XFree86 được bạn tải về và chạy kịch bản lệnh Xinstall.sh như trong Liệt kê 2.

Liệt kê 2. Cài đặt XFree86
root@pinguino:~/xfree86# sh Xinstall.sh

Bạn sẽ được nhắc để trả lời một vài câu hỏi, nội dung có thể thay đổi tùy theo bạn có hay không có một bản cài đặt X trước đó. Sau khi các thành phần bắt buộc được cài đặt, bạn sẽ được nhắc cài đặt các thành phần tùy chọn riêng lẻ từng cái một.

Sau khi cài đặt tập tin, kịch bản lệnh sẽ chạy lệnh ldconfig và đề nghị thiết lập một số liên kết biểu tượng cho bạn.

Cách đơn giản nhất để cài đặt XFree86 là cài đặt tất cả những phần bạn muốn bằng cách sử dụng kịch bản lệnh Xinstall.sh. Nếu bạn không làm như vậy, bạn sẽ cần phải hoặc cài đặt lại toàn bộ gói, và có khả năng ghi đè lên bất kỳ tuỳ chỉnh nào bạn đã làm, hoặc cài đặt thủ công các thành phần khác.

Cấu hình XFree86

Theo lịch sử, việc cấu hình XFree86 bao gồm việc tạo ra một tập tin XF86Config, có chứa thông tin về vỉ video, chuột, bàn phím và phần cứng hiển thị cũng như các mục tùy chỉnh, chẳng hạn như các độ phân giải màn hình hiển thị ưa thích. Công cụ cấu hình ban đầu, xf86config, yêu cầu một người sử dụng phải có và nhập vào thông tin chi tiết về vỉ video và định thời gian của màn hình. Các phiên bản gần đây của XFree86 có khả năng xác định phần cứng có sẵn ngay khi chạy và có thể chạy với rất ít hoặc không có thông tin cấu hình nào.

Các công cụ cấu hình có sẵn là:

XFree86 -autoconfig
Việc chạy XFree86 với tùy chọn -autoconfig sẽ cố gắng để cấu hình tự động trình chủ X. Nếu thiết lập của bạn được xác định một cách chính xác, bạn sẽ có thể di chuyển con trỏ X mọi nơi trong màn hình bằng chuột. Giữ phím CtrlAlt và nhấn phím Backspace để thoát khỏi hiển thị màn hình. Việc này xác nhận rằng cấu hình tự động sẽ làm việc. Không có tập tin cấu hình được viết ra.
XFree86 -configure
Việc chạy XFree86 với tùy chọn -configure có thể làm việc nếu tùy chọn -autoconfig không làm việc. Tùy chọn này cũng có thể tạo ra các vấn đề trên một số hệ thống.
xf86cfg
Lệnh xf86cfg cố gắng khởi động các trình điều khiển hiển thị và đầu vào. Nếu thành công, bạn sẽ thấy một cửa sổ với một sơ đồ về hệ thống của bạn. Nhấn chuột phải vào một mục để xem hoặc cập nhật cấu hình của nó. Trên một số hệ thống bạn có thể cần phải sử dụng bàn phím số thay vì các nút chuột, vì hệ thống có thể không phát hiện đúng thiết bị chuột. Bạn có thể thử tạo ra một liên kết biểu tượng đến thư mục /dev/mouse từ thiết bị chuột thực tế của bạn trước khi chạy xf86cfg. Ví dụ:
ln -s /dev/input/mice /dev/mouse
Khi bạn nhấn vào Quit (Thoát), bạn sẽ được nhắc lưu các tập tin cấu hình /etc/X11R6/lib/X11/XF86Config và /etc/X11R6/lib/X11/xkb/X0-config.keyboard của bạn.
xf86config
Lệnh xf86config sử dụng một giao diện chế độ văn bản để nhắc tương tác các thông tin về chuột, bàn phím, vỉ video và màn hình hiển thị. Bạn sẽ cần thông tin về tần số ngang và dọc cho màn hình hiển thị của bạn. Bạn có thể chọn hầu hết các vỉ video từ một cơ sở dữ liệu về các vỉ video đã biết đến. Nếu không, bạn có thể cần thông tin về bộ vi mạch xử lý (chipset) và thông tin định thời gian cụ thể cho vỉ video của bạn.

Lưu ý:

  1. Nếu hệ thống của bạn bao gồm XFree86, bản phân phối của bạn có thể đã có một công cụ, chẳng hạn như lệnh sax2 thường sử dụng trên các hệ thống SUSE hoặc lệnh redhat-config-xfree86 thường sử dụng trên một số hệ thống Red Hat®. Hãy luôn xem tài liệu tham khảo của hệ thống của bạn về các công cụ như vậy.
  2. Một công cụ cấu hình khác, XF86Setup, không còn được phân phối với XFree86 nữa.

X.Org

Hầu hết các bản phân phối bao gồm một phiên bản của XFree86 hoặc X.Org đã được đóng gói cho hệ thống rồi. Nếu không, bạn có thể tìm thấy một gói RPM hoặc .deb và cài đặt nó theo các kỹ thuật mà bạn đã học được trong hướng dẫn cho chủ đề 102 "Chuẩn bị cho kỳ thi LPI 101: Cài đặt và quản lý gói Linux."

Cài đặt X.Org

Nếu bạn không có sẵn một gói X.Org, thì bạn sẽ cần phải tải về và xây dựng mã nguồn từ trang web của X.Org hoặc một máy nhân bản (xem Tài nguyên). Tại thời điểm viết bài này, các trang web này không chứa các gói nhị phân dựng sẵn cho X11R6.9.0 hoặc X11R7.0. Mã nguồn có sẵn từ kho lưu trữ CVS hoặc dưới dạng các khối tập tin nén được nén bằng hoặc gzip hoặc bzip2. Bạn cần phải nhận được hoặc là tập tin gz hoặc tập tin bz2, không phải cả hai. Bạn sẽ tìm thấy Hướng dẫn của nhà phát triển cây mô đun X.Org (X.Org Modular Tree Developer's Guide) (xem Tài nguyên), một trợ giúp vô giá khi bạn tải về và tự xây dựng X.Org. Lưu lại các gói bổ sung, chẳng hạn như freetype, fontconfig và Mesa, được khuyến nghị cho việc xây dựng chức năng đầy đủ.

Cấu hình X.Org

Gói X.Org được dựa trên một phiên bản gần đây của XFree86 và có khả năng cấu hình tương tự, bao gồm cả việc xác định động phần cứng có sẵn. Tập tin cấu hình được đặt tên là xorg.conf chứ không phải là XF86Config. Bạn có thể tìm thấy nó ở một trong một vài vị trí như sau: /etc/xorg.conf, /etc/X11/xorg.conf, /usr/X11R6/etc/xorg.conf, /usr/X11R6/lib/X11/xorg.conf.hostname, hay /usr/X11R6/lib/X11/xorg.conf.

Các công cụ cấu hình sẵn có là:

X -configure
Việc chạy X với tùy chọn -configure làm cho trình chủ X tải về từng mô đun của trình điều khiển, thăm dò trình điều khiển và tạo một tập tin cấu hình được lưu trong thư mục nhà của người sử dụng, người đã khởi động trình chủ đó (thường là /root). Tập tin này được gọi là xorg.conf.new.
xorgcfg
Công cụ này cũng tương tự như xf86cfg
xorg86config
Lệnh xorgconfig sử dụng một giao diện chế độ văn bản để nhắc cung cấp một cách tương tác các thông tin về chuột, bàn phím, vỉ video và màn hình hiển thị. Như với xf86config, bạn sẽ cần thông tin tần số ngang và dọc cho màn hình hiển thị của bạn. Bạn có thể chọn hầu hết các vỉ video từ một cơ sở dữ liệu của các vỉ video đã biết đến. Nếu không, bạn có thể cần thông tin vi mạch (chipset) và định thời gian cụ thể cho vỉ video của bạn.

Điều chỉnh X

Các màn hình CRT nhiều tần số quét (MultiSync) hiện đại thường có các nút điều khiển để thiết lập kích thước và vị trí của hình ảnh được hiển thị trên màn hình. Nếu màn hình của bạn không có khả năng này, bạn có thể sử dụng lệnh xvidtune để điều chỉnh kích thước và vị trí của màn hình X của bạn. Khi bạn chạy xvidtune từ một phiên làm việc của thiết bị đầu cuối X, bạn sẽ thấy một cửa sổ tương tự như Hình 1. Điều chỉnh các thiết lập và nhấn Test (Thử nghiệm) để xem cách chúng làm việc hoặc nhấn Apply (Áp dụng) để thay đổi các thiết lập. Nếu bạn nhấn vào Show (Hiển thị), các thiết lập hiện tại sẽ được in ra cửa sổ đầu cuối của bạn theo một định dạng mà bạn có thể sử dụng như một thiết lập dòng chế độ (Modeline) trong tập tin CF86Config hoặc xorg.conf của bạn.

Hình 1. Chạy xvidtune
Chạy xvidtune

Tham khảo trang hướng dẫn sử dụng để biết thêm thông tin.

Tổng quan về các phông chữ trong X

Trong nhiều năm, việc xử lý phông chữ trên các hệ thống X đã được hệ thống các phông chữ X11 lõi thực hiện. Các phiên bản gần đây của các máy chủ X của XFree86 (và X.Org) bao gồm hệ thống phông chữ Xft. Hệ thống các phông chữ lõi được thiết kế đầu tiên để hỗ trợ cho các phông chữ bitmap đơn sắc, nhưng nó đã được tăng cường theo thời gian. Hệ thống Xft được thiết kế để xử lý các yêu cầu hiện đại, bao gồm cả chống méo răng cưa và công nghệ chuyển một hình ảnh dưới dạng đồ họa vecto sang dạng điểm ảnh phụ (sub-pixel rasterization) và nó cho phép các ứng dụng có quyền kiểm soát rộng rãi hơn qua việc việc biểu hiện các dấu đánh thêm lên phông chữ (glyph – các dấu đánh thêm lên một phông chữ lõi làm cho nó trở thành biểu hiện của một ký tự khác đi, dẫn xuất từ ký tự lõi này, ví dụ các dấu thanh trên các nguyên âm hay dấu gạch ngang của chữ đ trong tiếng Việt - N.D.) Một khác biệt chính giữa hai hệ thống là các phông chữ lõi được xử lý trên trình chủ, trong khi các font Xft được các trình khách xử lý, trình khách sẽ gửi các ký tự đơn trong phông chữ cần thiết tới trình chủ.

Ban đầu X thường sử dụng các phông chữ kiểu 1 (Type 1 hoặc kiểu 1 Adobe), một đặc tả phông chữ được Adobe phát triển. Hệ thống Xft có thể xử lý các phông chữ này cũng như các kiểu phông chữ OpenType, TrueType, Speedo và CID.

Trình chủ phông chữ xfs

Với hệ thống phông chữ X11 lõi, trình chủ X nhận được các phông chữ và thông tin phông chữ từ một trình chủ phông chữ (font server). Trình chủ phông chữ X, xfs, thường chạy như một daemon và được bắt đầu lúc khởi động hệ thống, mặc dù có thể chạy nó như là một công việc bình thường. Bạn sẽ thường cài đặt một trình chủ phông chữ như một phần của tiến trình cài đặt X của bạn. Tuy nhiên, vì X là một giao thức mạng, nên có thể nhận được các phông chữ và thông tin phông chữ trên mạng hơn là từ máy cục bộ của bạn.

Trình chủ phông chữ X sử dụng một tập tin cấu hình, thông thường là /usr/X11R6/lib/X11/fs/config. Một tập tin cấu hình phông chữ ví dụ được hiển thị trong Liệt kê 3. Các tập tin cấu hình cũng có thể nằm trong hoặc liên kết đến /etc/X11/fs.

Liệt kê 3. Ví dụ /usr/X11R6/lib/X11/fs/config
# allow a max of 10 clients to connect to this font server
client-limit = 10 

# when a font server reaches its limit, start up a new one
clone-self = on 

# alternate font servers for clients to use 
#alternate-servers =  foo:7101,bar:7102 
# where to look for fonts 
# 
catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled, 
      /usr/X11R6/lib/X11/fonts/75dpi:unscaled,
      /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
      /usr/X11R6/lib/X11/fonts/misc,
      /usr/X11R6/lib/X11/fonts/Type1, 
      /usr/X11R6/lib/X11/fonts/Speedo,
      /usr/X11R6/lib/X11/fonts/cyrillic, 
      /usr/X11R6/lib/X11/fonts/TTF,
      /usr/share/fonts/default/Type1 
# in 12 points, decipoints 
default-point-size = 120 

# 100 x 100 and 75 x 75 
default-resolutions = 75,75,100,100 

# how to log errors 
use-syslog = on 

# don't listen to TCP ports by default for security reasons 
no-listen = tcp

Ví dụ này là ví dụ điển hình của một cài đặt máy trạm Linux, ở đây các trình chủ phông chữ không cung cấp các phông chữ qua các kết nối mạng TCP (no-listen = tcp).

Thư viện Xft

Thư viện Xft cung cấp các hàm cho phép các ứng dụng khách chọn các phông chữ dựa trên các tiêu chí mẫu và để tạo ra các dấu đánh thêm (glyph) để gửi đến trình chủ. Các mẫu tính đến các mục như họ phông chữ (Helvetica, Times và v.v), kích thước điểm, trọng lượng (thường, đậm, nghiêng) và nhiều đặc điểm khả dĩ khác nữa. Trong khi hệ thống phông chữ lõi cho phép một trình khách tìm kiếm phông chữ khớp đầu tiên có sẵn trên trình chủ, hệ thống Xft tìm phông chữ khớp tốt nhất về tất cả các tiêu chuẩn và sau đó gửi thông tin về dấu đánh thêm (glyph) đến trình chủ. Xft tương tác với FreeType để biểu hiện phông chữ và với các phần mở rộng trình biểu hiện X (X Render), giúp tăng tốc độ các hoạt động biểu hiện phông chữ. Người ta gắn kèm Xft vào các phiên bản hiện tại của cả hai XFree86 và X.Org.

Lưu ý: Nếu trình chủ X của bạn đang chạy trên một mạng và sử dụng một vỉ video không hỗ trợ các phần mở rộng của Trình biểu hiện X, bạn có thể muốn tắt tính năng chống méo răng cưa do hiệu năng mạng trong trường hợp này có thể là một vấn đề. Bạn có thể sử dụng lệnh xdpyinfo để kiểm tra trình chủ X của bạn. Liệt kê 4 cho thấy một phần của kết quả đầu ra từ lệnh xdpyinfo. Do kết quả đầu ra của lệnh xdpyinfo lớn, bạn có thể muốn sử dụng lệnh grep để lọc ra 'RENDER'.

Liệt kê 4. Kiểm tra các phần mở rộng RENDER bằng lệnh xdpyinfo
[ian@lyrebird ian]$ xdpyinfo 
name of display: :0.0
version number: 11.0 
vendor string: The XFree86 Project, Inc 
vendor release number: 40300000 
XFree86 version: 4.3.0 
maximum request size: 4194300 bytes
motion buffer size: 256 
bitmap unit, bit order, padding: 32, LSBFirst, 32 
image byte order: LSBFirst 
number of supported pixmap formats: 7 
supported pixmap formats: 
   depth 1, bits_per_pixel 1, scanline_pad 32 
   depth 4, bits_per_pixel 8, scanline_pad 32 
   depth 8, bits_per_pixel 8, scanline_pad 32 
   depth 15, bits_per_pixel 16, scanline_pad 32 
   depth 16, bits_per_pixel 16, scanline_pad 32
   depth 24, bits_per_pixel 32, scanline_pad 32 
   depth 32, bits_per_pixel 32, scanline_pad 32 
keycode range: minimum 8, maximum 255 
focus: window 0x2000011, revert to Parent 
number of extensions: 30 
   BIG-REQUESTS 
   DOUBLE-BUFFER 
   DPMS 
   Extended-Visual-Information 
   FontCache 
   GLX 
   LBX 
   MIT-SCREEN-SAVER 
   MIT-SHM
   MIT-SUNDRY-NONSTANDARD 
   RANDR 
   RECORD 
   RENDER 
   SECURITY 
   SGI-GLX 
   SHAPE 
   SYNC
   TOG-CUP 
   X-Resource 
   XC-APPGROUP 
   XC-MISC 
   XFree86-Bigfont 
   XFree86-DGA 
   XFree86-DRI
   XFree86-Misc 
   XFree86-VidModeExtension 
   XInputExtension 
   XKEYBOARD 
   XTEST 
   XVideo
default screen number: 0 
number of screens: 1

Việc sử dụng Xft thay cho hệ thống X lõi đòi hỏi các ứng dụng cũng phải thay đổi, vì vậy bạn có thể thấy rằng một số ứng dụng của bạn không tận dụng được lợi thế của việc Xft biểu hiện phông chữ tốt hơn. Tại thời điểm viết bài này, bộ công cụ Qt (thường sử dụng cho KDE) và bộ công cụ GTK + (thường sử dụng cho GNOME), cũng như Mozilla 1.2 và cao hơn, là những ví dụ của các ứng dụng có sử dụng Xft.

Cài đặt các phông chữ

Có hai phương pháp cài đặt các phông chữ, một cho Xft và một phương pháp phức tạp hơn cho các phông chữ X11 lõi.

Các phông chữ cho Xft

Xft sử dụng phông chữ nằm trong một tập hợp các thư mục phông chữ nổi tiếng cũng như các phông chữ được cài đặt trong thư mục con .fonts của thư mục nhà của người dùng. Các thư mục phông chữ nổi tiếng bao gồm các thư mục con của /usr/X11R6/lib/X11/lib/fonts được liệt kê trong mục danh mục (catalog) trong /usr/X11R6/lib/X11/fs/config. Các thư mục phông chữ khác có thể được xác định trong XF86Config hoặc xorg.conf, phần FontPath, tùy theo bạn đang sử dụng gói trình chủ X nào.

Đơn giản chỉ cần sao chép các tập tin phông chữ của bạn vào thư mục .fonts của người sử dụng hoặc vào một thư mục như /usr/local/share/fonts để sử dụng toàn hệ thống. Trình chủ phông chữ cần nhận ra các phông chữ mới và làm cho chúng sẵn sàng để sử dụng vào dịp tiếp theo. Bạn có thể kích hoạt cập nhật này bằng lệnh fc-cache.

Công nghệ phông chữ hiện tại trong X sử dụng các mô đun có thể nạp được để cung cấp sự hỗ trợ phông chữ cho các kiểu phông chữ khác nhau như trình bày trong Bảng 5.

Bảng 5. Các mô đun phông chữ của trình chủ X
Mô đunMô tả
bitmapCác phông chữ bitmap (.bdf, .pcf và .snf).
freetypeCác phông chữ TrueType (.ttf và .ttc), các phông chữ OpenType (.otf và .otc) và các phông chữ Type 1 (.pfa và .pfb).
type1Thay thế cho các phông chữ Type 1 (.pfa và .pfb) và CID.
xttThay thế cho mô đun TrueType (.ttf và .ttc).
speedoCác phông chữ Bitstream Speedo (.spd).

Nếu bạn đang gặp sự cố khi cài đặt và sử dụng một phông chữ, hãy kiểm tra nhật ký trình chủ (server log) (ví dụ, /var/log/XFree86.0.log) để chắc chắn rằng mô đun phù hợp đã được nạp. Các tên mô đun phân biệt chữ hoa, chữ thường. Bạn có thể sử dụng lệnh xset để hiển thị (và thiết lập) các thiết lập trình chủ X, bao gồm đường dẫn phông chữ và vị trí của các tập tin cấu hình và nhật ký, như minh họa trong Liệt kê 5.

Liệt kê 5. Hiển thị các cài đặt trình chủ X bằng lệnh xset
[ian@lyrebird ian]$ xset -display 0:0 -q 
Keyboard Control: 
   auto repeat: on key click percent: 0 LED mask: 00000000 
   auto repeat delay: 500 repeat rate: 30 
   auto repeating keys: 00ffffffdffffbbf
                        fadfffffffdfe5ff 
                        ffffffffffffffff 
                        ffffffffffffffff 
   bell percent: 50    bell pitch: 400     bell duration: 100 
Pointer Control: 
   acceleration: 2/1    threshold: 4 
Screen Saver: 
   prefer blanking: yes       allow exposures: yes 
   timeout: 0          cycle: 0 
Colors:
   default colormap: 0x20    BlackPixel: 0   WhitePixel: 16777215 
Font Path:
    /home/ian/.gnome2/share/cursor-fonts,unix/:7100,/home/ian/.gnome2/share/fonts
Bug Mode: compatibility mode is disabled 
DPMS (Energy Star): 
   Standby: 7200
   Suspend: 7200 Off: 14340 
   DPMS is Enabled 
   Monitor is Off 
Font cache: 
   hi-mark (KB): 5120 low-mark (KB): 3840 balance (%): 70 
File paths: 
   Config file: /etc/X11/XF86Config 
   Modules path: /usr/X11R6/lib/modules 
   Log file:  /var/log/XFree86.0.log

Nếu bạn cần kiểm soát hơn nữa hành vi của Xft, bạn có thể sử dụng hoặc tập tin cấu hình toàn hệ thống (/etc/fonts/fonts.conf) hoặc tập tin cấu hình của một người dùng cụ thể (.fonts.conf trong thư mục nhà của người dùng đó). Bạn có thể bật hoặc tắt chống méo răng cưa và kiểm soát việc biểu hiện điểm ảnh con (sub-pixel) (thường dùng trên màn hình LCD), và những việc khác nữa. Đây là những tập tin XML, vì vậy bạn cần phải đảm bảo rằng bạn duy trì XML đúng khuôn dạng khi bạn chỉnh sửa chúng. Tham khảo các trang hướng dẫn sử dụng (hoặc trang thông tin) về fonts-conf để biết thêm thông tin về các nội dung và định dạng của những tập tin này.

Các phông chữ X11 lõi

Nếu bạn có các tập tin theo định dạng phân phối Bitmap (.bdf) thì rất nên chuyển đổi chúng sang định dạng đã biên dịch di động (Portable Compiled Format) (.pcf) bằng lệnh bdftopcf và rồi nén chúng bằng gzip trước khi cài đặt chúng. Một khi đã thực hiện điều này, bạn có thể sao chép các phông chữ mới của bạn vào một thư mục, /usr/local/share/fonts/bitmap/ và sau đó chạy lệnh mkfontdir để tạo ra một thư mục phông chữ để cho trình chủ phông chữ sử dụng. Các bước này được minh họa trong Liệt kê 6.

Liệt kê 6. Cài đặt một phông chữ bitmap
[root@lyrebird root]# bdftopcf courier12.bdf -o courier12.pcf 
[root@lyrebird root]# gzip courier12.pcf 
[root@lyrebird root]# mkdir -p /usr/local/share/fonts/bitmap 
[root@lyrebird root]# cp *.pcf.gz /usr/local/share/fonts/bitmap/ 
[root@lyrebird root]# mkfontdir /usr/local/share/fonts/bitmap/ 
[root@lyrebird root]# ls /usr/local/share/fonts/bitmap/ 
courier12.pcf.gz fonts.dir

Lưu ý rằng lệnh mkfontdir tạo ra tập tin fonts.dir.

Khi cài đặt các phông chữ có thể mở rộng được, như là các phông chữ TrueType hoặc Type1, cần thêm một bước để tạo ra thông tin điều chỉnh. Sau khi bạn sao chép các tập tin phông chữ này vào thư mục đích, hãy chạy lệnh mkfontscale và sau đó là lệnh mkfontdir. Lệnh mkfontscale sẽ tạo ra một chỉ mục của các tập tin phông chữ có thể mở rộng được trong một tập tin gọi là fonts.scale.

Một khi bạn đã thiết lập thư mục phông chữ và thông tin điều chỉnh cho các phông chữ mới của bạn, bạn cần nói cho trình chủ biết tìm thấy chúng ở đâu, bằng cách đưa thêm thư mục mới vào đường dẫn phông chữ. Bạn có thể làm được điều này một cách tạm thời bằng cách sử dụng lệnh xset hoặc cố định bằng cách thêm một mục FontPath vào XF86Config hoặc xorg.conf. Để thêm thư mục phông chữ bitmap mới vào phía trước của đường dẫn phông chữ, sử dụng tùy chọn +fp của lệnh xset như trong Liệt kê 7.

Liệt kê 7. Cập nhật đường dẫn phông chữ (fontpath) bằng lệnh xset
[ian@lyrebird ian]$ xset +fp /usr/local/share/fonts/bitmap/ -display 0:0

Mặc dù không được chỉ ra ở đây, để thêm các phông chữ có thể mở rộng được trước các phông chữ dạng bitmap trong đường dẫn là ý tưởng tốt do điều này dẫn đến sự phối hợp phông chữ tốt hơn. Để thêm các thư mục vào phần sau của đường dẫn, hãy sử dụng tùy chọn fp+. Tương tự, việc sử dụng các tùy chọn -fpfp- tương ứng sẽ loại bỏ các thư mục phông chữ ra khỏi phía trước và phía sau của đường dẫn phông chữ.

Bạn có thể làm cho các sửa đổi đường dẫn phông chữ thành cố định bằng cách chỉnh sửa tập tin XF86Config hoặc xorg.conf. Bạn có thể thêm bao nhiêu dòng FontPath tùy nhu cầu của bạn trong phần Files, như trong Liệt kê 8.

Liệt kê 8. Cập nhật XF86Config hoặc xorg.conf
Section "Files" 
# RgbPath is the location of the RGB database. Note, this is the name of the 
# file minus the extension (like ".txt" or ".db"). There is normally 
# no need to change the default. 

# Multiple FontPath entries are allowed (they are concatenated together) 
# By default, Red Hat 6.0 and later now use a font server independent of 
# the X server to render fonts. 

       RgbPath "/usr/X11R6/lib/X11/rgb" 
       FontPath "unix/:7100" 
       FontPath "/usr/local/share/fonts/bitmap/" 
EndSection 
[

Để biết thông tin về các sửa đổi khác mà bạn có thể tạo ra cho các tập tin cấu hình X, xem các trang hướng dẫn sử dụng hoặc cho XF86Config hoặc xorg.conf, nếu phù hợp.


Thiết lập một trình quản lý hiển thị

Phần này trình bày các tư liệu cho chủ đề 1.110.2 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 3.

Trong phần này, bạn học cách:

  • Thiết lập và tùy chỉnh một trình quản lý hiển thị.
  • Thay đổi lời chào của trình quản lý hiển thị.
  • Thay đổi độ sâu màu (bitplanes) mặc định của trình quản lý hiển thị.
  • Cấu hình các trình quản lý hiển thị cho các trạm X sử dụng.

Các trình quản lý hiển thị được trình bày là XDM (trình quản lý hiển thị X), GDM (trình quản lý hiển thị GNOME) và KDM (trình quản lý hiển thị KDE).

Các trình quản lý hiển thị

Trong phần trước, nếu bạn cài đặt và cấu hình X trên một hệ thống chưa cài đặt X, bạn có thể nhận thấy rằng, để nhận được bất kỳ loại hiển thị đồ họa nào, ban đầu bạn phải đăng nhập vào một cửa sổ đầu cuối và chạy lệnh startx. Trong khi thao tác này thực hiện để hiển thị trên máy cục bộ, nó rất mất công. Hơn nữa, nó không làm việc với một thiết bị đầu cuối X ở xa.

Giải pháp là sử dụng một trình quản lý hiển thị để trình bày một màn hình đăng nhập đồ họa và xử lý xác thực. Sau khi một người dùng xác thực, trình quản lý hiển thị bắt đầu một phiên làm việc dành cho người sử dụng trên hệ thống tại nơi mà trình quản lý hiển thị đang chạy. Kết quả đầu ra đồ họa được hiển thị trên màn hình tại đó người dùng đã nhập các ủy quyền đăng nhập của mình. Đây có thể là một hiển thị cục bộ hay một hiển thị X kết nối qua mạng.

Cả hai XFree86 và X.Org đều có kèm trình quản lý hiển thị XDM. Hai trình quản lý hiển thị khác cũng rất phổ biến là KDE và GNOME. Trong phần này, bạn tìm hiểu làm thế nào để thiết lập và tùy chỉnh ba trình quản lý hiển thị này.

Tuy nhiên, để thiết lập một việc đăng nhập đồ họa, bạn cần phải hiểu việc khởi tạo hệ thống Linux. Bạn có thể tìm hiểu thêm về điều này trong bài hướng dẫn sắp tới, chuẩn bị cho kỳ thi LPI 102 (chủ đề 106): khởi động, khởi tạo, tắt máy và các mức chạy (runlevel) và trong Chuẩn bị cho kỳ thi LPI 201 (chủ đề 202): Khởi động hệ thống. Trong phần còn lại của phần này, bạn sẽ tìm hiểu đủ để khởi động hệ thống của bạn với một đăng nhập đồ họa, nhưng trọng tâm chính trong phần này là về thiết lập và tùy chỉnh trình quản lý hiển thị.

Trên các hệ thống như Red Hat® và SUSE, X thường bắt đầu ở runlevel 5. Các hệ thống Debian xử lý runlevel 2 đến 5 là tương đương nhau và mặc định để khởi động ở runlevel 2. Việc xác định runlevel mặc định được thực hiện trong /etc/inittab như trong Liệt kê 9.

Liệt kê 9. Thiết lập runlevel mặc định trong /etc/inittab.
# The default runlevel is defined here
id:5:initdefault:

Một dòng khác, như được hiển thị trong Liệt kê 10 (với một hệ thống SUSE) hoặc Liệt kê 11 (với một hệ thống Ubuntu), xác định kịch bản lệnh hoặc chương trình được chạy lần đầu.

Liệt kê 10. Kịch bản lệnh ban đầu cho hệ thống SUSE (hoặc Red Hat)
# First script to be executed, if not booting in emergency (-b) mode 
si::bootwait:/etc/init.d/boot
Liệt kê 11. Kịch bản lệnh ban đầu cho hệ thống Ubuntu (hoặc Debian)
# Boot-time system configuration/initialization script. 
# This is run first except when booting in emergency (-b) mode. 
si::sysinit:/etc/init.d/rcS

Các kịch bản lệnh khởi tạo (/etc/init.d/boot hoặc /etc/init.d/rcS) sau đó sẽ chạy các kịch bản lệnh khác. Cuối cùng, một loạt các kịch bản lệnh cho mức chạy (runlevel) được chọn sẽ được chạy. Đối với các ví dụ nêu trên, các kịch bản lệnh này có thể bao gồm /etc/rc2.d/S13gdm (Ubuntu) hoặc /etc/init.d/rc5.d/S16xdm (SUSE), mà cả hai đều là kịch bản lệnh để chạy một trình quản lý hiển thị. Bạn sẽ thấy rằng những thư mục rcn.d trong /etc/init.d thường chứa các liên kết biểu tượng đến các kịch bản lệnh trong /etc/init.d mà không bắt đầu bằng chữ S (hoặc K) và một số. S biểu thị rằng kịch bản lệnh nên được chạy khi runlevel được nhập vào và K biểu thị rằng kịch bản lệnh phải được chạy khi runlevel được kết thúc. Các số xác định một thứ tự 1 đến 99, theo đó các tập kịch bản lệnh cần được chạy lần lượt.

Gợi ý: Hãy tìm các kịch bản lệnh kết thúc bằng dm nếu bạn đang cố gắng xác định cách trình quản lý hiển thị được khởi động như thế nào.

Bạn có thể thấy rằng kịch bản lệnh để chạy một trình quản lý hiển thị, chẳng hạn như /etc/init.d/rc5.d/S16xdm, có thể là một kịch bản lệnh nhỏ có chứa logic bổ sung để xác định trình quản lý hiển thị nào sẽ thực sự được chạy. Vì vậy, trong khi nhiều hệ thống cho phép các trình quản lý này được kiểm soát thông qua cấu hình, bạn cũng có thể tìm hiểu trình quản lý hiển thị nào sẽ chạy bằng cách kiểm tra các tập tin khởi tạo của bạn.

Sẽ không có gì ngạc nhiên rằng bạn có thể kiểm soát liệu trình quản lý hiển thị của bạn có bắt đầu tại lúc khởi động hệ thống hay không chỉ đơn giản bằng cách tạo liên kết biểu tượng để bắt đầu và dừng nó trong thư mục rcn.d thích hợp. Hơn nữa, nếu bạn cần phải dừng lại hoặc bắt đầu chạy trình quản lý hiển thị, bạn có thể sử dụng trực tiếp kịch bản lệnh từ /etc/init.d như trong Liệt kê 12.

Liệt kê 12. Dừng và bắt đầu chạy một trình quản lý hiển thị
root@pinguino:~# /etc/init.d/gdm stop 
  * Stopping GNOME Display Manager... [ ok ] 
root@pinguino:~# /etc/init.d/gdm start 
  * Starting GNOME Display Manager... [ ok ]

Bây giờ bạn biết cách kiểm soát việc bắt đầu và dừng lại một trình quản lý hiển thị, hãy xem xét việc cấu hình cho mỗi một trong ba trình quản lý hiển thị của chúng ta.

XDM

Trình quản lý hiển thị XDM có trong các gói XFree86 và X.Org. Theo tiêu chuẩn phân cấp hệ thống tập tin (FHS), các tập tin cấu hình nên được đặt trong thư mục /etc/X11/xdm. Tập tin cấu hình chính là /etc/X11/xdm/xdm-config. Tập tin này có chứa vị trí của các tập tin khác được XDM sử dụng, thông tin về các yêu cầu cấp phép, các tên của các kịch bản lệnh chạy để thực hiện các nhiệm vụ khác nhau cho một người sử dụng và một số thông tin cấu hình khác.

Tập tin Xservers xác định một (hoặc các) màn hình hiển thị cục bộ nào được XDM quản lý. Nó thường chứa chỉ một dòng như trong Liệt kê 13.

Liệt kê 13. Ví dụ tập tin Xservers
:0 local /usr/X11R6/bin/X :0 vt07

Liệt kê 13 biểu thị rằng X nên được chạy trên thiết bị đầu cuối ảo 7. Hầu hết các hệ thống hỗ trợ việc sử dụng tổ hợp phím Ctrl-Alt-F1 đến Ctrl-Alt-F7 để chuyển đổi giữa các đầu cuối ảo, ở đây vt01 đến vt06 là các đầu cuối chế độ văn bản và vt07 là đầu cuối X.

Nếu bạn muốn hỗ trợ các đầu cuối X từ xa, thì bạn cần có một tập tin Xaccess. Tập tin này kiểm soát cách XDM truyền thông với các đầu cuối có hỗ trợ cho Giao thức điều khiển trình quản lý hiển thị X (X Display Manager Control Protocol - XDCMP). Các đầu cuối không hỗ trợ giao thức này được định nghĩa trong tập tin Xservers. XDCMP sử dụng cổng UDP quen biết là 177. Vì lý do an ninh, bạn nên hạn chế sử dụng XDCMP chỉ trong một mạng nội bộ đáng tin cậy có tường lửa bảo vệ phù hợp.

Bạn có thể tùy chỉnh cách XDM hoạt động bằng cách cập nhật các kịch bản lệnh trong /etc/X11/xdm. Đặc biệt, kịch bản lệnh Xsetup (hoặc Xsetup_0) cho phép bạn tùy chỉnh lời chào. Hình 2 cho thấy một lời chào XDM đơn giản kèm với một đồng hồ hiện số.

Hình 2. Một lời chào XDM đã thay đổi
Một lời chào XDM đã thay đổi

Mã nguồn cho tập tin Xsetup_0 đã sửa đổi được hiển thị trong Liệt kê 14.

Liệt kê 14. Ví dụ tập tin Xsetup_0
#!/bin/sh 
xclock -geometry 80x80 -bg wheat& 
xconsole -geometry 480x130-0-0 -daemon -notify -verbose -fn fixed -exitOnFail

Lời chào được hiển thị trong Hình 2 đến từ một hệ thống sử dụng một độ phân giải màn hình 640x480 điểm ảnh (pixel) với 256 màu. XDM sử dụng độ phân giải mặc định từ tập tin XF86Config hoặc xorg.conf của bạn. Để thay đổi độ phân giải màn hình toàn hệ thống mặc định của bạn, bạn có thể chỉnh sửa tập tin này hoặc sử dụng các tiện ích có thể có đi kèm với hệ thống của bạn. Liệt kê 15 cho thấy phần Screen (màn hình) của một tập tin XF86Config. Lưu ý rằng DefaultDepth (Độ sâu mặc định) là 16, do đó trình chủ X sẽ cố gắng để chạy màn hình ở độ phân giải đầu tiên có thể được xác định cho độ sâu này, trong trường hợp này là độ phân giải 1024x768.

Liệt kê 15. Cấu hình độ phân giải màn hình
Section "Screen" 
  DefaultDepth 16 
  SubSection "Display" 
     Depth 15 
     Modes "1280x1024" "1024x768" "800x600" "640x480" 
  EndSubSection 
  SubSection "Display" 
     Depth 16 
     Modes "1024x768" "800x600" "640x480" 
  EndSubSection 
  SubSection "Display" 
     Depth 24 
     Modes "1280x1024" "1024x768" "800x600" "640x480"
  EndSubSection 
  SubSection "Display" 
     Depth 32 
     Modes "1280x1024" "1024x768" "800x600" "640x480" 
  EndSubSection 
  SubSection "Display" 
     Depth 8 
     Modes "1280x1024" "1024x768" "800x600" "640x480" 
  EndSubSection 
  Device "Device[0]" 
  Identifier "Screen[0]" 
  Monitor "Monitor[0]" 
EndSection

Lưu ý rằng Depth (độ sâu) đề cập đến số các bit tạo nên mỗi điểm ảnh. Bạn cũng có thể thấy số này được gọi là số bit cho mỗi điểm ảnh hoặc độ sâu màu (bitplanes). Như vậy, khi sử dụng độ sâu màu 8 hoặc 8 bit cho mỗi màu sẽ cho phép lên đến 256 màu, trong khi một độ sâu màu là 16 cho phép lên đến 65536 màu. Với vỉ (card) đồ họa ngày nay, các độ sâu mức 24 và 32 hiện đang phổ biến.

Bạn có thể kiểm tra độ phân giải màn hình bằng cách sử dụng lệnh xwininfo với tùy chọn -root để xem các đặc tính của trình chủ X đang chạy của bạn, như trong Liệt kê 16.

Liệt kê 16. Kiểm tra độ phân giải màn hình
ian@lyrebird:~> xwininfo -display 0:0 -root 

xwininfo: Window id: 0x36 (the root window) (has no name) 

  Absolute upper-left X: 0
  Absolute upper-left Y: 0 
  Relative upper-left X: 0 
  Relative upper-left Y: 0
  Width: 1024 
  Height: 768 
  Depth: 16 
  Visual Class: TrueColor 
  Border width: 0 
  Class: InputOutput 
  Colormap: 0x20 (installed) 
  Bit Gravity State: NorthWestGravity
  Window Gravity State: NorthWestGravity 
  Backing Store State: NotUseful 
  Save Under State: no 
  Map State: IsViewable 
  Override Redirect State: no 
  Corners: +0+0 -0+0 -0-0 +0-0 
  -geometry 1024x768+0+0

KDM

KDM là trình quản lý màn hình nền (K Desktop Manager) cho môi trường màn hình nền K (KDE). KDE phiên bản 3 sử dụng một tập tin cấu hình kdmrc, một sự thay đổi so với các phiên bản trước đó, thường sử dụng thông tin cấu hình dựa trên các tập tin cấu hình xdm. Tập tin này nằm ở thư mục $KDEDIR/share/config/kdm/, trong đó $ KDEDIR có thể là /etc/kde3/kdm/ hoặc là ở đâu đó khác. Ví dụ, trên một hệ thống SLES8 SUSE, tập tin này nằm trong etc/opt/kde3/share/config/kdm.

Liệt kê 17. Tập tin cấu hình KDM - kdmrc
[Desktop0] 
BackgroundMode=VerticalGradient
Color1=205,205,205 
Color2=129,129,129 
MultiWallpaperMode=NoMulti
Wallpaper=UnitedLinux-background.jpeg 
WallpaperMode=Scaled 

[X-*-Greeter]
GreetString=UnitedLinux 1.0 (%h) 
EchoMode=OneStar 
HiddenUsers=nobody,
BackgroundCfg=/etc/opt/kde3/share/config/kdm/kdmrc 
MinShowUID=500
SessionTypes=kde,gnome,twm,failsafe 

[General] 
PidFile=/var/run/kdm.pid
Xservers=/etc/opt/kde3/share/config/kdm/Xservers 

[Shutdown] 
HaltCmd=/sbin/halt
LiloCmd=/sbin/lilo 
LiloMap=/boot/map 
RebootCmd=/sbin/reboot 
UseLilo=false
                    
[X-*-Core] 
Reset=/etc/X11/xdm/Xreset 
Session=/etc/X11/xdm/Xsession
Setup=/opt/kde3/share/config/kdm/Xsetup 
Startup=/etc/X11/xdm/Xstartup
AllowShutdown=Root 

[Xdmcp] 
Willing=/etc/X11/xdm/Xwilling
Xaccess=/etc/X11/xdm/Xaccess

Nhiều phần có chứa cùng một kiểu thông tin cấu hình như đối với XDM, nhưng có một số sự khác biệt. Ví dụ, trường SessionTypes cho phép KDM bắt đầu bất kỳ một trong các kiểu phiên làm việc khác nhau; các lệnh khác cho phép KDM tắt hoặc khởi động lại hệ thống.

Bạn có thể cấu hình KDM bằng cách chỉnh sửa tập tin kdmrc. Bạn cũng có thể thay đổi nhiều thiết lập trình quản lý đăng nhập bằng cách sử dụng trung tâm điều khiển KDE (kcontrol) như trong Hình 3.

Hình 3. Sửa đổi cấu hình KDM với kcontrol
Sửa đổi cấu hình KDM với kcontrol

Sổ tay hướng dẫn KDM (xem Tài nguyên) có nhiều thông tin cấu hình KDM.

GDM

GDM là trình quản lý màn hình nền GNOME (GNOME Desktop Manager) cho môi trường màn hình nền GNOME. Trình quản lý màn hình nền này không dựa trên XDM, mà đã được viết từ đầu. GDM sử dụng một tập tin cấu hình gdm.conf, thông thường nằm trong thư mục etc/X11/gdm/. Liệt kê 18 cho thấy một phần của một tập tin gdm.conf.

Liệt kê 18. Một phần tập tin cấu hình GDM - gdm.conf
# You should probably never change this value unless you have a weird setup 
PidFile=/var/run/gdm.pid 
# Note that a post login script is run before a PreSession script. 
# It is run after the login is successful and before any setup is 
# run on behalf of the user
PostLoginScriptDir=/etc/X11/gdm/PostLogin/
PreSessionScriptDir=/etc/X11/gdm/PreSession/
PostSessionScriptDir=/etc/X11/gdm/PostSession/ DisplayInitDir=/etc/X11/gdm/Init
  ... 
# Probably should not touch the below this is the standard setup 
ServAuthDir=/var/gdm 
# This is our standard startup script. A bit different from a normal 
# X session, but it shares a lot of stuff with that. See the provided 
# default for more information. 
BaseXsession=/etc/X11/xdm/Xsession 
# This is a directory where .desktop files describing the sessions live 
# It is really a PATH style variable since 2.4.4.2 to allow actual 
# interoperability with KDM. Note that <sysconfdir>/dm/Sessions is there 
# for backwards compatibility reasons with 2.4.4.x
#SessionDesktopDir=/etc/X11/sessions/:/etc/X11/dm/Sessions/:/usr/share/gdm/Buil\
tInSessions/:/usr/share/xsessions/ 
# This is the default .desktop session. One of the ones in SessionDesktopDir 
DefaultSession=default.desktop

Một lần nữa, bạn sẽ thấy một số điểm tương đồng trong kiểu thông tin cấu hình được sử dụng cho GDM, KDM và XDM, mặc dù gdm.conf là một tập tin lớn hơn có nhiều tùy chọn hơn.

Bạn có thể cấu hình GDM bằng cách chỉnh sửa tập tin gdm.conf. Bạn cũng có thể thay đổi nhiều thiết lập bằng cách sử dụng lệnh gdmsetup. Hình 4 cho thấy một trình chào mừng đồ họa thay thế có sẵn trên một hệ thống Fedora.

Hình 4. Sửa đổi cấu hình GDM với gdmsetup
Sửa đổi cấu hình GDM với gdmsetup

Hướng dẫn sử dụng tham khảo của trình quản lý hiển thị GNOME (có sẵn từ sự trợ giúp của gdmsetup hoặc xem Tài nguyên) chứa nhiều thông tin cấu hình GDM.


Tùy chỉnh một trình quản lý cửa sổ

Phần này trình bày các tư liệu cho chủ đề 1.110.4 cho kỳ thi quản trị trình độ sơ cấp (LPIC-1) 101. Chủ đề này có trọng số 5.

Trong phần này, bạn tìm hiểu cách để:

  • Tùy chỉnh một môi trường màn hình nền toàn hệ thống hoặc trình quản lý cửa sổ.
  • Tùy chỉnh các trình đơn của trình quản lý cửa sổ và trình đơn của bàn điều khiển màn hình nền.
  • Cấu hình một đầu cuối X.
  • Kiểm tra và giải quyết các vấn đề phụ thuộc thư viện cho các ứng dụng X.
  • Xuất khẩu một màn hình hiển thị X.

Các trình quản lý cửa sổ

Trong phần trước, bạn đã học về các trình quản lý hiển thị và cách thiết lập chúng. Bạn cũng đã tìm hiểu trong hướng dẫn này là trong khi X là một bộ công cụ cho phép các ứng dụng tạo ra các cửa sổ đồ họa, nó không xác định một giao diện người dùng. Trong phần này, bạn tìm hiểu thêm về các giao diện người dùng và cách cấu hình những gì xảy ra sau khi bạn có một phiên làm việc X khởi động và chạy.

Bạn có thể tưởng tượng rằng, không cần bất kỳ đặc tả giao diện người dùng nào, sự sáng tạo của nhà phát triển có thể đưa đến nhiều phong cách khác nhau của các cửa sổ, tất cả chúng tranh đua chiếm chỗ trên màn hình của bạn, tất cả chúng dùng các tổ hợp phím khác nhau, các hoạt động chuột khác nhau và các phong cách khác nhau cho những thứ như là các nút nhấn, các hộp thoại, và v.v. Để mang lại trật tự cho đống hỗn độn này, các bộ công cụ mức cao hơn được phát triển. Lần lượt các bộ công cụ này đã tạo ra các trình quản lý cửa sổ, chẳng hạn như twm, fvwm, và fvwm2 và cuối cùng tới các màn hình nền như KDE và GNOME.

Các màn hình nền cung cấp cho người dùng một trải nghiệm nhất quán nhưng cũng tiêu tốn tài nguyên CPU và bộ nhớ đáng kể. Trước khi các máy tính đã có sức mạnh để hỗ trợ những thứ như màn hình nền KDE hay GNOME, trình quản lý cửa sổ đã rất phổ biến và nhiều người dùng vẫn thích chúng vì sự gọn nhẹ và đáp ứng nhanh của chúng.

Nếu bạn vừa mới cài đặt X và bạn gõ vào lệnh startx, thì bạn sẽ thấy một cái gì đó hiển thị như Hình 5.

Hình 5. Chạy twm với lệnh startx
Sửa đổi cấu hình GDM với gdmsetup

Đây là trình quản lý cửa sổ twm, có hiển thị trình đơn nhận được khi nhấn nút chuột 1 (thường là nút chuột trái của những người dùng thuận tay phải) trên nền sau. Bạn sẽ thấy ba cửa sổ đầu cuối và một đồng hồ kim, nhưng không có các thanh tác vụ, các trình khởi chạy hoặc các đồ dùng riêng của màn hình nền khác nào.

Lệnh startx thực sự là một lệnh ngoại vi cho xinit, nó bắt đầu tiến trình của trình chủ X và một số các ứng dụng khách. Nó thường nằm trong thư mục /usr/X11R6/bin, giống như là xinit và nhiều tiện ích X khác. Các ứng dụng X có thể nhận các thiết lập từ một cơ sở dữ liệu tài nguyên X cũng như ngay từ một dòng lệnh. Bảng 6 tóm tắt các tên và mục đích của mỗi một trong các tập tin cấu hình được sử dụng bởi hoặc lệnh startx hoặc lệnh xinit. Lưu ý rằng một số hoặc tất cả những tập tin này có thể không có mặt trên một hệ thống cụ thể hoặc thư mục nhà của người sử dụng.

Bảng 6. Các tập tin cấu hình cho lệnh startx và lệnh xinit
Tập tinMô tả
$HOME/.xinitrcKịch bản lệnh có thể thi hành được do người dùng định nghĩa để kết hợp các tập tin tài nguyên và bắt đầu các ứng dụng khách.
$HOME/.xserverrcKịch bản lệnh có thể thi hành được do người dùng định nghĩa, tạo ra sự ghi đè lên cấu hình trình chủ X mặc định.
/usr/X11R6/lib/X11/xinit/xinitrcKịch bản lệnh có thể thi hành được mặc định của hệ thống để kết hợp các tập tin tài nguyên và bắt đầu các ứng dụng khách.
/usr/X11R6/lib/X11/xinit/xserverrcKịch bản lệnh có thể thi hành được mặc định của hệ thống tạo ra sự ghi đè lên cấu hình trình chủ X mặc định.
$HOME/.XresourcesTập tin do người dùng định nghĩa mô tả tài nguyên cho các ứng dụng X.
$HOME/.XmodmapTập tin do người dùng định nghĩa xác định các thiết lập bàn phím và chuột.
/usr/X11R6/lib/X11/xinit/.XresourcesTập tin do người dùng định nghĩa xác định các thiết lập bàn phím và chuột.
/usr/X11R6/lib/X11/xinit/.XmodmapTập tin mặc định hệ thống định nghĩa các thiết lập bàn phím và chuột.

Lưu ý cẩn thận rằng tập tin hệ thống xserverrc và xinitrc không có dấu chấm đứng đầu, trong khi tất cả các tập tin hệ thống khác có dấu chấm đứng đầu.

Mỗi cửa sổ trên màn hình, và quả thực mỗi widget trên màn hình, có các thuộc tính như chiều cao, chiều rộng và vị trí (hình học), các màu hoặc hình ảnh nền trước và nền sau, văn bản tiêu đề và màu sắc và v.v. Đối với một ứng dụng khách mới, hầu hết các giá trị này có thể được cung cấp trên dòng lệnh. Do có nhiều thuộc tính, nên có nhiều mặc định sẽ dễ dàng hơn. Các mặc định như vậy được lưu trữ trong một cơ sở dữ liệu tài nguyên, được xây dựng từ các tập tin tài nguyên bằng cách sử dụng lệnh xrdb.

Liệt kê 19 cho thấy tập tin mặc định xinit được cung cấp với XFree86 4.5.0..

Liệt kê 19. Ví dụ tập tin xinit - / usr/X11R6/lib/X11/xinit/xinitrc
#!/bin/sh 
# $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap 
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap 

# merge in defaults and keymaps 
if [ -f $sysresources ]; then 
  xrdb -merge $sysresources 
fi 
if [ -f $sysmodmap ]; then
  xmodmap $sysmodmap 
fi 
if [ -f $userresources ]; then 
  xrdb -merge $userresources
fi 
if [ -f $usermodmap ]; then 
  xmodmap $usermodmap 
fi 

# start some nice programs
twm & 
xclock -geometry 50x50-1+1 & 
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 & 
exec xterm -geometry 80x66+0+0 -name login

Lưu ý rằng lệnh xrdb được sử dụng để kết hợp các tài nguyên và lệnh xmodmap được sử dụng để cập nhật các định nghĩa bàn phím và chuột. Cuối cùng, một vài chương trình được khởi động trong nền sau với một chương trình cuối cùng được bắt đầu trong nền trước bằng lệnh exec, nó kết thúc kịch bản lệnh hiện tại (xinitrc) và chuyển điều khiển đến cửa sổ xterm với dạng hình học 80x66+0+0. Đây là cửa sổ đăng nhập và việc chấm dứt nó sẽ kết thúc trình chủ X. Phải có một ứng dụng như vậy, mặc dù một số người thích trình quản lý cửa sổ (twm trong ví dụ này) đảm nhiệm vai trò này. Tất cả các ứng dụng khác nên được bắt đầu ở nền sau để cho kịch bản lệnh có thể hoàn thành.

Hai giá trị đầu tiên trong đặc tả hình học định nghĩa kích thước của cửa sổ. Đối với một đồng hồ, đây là giá trị tính theo điểm ảnh, trong khi đối với các cửa sổ xterm, đó là giá trí tính theo số dòng và số cột. Nếu có mặt, hai các giá trị tiếp theo định nghĩa vị trí của cửa sổ. Nếu giá trị đầu tiên là dương, cửa sổ được đặt tương ứng với cạnh bên trái của màn hình, trong khi một giá trị âm sẽ làm cho vị trí tương đối so với cạnh phải. Tương tự, các giá trị dương và âm thứ hai tương ứng đề cập đến đỉnh và đáy của màn hình.

Giả sử bạn muốn đồng hồ của bạn sẽ lớn hơn với một mặt có màu khác đi và được đặt ở dưới đáy bên phải của màn hình thay vì ở đỉnh trên bên phải. Nếu bạn muốn điều này này chỉ cho một người sử dụng, hãy sao chép tập tin trên vào thư mục nhà của người dùng như .xinitrc (nhớ dấu chấm) và chỉnh sửa đặc tả đồng hồ như trong Liệt kê 20. Bạn có thể tìm thấy tất cả các tên màu trong tập tin rgb.txt trong cây thư mục cài đặt X của bạn (ví dụ, /usr/X11R6/lib/X11/rgb.txt).

Liệt kê 20. Thay đổi khởi động xclock trong xinitrc
xclock -background mistyrose -geometry 100x100-1-1 &

Nếu bạn muốn cập nhật các giá trị mặc định cho toàn bộ việc cài đặt, bạn nên cập nhật các tập tin /usr/X11R6/lib/X11/xinit/.Xresources và /usr/X11R6/lib/X11/xinit/.Xmodmap thay vì các phiên bản dấu chấm cho những người dùng cá nhân.

Một số công cụ có thể giúp bạn tùy chỉnh các cửa sổ và các cách gõ phím.

xrdb
Kết hợp các tài nguyên từ một tập tin tài nguyên vào trong cơ sở dữ liệu tài nguyên X cho trình chủ X đang chạy. Theo mặc định nó chuyển các tập tin tài nguyên nguồn thông qua một trình biên dịch C++. Hãy chỉ rõ tùy chọn -nocpp nếu bạn chưa cài đặt một trình biên dịch.
xmodmap
Thiết lập các kết buộc bàn phím và chuột. Ví dụ, bạn có thể chuyển đổi các thiết lập cho cách sử dụng chuột thuận trái tay, hoặc thiết lập phím xóa (delete) và phím lùi (backspace) để làm việc theo cách quen thuộc của bạn.
xwininfo
Cho bạn biết thông tin về một cửa sổ, bao gồm thông tin hình học.
editres
Cho phép bạn tùy chỉnh các tài nguyên cho các cửa sổ trên màn hình của bạn, xem các thay đổi và ghi lưu chúng trong một tập tin mà bạn có thể sử dụng sau này với xrdb.
xev
Bắt đầu một cửa sổ và bắt giữ các sự kiện X được hiển thị trong cửa sổ xterm ban đầu. Sử dụng công cụ này để giúp xác định các mã số thích hợp để sử dụng khi tùy chỉnh các bàn phím hoặc kiểm tra các sự kiện chuột.

Sử dụng trang hướng dẫn sử dụng để tìm hiểu thêm về mỗi một trong các lệnh này.

Hình 6 cho thấy một màn hình đang bận rộn với một số trong các lệnh này đang chạy.

  • Cửa sổ đầu cuối phía trên bên trái (cửa sổ đăng nhập) đang sử dụng xwd để chụp toàn bộ màn hình vào một tập tin.
  • Cửa sổ đang đè lên nó đang chạy editres để sửa đổi các tài nguyên cho cửa sổ đồng hồ.
  • Cửa sổ nhỏ ở trung tâm đang chạy xev và kết quả đầu ra sẽ đưa tới cửa sổ đầu cuối phía dưới. Cửa sổ bên phải cho thấy kết quả đầu ra của xwininfo cho cửa sổ gốc (toàn bộ màn hình).
  • Đồng hồ đã tùy chỉnh với mặt đồng hồ có màu hồng nhạt đang chạy ở dưới đáy bên phải của màn hình.
Hình 6. Thông tin và cấu hình cửa sổ
Thông tin và cấu hình cửa sổ

Bên cạnh chính các cửa sổ này, trình quản lý cửa sổ cũng cho phép tuỳ chỉnh. Ví dụ, trình đơn đã được hiển thị trong Hình 5 được cấu hình trong một tập tin tuỳ chỉnh twm. Mặc định hệ thống trong cây thư mục cài đặt X (/usr/X11R6/lib/X11/twm/system.twmrc) và những người dùng cá nhân có thể có một tập tin .twmrc. Nếu một người dùng đã có nhiều hiển thị, thì có thể có các tập tin (như .twmrc.0 hoặc .twmrc.1) cho mỗi số hiển thị. Liệt kê 21 cho thấy một phần của tập tin system.twmrc, định nghĩa trình đơn được hiển thị trong Hình 5.

Liệt kê 21. Cấu hình trình đơn trong twm
menu "defops" 
{ 
"Twm" f.title 
"Iconify" f.iconify 
"Resize" f.resize 
"Move" f.move 
"Raise" f.raise 
"Lower" f.lower 
"" f.nop 
"Focus" f.focus
"Unfocus" f.unfocus 
"Show Iconmgr" f.showiconmgr 
"Hide Iconmgr" f.hideiconmgr 
"" f.nop 
"Xterm" f.exec 
"exec xterm &" 
"" f.nop 
"Kill" f.destroy 
"Delete" f.delete 
"" f.nop 
"Restart" f.restart 
"Exit" f.quit 
}

Xem trang hướng dẫn sử dụng cho twm hoặc trình quản lý cửa sổ ưa thích của bạn để biết thêm thông tin.

Các màn hình nền

Nếu bạn đang sử dụng một trình quản lý hiển thị hoặc màn hình nền, bạn sẽ thấy rằng chúng cũng có thể được cấu hình. Thật vậy, bạn đã nhìn thấy tập tin Xsetup_0 cho XDM trong phần trước. Như với cấu hình của trình quản lý cửa sổ mà bạn vừa thấy, cấu hình màn hình nền có thể được thực hiện cho toàn hệ thống hoặc cho mỗi người dùng.

Tuỳ chỉnh GNOME

GNOME được cấu hình chủ yếu bằng cách sử dụng các tập tin XML. Các mặc định hệ thống được tìm thấy trong các thư mục trong hệ thống tập tin /etc, như /gconf/etc, /etc/gnome và /etc/gnome-vfs2..0, cùng với các thư mục khác cho các ứng dụng GNOME cụ thể. Cấu hình của người dùng thường được tìm thấy trong các thư mục con của thư mục nhà bắt đầu bằng .g. Liệt kê 22 cho thấy một số các vị trí có thể cho thông tin cấu hình GNOME.

Liệt kê 22. Các vị trí cấu hình GNOME
[ian@lyrebird ian]$ ls -d /etc/g[cn]* 
/etc/gconf /etc/gnome /etc/gnome-vfs-2.0 /etc/gnome-vfs-mime-magic 
[ian@lyrebird ian]$ find . -maxdepth 1 -type d -name ".g[nc]*" 
./.gnome2 
./.gconfd 
./.gconf 
./.gnome 
./.gnome2_private
./.gnome-desktop 
./.gnome_private

Thay cho các trang hướng dẫn sử dụng phong phú, GNOME có hướng dẫn sử dụng trực tuyến; bạn có thể truy cập hướng dẫn sử dụng từ lệnh gnome-help hoặc từ một mục trình đơn như Desktop > Help. Vào lúc viết bài này, hướng dẫn sử dụng có ba phần chính: Màn hình nền, Các ứng dụng và Tài liệu khác. Mục lục cho một phiên bản gần đây của Desktop Help (Trợ giúp màn hình nền) được hiển thị trong Hình 7.

Hình 7. Thông tin và cấu hình cửa sổ
Thông tin và cấu hình cửa sổ

Bạn sẽ tìm thấy thông tin về các công cụ cấu hình trong Hướng dẫn quản trị hệ thống trong phần Desktop và cũng trong Hướng dẫn trình soạn thảo cấu hình (Configuration Editor Manual) trong chủ đề các ứng dụng trong phần Màn hình nền (Desktop).

Bạn có thể khởi chạy trình soạn thảo cấu hình đồ họa bằng cách sử dụng lệnh gconf-editor hoặc bằng cách lựa chọn Trình soạn thảo cấu hình từ trình đơn Applications > System Tools (Các ứng dụng> Các công cụ hệ thống). Cấu hình cho ứng dụng với đầu cuối gnome được thể hiện trong Hình 8.

Hình 8. Thông tin và cấu hình cửa sổ
Thông tin và cấu hình cửa sổ

Ngoài các công cụ đồ họa, cũng có một chương trình dòng lệnh gconftool-2 cho việc thăm dò và cập nhật thông tin cấu hình GNOME. Xem Hướng dẫn quản trị hệ thống đã đề cập ở trên để biết thêm chi tiết.

Tùy chỉnh KDE

KDE được cấu hình bằng cách sử dụng các tập tin văn bản thuần với mã hóa UTF-8 cho các ký tự không phải ASCII. Như với GNOME, có thể có nhiều tập tin cấu hình khác nhau. Nếu nhiều tập tin có tên giống nhau cùng tồn tại trong các phần khác nhau của cây cấu hình, thì các giá trị từ các tập tin này được kết hợp lại. Các giá trị cho hệ thống nằm trong cây $KDEDIR/share/config, ở đây $KDEDIR có thể là /etc/kde3/kdm/ hoặc có lẽ ở đâu đó khác. Ví dụ, trên một hệ thống SLES8 SUSE, vị trí đó là /etc/opt/kde3/share/config. Các tùy chỉnh của người dùng cụ thể được đặt trong cây .kde/share trong thư mục nhà của người dùng.

Các tập tin cấu hình có một hoặc nhiều tên nhóm được bao bọc trong dấu ngoặc vuông, theo sau là các cặp khóa và giá trị. Khóa có thể chứa khoảng trống và được tách khỏi giá trị bằng một dấu bằng. Tập tin cấu hình cho trình duyệt konqueror được hiển thị trong Liệt kê 23.

Liệt kê 23. Tập tin cấu hình KDE cho trình duyệt konqueror
[HTML Settings] 

[Java/JavaScript Settings]
ECMADomainSettings=localhost::Accept 
JavaPath=/usr/lib/java2/jre/bin/java
EnableJava=true 
EnableJavaScript=true 

[EmbedSettings] 
embed-text=true
embed-audio=false 
embed-video=false 

[Reusing] 
MaxPreloadCount=1
PreloadOnStartup=true

Các tập tin cấu hình có thể được chỉnh sửa bằng tay. Hầu hết các hệ thống sẽ bao gồm một công cụ chỉnh sửa đồ họa, chẳng hạn như KConfigEditor hoặc một công cụ tùy chỉnh cho bản phân phối, chẳng hạn như trung tâm điều khiển SUSE (SUSE Control Center).

Các xterm khác nhau

Chương trình xterm bình thường được cài đặt với các màn hình nền đồ họa có nhiều chức năng, nhưng cũng sử dụng khá nhiều tài nguyên hệ thống. Nếu bạn đang chạy một hệ thống có nhiều trình khách đầu cuối X đang chạy trên một bộ xử lý duy nhất, bạn có thể muốn cân nhắc việc sử dụng một đầu cuối trọng lượng nhẹ hơn. Hai đầu cuối như vậy là rxvtaterm (được xây dựng trên đỉnh của rxvt). Chúng là các trình đua phỏng (emulator) VT102, thường không được được cài đặt theo mặc định, vì vậy bạn sẽ cần phải cài đặt chúng.

Các thư viện cần thiết

Đến bây giờ bạn có thể nhận ra rằng có nhiều thư viện và các bộ công cụ khác nhau được sử dụng cho các ứng dụng X. Vì vậy làm thế nào để đảm bảo rằng bạn có các thư viện đúng? Lệnh ldd liệt kê các phụ thuộc thư viện cho bất kỳ ứng dụng nào. Trong dạng đơn giản nhất của mình, lệnh này nhận đầu vào là tên của một tập tin thi hành được và in ra các thư viện cần thiết để chạy chương trình. Lưu ý rằng lệnh ldd không tự động tìm kiếm PATH của bạn, vì vậy bạn thường cần phải cung cấp cả đường dẫn (tương đối hoặc tuyệt đối) cũng như tên chương trình, trừ khi chương trình ở trong thư mục hiện tại. Liệt kê 24 cho thấy các phụ thuộc thư viện cho ba trình mô phỏng đầu cuối mà bạn đã thấy ở trên. Số lượng của các phụ thuộc thư viện cho từng trình mô phỏng cung cấp cho bạn một đầu mối về các yêu cầu hệ thống tương đối của mỗi trình mô phỏng.

Liệt kê 24. Các phụ thuộc thư viện cho xterm, aterm và rxvt
root@pinguino:~# ldd `which xterm` 
      linux-gate.so.1 => (0xffffe000) 
      libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0xb7fab000)
      libfontconfig.so.1 => /usr/X11R6/lib/libfontconfig.so.1 (0xb7f88000)
      libfreetype.so.6 => /usr/X11R6/lib/libfreetype.so.6 (0xb7f22000)
      libexpat.so.0 => /usr/X11R6/lib/libexpat.so.0 (0xb7f06000) 
      libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0xb7eff000) 
      libXaw.so.7 => /usr/X11R6/lib/libXaw.so.7 (0xb7ead000) 
      libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0xb7e99000) 
      libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0xb7e4f000) 
      libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0xb7e46000) 
      libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0xb7e30000) 
      libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0xb7e22000) 
      libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0xb7e15000) 
      libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7d56000) 
      libncurses.so.5 => /lib/libncurses.so.5 (0xb7d15000) 
      libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7be6000) 
      libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7be3000)
      /lib/ld-linux.so.2 (0xb7fc3000) 
root@pinguino:~# ldd `which aterm`
      linux-gate.so.1 => (0xffffe000) 
      libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0xb7f81000) 
      libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7ec1000)
      libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0xb7eb9000) 
      libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0xb7ea3000) 
      libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d75000) 
      libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d72000) 
      /lib/ld-linux.so.2 (0x80000000)
root@pinguino:~# ldd `which rxvt` 
      linux-gate.so.1 => (0xffffe000) 
      libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0xb7eb0000) 
      libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7d81000) 
      libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7d7e000) 
      /lib/ld-linux.so.2 (0x80000000)

Xuất khẩu một hiển thị màn hình

Một hiển thị màn hình X được biết dưới một tên có dạng hostname:displaynumber.screennumber (tên trình chủ: số hiển thị. số màn hình ). Đối với Linux đang chạy trên một máy trạm chẳng hạn như một máy PC, thường chỉ có một hiển thị với một màn hình duy nhất. Trong trường hợp này tên của hiển thị (displayname) có thể bỏ qua, và thường được bỏ qua, do đó hiển thị màn hình được gọi là :0.0. Biến môi trường DISPLAY thường được đặt cho tên của hiển thị, vì vậy bạn có thể xem nó bằng lệnh echo $DISPLAY. Tùy theo hệ thống của bạn, biến này có thể được thiết lập hoặc không nếu bạn sử dụng lệnh su - để chuyển sang người dùng khác. Trong trường hợp như vậy, bạn có thể cần phải thiết lập và xuất khẩu DISPLAY như trong Liệt kê 25. Trong liệt kê này, bạn thấy một cố gắng để bắt đầu chạy ứng dụng xclock sau khi chuyển đổi sang người dùng root, nhưng cố gắng này bị thất bại do biến môi trường DISPLAY không được thiết lập. Ngay cả khi biến DISPLAY được thiết lập, bạn vẫn có thể không có khả năng sử dụng hiển thị, do bạn cũng cần có quyền hạn để làm điều này.

Liệt kê 25. Cố gắng để bắt đầu chạy xclock
ian@lyrebird:~> whoami 
ian 
ian@lyrebird:~> echo $DISPLAY 
:0.0 
ian@lyrebird:~> su - 
Password: 
lyrebird:~ # echo $DISPLAY
                    
lyrebird:~ # xclock 
Error: Can't open display: 
lyrebird:~ # export DISPLAY=:0.0
lyrebird:~ # echo $DISPLAY 
:0.0 
lyrebird:~ # xclock 
Xlib: connection to ":0.0" refused by server 
Xlib: No protocol specified 

Error: Can't open display: :0.0
lyrebird:~ # export XAUTHORITY=~ian/.Xauthority 
lyrebird:~ # xclock 
lyrebird:~ # ls -l ~ian/.Xauthority 
-rw------- 1 ian users 206 Feb 18 16:20 /home/ian/.Xauthority

Chúng ta hãy xem xét những gì đang xảy ra ở đây. Trong trường hợp này, người dùng ian đăng nhập vào hệ thống và môi trường DISPLAY của người dùng ian được đặt là : 0.0 như chúng ta mong đợi. Khi người dùng ian chuyển sang người dùng root, biến môi trường DISPLAY vẫn chưa được thiết lập và một cố gắng để bắt đầu chạy xclock đã thất bại vì ứng dụng không biết sử dụng hiển thị màn hình nào.

Vì vậy người dùng thay thế, root, thiết lập biến môi trường DISPLAY và xuất khẩu nó để cho nó sẽ có sẵn cho các shell khác có thể được bắt đầu từ cửa sổ đầu cuối này. Lưu ý rằng việc thiết lập và xuất khẩu một biến môi trường không sử dụng dấu $ đứng đầu, trong khi việc hiển thị hay những việc khác sử dụng giá trị biến này lại phải có dấu đó ở đầu. Cũng lưu ý rằng nếu lệnh su đã bỏ qua dấu - (dấu trừ), thì biến môi trường DISPLAY cũng sẽ được thiết lập giống như được dành cho người dùng ian. Tuy nhiên, ngay cả với biến môi trường được thiết lập như thế, xclock vẫn thất bại.

Lý do cho sự thất bại thứ hai nằm ở bản chất của trình khách/trình chủ của X. Mặc dù root đang chạy trong một cửa sổ trên một hiển thị màn hình duy nhất trên hệ thống này, hiển thị này thực sự là thuộc sở hữu của người dùng đăng nhập ban đầu, trong trường hợp này là ian. Chúng ta hãy xem xét việc ủy quyền của X.

Các phương pháp ủy quyền

Với các hiển thị cục bộ trên hệ thống Linux, ủy quyền thường phụ thuộc vào một cái gọi là MIT-MAGIC-COOKIE-1, mà thường được tái tạo mỗi lần khởi động lại trình chủ X. Một người dùng có thể trích xuất mẩu cookie ma thuật từ tập tin .Xauthority trong thư mục nhà của mình bằng cách sử dụng lệnh xauth extract và cung cấp nó cho một người dùng khác để kết hợp vào tập tin .Xauthority của người dùng này bằng cách sử dụng lệnh xauth merge. Một cách khác là một người dùng có thể cấp quyền cho những người dùng khác để truy cập hệ thống cục bộ bằng cách sử dụng lệnh xhost +local:.

XAUTHORITY

Một lựa chọn khác là thiết lập biến môi trường XAUTHORITY đến vị trí của một tập tin có chứa MIT-MAGIC-COOKIE-1 thích hợp. Khi chuyển sang root, rất dễ dàng để làm điều này, vì root có thể đọc các tập tin thuộc sở hữu của những người dùng khác. Thực vậy, đây là những gì mà chúng ta đã làm trong Liệt kê 25, do đó sau khi thiết lập và xuất khẩu biến XAUTHORITY vào ~ian/.Xauthority, bây giờ root có thể mở các cửa sổ đồ họa trên màn hình nền đồ họa. Chúng ta đề cập đến một sự khác biệt với các hệ thống Red Hat. Việc sử dụng su để chuyển sang root trên một hệ thống Red Hat là hơi khác với trên một hệ thống SUSE, ở đây việc thiết lập hiển thị được thực hiện tự động cho bạn.

Vậy thì điều gì sẽ xẩy ra khi bạn chuyển sang một người dùng khác không phải root? Bạn sẽ nhận thấy từ Liệt kê 25 rằng tập tin .Xauthority cho người dùng ian cho phép người dùng duy nhất truy cập đọc và viết. Ngay cả các thành viên của cùng một nhóm không thể đọc nó, đây chính là điều bạn muốn trừ phi bạn thích một ai đó mở một ứng dụng, chiếm luôn màn hình của bạn và ngăn bạn không cho làm bất cứ điều gì! Vì vậy, nếu bạn trích xuất một MIT-MAGIC-COOKIE-1 khỏi tập tin .Xauthority của bạn, thì bạn phải tìm một cách nào đó an toàn để cung cấp nó cho người dùng không phải root thân thiện của bạn. Cách tiếp cận khác là sử dụng lệnh xhost để cấp quyền cho người dùng bất kỳ trên một máy cụ thể.

Lệnh xhost

Do khó khăn về việc chuyển một cookie MIT-MAGIC-COOKIE-1tới người dùng khác một cách an toàn, bạn có thể thấy rằng, với một hệ thống Linux có một người dùng duy nhất, xhost dễ sử dụng hơn, mặc dù cách tiếp cận xauth thường được ưa thích hơn lệnh xhost. Tuy nhiên, hãy ghi nhớ sự thừa kế mạng của Hệ thống Window X để bạn không vô tình cấp quyền truy cập nhiều hơn bạn dự định và do đó mở ra hệ thống của bạn, cho phép những người sử dụng mạng tùy ý mở các cửa sổ trên màn hình nền của bạn.

Để cung cấp cho tất cả người sử dụng cục bộ quyền mở các ứng dụng trên hiển thị màn hình (:0.0), người dùng ian có thể sử dụng lệnh xhost. Hãy mở một cửa sổ đầu cuối trên màn hình nền của bạn và nhập lệnh này:

xhost +local:

Lưu ý dấu hai chấm (:) ở cuối. Điều này sẽ cho phép người dùng khác trên cùng một hệ thống kết nối tới trình chủ X và mở cửa sổ. Vì bạn là một hệ thống người dùng đơn, điều này có nghĩa rằng bạn có thể dùng lệnh su để chuyển tới một người sử dụng không phải root tùy ý và bây giờ có thể khởi chạy xclock hoặc các ứng dụng X.

Bạn cũng có thể sử dụng xhost để ủy quyền các trình chủ từ xa. Nói chung đây không phải là một ý tưởng tốt trừ trên các mạng hạn chế. Bạn cũng sẽ cần phải cho phép các cổng thích hợp trên tường lửa của bạn nếu bạn đang sử dụng một cổng.

Một thay thế khác cho việc sử dụng các ứng dụng X từ một hệ thống khác là kết nối tới hệ thống ấy bằng cách sử dụng một kết nối shell an toàn (ssh). Nếu cấu hình trình kháchssh mặc định của bạn không cho phép thực hiện chuyển tiếp X, bạn có thể cần phải bổ sung thêm tham số -X cho lệnh ssh của bạn. Trình chủ ssh cũng cần phải bật cho phép chuyển tiếp X. Nói chung, đây là một phương pháp an toàn hơn nhiều để sử dụng X từ xa hơn là mở ngỏ hệ thống của bạn cho các kết nối tùy ý bằng cách sử dụng xhost.

Để biết thêm chi tiết về cách sử dụng các lệnh xauthxhost bạn có thể sử dụng các lệnh info xauth, man xauth, info xhost hay man xhost khi thích hợp để xem các trang hướng dẫn sử dụng trực tuyến. Nếu bạn quan tâm đến bảo mật cho các kết nối X, hãy bắt đầu với các trang hướng dẫn sử dụng cho Xsecure.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=517861
ArticleTitle=Chuẩn bị kỳ thi LPI 101: Hệ thống Window X
publish-date=09102010