Chuẩn bị kỳ thi LPI 101: Phần cứng và kiến trúc

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

Trong hướng dẫn này, Ian Shields bắt đầu chuẩn bị cho bạn tham gia kỳ thi 101 (LPIC-1) về quản trị hệ thống trình độ sơ cấp của Viện Linux chuyên nghiệp (Linux Professional Institute®-LPI). Trong bài hướng dẫn đầu tiên này của loạt năm bài hướng dẫn, Ian giới thiệu cho bạn 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 cấu hình phần cứng với Linux 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.

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

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.



06 08 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 để 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ủ đề 101 Chuẩn bị cho kỳ thi LPI 101 (chủ đề 101):
Phần cứng và kiến trúc.
(Hướng dẫn này). 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 cấu hình phần cứng Linux 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ủ đề 102 Chuẩ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ủ đề 103 Chuẩ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ủ đề 104 Chuẩn bị cho kỳ thi LPI 104:
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. Xem chi tiết các mục tiêu dưới đây.
Chủ đề 110 Hệ thống Window X. Sắp có.

Để 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ì dễ: 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 thêm 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 "Phần cứng và kiến trúc", hướng dẫn đầu tiên 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ề phần cứng và kiến trúc của máy PC.

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. Phần cứng và kiến trúc: 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.101.1
Đặt cấu hình thiết lập BIOS cơ bản
Trọng số 1Bạn sẽ tìm hiểu cách đặt cấu hình phần cứng hệ thống cơ bản bằng việc thực hiện các thiết lập đúng trong BIOS hệ thống. Bạn sẽ tìm hiểu về các vấn đề cấu hình ví dụ như việc sử dụng LBA trên các đĩa cứng IDE nhiều hơn 1024 cylinder, bật hoặc tắt các thiết bị ngoại vi tích hợp sẵn và đặt cấu hình hệ thống có (hoặc không có) các thiết bị ngoại vi cắm ngoài như bàn phím. Chúng ta cũng thảo luận về các thiết lập đúng các địa chỉ IRQ, DMA và I/O cho tất cả các cổng do BIOS quản lý và thiết lập việc xử lý lỗi.
1.101.3
Đặt cấu hình modem và bo mạch (card) âm thanh
Trọng số 1Bạn sẽ tìm hiểu cách để đảm bảo rằng các thiết bị đáp ứng các yêu cầu tương thích và cách để thiết lập cả modem lẫn bo mạch (card) âm thanh. Bạn sẽ học cách cấu hình một modem để quay số gọi ra và cách để sử dụng nó cho các kết nối gọi ra PPP, SLIP hoặc CSLIP.
1.101.4
Thiết lập các thiết bị SCSI
Trọng số 1 Bạn sẽ tìm hiểu cách cấu hình các thiết bị SCSI bằng cách sử dụng BIOS SCSI cũng như các công cụ Linux cần thiết. Bạn sẽ xem xét các kiểu SCSI khác nhau. Bạn sẽ học cách thiết lập một thiết bị khởi động bằng SCSI và cách thiết lập trình tự khởi động mong muốn trong một môi trường hỗn hợp SCSI và IDE.
1.101.5
Thiết lập các bo mạch mở rộng khác nhau cho PC
Trọng số 3 Bạn sẽ tìm hiểu về các sự khác nhau giữa các bo mạch ISA và PCI về các vấn đề cấu hình. Bạn sẽ học cách để kiểm tra thiết lập các IRQ, DMA và các cổng I/O để tránh xung đột giữa các thiết bị.
1.101.6
Đặt cấu hình các thiết bị truyền thông
Trọng số 1 Bạn sẽ học cách cài đặt và đặt cấu hình các thiết bị truyền thông bên trong và bên ngoài khác nhau như modem, các bộ tiếp hợp (adapter) ISDN và các chuyển mạch DSL. Bạn sẽ tìm hiểu về các yêu cầu tương thích (đặc biệt quan trọng nếu modem đó là một winmodem), thiết lập phần cứng cần thiết cho các thiết bị bên trong (các IRQ, DMA, các cổng I/O) và nạp và đặt cấu hình các trình điều khiển (driver) thiết bị thích hợp. Chúng ta cũng sẽ trình bày các yêu cầu cấu hình giao diện.
1.101.7
Đặt cấu hình các thiết bị USB
Trọng số 1 Bạn sẽ tìm hiểu cách để kích hoạt sự hỗ trợ USB và cách để sử dụng và đặt cấu hình các thiết bị USB khác nhau. Bạn sẽ tìm hiểu về lựa chọn đúng bộ vi mạch xử lý (chipset) USB của bạn và mô đun tương ứng. Chúng ta cũng sẽ trình bày các kiến trúc cơ bản của mô hình tầng của USB và các mô đun khác nhau được sử dụng trong các tầng khác nhau.

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

Không có điều kiện cần có trước chính thức cho hướng dẫn này. Để tiếp thu đượ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.

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 giống như các liệt kê và các hình vẽ trong hướng dẫn này.


Thiết lập BIOS

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

Chúng ta sẽ bắt đầu bằng một tổng quan mức cao về một máy tính cá nhân hiện đại và sau đó chúng ta sẽ thảo luận về các vấn đề cấu hình để thiết lập một hệ thống. Chúng ta sẽ tập trung vào các hệ thống sử dụng một bộ xử lý x86, ví dụ như là bộ xử lý Intel® Pentium® hoặc bộ xử lý AMD Athlon và một bus PCI, vì chúng là các thiết bị phổ biến nhất hiện nay.

Nhiều chủ đề được trình bày ở đây sẽ trùng lặp phần lớn với các mục tiêu của LPI đối với nhiều thiết bị ngoại vi cụ thể. Các phần sau của hướng dẫn này sẽ chỉ dẫn bạn quay trở lại phần này để tìm tư liệu cơ sở.

Tổng quan về hệ thống và BIOS

Một hệ thống máy tính cá nhân (hay PC) hiện đại bao gồm một bộ xử lý trung tâm (CPU) để thực hiện các tính toán, cùng với một số bộ nhớ để lưu trữ dữ liệu mà bộ vi xử lý đang sử dụng. Để một thiết bị như vậy hữu dụng, chúng ta gắn kèm các thiết bị ngoại vi, chẳng hạn như bàn phím, chuột, màn hình, các ổ đĩa cứng, các ổ đĩa CD hay ổ đĩa DVD, các máy in, các máy quét và các bo mạch mạng để cho phép chúng ta nhập vào, lưu trữ, in ấn, hiển thị và truyền dữ liệu.

Trong máy tính vừa được mô tả, bộ vi xử lý sử dụng bộ nhớ có tên là bộ nhớ truy cập ngẫu nhiên (RAM). Trong một máy PC điển hình, bộ nhớ này dễ bốc hơi (volatile), nghĩa là nó đòi hỏi nguồn điện để duy trì dữ liệu của nó. Tắt máy PC thì bộ nhớ này bị xóa hết. Nói cách khác, khi chúng ta tắt một máy tính, chúng ta biến máy PC thành một bộ sưu tập các linh kiện phần cứng không làm được cái gì cả cho đến khi được lập trình lại. Việc lập trình lại này xảy ra khi chúng ta bật máy; quá trình này được gọi là tự mồi (bootstrapping) hoặc khởi động (boot) máy tính.

Quá trình tự mồi và BIOS

Quá trình khởi động liên quan đến việc nạp hệ điều hành từ một thiết bị lưu trữ ngoài, ví dụ như một đĩa mềm, đĩa CD, DVD, ổ cứng hoặc bút lưu trữ (memory key). Chương trình thực hiện hoạt động nạp đầu tiên này được lưu trữ cố định trong máy tính và được gọi là BIOS (Basic Input Output System - Hệ vào/ra cơ sở). BIOS được lưu trữ trong bộ nhớ không thay đổi, đôi khi được gọi là ROM (Read Only Memory - Bộ nhớ chỉ đọc). Trong các máy tính ban đầu, các vi mạch (chip) ROM thường được hàn hoặc được lắp trên đế cắm vào bo mạch chính (main board) (hoặc bo mạch chủ - motherboard) của máy tính. Việc cập nhật BIOS có nghĩa là thay thế các vi mạch ROM. Sau này, EEPROM (Electrically Erasable Programmable Read Only Memories - Các bộ nhớ chỉ đọc lập trình được và xóa được bằng điện) đã được sử dụng. Các EEPROM đã cho phép BIOS được nâng cấp trong lúc hoạt động bằng một đĩa mềm thay cho các công cụ đặc biệt. Hiện nay bạn sẽ thường tìm thấy một dạng bộ nhớ không bốc hơi có tên là bộ nhớ cực nhanh (flash). Bộ nhớ này cũng được sử dụng trong các máy ảnh kỹ thuật số và các bút lưu trữ. Bộ nhớ cực nhanh cũng cho phép nâng cấp BIOS trong lúc hoạt động.

Ngoài việc điều khiển khởi động ban đầu của máy PC, các chương trình BIOS hiện nay thường cho phép người dùng thiết lập hoặc kiểm tra một số tùy chọn cấu hình trên một hệ thống. Các tùy chọn này bao gồm việc kiểm tra các tính năng đã cài đặt như RAM, ổ cứng, ổ đĩa quang, bàn phím, chuột và có thể cả tính năng hiển thị, âm thanh và kết nối mạng tích hợp trên bo mạch chủ. Người dùng có thể bật cho phép hoặc tắt một số tính năng. Ví dụ, âm thanh trên bo mạch chủ có thể bị vô hiệu hoá để cho phép sử dụng một bo mạch âm thanh rời được lắp vào. Người dùng cũng có thể chọn các thiết bị nào sẽ được dùng để khởi động hệ thống và có bảo vệ hệ thống bằng mật khẩu không.

Việc truy cập vào các màn hình thiết lập BIOS thường đòi hỏi có một bàn phím được gắn vào hệ thống. Khi hệ thống được cấp nguồn, hệ thống sẽ thực hiện một quá trình tự kiểm tra khi khởi động (Power On Self Test) hoặc POST. Trên một số hệ thống, bạn sẽ được nhắc trong chốc lát cần nhấn một phím cụ thể nào đó để bước vào chế độ thiết lập hệ thống, nếu không thì quá trình khởi động bình thường sẽ tiếp tục. Trên các hệ thống khác, bạn sẽ cần phải biết trước cần nhấn phím nào trước khi quá trình khởi động bình thường được gọi bởi vì không có lời nhắc hoặc lời nhắc có thể đã bị loại bỏ do kết quả tuỳ chỉnh các tùy chọn thiết lập hệ thống trước đó. Trên một số hệ thống, bạn có thể có nhiều lựa chọn khác ngoài việc bước vào chế độ thiết lập BIOS, như minh họa trong Hình 1. Nếu không, bạn sẽ thấy một màn hình tóm tắt BIOS như đã hiển thị trong Hình 2.

Hình 1. Truy cập vào thiết lập BIOS
Truy cập vào thiết lập BIOS
Hình 2. Tóm tắt thiết lập BIOS
Tóm tắt thiết lập BIOS

Các minh họa ở trên là những ví dụ về những gì bạn có thể nhìn thấy, nhưng các màn hình thiết lập BIOS rất khác nhau, do đó hãy đừng ngạc nhiên nếu máy của bạn trông khác.

Hình 2 cho chúng ta thấy rằng Flash EEPROM (hay BIOS hệ thống) có mức hiệu chỉnh (revision level) là 24KT52AUS và nó được đề ngày 4 tháng 3 năm 2004, trong khi ngày hiện tại trên hệ thống là ngày 9 tháng 6 năm 2005. Kiểm tra trên trang Web hỗ trợ của nhà sản xuất (IBM) cho thấy có sẵn một số phiên bản BIOS mới hơn. Vì vậy, nâng cấp BIOS của hệ thống này có lẽ sẽ là một ý tưởng tốt.

Bạn sẽ nhận thấy một số lựa chọn trình đơn khác trong Hình 2. Chúng ta sẽ trình bày những lựa chọn ấy trong các phần còn lại của hướng dẫn này. Tuy nhiên, trước khi chúng ta làm điều đó, hãy ôn lại thêm một chút về các hoạt động bên trong của máy PC.

Các bus, các cổng, các IRQ và DMA.

Các bus PCI và ISA

Các thiết bị ngoại vi, bao gồm những thiết bị gắn sẵn với bo mạch hệ thống, truyền thông với CPU qua một bus. Kiểu bus chung nhất đang sử dụng hiện nay là bus Kết nối giữa các thành phần ngoại vi (Peripheral Component Interconnect) hoặc PCI. Kiểu bus này hầu như đã thay thế kiểu bus có trước là bus Kiến trúc chuẩn công nghiệp (Industry Standard Architecture) hay ISA. Bus ISA đôi khi được gọi là bus AT sau khi máy tính cá nhân PC-AT của IBM sử dụng nó lần đầu vào năm 1984. Trong thời gian chuyển tiếp từ bus ISA sang bus PCI, nhiều hệ thống đã có cả hai bus với các khe cắm cho phép sử dụng hoặc là thiết bị ngoại vi ISA hoặc thiết bị ngoại vi PCI.

Bus ISA hỗ trợ các bo mạch 8-bit và 16-bit, trong khi bus PCI hỗ trợ các thiết bị 32-bit.

Bạn cũng nên biết về một vài tiêu chuẩn bus khác. Nhiều hệ thống có một khe cắm Cổng tăng tốc đồ họa (Accelerated Graphics Port) hay khe cắm AGP Đây là một khe cắm đặc biệt dựa trên đặc tả bus PCI 2.1, nhưng được tối ưu hóa để đáp ứng băng thông cao và đáp ứng nhanh mà bo mạch đồ họa đòi hỏi. Kiểu bus này đang dần được thay thế bằng bus PCI Express hay bus PCI-E mới hơn, giải quyết được nhiều hạn chế của thiết kế PCI ban đầu.

Chúng ta sẽ tìm hiểu thêm về hệ thống tập tin Linux trong các hướng dẫn sau của loạt bài này, nhưng ngay bây giờ chúng tôi sẽ giới thiệu cho bạn hệ thống tập tin /proc. Đây không phải là một hệ thống tập tin thực sự trên đĩa, mà là một "hệ thống tập tin giả", cung cấp thông tin về hệ thống đang chạy. Trong hệ thống tập tin này, tập tin /proc/pci chứa thông tin về các thiết bị trên bus PCI của hệ thống. Hiện đã có một số cuộc thảo luận về bỏ tập tin đặc biệt này, do lệnh lspci cung cấp thông tin tương tự. Hãy chạy lệnh cat /proc/pci để xem kết quả đầu ra, trông gần giống như Liệt kê 1.

Liệt kê 1. /proc/pci
PCI devices found:
  Bus  0, device   0, function  0:
    Host bridge: Intel Corp. 82845G/GL [Brookdale-G] Chipset Host Bridge 
         (rev 1).
      Prefetchable 32 bit memory at 0xd0000000 [0xdfffffff].
  Bus  0, device   2, function  0:
    VGA compatible controller: Intel Corp. 82845G/GL [Brookdale-G] Chipset 
         Integrated Graphics Device (rev 1).
      IRQ 11.
      Prefetchable 32 bit memory at 0x88000000 [0x8fffffff].
      Non-prefetchable 32 bit memory at 0x80000000 [0x8007ffff].
  Bus  0, device  29, function  0:
    USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 1).
      IRQ 11.
      I/O at 0x1800 [0x181f].
  Bus  0, device  29, function  1:
    USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 1).
      IRQ 10.
      I/O at 0x1820 [0x183f].
  Bus  0, device  29, function  2:
    USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 1).
      IRQ 5.
      I/O at 0x1840 [0x185f].
  Bus  0, device  29, function  7:
    USB Controller: Intel Corp. 82801DB USB2 (rev 1).
      IRQ 9.
      Non-prefetchable 32 bit memory at 0xc0080000 [0xc00803ff].
  Bus  0, device  30, function  0:
    PCI bridge: Intel Corp. 82801BA/CA/DB/EB PCI Bridge (rev 129).
      Master Capable.  No bursts.  Min Gnt=4.
  Bus  0, device  31, function  0:
    ISA bridge: Intel Corp. 82801DB LPC Interface Controller (rev 1).
  Bus  0, device  31, function  1:
    IDE interface: Intel Corp. 82801DB Ultra ATA Storage Controller 
         (rev 1).
      IRQ 5.
      I/O at 0x1860 [0x186f].
      Non-prefetchable 32 bit memory at 0x60000000 [0x600003ff].
  Bus  0, device  31, function  3:
    SMBus: Intel Corp. 82801DB/DBM SMBus Controller (rev 1).
      IRQ 9.
      I/O at 0x1880 [0x189f].
  Bus  0, device  31, function  5:
    Multimedia audio controller: Intel Corp. 82801DB AC'97 Audio 
         Controller (rev 1).
      IRQ 9.
      I/O at 0x1c00 [0x1cff].
      I/O at 0x18c0 [0x18ff].
      Non-prefetchable 32 bit memory at 0xc0080c00 [0xc0080dff].
      Non-prefetchable 32 bit memory at 0xc0080800 [0xc00808ff].
  Bus  2, device   8, function  0:
    Ethernet controller: Intel Corp. 82801BD PRO/100 VE (LOM) Ethernet 
         Controller (rev 129).
      IRQ 9.
      Master Capable.  Latency=66.  Min Gnt=8.Max Lat=56.
      Non-prefetchable 32 bit memory at 0xc0100000 [0xc0100fff].
      I/O at 0x2000 [0x203f].

Bạn có thể muốn so sánh kết quả này với kết quả đầu ra của lệnh lspci. Lệnh này thường có trên đường dẫn của người dùng root (chủ), những người dùng không phải là root có thể sẽ cần phải gõ đường dẫn đầy đủ /sbin/lspci. Hãy thử chạy lệnh này trên hệ thống của riêng bạn.

Các cổng Vào ra (IO)

Khi CPU cần phải truyền thông với một thiết bị ngoại vi nó thực hiện thông qua một cổng IO hoặc đôi khi chỉ nói đơn giản là cổng. Khi CPU muốn gửi dữ liệu hoặc thông tin điều khiển đến thiết bị ngoại vi, nó viết tới một cổng. Khi thiết bị có dữ liệu hoặc trạng thái sẵn sàng với CPU, CPU đọc dữ liệu hoặc trạng thái từ một cổng. Hầu hết các thiết bị có nhiều hơn một cổng liên kết với chúng, số lượng cổng thường là bằng một lũy thừa nhỏ của 2, chẳng hạn như 8, 16 hoặc 32. Việc truyền dữ liệu thường là một byte hoặc hai byte một lần. Các thiết bị không thể chia sẻ cổng, vì vậy nếu bạn có các bo mạch ISA, bạn phải đảm bảo rằng mỗi thiết bị được cấp một cổng hoặc các cổng riêng của mình. Ban đầu, người ta thực hiện việc này bằng cách sử dụng các chuyển mạch hoặc cầu nối nhảy (jumper) trên bo mạch. Một số bo mạch ISA sau này đã sử dụng một hệ thống gọi là Cắm vào là chạy (Plug and Play) hay PnP sẽ được thảo luận sau trong phần này. Tất cả các bo mạch PCI đều có cấu hình PnP.

Trong hệ thống tập tin /proc, tập tin /proc/ioports cho chúng ta biết về các cổng IO có sẵn trên hệ thống. Chạy lệnh cat /proc/ioports để xem kết quả đầu ra, gần giống như Liệt kê 2.

Liệt kê 2. /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
0378-037a : parport0
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
1800-181f : Intel Corp. 82801DB USB (Hub #1)
  1800-181f : usb-uhci
1820-183f : Intel Corp. 82801DB USB (Hub #2)
  1820-183f : usb-uhci
1840-185f : Intel Corp. 82801DB USB (Hub #3)
  1840-185f : usb-uhci
1860-186f : Intel Corp. 82801DB Ultra ATA Storage Controller
  1860-1867 : ide0
  1868-186f : ide1
1880-189f : Intel Corp. 82801DB/DBM SMBus Controller
18c0-18ff : Intel Corp. 82801DB AC'97 Audio Controller
  18c0-18ff : Intel ICH4
1c00-1cff : Intel Corp. 82801DB AC'97 Audio Controller
  1c00-1cff : Intel ICH4
2000-203f : Intel Corp. 82801BD PRO/100 VE (LOM) Ethernet Controller
  2000-203f : e100

Số cổng là số hệ đếm mười sáu (hexadecimal). Bạn chắc chắn sẽ thấy một số cổng quen thuộc, chẳng hạn như cổng bàn phím, bộ đếm thời gian, cổng song song (máy in), cổng nối tiếp (modem) và cổng màn hình (vga +). Hãy so sánh những cổng đó với một số bố trí cổng IO tiêu chuẩn cho máy PC như hiển thị trong Liệt kê 3. Ví dụ, hãy chú ý rằng cổng song song đầu tiên (parport0) có dải địa chỉ 0378 đến 037A được cấp trong danh sách /proc/ioports, nhưng tiêu chuẩn cho phép nó (LPT!) sử dụng dải 378 đến 37F.

Liệt kê 3. Thiết lập cổng I/O tiêu chuẩn
1FO-1F8 - Hard Drive Controller, 16-bit ISA
200-20F - Game Control
210 - Game I/O
220 - Soundcard
278-27F - LPT2
2F8-2FF - COM2
320-32F - Hard Drive Controller, 8-bit ISA
378-37F - LPT1
3B0-3BF - Monochrome Graphics Adapter (MGA)
3D0-3DF - Colour Graphics Adapter (CGA)
3F0-3F7 - Floppy Controller
3F8-3FF - COM1

Các ngắt

Vậy thì làm thế nào để CPU biết khi nào kết quả đầu ra cuối cùng đã hoàn tất hoặc khi nào có dữ liệu đang chờ để được đọc? Thông thường, thông tin này có sẵn trong một thanh ghi trạng thái có thể được truy cập bằng cách đọc một (hoặc nhiều) cổng trong số các cổng IO gắn kết với một thiết bị. Phát sinh hai bài toán hiển nhiên với kịch bản này. Thứ nhất, CPU phải dành thời gian kiểm tra trạng thái. Thứ hai, nếu thiết bị có dữ liệu đến từ một nơi nào đó, chẳng hạn như một modem gắn kèm, dữ liệu phải được CPU đọc một cách kịp thời nếu không nó có thể bị ghi đè bởi byte dữ liệu tiếp theo.

Bài toán kép nói trên, không lãng phí các chu kỳ của CPU vô ích và đảm bảo đọc hoặc viết dữ liệu một cách kịp thời, được giải quyết bằng các khái niệm các ngắt (interrupt). Các ngắt còn được gọi là Các yêu cầu ngắt (Interrupt Requests) hay các IRQ. Khi một cái gì đó xảy ra trong một thiết bị mà CPU cần phải biết, thiết bị đó sẽ đưa ra một ngắt và CPU tạm dừng bất cứ hoạt động nào khác đang thực hiện để xử lý tình hình.

Với trải nghiệm của chúng ta từ phần vừa qua, hầu như chẳng có gì ngạc nhiên cả khi thông tin về ngắt cũng được lưu giữ trong hệ thống tập tin /proc, trong /proc/interrupts. Hãy chạy lệnh cat /proc/interrupts để xem kết quả đầu ra, gần giống như Liệt kê 4.

Liệt kê 4. /proc/interrupts
           CPU0
  0:  226300426          XT-PIC  timer
  1:      92913          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  5:          0          XT-PIC  usb-uhci
  8:          1          XT-PIC  rtc
  9:    2641134          XT-PIC  ehci-hcd, eth0, Intel ICH4
 10:          0          XT-PIC  usb-uhci
 11:     213632          XT-PIC  usb-uhci
 14:    1944208          XT-PIC  ide0
 15:    3562845          XT-PIC  ide1
NMI:          0
ERR:          0

Ở đây, các số ngắt là số thập phân trong dải 0 đến 15. Một lần nữa, hãy so sánh chúng với các bố trí IRQ tiêu chuẩn cho máy PC như hiển thị trong Liệt kê 5.

Liệt kê 5. Standard IRQ Settings
IRQ 0 - System Timer
IRQ 1 - Keyboard
IRQ 2(9) - Video Card
IRQ 3 - COM2, COM4
IRQ 4 - COM1, COM3
IRQ 5 - Available (LPT2 or Sound Card)
IRQ 6 - Floppy Disk Controller
IRQ 7 - LPT1
IRQ 8 - Real-Time Clock
IRQ 9 - Redirected IRQ 2
IRQ 10 - Available
IRQ 11 - Available
IRQ 12 - PS/2 Mouse
IRQ 13 - Math Co-Processor
IRQ 14 - Hard Disk Controller
IRQ 15 - Available

Ban đầu, mỗi thiết bị có IRQ riêng của riêng mình. Ví dụ, trong Liệt kê 5 hãy lưu ý rằng IRQ5 thường được sử dụng cho hoặc là bo âm thanh hoặc cổng song song thứ hai (máy in). Nếu bạn muốn cả hai, bạn phải tìm một bo mạch có thể cấu hình được (thường là thông qua thiết lập jumper phần cứng) để sử dụng một IRQ khác, ví dụ như IRQ15.

Hiện nay, các thiết bị PCI chia sẻ các IRQ. Khi một thiết bị ngắt CPU thì một trình xử lý ngắt kiểm tra để xem ngắt có phải dành cho nó xử lý không và nếu không phải, nó chuyển tiếp tới trình xử lý ngắt kế tiếp theo dây chuyền. Các Liệt kê 4 và 5 không cho chúng ta biết về việc chia sẻ này. Chúng ta sẽ tìm hiểu về lệnh grep trong một hướng dẫn sau, nhưng bây giờ chúng ta có thể sử dụng nó để lọc kết quả đầu ra của lệnh dmesg để tìm kiếm thông báo tự mồi (bootstrap) về các IRQ như trong Liệt kê 6. Chúng ta đã tô đậm các ngắt được chia sẻ ở đây.

Liệt kê 6. Các ngắt được tìm thấy trong khi hệ thống tự mồi
[ian@lyrebird ian]$ dmesg | grep -i irq
PCI: Discovered primary peer bus 01 [IRQ]
PCI: Using IRQ router PIIX [8086/24c0] at 00:1f.0
PCI: Found IRQ 5 for device 00:1f.1
PCI: Sharing IRQ 5 with 00:1d.2
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT 
     SHARE_IRQ SERIAL_PCI ISAPNP enabled
ttyS0 at 0x03f8 (irq = 4) is a 16550A
ttyS1 at 0x02f8 (irq = 3) is a 16550A
PCI: Found IRQ 5 for device 00:1f.1
PCI: Sharing IRQ 5 with 00:1d.2
ICH4: not 100% native mode: will probe irqs later
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
PCI: Found IRQ 11 for device 00:1d.0
PCI: Sharing IRQ 11 with 00:02.0
usb-uhci.c: USB UHCI at I/O 0x1800, IRQ 11
PCI: Found IRQ 10 for device 00:1d.1
usb-uhci.c: USB UHCI at I/O 0x1820, IRQ 10
PCI: Found IRQ 5 for device 00:1d.2
PCI: Sharing IRQ 5 with 00:1f.1
usb-uhci.c: USB UHCI at I/O 0x1840, IRQ 5
PCI: Found IRQ 9 for device 00:1d.7
ehci-hcd 00:1d.7: irq 9, pci mem f885d000
parport0: irq 7 detected
PCI: Found IRQ 9 for device 02:08.0
PCI: Found IRQ 9 for device 02:08.0
parport0: irq 7 detected
PCI: Found IRQ 11 for device 00:02.0
PCI: Sharing IRQ 11 with 00:1d.0
PCI: Found IRQ 9 for device 00:1f.5
PCI: Sharing IRQ 9 with 00:1f.3
i810: Intel ICH4 found at IO 0x18c0 and 0x1c00, MEM 0xc0080c00 and 
     0xc0080800, IRQ 9

DMA

Chúng ta đã đề cập trước đó rằng giao tiếp với các thiết bị ngoại vi qua các cổng IO xảy ra một byte hoặc hai byte mỗi lần. Đối với một thiết bị nhanh, các ngắt dịch vụ có thể dùng mất khá nhiều năng lực của CPU. Một phương pháp nhanh hơn là sử dụng Truy cập bộ nhớ trực tiếp (Direct Memory Access) hay DMA, trong đó một vài lệnh IO báo cho thiết bị biết có thể đọc hoặc viết dữ liệu ở đâu trong RAM và sau đó trình điều khiển DMA cung cấp chức năng quản lý phần cứng về truyền dẫn dữ liệu thực tế giữa RAM và thiết bị ngoại vi.

Bất cứ ai có thể đoán chúng ta sẽ tìm thấy thông tin về các kênh DMA đang sử dụng ở đâu hãy giơ tay lên! Nếu bạn nói nó ở trong /proc/dma, thì bạn đúng đấy. Hãy chạy lệnh cat /proc/dma để xem kết quả đầu ra, gần giống như Liệt kê 7.

Liệt kê 7. /proc/dma
 4: cascade

Tất cả là như vậy ư? Điều quan trọng là hãy nhớ rằng hầu hết các thiết bị sẽ chỉ yêu cầu một trong một số ít các kênh DMA khi hoạt động vào ra thực tế đang diễn ra. Do đó, /proc/dma sẽ thường xuyên gần như trống rỗng, như trong ví dụ của chúng ta. Chúng ta cũng có thể duyệt qua các thông báo tự mồi để biết sự hiện diện của các thiết bị có khả năng DMA như chúng ta đã làm với các IRQ ở trên. Liệt kê 8 cho thấy kết quả đầu ra điển hình.

Liệt kê 8. /proc/dma
[ian@lyrebird ian]$ dmesg | grep -i dma
    ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:DMA
hda: 312581808 sectors (160042 MB) w/8192KiB Cache, 
     CHS=19457/255/63, UDMA(100)
hdc: 398297088 sectors (203928 MB) w/7936KiB Cache, 
     CHS=24792/255/63, UDMA(33)
ehci-hcd 00:1d.7: enabled 64bit PCI DMA

Cắm vào là chạy (PnP)

Các máy PC ban đầu được bố trí số cổng và các IRQ cố định cho các thiết bị cụ thể, ví dụ như cổng bàn phím hoặc cổng song song cho máy in. Điều này đã làm cho việc bổ sung thêm các thiết bị mới hoặc thậm chí chạy hai thiết bị cùng loại như hai modem hoặc hai máy in trở nên khó khăn. Cổng nối tiếp đầu tiên luôn được gọi là COM1 và cổng nối tiếp thứ hai là COM2. Các hệ thống Linux thường nói đến các cổng này như là ttyS0ttyS1. Một số bo mạch có khả năng cấu hình được bằng các cầu nối nhảy (jumper) phần cứng, cho phép một modem hoạt động trên cả hai cổng COM1 hoặc COM2 chẳng hạn. Vì các thiết bị đã phát triển nhanh chóng và vùng không gian ban đầu được bố trí cho các địa chỉ cổng IO và các IRQ trở thành khan hiếm, nên chuẩn Cắm vào là chạy (Plug and Play) hay PnP được phát triển. Ý tưởng là cho phép một thiết bị báo cho hệ thống biết rằng thiết bị đó cần bao nhiêu tài nguyên, những loại tài nguyên nào và sau đó là để cho BIOS báo cho thiết bị biết rằng nó cần sử dụng các tài nguyên cụ thể nào. Việc cấu hình bán tự động như thế này đã được đưa vào hệ thống PS/2 của IBM, sử dụng một kiến trúc bus gọi là vi kênh (microchannel). Sau đó, ý tưởng và tên Cắm vào là chạy đã được sử dụng cho bo mạch ISA, đặc biệt là các modem và các bo âm thanh là các bo mạch cắm thêm phổ biến vào lúc ấy. Bus PCI đẩy ý tưởng này tiến xa hơn, tất cả các thiết bị PCI đã sẵn có tính năng PnP.

Nếu bạn đã từng làm việc trên một hệ thống có các thiết bị PnP ISA, cần lưu ý rằng bạn phải tránh các xung đột cổng và IRQ giữa các thiết bị. Các cổng không thể được dùng chung giữa hai thiết bị; mỗi thiết bị phải có cổng riêng của mình. Điều này cũng áp dụng cho các kênh DMA. Trừ một số ít ngoại lệ, các thiết bị ISA cũng không thể dùng chung các IRQ. Nếu bạn có các thiết bị không phải là PnP, bạn phải đặt cấu hình thủ công từng thiết bị để cho nó không gây cản trở cho thiết bị khác. Hứa hẹn của PnP là việc cấu hình có thể thực hiện tự động. Tuy nhiên, với một số thiết bị ISA không tham gia vào PnP, thì điều này không phải luôn luôn thực hiện hoàn hảo. Bạn có thể giải quyết các xung đột bằng cách sử dụng gói phần mềm isapnptools mà chúng ta sẽ thảo luận sau đây hoặc bạn có thể phải bố trí lại một số các cổng hoặc các IRQ trên các thiết bị không phải là PnP để có được một hệ thống có thể hoạt động.

Trước bản Linux nhân 2.4 (kernel 2.4), một gói phần mềm gọi là isapnptools cho phép người dùng đặt cấu hình các thiết bị PnP. Lệnh isapnp diễn giải một tập tin cấu hình (thường là /etc/isapnp.conf) để đặt cấu hình các thiết bị PnP. Việc này thường được thực hiện trong quá trình khởi động Linux. Lệnh pnpdump quét các thiết bị PnP và xổ ra một danh sách các nguồn tài nguyên mà các bo mạch PnP của bạn hoặc cần hoặc ưu tiên sử dụng. Định dạng kết quả thích hợp để sử dụng ngay bởi lệnh isapnp, chỉ cần bạn bỏ dấu chú thích trước các lệnh thực tế bạn muốn sử dụng. Bạn phải chắc chắn tránh xung đột tài nguyên. Hãy tham khảo các trang hướng dẫn sử dụng cho lệnh isapnp và pnpdump để biết thêm thông tin về cách sử dụng các lệnh này.

Kể từ bản Linux nhân 2.4 trở đi, sự hỗ trợ chuẩn PnP đã được tích hợp vào trong nhân Linux và gói isapnptools đã trở nên lỗi thời. Ví dụ, nó đã được gỡ bỏ khỏi bản Red Hat 7.3 được phát hành tháng 5 năm 2002. Sự hỗ trợ này tương tự như sự hỗ trợ PCI đã thảo luận trước đó. Bạn có thể sử dụng lệnh lspnp (một phần của gói kernel-pcmcia-cs) để hiển thị thông tin về các thiết bị PnP. Bạn cũng sẽ tìm thấy thông tin này trong hệ thống tập tin /proc nếu như BIOS đã tìm thấy các thiết bị PnP trong thời gian khởi tạo. Tập tin /proc/bus/pnp sẽ chứa thông tin này. Tập tin này sẽ không có mặt trên một hệ thống chỉ có PCI.

Ổ đĩa cứng IDE

Trên các hệ thống PC hiện đại, các ổ đĩa cứng Các thiết bị điện tử ổ đĩa tích hợp (Integrated Drive Electronics) hay IDE là phổ biến nhất. Chúng còn được gọi là các ổ đĩa gắn kèm AT (AT Attachment) hay ổ đĩa ATA theo tên của máy tính PC-AT ban đầu của IBM. Một loại ổ đĩa khác sử dụng giao diện Giao diện hệ thống máy tính nhỏ (Small Computer System Interface) hay SCSI cũng rất phổ biến, đặc biệt là trên các máy chủ. Các ổ đĩa IDE có lợi thế về giá thấp, trong khi các giao diện SCSI cho phép gắn kèm một số lượng lớn các ổ đĩa, với tiềm năng cao hơn về chồng chéo các hoạt động ổ đĩa khác nhau trên cùng bus và do đó có hiệu năng tiềm tàng cao hơn.

Một loại ổ đĩa mới, gọi là ATA nối tiếp (Serial ATA) hoặc SATA gần đây mới được đưa ra thị trường. Đặc tả kỹ thuật của SATA cố gắng giải quyết một số hạn chế của đặc tả kỹ thuật ATA trong khi vẫn giữ khả năng tương thích đáng kể với ATA.

BIOS và các kích thước ổ đĩa IDE

Các ổ đĩa IDE được định dạng thành các cung (sector), các đơn vị dữ liệu 512 byte. Một ổ đĩa cứng có thể chứa nhiều tấm đĩa xoay tròn, do đó các cung được bố trí thành các vòng tròn đồng tâm, mỗi vòng tròn được gọi là một trụ (cylinder). Có một đầu từ (head) để đọc hay ghi dữ liệu từ một mặt đĩa cụ thể. Để tìm dữ liệu trong một cung cụ thể, đĩa di chuyển bộ phận đầu từ đến trụ chứa cung đó, lựa chọn đầu từ thích hợp và chờ đợi cho đến khi cung tương ứng đi đến dưới đầu từ này. Điều này dẫn đến khái niệm đánh địa chỉ CHS (viết tắt của Cylinder, Head và Sector). Bạn cũng có thể nghe thấy CHS này được gọi là hình học đĩa (disk geometry).

Thật không may vì lý do lịch sử, BIOS ban đầu đã hạn chế kích thước được phép cho mỗi giá trị C, H và S và DOS, một hệ điều hành phổ biến cho máy PC, cũng đã áp đặt một giới hạn khác. Trong những năm 1990, kích thước đĩa nhanh chóng vượt xa các giới hạn CHS nhân tạo do BIOS và DOS áp đặt. Một số các chiến lược trung gian liên quan đến việc dịch các giá trị CHS thực thành các giá trị "ảo" có thể đáp ứng các ràng buộc, hoặc trong chính BIOS hoặc bằng các thường trình phần mềm mức thấp ví dụ như là phần mềm Quản lý đĩa của Ontrack (Ontrack's Disk Manager software).

Thậm chí ngay cả khi không có những giới hạn nhân tạo của BIOS hay DOS, thiết kế CHS cho phép lên đến 65.536 trụ, 16 đầu từ và 255 cung/rãnh. Điều này giới hạn dung lượng đĩa ở mức 267.386.880 cung, hay xấp xỉ 137 GB. Lưu ý rằng dung lượng đĩa, không giống như một số giá trị PC khác, được đo theo lũy thừa của 10, vì vậy 1GB = 1.000.000.000 byte.

Giải pháp là phải làm cho hệ thống bỏ qua hình học đĩa và để việc đó cho ổ đĩa tính toán. Hệ thống, thay vì yêu cầu một giá trị CHS chỉ đơn giản yêu cầu một Địa chỉ khối lô gic (Logical Block Address) hay LBA và các thiết bị điện tử của ổ đĩa sẽ tính toán ra thực sự cung nào phải đọc hoặc viết. Quá trình này đã được chuẩn hóa vào năm 1996 với việc thông qua chuẩn ATA-2 (tiêu chuẩn X3.279-1996, Giao diện gắn kèm AT với các mở rộng - AT Attachment Interface with Extensions).

Như đã nói ở trên, BIOS cần thiết để khởi động một hệ thống, do đó việc khởi động từ một ổ đĩa cứng yêu cầu BIOS có đủ hiểu biết về bố trí đĩa để định vị và nạp chương trình ban đầu rồi chương trình này sẽ nạp toàn bộ hệ điều hành. Một BIOS cũ hơn, không hiểu các đĩa LBA sẽ có thể bị giới hạn sẽ khởi động từ bên trong 1024 trụ đầu tiên của một đĩa hoặc ít nhất là 1024 trụ đầu tiên theo cách như BIOS hiểu hình học đĩa! Một BIOS như vậy có lẽ bây giờ khá hiếm, nhưng nếu bạn cần phải làm việc với một BIOS như thế, có thể có một thiết lập để hỗ trợ LBA và bạn có thể cần phải xác định vị trí thư mục /boot trong một phân vùng bên trong 1024 trụ đầu tiên. Thậm chí ngay cả khi hệ thống của bạn sẽ sẵn sàng khởi động từ tận cùng của một đĩa rất lớn, nhiều công cụ phân vùng Linux sẽ cảnh báo bạn rằng một phân vùng đã vượt quá giới hạn 1024 trụ.

Hình 3 cho thấy thông tin có sẵn trong BIOS của bo mạch chủ Intel của tôi với đĩa IDE 250GB trên một trong các hệ thống Linux của tôi.

Hình 3. Cách nhìn của BIOS về một đĩa LBA lớn
Cách nhìn của BIOS về một đĩa LBA lớn

Liệt kê 9 cho thấy một phần của kết quả có sẵn trên một hệ thống Linux (trong trường hợp này là Fedora Core 3) bằng cách sử dụng lệnh hdparm -I /dev/hda cho đĩa tương tự như đã được sử dụng trong Hình 3. Lưu ý rằng giá trị CHS giới hạn đánh địa chỉ không quá 4.128.705 cung và giá trị LBA được thiết lập là 268.435.455 cung hay 137GB. Kết hợp những giá trị này với nhau suy ra rằng dung lượng thực là giá trị của LBA48. Đó là 490.234.752 cung hay 251GB.

Liệt kê 9. Kết quả của lệnh hdparm -I /dev/hda
/dev/hda:

ATA device, with non-removable media
        Model Number:       Maxtor 6Y250P0
        Serial Number:      Y638VBWE
        Firmware Revision:  YAR41BW0
Standards:
        Supported: 7 6 5 4
        Likely used: 7
Configuration:
        Logical         max     current
        cylinders       16383   65535
        heads           16      1
        sectors/track   63      63
        --
        CHS current addressable sectors:    4128705
        LBA    user addressable sectors:  268435455
        LBA48  user addressable sectors:  490234752
        device size with M = 1024*1024:      239372 MBytes
        device size with M = 1000*1000:      251000 MBytes (251 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        Queue depth: 1
        ...

Khi chúng ta đang thảo luận về khởi động, cũng nên lưu ý đến một điểm khác. Theo mặc định, một máy PC sẽ khởi động từ ổ đĩa IDE đầu tiên trong hệ thống. Một số hệ thống có thiết lập BIOS để cho phép bạn ghi đè lên điều này, nhưng hầu hết sẽ khởi động theo cách này. Đầu tiên hệ thống sẽ nạp một đoạn mã nhỏ từ bản ghi khởi động chính (master boot record - MBR) và đến lượt nó, MBR sẽ cung cấp thông tin để khởi động trên phân vùng nào. Chúng tôi sẽ trình bày nhiều hơn về trình nạp khởi động cho Linux trong một hướng dẫn sau.

Nếu bạn muốn biết nhiều hơn về lịch sử của đĩa dung lượng lớn, xem Tài nguyên để tìm đường liên kết đến Tài liệu hướng dẫn đĩa dung lượng lớn (Large Disk HOWTO) có sẵn từ Dự án Tài liệu Linux.

Các tên đĩa của Linux

Chúng tôi sẽ trình bày nhiều hơn về cách Linux sử dụng các đĩa trong các hướng dẫn sau trong loạt bài này. Tuy nhiên, lúc này là thời điểm tốt để giới thiệu cho bạn một hệ thống tập tin Linux quan trọng khác, hệ thống tập tin /dev. Giống như /proc, đây là một hệ thống tập tin giả để mô tả các thiết bị đang có hoặc có thể có trên một hệ thống Linux. Trong hệ thống tập tin /dev bạn sẽ tìm thấy các mục như /dev/hda, /dev/hda5, /dev/sda, /dev/sdb1 và v.v… Bạn sẽ tìm thấy nhiều mục khác cho các loại thiết bị khác, nhưng bây giờ ta hãy xem xét những mục bắt đầu bằng hoặc /dev/hd hoặc /dev/sd.

Các thiết bị bắt đầu bằng /dev/hd, như dev/hda hay /dev/hda5 nói đến các ổ đĩa IDE. Ổ đĩa đầu tiên trên bộ điều khiển IDE đầu tiên là /dev/hda và ổ đĩa thứ hai, nếu có mặt, là /dev/hdb. Tương tự như vậy, ổ đĩa đầu tiên của bộ điều khiển IDE thứ hai là /dev/hdc và ổ đĩa thứ hai là /dev/hdd. Như bạn có thể nhìn thấy từ Liệt kê 10, có rất nhiều thứ được định nghĩa trong /dev hơn những thứ có khả năng trên hệ thống của bạn.

Liệt kê 10. Các mục nhập /dev/hd? và /dev/sd?
[ian@lyrebird ian]$ ls /dev/hd?
/dev/hda  /dev/hdd  /dev/hdg  /dev/hdj  /dev/hdm  /dev/hdp  /dev/hds
/dev/hdb  /dev/hde  /dev/hdh  /dev/hdk  /dev/hdn  /dev/hdq  /dev/hdt
/dev/hdc  /dev/hdf  /dev/hdi  /dev/hdl  /dev/hdo  /dev/hdr
[ian@lyrebird ian]$ ls /dev/sd?
/dev/sda  /dev/sde  /dev/sdi  /dev/sdm  /dev/sdq  /dev/sdu  /dev/sdy
/dev/sdb  /dev/sdf  /dev/sdj  /dev/sdn  /dev/sdr  /dev/sdv  /dev/sdz
/dev/sdc  /dev/sdg  /dev/sdk  /dev/sdo  /dev/sds  /dev/sdw
/dev/sdd  /dev/sdh  /dev/sdl  /dev/sdp  /dev/sdt  /dev/sdx

Như chúng ta đã làm ở trên với các IRQ, chúng ta có thể sử dụng lệnh dmesg để tìm ra các thiết bị đĩa nào đã được tìm thấy trong quá trình tự mồi. Kết quả đầu ra từ một trong các hệ thống của tôi được hiển thị trong Liệt kê 11.

Liệt kê 11. Các ổ đĩa cứng được tìm thấy trong lúc khởi động (bootup)
[ian@lyrebird ian]$ dmesg | grep "[hs]d[a-z]"
Kernel command line: ro root=LABEL=RHEL3 hdd=ide-scsi
ide_setup: hdd=ide-scsi
    ide0: BM-DMA at 0x1860-0x1867, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0x1868-0x186f, BIOS settings: hdc:DMA, hdd:DMA
hda: WDC WD1600JB-00EVA0, ATA DISK drive hdc: Maxtor 6Y200P0, ATA DISK drive hdd: 
    SONY DVD RW DRU-700A, ATAPI CD/DVD-ROM drive
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 312581808 sectors (160042 MB) w/8192KiB Cache, 
     CHS=19457/255/63, UDMA(100)
hdc: attached ide-disk driver.
hdc: host protected area => 1
hdc: 398297088 sectors (203928 MB) w/7936KiB Cache, 
     CHS=24792/255/63, UDMA(33)
 hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 hda9 hda10 hda11 >
 hdc: hdc1 < hdc5 hdc6 hdc7 hdc8 >
hdd: attached ide-scsi driver.

Từ các dòng tô đậm trong Liệt kê 11, chúng ta thấy rằng hệ thống có hai ổ đĩa IDE (hda và hdc) và một ổ DVD-RW (hdd). Lưu ý rằng không có hdb, biểu thị rằng không có ổ đĩa thứ hai trên bộ điều khiển IDE đầu tiên trên hệ thống này. Một ổ đĩa IDE có thể có đến bốn phân vùng chính (primary) và một số không giới hạn các phân vùng logic. Xét ổ đĩa hdc trong Liệt kê 11, chúng ta thấy rằng nó có một phân vùng chính (hdc1) và bốn phân vùng logic (hdc5, hdc6, hdc7 và hdc8). Trong Chủ đề 104 trong một hướng dẫn sau của loạt bài này chúng ta sẽ thấy rằng hdc1 thực sự là một thùng chứa (container) (hoặc phân vùng mở rộng) dành cho các phân vùng logic.

Trước đây, các thiết bị như là sda và sdb là các đĩa SCSI, mà chúng ta sẽ thảo luận thêm về chúng khi xem xét cách thiết lập các thiết bị SCSI. Cho đến bản Linux nhân 2.4, các thiết bị CD và DVD IDE thường được xử lý qua mô phỏng SCSI. Một thiết bị như vậy thường xuất hiện trong /dev như là một cái gì đó giống như /dev/cdrom, một liên kết biểu tượng tới thiết bị mô phỏng SCSI. Đối với hệ thống ở trên, Liệt kê 12 cho thấy rằng /dev/cdrom là một liên kết đến /dev/scd0 chứ không phải đến /dev/hdd như mong đợi. Lưu ý tham số nhân Linux hdd=ide-scsi trong Liệt kê 11 cũng như chỉ thị rằng trình điều khiển ide-scsi được gắn cho hdd.

Liệt kê 12. Mô phỏng SCSI IDE
[ian@lyrebird ian]$ ls -l /dev/cdrom
lrwxrwxrwx  1 root   root   9 Jan 11 17:15 /dev/cdrom -> /dev/scd0

Hiện nay, bạn sẽ thấy rằng cả hai thiết bị lưu trữ USB và SATA xuất hiện như là các thiết bị sd, chứ không phải hd.

Các thiết bị ngoại vi kế thừa

Chúng ta đã nói đến ở trên về các thiết bị ngoại vi như các cổng nối tiếp hoặc các cổng song song thường được tích hợp vào một bo mạch chủ và chúng ta đã thấy một số bố trí cổng IO và IRQ tiêu chuẩn cho những thiết bị này. Các cổng nối tiếp, nói riêng, đã được sử dụng để kết nối nhiều loại thiết bị và chúng có một lịch sử là khó cấu hình. Với sự ra đời của IEEE 1394, còn được gọi là các thiết bị Firewire và thiết bị Bus nối tiếp đa năng (Universal Serial Bus) hay thiết bị USB, cấu hình tự động và cắm nóng các thiết bị đã thay thế phần lớn các việc vặt để đảm bảo cấu hình chính xác cổng nối tiếp hoặc cổng song song. Thật vậy, một hệ thống không kế thừa (legacy-free) không hỗ trợ các cổng nối tiếp hoặc song song tiêu chuẩn. Nó cũng không hỗ trợ ổ đĩa mềm hoặc một bàn phím hoặc chuột kết nối PS/2.

Bây giờ chúng ta sẽ thảo luận một số thiết lập BIOS phổ biến mà bạn có thể cần để cấu hình.

Các cổng nối tiếp (COMn)

Các cổng nối tiếp kế thừa được gọi là COM1 cho đến COM4. Nếu hệ thống của bạn có một đầu nối cổng nối tiếp (ban đầu là đầu nối DB25 25-chân nhưng bây giờ phổ biến hơn là đầu nối DB9 9-chân) thì sẽ có thể sử dụng địa chỉ cơ sở và IRQ mặc định cho COM1, cụ thể là cổng IO 3F8 và IRQ 4. Các địa chỉ cổng IO và IRQ tiêu chuẩn cho cổng nối tiếp được hiển thị trong Bảng 3.

Bảng 3. Bố trí cổng nối tiếp
TênĐịa chỉIRQ
COM13F8-3FF4
COM22F8-2FF3
COM33E8-3EF4
COM42E8-2EF3

Bạn sẽ nhận thấy rằng COM1 và COM3 dùng chung IRQ 4 và tương tự như vậy COM2 và COM4 dùng chung IRQ 3. Trừ khi trình điều khiển và thiết bị thực sự có thể dùng chung ngắt hoặc một thiết bị không sử dụng các ngắt, điều này có nghĩa là hầu hết các hệ thống thực sẽ chỉ sử dụng COM1 và COM2.

Thỉnh thoảng, bạn có thể cần vô hiệu hóa một cổng nối tiếp trên bo mạch hoặc đặt cấu hình nó để sử dụng một địa chỉ và IRQ khác thay thế. Lý do nhiều khả năng nhất để làm điều này là các xung đột với một modem PnP trong một khe cắm ISA hay mong muốn sử dụng modem PnP ở COM1. Chúng tôi khuyên bạn chỉ thay đổi những điều này nếu bạn gặp các vấn đề với Linux trong lúc dò tìm cấu hình của bạn.

Các cổng song song (LPTn)

Các cổng song song kế thừa được gọi là LPT1 cho đến LPT4, mặc dù thông thường chỉ có nhiều nhất là hai cổng có mặt. Nếu hệ thống của bạn chỉ có một đầu nối cổng song song thì có khả năng nó sẽ sử dụng địa chỉ cơ sở và IRQ mặc định cho LPT1, cụ thể là cổng IO 378 và IRQ 7. Các địa chỉ cổng IO và IRQ tiêu chuẩn cho cổng song song được hiển thị trong Bảng 4.

Bảng 4. Bố trí cổng song song
TênĐịa chỉIRQ
LPT1378-37F7
LPT2278-27F5
LPT*3BC-3BE

Lưu ý rằng các cổng IO 3BC-3BE ban đầu được sử dụng trên một bộ tiếp hợp (adapter) đồ họa Hercules có một cổng song song. Nhiều hệ thống BIOS sẽ bố trí dải này cho LPT1 và hai dải khác sẽ trở thành LPT2 và LPT3 tương ứng thay vì LPT1 và LPT2.

Nhiều hệ thống không sử dụng các ngắt cho các máy in, do đó trên thực tế IRQ này có thể được sử dụng hoặc không. Để chia sẻ các IRQ cho việc in ấn và chia sẻ IRQ 7 cho bo mạch âm thanh (tương thích Sound Blaster) cũng rất phổ biến.

Các cổng song song ban đầu được dùng cho in ấn với luồng dữ liệu chảy tới máy in và một vài dòng dành riêng để báo cáo trạng thái. Sau đó, cổng song song được sử dụng để gắn nhiều loại thiết bị (bao gồm các ổ đĩa CD-ROM và ổ băng), do đó, bản chất chỉ xuất ra của luồng dữ liệu đã thay đổi trở thành một luồng dữ liệu hai chiều.

Các tiêu chuẩn hiện hành có thể áp dụng cho cổng song song là Phương thức truyền tín hiệu cho một giao diện ngoại vi song song hai chiều cho máy tính cá nhân chuẩn (IEEE Std. 1284-1994 Standard Signaling Method for a Bi-Directional Parallel Peripheral Interface for Personal Computers). Tiêu chuẩn này đã định nghĩa 5 chế độ truyền tín hiệu. BIOS của bạn có thể cho bạn các lựa chọn để thiết lập, ví dụ như hai chiều, EPP, ECPEPP và ECP. ECP là viết tắt của Cổng có nhiều khả năng nâng cao (Enhanced Capabilities Port) và được thiết kế để sử dụng với máy in. EPP là viết tắt của Cổng song song nâng cao (Enhanced Parallel Port) và được thiết kế cho các thiết bị như các ổ CD-ROM và ổ băng từ thường yêu cầu một số lượng dữ liệu lớn chảy theo hai chiều. Sự lựa chọn mặc định của BIOS có nhiều khả năng là ECP. Cũng giống như đối với các cổng nối tiếp, chỉ thay đổi thiết lập này khi bạn có một thiết bị không hoạt động đúng.

Cổng đĩa mềm

Nếu hệ thống của bạn có một trình điều khiển đĩa mềm kế thừa, thì nó sẽ sử dụng cổng 3F0-3F7. Nếu bạn cài đặt một ổ đĩa mềm kế thừa trong một hệ thống không có một trình điều khiển đĩa mềm nào, thì bạn có thể phải kích hoạt các tùy chọn kế thừa trong BIOS của bạn. Tham khảo thông tin của nhà sản xuất để biết thêm chi tiết.

Bàn phím và chuột

Trình điều khiển bàn phím/chuột sử dụng các cổng 0060 và 0064 cho các bàn phím và chuột di sản. Đó là do bàn phím/chuột được nối bằng một đầu nối tròn PS2. Nhiều hệ thống sẽ tạo một lỗi Tự kiểm tra khi bật nguồn điện (Power-On-Self-Test - POST) nếu bàn phím không được gắn vào. Hầu hết các máy tính được thiết kế để được sử dụng như các máy chủ và nhiều máy tính để bàn, bây giờ có các tùy chọn BIOS để cho phép khởi động không có lỗi khi không có sự hiện diện của một bàn phím hoặc chuột.

Một khi hệ thống được cài đặt, việc chạy mà không có một bàn phím (hoặc chuột) hiếm khi có vấn đề. Các máy chủ thường xuyên chạy theo cách này. Việc quản lý được thực hiện qua mạng bằng cách sử dụng hoặc các công cụ quản trị web hoặc một giao diện dòng lệnh như telnet hoặc (tốt nhất là) ssh.

Việc cài đặt trên một hệ thống không có bàn phím thường thực hiện bằng cách sử dụng một thiết bị đầu cuối (hoặc bộ mô phỏng thiết bị đầu cuối) được gắn vào qua một cổng nối tiếp. Thông thường, bạn sẽ cần một bàn phím và màn hình để đảm bảo rằng BIOS được thiết lập đúng với một cổng nối tiếp được kích hoạt. Bạn cũng có thể cần một đĩa hoặc CD khởi động tùy chỉnh để thực hiện cài đặt hệ thống Linux.

Một phương pháp khác được các hệ thống như là máy chủ phiến JS20 IBM sử dụng là mô phỏng một kết nối nối tiếp qua một mạng LAN.


Các modem và các bo âm thanh

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

Các Modem

modem (viết tắt của modulator/demodulator - điều chế/giải điều chế) là một thiết bị để chuyển đổi các tín hiệu số được sử dụng trong các máy tính thành một luồng dữ liệu tương tự nối tiếp được truyền dẫn qua đường dây điện thoại. Trong những ngày đầu của các máy PC, các modem là các thiết bị bên ngoài được gắn vào một cổng nối tiếp. Sau này, các modem được thực hiện trên một bo mạch có thể được lắp bên trong máy tính, làm giảm chi phí về vỏ hộp và nguồn điện và loại bỏ một cáp nối giữa cổng nối tiếp và modem. Một cách giảm chi phí khác là một số các chức năng thông thường do modem thực hiện được chuyển cho phần mềm trong máy PC. Kiểu modem này có thể được gọi là một modem mềm (softmodem), modem HCF, modem HSP, modem HSF hoặc modem không có trình điều khiển, và những thuật ngữ khác nữa. Các modem như vậy được thiết kế để giảm chi phí của các hệ thống thường chạy hệ điều hành Windows của Microsoft. Thuật ngữ winmodem thường được sử dụng cho các thiết bị như vậy, mặc dù Winmodem® là nhãn hiệu thương mại đã đăng ký của công ty U.S. Robotics, một công ty đã sản xuất một số modem dưới cái tên đó.

Hầu hết các modem bên ngoài và các modem bên trong đầy đủ chức năng sẽ hoạt động trong Linux mà không có vấn đề gì. Một số modem đòi hỏi sự hỗ trợ phần mềm từ hệ điều hành của máy PC cũng sẽ làm việc với Linux và danh sách các modem làm việc thuộc loại này đang liên tục gia tăng. Các modem được hỗ trợ phần mềm để làm việc trong Linux thường được gọi là linmodems và có một trang web dành riêng cho chúng (linmodems.org). Nếu bạn có một modem như vậy, bước đầu tiên bạn cần làm là truy cập trang web linmodems (xem Tài nguyên) và tải về phiên bản mới nhất của công cụ scanModem. Nó sẽ báo cho bạn những gì đã biết về các trình điều khiển có sẵn (nếu có) cho modem của bạn.

Nếu bạn có một modem ISA, bạn sẽ cần phải đảm bảo rằng các cổng, các IRQ và các kênh DMA không xung đột với các thiết bị khác. Xem phần Thiết lập BIOS (BIOS settings) ở trên để biết thêm thông tin.

Các modem được thảo luận trong phần này là các modem không đồng bộ (asynchronous). Còn có một loại modem khác, được gọi là các modem đồng bộ (synchronous) thường sử dụng cho HDLC, SDLC, BSC hoặc ISDN. Đại thể, chúng ta có thể nói rằng truyền thông không đồng bộ liên quan đến việc truyền các byte thông tin riêng lẻ trong khi truyền thông đồng bộ liên quan đến việc truyền toàn bộ các khối thông tin.

Hầu hết các truyền thông Linux diễn ra bằng cách sử dụng giao thức Internet hay IP. Vì vậy, một hệ thống Linux sẽ cần phải chạy những cái trông giống như IP trên một đường không đồng bộ mà ban đầu chưa được thiết kế cho các giao thức khối như IP. Phương pháp đầu tiên thực hiện điều này được gọi là Giao thức giao diện đường nối tiếp (Serial Line Interface Protocol) hay SLIP. Một biến thể sử dụng các tiêu đề đã nén được gọi là CSLIP. Ngày nay, hầu hết các nhà cung cấp dịch vụ Internet (ISP) đều hỗ trợ kết nối quay số bằng cách sử dụng Giao thức liên kết điểm-điểm (Point-to-Point Protocol) hay PPP.

Tài liệu hướng dẫn nối mạng (Linux Networking-HOWTO) và Hướng dẫn các nhà quản trị mạng (The Network Administrators' Guide) có sẵn trong Dự án tài liệu Linux (xem Tài nguyên) cung cấp thông tin về cấu hình SLIP, CSLIP và PPP.

Khi truyền thông bằng cách sử dụng một modem, có một số thiết lập mà bạn có thể cần phải thực hiện trên hệ thống Linux của bạn. Quan trọng nhất, bạn sẽ thiết lập tốc độ truyền thông giữa hệ thống của bạn và modem. Tốc độ này thường sẽ cao hơn tốc độ danh nghĩa của đường dây và luôn được thiết lập bằng giá trị cao nhất mà bộ vi mạch xử lý (chipset) cổng nối tiếp của bạn và modem của bạn hỗ trợ. Một cách để thiết lập hoặc xem các thông số của modem sẽ được trình điều khiển nối tiếp sử dụng là bằng chương trình setserial. Chúng tôi minh họa lệnh setserial trong Liệt kê 13. Lưu ý rằng tùy chọn -G in kết quả đầu ra theo một định dạng phù hợp để sử dụng trong việc thiết lập các tham số với setserial. Trong trường hợp này, UART (Máy thu phát không đồng bộ đa năng -Universal Asynchronous Receiver Transmitter) là một 16550 có bộ đệm, một kiểu UART chung trên các máy PC hiện đại. Tốc độ được đặt là 115.200 bps, thường được sử dụng với UART này và hầu hết các modem 56kbps bên ngoài hiện đại. Lưu ý rằng tốc độ mặc định trên một số hệ thống mới hơn có thể được thiết lập lên tới 460.800 bps. Nếu modem của bạn tỏ ra không đáp ứng, thì đây là điều đầu tiên bạn cần kiểm tra.

Liệt kê 13. Lệnh setserial
[root@attic4 ~]# setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
[root@attic4 ~]# setserial -G /dev/ttyS0
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test

Một điều cần lưu ý về lệnh setserial là nó không thử phần cứng. Tất cả mọi việc nó làm là báo cho trình điều khiển nối tiếp sử dụng các tham số nào, trừ khi bạn sử dụng các tham số autoconfig và auto_irq. Trong trường hợp này, lệnh setserial sẽ yêu cầu nhân Linux thử phần cứng. Xem các trang hướng dẫn sử dụng lệnh setserial để biết thêm thông tin về những điều này và các tùy chọn khác của lệnh.

Chúng tôi sẽ trình bày thêm về nối mạng trong một hướng dẫn cho kỳ thi LPI 102 (Xem Tài nguyên). Trong khi chờ đợi, nếu bạn muốn thiết lập một kết nối PPP, có một số công cụ tuyệt vời để giúp bạn làm điều này. Chương trình kppp có một giao diện đồ họa người dùng (GUI) đẹp mắt và dễ sử dụng. Lệnh wvdial cung cấp một công cụ dòng lệnh thông minh để thiết lập các kết nối quay số. Thêm vào đó, các bản phân phối có thể có các công cụ khác, hoặc dành riêng cho các kết nối PPP hay quay số, hoặc như một phần của một công cụ cấu hình mạng tổng quát hơn, ví dụ như system-config-network (hệ thống-cấu hình- mạng) trong Fedora Core 4..

Điều khiển lưu lượng là một khía cạnh khác của truyền thông modem thường nằm dưới sự kiểm soát của chương trình truyền thông nhưng có thể được thiết lập hoặc có các bộ giá trị mặc định trên chính modem. Đây là một cách để cho một đầu báo với đầu bên kia hãy chờ đợi một lát trong khi đầu thu xóa các bộ đệm dữ liệu của nó. Điều này có thể được thực hiện bằng phần mềm bằng cách gửi các ký tự XON và XOFF. Cách ưa thích hơn và được sử dụng cho các kết nối PPP, được gọi là điều khiển lưu lượng phần cứng trong đó trạng thái của các đường tín hiệu modem nhất định được sử dụng để báo hiệu sự sẵn sàng thu nhận dữ liệu. Các tín hiệu được sử dụng là Xóa để gửi (Clear to Send) hay CTSSẵn sàng để gửi (Ready to Send) hay RTS, Vì vậy bạn sẽ thường thấy điều này được mô tả như là điều khiển lưu lượng sử dụng RTS/CTS hoặc một cái gì đó tương tự. Hình 4 hiển thị tốc độ và điều khiển lưu lượng phần cứng được thiết lập như thế nào khi sử dụng chương trình kppp.

Hình 4. Đặt cấu hình các tham số modem bằng lệnh kppp
Đặt cấu hình các tham số modem bằng lệnh kppp

Bo mạch âm thanh

Hầu hết các máy tính cá nhân bán ra hiện nay đều có các khả năng âm thanh hay bo mạch âm thanh.

Cổng âm thanh (Sound Blaster)

Loạt các bo mạch âm thanh Sound Blaster của Creative Labs đã thiết lập một chuẩn công nghiệp thực tiễn (de facto) cho bo mạch âm thanh. Mặc dù hiện đang tồn tại nhiều nhãn hiệu bo mạch âm thanh tuyệt vời khác, phần lớn chúng đều cung cấp một chế độ tương thích với một hoặc nhiều loại bo âm thanh Sound Blaster. Bo mạch Sound Blaster ban đầu là loại bo mạch 8-bit hoạt động trong những máy PC IBM đầu tiên. Sau đó, các kiểu bo mạch 16-bit cho máy tính PC-AT và tương thích thường sử dụng bus PC-AT 16-bit hoặc bus ISA. Ngày nay, hầu hết các loại bo mạch này sử dụng bus PCI. Nhiều bo mạch chủ thậm chí đã cung cấp một vi mạch (chip) âm thanh có khả năng tương thích Sound Blaster tích hợp ngay trên bo mạch. Các thiết bị âm thanh cũng có thể được gắn vào qua các kết nối USB, mặc dù chúng tôi sẽ không trình bày chúng ở đây.

Một bo mạch Sound Blaster dùng bus ISA thường sử dụng các cổng 0220-022F, mặc dù các địa chỉ cơ sở 240, 260 hoặc 280 thường có thể cấu hình được. Tương tự, IRQ thường cũng có thể cấu hình được, với các lựa chọn phổ biến là 2, 5, 7 hoặc 10. Thiết lập mặc định là sử dụng IRQ 5. Các bo mạch cũng thường có thể được cấu hình để sử dụng các kênh DMA thay thế.

Giống như với tất cả các thiết bị ISA, bạn sẽ cần phải đảm bảo rằng các cổng, các IRQ và các kênh DMA không xung đột với các thiết bị khác. Xem phần Thiết lập BIOS ở trên để biết thêm thông tin.

Cổng MIDI (MPU-401)

Nhiều bo mạch âm thanh cũng có giao diện để gắn kèm một thiết bị MIDI (Musical Instrument Digital Interface - Giao diện nhạc cụ số). Thông thường, giao diện này mô phỏng Roland MPU -401. Giao diện ISA của MPU-401 sử dụng các cổng tiêu chuẩn là 0200-020F.

Giống như với tất cả các thiết bị ISA, bạn sẽ cần phải đảm bảo rằng các cổng, các IRQ và các kênh DMA không xung đột với các thiết bị khác. Xem phần Thiết lập BIOS ở trên để biết thêm thông tin.

Cấu hình hỗ trợ âm thanh của Linux

Các nhân Linux 2.4 và 2.6 hiện đại có hỗ trợ âm thanh cho nhiều loại thiết bị âm thanh được đưa sẵn vào nhân, thường là dưới dạng các môđun. Cũng giống như với các thiết bị khác, chúng ta có thể sử dụng lệnh pnpdump dành cho các thiết bị ISA hoặc lệnh lspci dành cho các thiết bị PCI để hiển thị thông tin về thiết bị đó. Liệt kê 14 cho thấy kết quả của lệnh lspci đối với một hệ thống âm thanh Intel trên bo mạch chủ hệ thống.

Liệt kê 14. Sử dụng lệnh lspci để hiển thị các tài nguyên âm thanh
[root@lyrebird root]# lspci | grep aud
00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM 
               (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)

Các mô đun trong nhân Linux là cách ưa dùng để cung cấp hỗ trợ cho nhiều loại thiết bị. Các mô đun chỉ cần được nạp cho các thiết bị thực sự hiện có và chúng có thể được dỡ xuống và nạp lại mà không cần khởi động lại hệ thống Linux. Đối với nhân 2.4 và trước đó, thông tin về cấu hình môđun được lưu trong /etc/modules.conf. Đối với nhân 2.6, hệ thống mô đun nhân được thiết kế lại và thông tin bây giờ được lưu giữ trong /etc/modprobe.conf. Trong cả hai trường hợp, lệnh lsmod sẽ định dạng nội dung của /proc/modules và hiển thị trạng thái của các môđun được nạp.

Liệt kê 15 cho thấy nội dung của /etc/modprobe.conf của một nhân 2.6 và Liệt kê 16 cho thấy kết quả của lệnh lsmod khi nó liên quan đến các thiết bị âm thanh trên hệ thống này.

Liệt kê 15. Ví dụ về /etc/modprobe.conf (nhân 2.6)
[root@attic4 ~]# cat /etc/modprobe.conf
alias eth0 e100
alias snd-card-0 snd-intel8x0
install snd-intel8x0 /sbin/modprobe --ignore-install snd-intel8x0 &&\
 /usr/sbin/alsactl restore >/dev/null 2>&1 || :
remove snd-intel8x0 { /usr/sbin/alsactl store >/dev/null 2>&1 || : ; }; \
/sbin/modprobe -r --ignore-remove snd-intel8x0
alias usb-controller ehci-hcd
alias usb-controller1 uhci-hcd
Liệt kê 16. Kết quả đầu ra có liên quan đến âm thanh của lệnh lsmod (nhân 2.6)
[root@attic4 ~]# lsmod |egrep '(snd)|(Module)'
Module                  Size  Used by
snd_intel8x0           34689  1
snd_ac97_codec         75961  1 snd_intel8x0
snd_seq_dummy           3653  0
snd_seq_oss            37057  0
snd_seq_midi_event      9153  1 snd_seq_oss
snd_seq                62289  5 snd_seq_dummy,snd_seq_oss,snd_seq_midi_event
snd_seq_device          8781  3 snd_seq_dummy,snd_seq_oss,snd_seq
snd_pcm_oss            51185  0
snd_mixer_oss          17857  1 snd_pcm_oss
snd_pcm               100169  3 snd_intel8x0,snd_ac97_codec,snd_pcm_oss
snd_timer              33605  2 snd_seq,snd_pcm
snd                    57157  11 snd_intel8x0,snd_ac97_codec,snd_seq_oss,
  snd_seq,snd_seq_device,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore              10913  1 snd
snd_page_alloc          9669  2 snd_intel8x0,snd_pcm

Liệt kê 17 cho thấy nội dung của etc/modules.conf của một nhân 2.4 và Liệt kê 18 cho thấy kết quả đầu ra của lệnh lsmod khi nó liên quan đến các thiết bị âm thanh trên hệ thống này. Lưu ý sự giống nhau giữa các tập tin modules.conf và modprobe.conf.

Liệt kê 17. Ví dụ về /etc/modules.conf (nhân 2.4)
[root@lyrebird root]# cat /etc/modules.conf
alias eth0 e100
alias usb-controller usb-uhci
alias usb-controller1 ehci-hcd
alias sound-slot-0 i810_audio
post-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :
pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :
Liệt kê 18. Kết quả đầu ra có liên quan đến âm thanh của lệnh lsmod (nhân 2.4)
Module                  Size  Used by    Not tainted
smbfs                  43568   1  (autoclean)
i810_audio 28824 0 (autoclean) ac97_codec 16840 0 (autoclean) 
    [i810_audio] soundcore 6436 2 (autoclean) [i810_audio]
st                     30788   0  (autoclean) (unused)

Hỗ trợ âm thanh trên hệ thống 2.4 và nhiều hệ thống trước đó được cung cấp qua trình điều khiển hệ thống âm thanh mở miễn phí (Open Sound System free) hay OSS. Nhiều hệ thống hiện nay sử dụng trình điều khiển Kiến trúc âm thanh Linux nâng cao (Advanced Linux sound architecture) hay trình điều khiển ALSA. Red Hat tạo ra tiện ích sndconfig để hỗ trợ đặt cấu hình các bo mạch âm thanh PnP ISA. Tiện ích này cũng làm việc với các bo mạch âm thanh PCI. Nó có thể có mặt trên các hệ thống không sử dụng các trình điều khiển ALSA, mặc dù sự hỗ trợ bằng mô đun hiện đại đã làm cho nó hầu như không còn cần thiết nữa. Tiện ích này sẽ thử các bo mạch âm thanh, phát ra âm thanh kiểm tra là lời nói của Linus Torvalds và sau đó cập nhật tập tin /etc/modules.conf. Hoạt động tiêu biểu được hiển thị trong Hình 5 và 6.

Hình 5. Tiện ích sndconfig
Tiện ích sndconfig
Hình 6. Tiện ích sndconfig
Tiện ích sndconfig

Thiết lập các thiết bị SCSI

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

Tổng quan SCSI

Giao diện hệ thống máy tính nhỏ (Small Computer System Interface), được biết đến nhiều hơn dưới tên gọi SCSI, là một giao diện được thiết kế để kết nối các thiết bị luồng như là các thiết bị băng từ và thiết bị lưu trữ khối như các đĩa cứng, CD-ROM và DVD. Nó cũng được sử dụng cho các thiết bị khác như các máy quét và các máy in. SCSI được phát âm là "scuzzy". SCSI được thiết kế để cho phép nhiều thiết bị trên bus. Một thiết bị, được gọi là bộ điều khiển (controller) có trách nhiệm quản lý bus. Các thiết bị SCSI có thể ở bên trong hay bên ngoài.

Đã có ba phiên bản chính của các tiêu chuẩn SCSI từ Viện tiêu chuẩn quốc gia Mỹ (ANSI).

SCSI
là tiêu chuẩn ban đầu (X3.131-1986), bây giờ thường được gọi là SCSI-1. SCSI-1 này xuất phát từ các nỗ lực của Shugart Associates để có được một giao diện tiêu chuẩn cho các thiết bị đĩa. Tiêu chuẩn này đã hỗ trợ lên tới 8 thiết bị trên một cáp. SCSI-1 sử dụng sự kết thúc thụ động (dưới đây sẽ trình bày kỹ hơn về khái niệm này). Tiêu chuẩn này hiện đã bị hủy bỏ, mặc dù các thiết bị vẫn còn có thể làm việc trên các cáp SCSI với bộ kết thúc (trở kháng) thích hợp. Giao diện dữ liệu là 8 bit song song với tốc độ tối đa 5 MBps (megabyte/giây). Tiêu chuẩn của SCSI được thiết kế cho các đĩa, nhưng rất linh hoạt và được sử dụng cho các thiết bị khác, đáng chú ý là các máy quét và các thiết bị tốc độ chậm hơn, như Zip. FConnection sử dụng một cáp có 50 đầu nối, ban đầu dùng một đầu nối Centronics, nhưng sau này dùng một đầu nối D-shell 50 chân, tương tự như đầu nối nối tiếp RS-232 DB-25,
SCSI-2
đã được phê duyệt là chuẩn ANSI X3.131-1994 vào năm 1994. Phiên bản này tăng gấp đôi tốc độ của bus đến 10Mbps cũng như đưa vào thêm cái gọi là truyền dữ liệu 16-bit hay dải rộng. Một bus 16-bit chạy ở 10Mbps có thể truyền dữ liệu 20Mbps. Cáp đầu nối 50 chân đã được sử dụng cho các thiết bị 8-bit hay các thiết bị SCSI dải hẹp, trong khi các thiết bị dải rộng mới hơn đã sử dụng cáp 68 chân. Các cáp mật độ cao hơn cũng đã được đưa vào, cho phép có các đầu nối nhỏ hơn và rẻ hơn. SCSI-2 cũng đã tiêu chuẩn hóa bộ lệnh SCSI và đã giới thiệu truyền tín hiệu vi sai để cải thiện chất lượng ở các tốc độ cao hơn. Sau này nó được gọi là truyền tín hiệu Vi sai điện áp cao (High Voltage Differential) hay HVD. HVD có các yêu cầu kết thúc chủ động. Có thể kết hợp các thiết bị 8-bit và 16-bit trên một cáp nếu bảo đảm bộ kết thúc thích hợp. SCSI-2 hỗ trợ lên đến 16 thiết bị trên một cáp, trong số đó có thể nhiều nhất là 8 thiết bị dải hẹp.
SCSI-3
là một bộ các tiêu chuẩn chứ không phải là một tiêu chuẩn duy nhất. Điều này cho phép các tiêu chuẩn được tăng cường cho các lĩnh vực công nghệ đang thay đổi nhanh, trong khi tránh được nhu cầu phải xét lại các tiêu chuẩn dành cho công nghệ đã ổn định. Kiến trúc tổng thể được định nghĩa trong tiêu chuẩn ANSI X3.270-1996, cũng được gọi là Mô hình kiến trúc SCSI-3 (SCSI-3 Architecture Model) hay SAM. Các tiêu chuẩn SCSI trước đó bây giờ được hợp nhất trong các tiêu chuẩn Giao diện SCSI song song (SCSI Parallel Interface) hay SPI. Tốc độ lại được tăng lên và các thiết bị hiện hành 16-bit có khả năng truyền dữ liệu lên tới 320MBps ở tốc độ bus 160MBps.

SCSI-3 đã giới thiệu SCSI kênh quang (Fiber Channel SCSI) với hỗ trợ lên đến 126 thiết bị trên mỗi bus cho phép kết nối trên các đường liên kết kênh quang học 1Gbps hoặc 2GBps ở khoảng cách lên đến vài km. Điều này giúp tránh được những hạn chế vốn có liên quan đến việc sử dụng cáp nối SCSI chuẩn. Một sự giới thiệu đáng chú ý khác là Gắn kết đầu nối đơn (Single Connector Attachment) hay SCA, chỉ được sử dụng cho các thiết bị dải rộng (16-bit). SCA là một đầu nối 80-chân trong đó kết hợp các chân từ đầu nối 68-chân cũng như nguồn điện và một số chân bổ sung. SCA được thiết kế để cho phép các thiết bị được cắm nóng một cách an toàn trong một hệ thống đang chạy và thường xuyên được sử dụng trong các thiết bị triển khai Hệ thống lưu trữ đĩa cứng dự phòng độc lập (Redundant Array of Independent disks) hay hệ thống lưu trữ RAID cũng như các giá (rack) máy chủ và hệ thống lưu trữ trên mạng.

Ở trên chúng ta đã đề cập đến bộ kết thúc (trở kháng) mà không nói gì nhiều về nó. Các đặc tả kỹ thuật điện cho một bus SCSI yêu cầu mỗi đầu của bus phải được kết thúc bằng một trở kháng. Bạn phải sử dụng kiểu bộ kết thúc (terminator) thích hợp cho bus của bạn; là thụ động, HVD hay LVD. Nếu bạn trộn lẫn các thiết bị dải rộng và dải hẹp trên một bus thì hãy lưu ý rằng sự kết thúc của các thiết bị dải hẹp có thể xảy ra ở một vị trí khác với sự kết thúc của các thiết bị dải rộng. Nếu bộ điều khiển đang điều khiển chỉ một bus bên trong hoặc chỉ một bus bên ngoài, thì nó sẽ thường cung cấp luôn bộ kết thúc, hoặc là tự động hoặc thông qua cấu hình BIOS. Hãy xem hướng dẫn sử dụng của bộ điều khiển cụ thể của bạn. Nếu bộ điều khiển đang điều khiển cả một đoạn bên trong lẫn một đoạn bên ngoài, thì nó thường không cung cấp sẵn bộ kết thúc (terminator).

Một số thiết bị có khả năng tạo ra sự kết thúc, hoặc thông qua một chuyển mạch hoặc các cách khác như cầu nối nhảy (jumper). Một lần nữa, hãy tham khảo hướng dẫn sử dụng cho thiết bị của bạn. Nếu không như thế, sự kết thúc thường được thực hiện bằng một khối bộ đầu cuối (điện trở) được cắm vào cáp. Bất kể bạn sử dụng kiểu kết thúc nào, hãy hết sức cẩn thận nếu bạn kết hợp các thiết bị dải rộng và dải hẹp trên cùng một bus, vì sự kết thúc của thiết bị dải hẹp có thể xảy ra ở một vị trí trên cáp khác với nơi kết thúc của thiết bị dải rộng.

Các số nhận dạng SCSI

Bây giờ, bạn có thể tự hỏi hệ thống quản lý nhiều thiết bị trên một cáp như thế nào. Mỗi thiết bị, kể cả bộ điều khiển, có một số nhận dạng (ID), được biểu diễn bằng một con số. Với các thiết bị SCSI dải hẹp (8-bit), số ID từ 0 đến 7. Các thiết bị SCSI dải rộng cộng thêm số 8 đến số 15. Các thiết bị dải hẹp chỉ có thể sử dụng ID từ số 0 đến số 7, trong khi các thiết bị dải rộng có thể sử dụng từ 0 đến 15. Bộ điều khiển nói chung được cấp số ID 7. Số ID cho một thiết bị có thể được thiết lập thông qua các cầu nối nhảy (jumper), các chuyển mạch hoặc đĩa quay số trên thiết bị, hoặc thông qua phần mềm. Các thiết bị sử dụng Gắn kết đầu nối đơn (Single Connector Attachment-SCA) thường có một ID được cấp phát tự động do các thiết bị này có thể cắm nóng.

Các thiết bị trên một bus SCSI có một mức ưu tiên. Mức ưu tiên cho các thiết bị dải hẹp chạy từ 0 (thấp nhất) đến 7 (cao nhất), do đó một bộ điều khiển ở địa chỉ 7 có ưu tiên cao nhất. Các số ID bổ sung thêm cho thiết bị SCSI dải rộng có mức ưu tiên 8 (thấp nhất) đến 15 (cao nhất), với 15 có mức ưu tiên thấp hơn 0. Do đó, toàn bộ trình tự ưu tiên là 8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7. Các thiết bị chậm hơn và các thiết bị không được phép giữ chậm (như các máy ghi CD hay DVD) nên được cho số ID ưu tiên cao để đảm bảo chúng nhận đủ dịch vụ.

Các thiết bị như các bộ điều khiển RAID có thể trình ra một số ID duy nhất cho bus nhưng có thể kết hợp vài đĩa. Ngoài số ID, việc đánh địa chỉ SCSI cho phép có thêm một số Số đơn vị logic (Logical Unit Number) hay LUN.Các ổ băng từ và ổ đĩa đơn, hoặc không báo lại một LUN hoặc báo một LUN bằng 0

Một bộ tiếp hợp (adapter) SCSI có thể hỗ trợ nhiều hơn một cáp hay kênh SCSI và có thể có nhiều bộ tiếp hợp SCSI trong một hệ thống. Vì thế, số ID đầy đủ của một thiết bị bao gồm số của bộ tiếp hợp, số kênh, số ID của thiết bị và số LUN.

Các thiết bị như máy ghi đĩa CD sử dụng mô phỏng ide-scsi và các thiết bị lưu trữ USB cũng sẽ có thể có bộ tiếp hợp riêng của mình.

Các tên và các tập tin Linux cho các thiết bị SCSI

Quay lại phần BIOS trong phần Các ổ đĩa IDE (IDE drives), chúng ta đã thảo luận về việc Linux phân bố các tên cho các thiết bị IDE khác nhau, như là /dev/hda và /dev/hdc. Điều này là đơn giản cho một bộ điều khiển IDE có thể hỗ trợ một hoặc hai ổ đĩa cứng. Ổ đĩa IDE thứ hai trên bộ tiếp hợp thứ hai luôn là /dev/hdd, ngay cả khi chỉ có một ổ cứng khác duy nhất là ổ đĩa chính trên bộ tiếp hợp đầu tiên (/dev/hda). Với SCSI, tình hình trở nên phức tạp hơn khi chúng ta có thể trộn lẫn các ổ đĩa cứng, ổ băng từ, ổ đĩa CD và ổ đĩa DVD, cũng như các thiết bị khác trên một cáp SCSI.

Linux sẽ gán tên thiết bị khi các thiết bị được phát hiện trong quá trình khởi động. Như vậy, ổ đĩa cứng đầu tiên trên kênh đầu tiên của bộ tiếp hợp đầu tiên sẽ trở thành /dev/sda, ổ đĩa thứ hai là /dev/sdb, v.v. Ổ băng từ đầu tiên sẽ là dev/st0, ổ thứ hai là dev/st1 và v.v. Thiết bị CD đầu tiên sẽ trở thành /dev/sr0 hoặc /dev/scd0 và thiết bị thứ hai là /dev/sr1 hoặc /dev/scd1. Các thiết bị sử dụng mô phỏng SCSI, như các thiết bị lưu trữ USB và các ổ đĩa CD hoặc DVD IDE (trước Linux nhân 2.6) cũng sẽ được cấp tên trong vùng tên này.

Trong khi chúng ta còn chưa trình bày hết tất cả những điều phức tạp về cách đặt tên SCSI ở đây, điều quan trọng nhất là phải biết rằng việc đánh số này được thực hiện lại mỗi khi khởi động. Nếu bạn lắp thêm hoặc loại bỏ một ổ đĩa cứng SCSI, thì tất cả các ổ đĩa cao hơn trước đó sẽ có một tên thiết bị khác sau khi bạn khởi động. Điều tương tự cũng diễn ra với các loại thiết bị khác. Chúng ta sẽ tìm hiểu thêm về các phân vùng, các nhãn và các hệ thống tập tin trong hướng dẫn khác của loạt bài này, nhưng bây giờ chúng tôi sẽ cảnh báo bạn về một vấn đề. Vì các đĩa có thể có đến 15 phân vùng trên đĩa, mỗi một phân vùng có một tên gắn liền với tên thiết bị (ví dụ, /dev/sda1, /dev/sda2 đến /dev/sda15), điều này có thể gây ra tình trạng lộn xộn khi hệ thống của bạn cố gắng để lắp đặt (mount) các hệ thống tập tin. Hãy đặt kế hoạch rất cẩn thận khi bạn thêm hoặc gỡ bỏ các thiết bị SCSI và hãy sử dụng các nhãn đĩa thay cho các tên thiết bị đối với ổ đĩa SCSI bất cứ khi nào có thể.

Chúng tôi đã giới thiệu hệ thống tập tin /proc trong phần Thiết lập BIOS. Hệ thống tập tin /proc cũng chứa thông tin về các thiết bị SCSI. Liệt kê 19 cho thấy nội dung của /proc/scsi/scsi trên một hệ thống có hai thiết bị SCSI, một ổ cứng có số ID 0 và một bộ điều khiển có số ID 8.

Liệt kê 19. /proc/scsi/scsi
[root@waratah root]# cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: IBM-PSG  Model: DPSS-336950M  F  Rev: S94S
  Type:   Direct-Access                    ANSI SCSI revision: 03
Host: scsi1 Channel: 00 Id: 08 Lun: 00
  Vendor: IBM      Model: YGLv3 S2         Rev: 0
  Type:   Processor                        ANSI SCSI revision: 02

Nếu bạn muốn biết thiết bị thực nào tương ứng, nói ví dụ, với /dev/sda, bạn có thể sử dụng lệnh scsi_info. Liệt kê 20 xác nhận rằng ổ cứng SCSI đầu tiên (và duy nhất) của chúng ta là /dev/sda.

Liệt kê 20. Lệnh scsi_info
[root@waratah root]# scsi_info /dev/sda
SCSI_ID="0,0,0"
MODEL="IBM-PSG DPSS-336950M  F"
FW_REV="S94S"

Tuy nhiên, lưu ý rằng một số hệ thống, ví dụ như Fedora Core 2, không có lệnh scsi_info (lệnh này là một phần của gói kernel-pcmcia-cs).

Nhiều hệ thống gần đây đã chuyển sang sử dụng trình điều khiển SCSI Generic hay sg. Khi trình điều khiển sg được sử dụng, bạn sẽ tìm thấy thông tin bổ sung trong cây con /proc /scsi/sg trong hệ thống tập tin của bạn. Bạn cũng sẽ có các thiết bị như dev/sg0, /dev/sg1, /dev/sg2 và v.v. Các thiết bị chung này thường tương ứng với một số loại thiết bị khác, ví dụ như một ổ đĩa cứng, như /dev/sda hay ổ băng từ, như /dev/st0.

Gói sg3_utils chứa một số tiện ích để thao tác và điều tra các khía cạnh của hệ thống con SCSI. Cụ thể là, lệnh sg_map sẽ cung cấp một ánh xạ giữa tên sg và tên thiết bị khác nếu nó tồn tại. Lưu ý rằng các máy quét sẽ không có tên thiết bị khác, chỉ có một tên chung. Liệt kê 21 cho thấy kết quả của lệnh sg_map trên một hệ thống có một ổ đĩa quang IDE sử dụng mô phỏng SCSI và hai ổ đĩa USB.

Liệt kê 21. Lệnh sg_map
[root@lyrebird root]# sg_map
/dev/sg0  /dev/scd0
/dev/sg1  /dev/sda
/dev/sg2  /dev/sdb

Tiện ích sg tương ứng với scsi_info là sginfo. Bạn có thể sử dụng hoặc tên thiết bị chung hoặc tên quen thuộc hơn với sginfo. Liệt kê 22 cho thấy kết quả của lệnh sginfo cho ba thiết bị của Liệt kê 21. Chú ý rằng lệnh sginfo không cung cấp thông tin cho /dev/sg1, mặc dù như đã thấy trong liệt kê lệnh scsi_info hiển thị /dev/sg1 như là một bút lưu trữ USB. Trong trường hợp này, thiết bị đã được rút ra khỏi hệ thống. Thông tin về nó vẫn còn được giữ lại (và có thể tìm thấy trong /proc/scsi/scsi). Lệnh sginfo thăm dò thiết bị để lấy thông tin trong khi lệnh scsi_info sử dụng thông tin đã lưu giữ lại. Vì vậy lệnh sginfo phải được chạy với quyền của người sử dụng root trong khi lệnh scsi_info không đòi hỏi người chạy là root, mặc dù những người sử dụng không là root có thể phải chỉ rõ đường dẫn đầy đủ là /sbin/scsi_info.

Liệt kê 22. Lệnh sginfo
[root@lyrebird root]# sginfo /dev/scd0
INQUIRY response (cmd: 0x12)
---------------------------
Device Type                        5
Vendor:                    SONY
Product:                   DVD RW DRU-700A
Revision level:            VY08

[root@lyrebird root]# sginfo /dev/sg1
INQUIRY reponse (cmd: 0x12)
---------------------------
Device Type                        0
Vendor:
Product:
Revision level:

[root@lyrebird root]# sginfo /dev/sg2
INQUIRY reponse (cmd: 0x12)
---------------------------
Device Type                        0
Vendor:                    WD
Product:                   2500JB External
Revision level:            0411

[root@lyrebird root]# scsi_info /dev/sg1
SCSI_ID="0,0,0"
MODEL=" USB DISK 12X"
FW_REV="2.00"

BIOS SCSI và trình tự khởi động

Trong khi SCSI là tiêu chuẩn trên hầu hết các máy chủ, hầu hết máy tính để bàn và máy tính xách tay thường không hỗ trợ SCSI như là tiêu chuẩn. Hệ thống như vậy sẽ thường khởi động từ đĩa mềm, đĩa CD hoặc ổ đĩa DVD hoặc ổ đĩa cứng IDE đầu tiên trong hệ thống. Thứ tự khởi động thường cấu hình được trong màn hình thiết lập BIOS như chúng ta đã thấy trong phần Thiết lập BIOS và đôi khi bằng cách nhấn một phím hoặc tổ hợp phím trong quá trình khởi động hệ thống.

Đặc tả kỹ thuật khởi động BIOS (xem Tài nguyên) định nghĩa một phương thức cho phép thêm vào các bo mạch như là các bo mạch SCSI để đưa ra một thông báo trong quá trình khởi động và đã gọi BIOS trên bo mạch cho mục đích cấu hình. Các bo mạch SCSI thường sử dụng cách này để cho phép cấu hình hệ thống con SCSI được bo mạch điều khiển. Ví dụ, một bo mạch AHA-2930U2 Adaptec sẽ đưa ra một thông báo.

Press <Ctrl><A> for SCSISelect (TM) Utility!

cho phép người dùng nhấn phím Ctrl và A cùng lúc với nhau để vào BIOS của bộ tiếp hợp. Các bo mạch khác sẽ có một quá trình tương tự để vào BIOS của bo mạch nhằm thiết lập bo mạch đó.

Một khi đã vào BIOS của bo mạch, bạn có các màn hình, thông thường cho phép bạn thiết lập địa chỉ của bộ điều khiển SCSI (thường là 7), thiết bị khởi động SCSI (thường có số ID là 0), tốc độ bus và liệu bộ điều khiển có cung cấp sự kết thúc hay không. Một số bo mạch cũ hơn có thể yêu cầu thiết bị khởi động có số ID là 0, nhưng hầu hết các bo mạch hiện đại sẽ cho phép bạn chọn bất kỳ thiết bị nào. Bạn có thể có, và nhiều khả năng sẽ có các tùy chọn khác chẳng hạn như khả năng định dạng một đĩa cứng. Xem tài liệu hướng dẫn của nhà sản xuất bo mạch của bạn để biết chi tiết. Một khi bạn đã thiết lập chế độ SCSI của bus, bạn sẽ luôn luôn vẫn phải nói với BIOS của máy PC của bạn khởi động từ đĩa SCSI thay vì một ổ đĩa IDE. Tham khảo hướng dẫn sử dụng hệ thống của bạn để xác định xem liệu bạn có thể khởi động từ một ổ đĩa không phải IDE không và làm thế nào để thiết lập việc khởi động này nếu có thể.


Các bo mạch mở rộng PC

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

Chúng tôi đã trình bày tư liệu mà bạn cần biết cho phần này khi chúng ta thảo luận về Thiết lập BIOS. Bạn nên xem lại phần thảo luận về DMA, các IRQ, các cổng và các loại bus khác nhau và các bộ tiếp hợp trong phần Các bus, các cổng, các IRQ và DMA (Buses, ports, IRQs, and DMA) để hiểu được nội dung của các tập tin /proc/dma, /proc/interrupts và /proc/ioports và cách sử dụng chúng để xác định bất kỳ xung đột nào. Xem lại tài liệu về /proc/pci và lệnh lspci. Cũng cần xem lại tư liệu trong phần Cắm vào là chạy để biết thông tin về bo mạch ISA và bo mạch PnP (cắm vào là chạy). Ở đó bạn sẽ tìm thấy thông tin về lệnh isapnp và pnpdump.


Các thiết bị truyền thông

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

Phần này trình bày một loạt các thiết bị truyền thông tin, bao gồm modem, bộ tiếp hợp ISDN, và các chuyển mạch DSL. Tư liệu cho phần này chia làm hai loại chính:

  1. Lựa chọn và lắp đặt thiết bị truyền thông của bạn, và
  2. Truyền thông với thiết bị của bạn.

Việc chọn thiết bị truyền thông của bạn cũng giống như lựa chọn bất kỳ thiết bị khác cho hệ thống của bạn ở chỗ nó cần phải phù hợp với kiểu bus của bạn (PCI hoặc ISA) và bạn cần hỗ trợ của Linux cho các thiết bị. Bạn nên xem lại phần thảo luận về DMA, các IRQ, các cổng và các loại bus và các bộ tiếp hợp khác nhau trong phần Các bus, các cổng, các IRQ và DMA để hiểu được nội dung của các tập tin /proc/dma, /proc/interrupts và /proc/ioports và cách sử dụng chúng để xác định bất kỳ xung đột nào. Xem lại tài liệu về /proc/pci và lệnh lspci. Cũng cần xem lại tư liệu trong phần Cắm vào là chạy để biết thông tin về các bo mạch ISA và PnP. Ở đó bạn sẽ tìm thấy thông tin về lệnh isapnp và pnpdump.

Nhân Linux hỗ trợ ngày càng nhiều thiết bị hơn với mỗi bản phát hành, do đó việc kiểm tra đầu tiên về khả năng hỗ trợ cần phải làm với bản phân phối mà bạn đã đang sử dụng. Nếu sự hỗ trợ đó đã được cài đặt, bản phân phối của bạn có thể có một tiện ích để giúp bạn đặt cấu hình nó. Hình 7 minh họa công cụ cấu hình mạng của Fedora Core 4. Bạn có thể thấy rằng một kết nối ethernet đã được cấu hình (và đang hoạt động) và một kết nối quay số dự phòng bằng cách sử dụng PPP cũng đã được cấu hình. Hệ thống này đã sẵn sàng hỗ trợ thêm các kết nối ISDN, Token Ring, không dây (wireless) và xDSL.

Figure 7. Hình 7. Tiện ích cấu hình mạng của Fedora Core
Tiện ích cấu hình mạng của Fedora Core

Nếu bạn phải cài đặt các trình điều khiển cho một thiết bị truyền thông, đầu tiên hãy kiểm tra xem liệu các trình điều khiển cần thiết có phải là một phần của bản phân phối mà vẫn chưa được cài đặt không và nếu thế hãy cài đặt nó. Nếu trái lại, bạn nên thử và tìm một gói phần mềm trình điều khiển đã được xây dựng (build) cho hệ thống của bạn. Sự lựa chọn cuối cùng của bạn là xây dựng gói trình điều khiển riêng của bạn từ mã nguồn. Chúng tôi sẽ trình bày về xây dựng các gói trong hướng dẫn cho kỳ thi LPI 101 Chủ đề 102. (xem Tài nguyên).

Đối với một kết nối ISDN, bạn cũng cần trình điều khiển PPP đồng bộ, bởi vì trình điểu khiển thông thường sử dụng với các modem không đồng bộ được thiết kế để truyền dẫn chế độ ký tự chứ không phải là chế độ khối. Như chúng ta đã đề cập trong phần về các Modem chúng ta sẽ thảo luận kỹ hơn về việc thiết lập các kết nối trong một hướng dẫn cho kỳ thi LPI 102 (xem Tài nguyên).

Các kết nối DSL có thể là một trong một số kiểu. Một số cung cấp một cổng ethernet được nối cầu với mạng ISP. Việc xác thực thường được thực hiện trong trường hợp này bằng cách sử dụng địa chỉ MAC ethernet của máy tính của bạn. Nếu bạn gắn một bộ định tuyến (router), hoặc một máy tính khác, với modem DSL, bạn có thể cần phải tạo bản sao địa chỉ MAC của máy tính được kết nối ban đầu để kết nối đó hoạt động. Thường thường, một ISP sẽ sử dụng Giao thức liên kết điểm-điểm qua Ethernet (Point-to-Point Protocol over Ethernet) hay PPPoE. Trong trường hợp này, bạn được cung cấp một tên người dùng và mật khẩu để sử dụng khi thiết lập kết nối. Trong trường hợp này, nếu bạn sử dụng một bộ định tuyến, bạn sẽ luôn cấu hình địa chỉ này vào bộ định tuyến và máy tính của bạn chỉ đơn giản là sẽ sử dụng kết nối ethernet chuẩn. Hiếm khi, bạn có thể có một kết nối PPPoA hay PPP qua ATM (PPP over ATM).

Các kết nối không dây có thể yêu cầu bạn phải biết tên của mạng bạn đang kết nối đến. Tên này được gọi là Bộ nhận dạng tập dịch vụ (Service Set Identifier) hay SSID. Nếu mạng sử dụng mã hóa dữ liệu, ví dụ như Bảo mật tương đương như có dây (Wired Equivalent Privacy) hay WEP hoặc Truy cập có bảo vệ WiFi (WiFi Protected Access) hay WPA thì bạn sẽ cần phải cấu hình kết nối của bạn một cách thích hợp.


Các thiết bị USB

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

Tổng quan về USB

Trong phần này chúng ta sẽ xem xét sự hỗ trợ của Linux cho các thiết bị Bus nối tiếp đa năng (Universal Serial Bus) hay các thiết bị USB. USB được phát triển bởi một liên minh các công ty với mục tiêu cung cấp một bus duy nhất, đơn giản để gắn các thiết bị ngoại vi. Trong phần về Thiết lập BIOS,chúng ta đã thấy sự phức tạp của việc quản lý tài nguyên các cổng, các IRQ và DMA trong các máy tính bus ISA. Việc thiết kế USB cho phép các thiết bị được cắm nóng và sử dụng các đầu nối tiêu chuẩn để kết nối các thiết bị. Các thiết bị USB bao gồm bàn phím, chuột, máy in, máy quét, ổ đĩa cứng, ổ đĩa bộ nhớ nhanh (flash), máy ảnh, modem, bộ tiếp hợp ethernet và loa. Danh sách này không ngừng phát triển. Sự hỗ trợ của Linux hiện tại là khá toàn diện, mặc dù một số thiết bị cần các trình điều khiển đặc biệt và những thứ khác, nhất là các máy in, có thể không được hỗ trợ hoặc có thể chỉ được hỗ trợ một phần.

Một hệ thống máy tính có thể cung cấp một hoặc nhiều bộ điều khiển (controller) hay các hub để một thiết bị USB hoặc hub (bên ngoài) khác có thể được kết nối với chúng. Một hub có thể hỗ trợ lên đến 7 thiết bị, một số hoặc tất cả có thể là các hub bổ sung. Hub trong hệ thống được gọi là hub chủ (root hub). Mỗi hub trong cấu trúc mạng hình sao như vậy có thể hỗ trợ lên đến 127 hub hoặc các thiết bị.

Lưu ý: Thông thường, chúng ta nói về một cổng USB là đề cập đến khả năng USB trong một máy tính và ổ cắm kết nối (so sánh với cổng nối tiếp hoặc cổng song song) chứ không phải là các địa chỉ cổng bên trong được thiết bị sử dụng.

Hệ thống USB là một hệ thống phân tầng.

  1. Tầng Giao diện bus (Bus Interface) cung cấp kết nối vật lý, truyền tín hiệu và kết nối gói dữ liệu giữa các máy chủ lưu trữ và các thiết bị, tạo ra đường truyền dữ liệu giữa máy chủ lưu trữ và các thiết bị.
  2. Tầng Thiết bị (Device) được phần mềm hệ thống sử dụng để thực hiện các hoạt động USB chung với một thiết bị trên bus. Điều này cho phép máy chủ lưu trữ xác định các đặc tính của thiết bị, bao gồm lớp thiết bị, tên nhà cung cấp, tên thiết bị, yêu cầu nguồn điện và nhiều khả năng như tốc độ hoặc mức USB của thiết bị được hỗ trợ.
  3. Tầng Chức năng (Function) cung cấp khả năng bổ sung đặc thù của thiết bị. Các tầng phần mềm phù hợp máy chủ lưu trữ và thiết bị cho phép sử dụng các chức năng đặc thù của thiết bị.

Các đặc tả kỹ thuật USB sớm hơn (1.0 và 1.1) hỗ trợ các tốc độ lên đến 12Mbps (mega bits mỗi giây). Các thiết bị tuân thủ đặc tả kỹ thuật này nói chung là các thiết bị tốc độ thấp, chẳng hạn như các máy in, chuột, bàn phím, máy quét và modem. Đặc tả kỹ thuật USB 2.0 mới hơn hỗ trợ các tốc độ lên đến 480Mbps, phù hợp cho các ổ đĩa cứng và các ổ đĩa CD hoặc DVD bên ngoài. Một số thiết bị USB 2.0 tương thích ngược để cho phép sử dụng trên các hệ thống cũ, mặc dù không phải tất cả các thiết bị nhanh hơn đều có thể tương thích ngược. Nếu máy tính của bạn không có hỗ trợ USB 2.0 kèm sẵn, thì có sẵn các bo mạch PCI (hoặc bo mạch PC cho máy tính xách tay) để cung cấp một hoặc nhiều cổng USB 2.0.

Cáp USB là một cáp mảnh, 4 dây, có hai đường dây tín hiệu cộng với dây đất và dây nguồn. Đầu cắm vào một hub có một đầu nối hình chữ nhật bẹt (được gọi là đầu nối A) trong khi đầu cắm vào một thiết bị hoặc hub phía dưới có đầu nối nhỏ, vuông hơn (đầu nối B). Cũng có một số đầu nối B thu nhỏ (mini) khác để kết nối các thiết bị nhỏ như máy ảnh tới một máy tính. Các thiết bị USB và các hub có thể lấy nguồn từ bus USB hoặc có thể tự cấp nguồn.

Sự hỗ trợ mô-đun USB của Linux

USB bây giờ đã được hỗ trợ khá tốt trong Linux. Phần lớn sự phát triển đã xảy ra trong cây nhân 2.6. Nhiều phát triển đã tạo phiên bản phần mềm mới (backported) cho nhân 2.4, thậm chí có một số hỗ trợ ngay trong nhân 2.2. Linux hỗ trợ USB 2.0 cũng như các đặc tả kỹ thuật trước đó. Do bản chất cắm nóng của USB, sự hỗ trợ thường được cung cấp thông qua các mô đun nhân có thể được nạp vào hoặc dỡ xuống khi cần thiết. Với hướng dẫn này chúng tôi sẽ giả định rằng các mô đun bạn cần cho bản phân phối của bạn hoặc là có sẵn, hoặc đã được cài đặt. Nếu bạn cần phải biên dịch nhân riêng của mình, hãy tham khảo hướng dẫn cho kỳ thi 201 Chủ đề 201 (xem Tài nguyên).

Sau khi bạn đã biết chắc rằng máy tính của bạn có các cổng USB, bạn có thể kiểm tra hệ thống Linux của bạn đã tìm thấy những gì bằng cách sử dụng lệnh lspci như được hiển thị trong Liệt kê 23. Chúng tôi đã lọc kết quả đầu ra để hiển thị chỉ các thiết bị liên quan đến USB.

Liệt kê 23. Kết quả đầu ra của lệnh lspci cho các thiết bị USB
[root@lyrebird root]# lspci | grep -i usb
00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM 
     (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM 
     (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM 
     (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801DB/DBM 
     (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)

Bạn sẽ nhận thấy rằng có bốn bộ điều khiển USB trong hệ thống này. Các trường UHCI và EHCI cho biết cần phải có mô đun của trình điều khiển để hỗ trợ bộ điều khiển. Trình điều khiển USB 1.1 chính xác sẽ tùy thuộc vào bộ vi mạch xử lý được sử dụng trong bộ điều khiển của bạn. USB 2.0 đòi hỏi trình điều khiển EHCI cộng với một trình điều khiển USB 1.1. Xem Bảng 5.

Bảng 5. Các trình điều khiển USB của Linux
Bảng 5. Các trình điều khiển USB của Linux
Trình điều khiểnBộ vi mạch xử lý
EHCIHỗ trợ USB 2.0 – yêu cầu một trong số UHCI, OHCI hoặc JE.
UHCICác bộ vi mạch xử lý Intel và VIA.
JEĐây là một sự thay thế cho UHCI đối với nhân 2.4. Nếu UHCI không làm việc và bạn có một bộ vi mạch xử lý Intel hay VIA, hãy thử JE.
OHCICompaq, hầu hết PowerMacs, iMac và powerbook, OPTi, SiS, Ali.

Chúng ta đã xem qua lệnh lsmod và các tập tin cấu hình môđun /etc/modules.conf (trường hợp nhân 2.4) và /etc/modprobe.conf (trường hợp nhân 2.6) trong phần thảo luận của chúng ta ở trên về hỗ trợ âm thanh. Liệt kê 24 cho thấy một số trong các mô đun kết hợp với các thiết bị USB được nạp vào trên cùng một hệ thống như Liệt kê 23. Hệ thống này có một con chuột USB.

Liệt kê 24. Sử dụng lsmod để hiển thị các môđun USB đã nạp
[root@lyrebird root]# lsmod | egrep 'usb|hci|hid|mouse|Module'
Module                  Size  Used by    Not tainted
usbserial              23420   0  (autoclean) (unused)
mousedev                5524   1
hid                    22244   0  (unused)
input                   5888   0  [keybdev mousedev hid]
ehci-hcd               20008   0  (unused)
usb-uhci               25740   0  (unused)
usbcore                77376   1  [usbserial hid ehci-hcd usb-uhci]

Đặc biệt lưu ý là mô đun usbcore được tất cả các mô đun USB khác cũng như mô đun hid (human interface device - các thiết bị giao diện với con người) sử dụng.

Hiển thị thông tin USB

Bây giờ chúng ta biết đôi điều về các mô đun hỗ trợ USB, làm thế nào để chúng ta tìm ra các thiết bị USB được gắn vào hệ thống của mình? Thông tin này có trong phần /proc/bus/usb của hệ thống tập tin. Tập tin /proc/bus/usb/devices chứa thông tin tóm tắt cho các thiết bị USB hiện đang được gắn vào. Một phần danh sách cho hệ thống của chúng ta được thể hiện trong Liệt kê 25.

Liệt kê 25. Một phần các nội dung của /proc/bus/usb/devices
[root@lyrebird root]# cat /proc/bus/usb/devices
T:  Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 6
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.04
S:  Manufacturer=Linux 2.4.21-32.0.1.EL ehci-hcd
S:  Product=Intel Corp. 82801DB USB2
S:  SerialNumber=00:1d.7
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms
T:  Bus=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=1840
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

Spd=480 mà chúng tôi đã tô đậm ở trên biểu thị một bus USB 2.0 trong khi Spd=12 biểu thị một thiết bị USB 1.1 (hoặc có thể là USB 1.0). Tiếp theo bên dưới danh sách này con chuột của chúng ta được hiển thị là Spd=1.5. Tốc độ một phẩy năm megabit/giây là đủ nhanh cho hầu hết các con chuột.

Còn với những thứ khác mà chúng ta đã thấy trong hệ thống tập tin /proc, bạn sẽ vui mừng được biết rằng có một lệnh lsusb để giúp bạn hiển thị những thông tin này. Đặc biệt, bạn có thể nhận được một khung nhìn dạng cây các thiết bị USB của bạn bằng cách sử dụng tùy chọn -t. Tùy chọn này cho thấy hệ thống phân cấp các thiết bị gắn vào. Bạn có thể sử dụng tùy chọn -d để biết thông tin về một thiết bị cụ thể nếu hệ thống của bạn đưa ra hiển thị vắn tắt khi dùng tùy chọn -t. Tùy chọn -v tạo ra kết quả đầu ra dài dòng (verbose) diễn giải rất nhiều trường mà chúng ta đã thấy trong Liệt kê 25. Với Liệt kê 26, chúng ta đã cắm vào một hub ngoài, một máy ảnh kỹ thuật số Nikon, một bút lưu trữ USB và một ổ đĩa cứng USB 2.0 ngoài và cho bạn thấy một số kết quả đầu ra.

Liệt kê 26. Sử dụng lệnh lsusb
[root@lyrebird root]# lsusb -t
Bus#  4
`-Dev#   1 Vendor 0x0000 Product 0x0000
  |-Dev#   2 Vendor 0x0409 Product 0x0059
  | |-Dev#   8 Vendor 0x04b0 Product 0x0108
  | |-Dev#   4 Vendor 0x0d7d Product 0x1400
  | `-Dev#   7 Vendor 0x1058 Product 0x0401
  `-Dev#   3 Vendor 0x07d0 Product 0x1202
Bus#  3
`-Dev#   1 Vendor 0x0000 Product 0x0000
Bus#  2
`-Dev#   1 Vendor 0x0000 Product 0x0000
Bus#  1
`-Dev#   1 Vendor 0x0000 Product 0x0000
  `-Dev#   2 Vendor 0x1241 Product 0x1111
[root@lyrebird root]# lsusb -d 0x0409:0x0059
Bus 004 Device 002: ID 0409:0059 NEC Corp. HighSpeed Hub
[root@lyrebird root]# lsusb -d 0x04b0:0x0108
Bus 004 Device 008: ID 04b0:0108 Nikon Corp. Coolpix 2500
[root@lyrebird root]# lsusb -d 0x0d7d:0x1400
Bus 004 Device 004: ID 0d7d:1400 Phison Electronics Corp.
[root@lyrebird root]# lsusb -d 0x1058:0x0401
Bus 004 Device 007: ID 1058:0401 Western Digital Technologies, Inc.
[root@lyrebird root]# lsusb -d 0x07d0:0x1202
Bus 004 Device 003: ID 07d0:1202 Dazzle
[root@lyrebird root]# lsusb -d 0x1241:0x1111
Bus 001 Device 002: ID 1241:1111 Belkin Mouse
[root@lyrebird root]#

Liệt kê 27 cho thấy một phần của kết quả đầu ra dài dòng của lệnh lsusb. Đây là một bút lưu trữ. Lưu ý rằng thiết bị này đã chỉ thị yêu cầu nguồn điện tối đa của nó (200mA). Cũng lưu ý rằng thiết bị này sẽ được coi như một thiết bị SCSI. Sử dụng hoặc lệnh dmesg hoặc lệnh fdisk -l để tìm ra thiết bị SCSI nào được ánh xạ tới một thiết bị. Hầu hết các máy ảnh được trang bị các cổng USB, cũng như các đầu đọc thẻ, các thiết bị bộ nhớ cực nhanh (flash) và ổ đĩa cứng được coi là các thiết bị lớp lưu trữ và được xử lý như là thiết bị SCSI trong Linux. Nhiều máy ảnh đi kèm với các chương trình Windows giúp tải lên các hình ảnh từ máy ảnh. Trong Linux bạn chỉ đơn giản lắp (mount) thiết bị SCSI đại diện cho máy ảnh và sao chép các hình ảnh vào ổ cứng của bạn, nơi bạn có thể chỉnh sửa chúng bằng một chương trình, ví dụ như là chương trình thao tác hình ảnh GNU (GNU Image Manipulation Program-GIMP). Bạn thậm chí có thể xóa các tập tin khỏi thẻ nhớ hoặc ghi tập tin vào thẻ nhớ từ Linux, cho phép máy ảnh của bạn được sử dụng như là một sự thay thế kỳ cục cho đĩa mềm.

Liệt kê 27. (Một phần) kết quả đầu ra dài dòng của lệnh lsusb
[root@lyrebird root]# lsusb -vd 0x0d7d:0x1400

Bus 004 Device 004: ID 0d7d:1400 Phison Electronics Corp.
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x0d7d Phison Electronics Corp.
  idProduct          0x1400
  bcdDevice            0.02
  iManufacturer           1
  iProduct                2 USB DISK 12X
  iSerial                 3 0743112A0083
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           32
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0x80
    MaxPower              200mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk (Zip)
      iInterface              0
      ...

Thêm một đoạn thông tin nữa có sẵn cho chúng ta bây giờ là chúng ta biết bus và các số nhận dạng (id) thiết bị của thiết bị USB của bạn trong Liệt kê 26 sẽ là một cách để xác định các mô đun nào là cần thiết cho một thiết bị cụ thể. Chúng tôi sẽ minh họa một số trong Liệt kê 28.

Liệt kê 27. (Một phần) kết quả đầu ra dài dòng của lệnh lsusb
[root@lyrebird root]# usbmodules --device /proc/bus/usb/004/003
usb-storage
[root@lyrebird root]# usbmodules --device /proc/bus/usb/004/007
usb-storage
hid

Cắm nóng

Có hai lệnh usbmgrhotplug được hệ thống của bạn sử dụng để xử lý cắm nóng thiết bị USB. Tùy theo bạn đang sử dụng lệnh nào, bạn sẽ tìm thấy các tập tin cấu hình trong thư mục /etc/usbmgr hoặc /etc/hotplug. Các hệ thống mới hơn có nhiều khả năng có cắm nóng (hotplug).

Cắm nóng cho USB (và các bo mạch PC) là việc người sử dụng cắm các thiết bị trong khi một hệ thống đang chạy. Hệ thống này sau đó phải:

  • Xác định loại thiết bị và tìm ra một trình điều khiển để chạy nó.
  • Liên kết trình điều khiển với thiết bị.
  • Thông báo cho hệ thống con khác về thiết bị. Điều này cho phép các đĩa được lắp vào hoặc các hàng đợi in được bổ sung thêm chẳng hạn.

Tài nguyên

Học tập

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

  • Xây dựng dự án phát triển tiếp theo của bạn trên Linux với phần mềm dùng thử của IBM, có sẵn để tải trực tiếp từ developerWorks.

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=505365
ArticleTitle=Chuẩn bị kỳ thi LPI 101: Phần cứng và kiến trúc
publish-date=08062010