Chuyển đến nội dung chính (Skip to content)
Mục lục bài viết
Linux Essentials

Linux Essentials 4.2: Hiểu phần cứng của Máy tính

Linux Essentials 4.2: Hiểu phần cứng của Máy tính

Nhận diện phần cứng và driver Linux, phân biệt /dev với sysfs; thử pseudo-device có giới hạn và hiểu vì sao container không cho toàn bộ dữ kiện host.

Phần cứng nhìn thấy từ Linux chưa chắc là toàn bộ máy thật

Một người dùng thấy ít RAM trong guest và đề nghị thay thanh nhớ của laptop. Một người khác không thấy ổ NVMe trong container rồi nghĩ driver bị thiếu. Trước khi chẩn đoán linh kiện, cần xác định Linux đang nhìn phần cứng trực tiếp, thiết bị ảo hay một tập giao diện được giới hạn. Kết quả truy vấn chỉ có giá trị trong đúng phạm vi đó.

Bài thuộc mục tiêu 4.2 của Linux Essentials 010-160, trang in 265–282, trang PDF vật lý 274–291; phần hiện hành liên hệ 014.2 của 010-200. Mốc biên tập: 23/10/2026. Bạn sẽ phân biệt CPU, RAM, lưu trữ, mạng và driver, hiểu vai trò /dev và /sys, rồi quan sát vài pseudo-device bằng dữ liệu giả lập. Lab không kiểm tra sức khỏe linh kiện hoặc khảo sát toàn bộ phần cứng host.

CPU, RAM và lưu trữ tham gia những công việc khác nhau

CPU thực hiện các lệnh và phối hợp với các thành phần khác qua kiến trúc hệ thống. Số lõi là một dữ kiện, không tự quyết định hiệu năng của mọi ứng dụng. Tốc độ xử lý còn phụ thuộc loại tác vụ, khả năng chạy song song, giới hạn nhiệt/điện và thời gian phải chờ dữ liệu. Không dùng số phần trăm CPU ở một thời điểm để khẳng định cần nâng cấp processor.

RAM giữ dữ liệu đang được hệ thống sử dụng theo cơ chế bộ nhớ. Lưu trữ giữ dữ liệu bền vững theo đặc tính thiết bị và filesystem. Có nhiều dung lượng đĩa trống không thay thế hoàn toàn RAM; ngược lại, thêm RAM không giải quyết mọi lỗi ổ đĩa. Khi quan sát một ứng dụng chậm, cần phân biệt thiếu bộ nhớ, chờ I/O và công việc tính toán thay vì gộp tất cả thành “máy yếu”.

Bo mạch chủ nối các thành phần, còn nguồn điện cung cấp năng lượng theo thiết kế thiết bị. Laptop và máy để bàn có cách tiếp cận linh kiện khác nhau. Bài này không hướng dẫn mở bộ nguồn hoặc đo điện bên trong máy. Khi có mùi khét, hư hỏng vật lý hoặc yêu cầu thay linh kiện, chuyển người có chuyên môn và làm theo tài liệu của đúng model.

Kiến trúc x86 và ARM ảnh hưởng cách chạy phần mềm

Tên amd64/x86-64 và arm64 mô tả các kiến trúc khác nhau; một binary được build cho kiến trúc này không tự chạy trực tiếp trên kiến trúc kia. Trong VM hoặc cloud, kiến trúc image phải khớp khả năng công cụ và nền tảng. Giả lập có thể cung cấp một cách chạy khác, nhưng có đánh đổi về hiệu năng và khả năng hỗ trợ.

uname -m
uname -r
cat /etc/os-release

uname -m trả kiến trúc mà kernel báo, uname -r trả phiên bản kernel, còn os-release mô tả bản phân phối userspace. Ba dữ kiện không thay thế nhau. Trong container trên desktop, kernel có thể thuộc VM Linux nền của công cụ container; distro bên trong image có thể khác distro của nền đó. Không lấy uname trong container làm bằng chứng đã kiểm tra CPU vật lý bằng công cụ chuyên dụng.

Raspberry Pi là một ví dụ họ máy nhỏ có thể chạy Linux, nhưng không phải mọi model dùng cùng image, boot firmware hoặc cấu hình phần cứng. Khi tài liệu cũ lấy một model cụ thể làm ví dụ, giữ khái niệm và tra nguồn của model hiện có. Đừng áp sơ đồ chân hoặc nguồn điện từ một thiết bị khác chỉ vì cùng thương hiệu.

Ứng dụng truy cập giao diện kernel và driver; pseudo-device khác ổ vật lý.
Hình 2. Ứng dụng truy cập giao diện kernel và driver; pseudo-device khác ổ vật lý. Mở hình để xem chi tiết.

HDD, SSD, NVMe và phân vùng không phải các tên đồng nghĩa

HDD dùng cơ chế lưu trữ từ với bộ phận cơ học; SSD dùng bộ nhớ bán dẫn. NVMe là một giao thức/giao diện truy cập lưu trữ, thường gặp với SSD, không phải cách gọi mọi SSD. Kiểu đầu nối hoặc hình dạng module cũng không đủ để khẳng định giao thức của thiết bị. Khi thay ổ, kiểm tra hỗ trợ của máy và tài liệu nhà sản xuất.

Phân vùng là cách chia không gian thiết bị theo cấu trúc được hệ thống nhận biết. Filesystem tổ chức dữ liệu trên một vùng lưu trữ; điểm mount đưa cây đó vào không gian đường dẫn. Vì thế một đường dẫn thư mục không tự cho biết nó nằm trên ổ vật lý nào. LVM, RAID, đĩa ảo hoặc lớp lưu trữ cloud còn có thể thêm tầng trung gian.

Các tên như /dev/sda hoặc /dev/nvme0n1 là ví dụ thường gặp, không phải lời bảo đảm thứ tự ổ của bạn. Một thiết bị có thể được đặt tên khác tùy driver, bus và môi trường. Không chạy lệnh ghi, format hoặc phân vùng theo tên ví dụ. Trong bài này, chúng ta chỉ nhận diện khái niệm và giao diện có thể quan sát.

Driver và kernel module nối thiết bị với phần mềm

Driver thực hiện hỗ trợ thiết bị theo cơ chế của kernel và nền tảng. Một số hỗ trợ được build sẵn vào kernel; một số thành phần có thể được nạp dưới dạng module. Không thấy tên trong một danh sách module không đủ để kết luận mọi chức năng liên quan đều không có. Thiết bị ảo cũng có driver, dù phần cứng bên dưới được nền tảng ảo hóa quản lý.

Khi một thiết bị không hoạt động, phân biệt nó không được nhận diện, không có driver phù hợp, firmware cần thiết chưa có, bị chặn theo policy hay ứng dụng không có quyền truy cập. Chúng là các giả thuyết khác nhau. Tải một driver không rõ nguồn hoặc nạp module ngẫu nhiên không phải bước chẩn đoán đầu tiên.

Các thao tác tháo/nạp module, đổi firmware hoặc cập nhật BIOS có thể làm gián đoạn thiết bị và cần điều kiện riêng. Chúng nằm ngoài lab chỉ đọc này. Với Help Desk, ghi model, phiên bản hệ điều hành/kernel, thời điểm lỗi và cách tái hiện thường hữu ích hơn việc thử nhiều thay đổi không có bằng chứng.

/dev là giao diện truy cập thiết bị, không phải thư mục tài liệu

Device node biểu diễn một giao diện thiết bị theo cơ chế kernel. Tệp thiết bị ký tự và thiết bị khối có cách sử dụng khác nhau. Chúng có tên trong filesystem nhưng đọc hoặc ghi có thể kích hoạt hành vi thiết bị, không giống chỉnh một bản ghi chú. Không dùng tính chất “mọi thứ có đường dẫn” để suy ra ghi thử vào bất kỳ mục nào cũng an toàn.

Tài liệu thiết bị Linux mô tả registry số thiết bị và các node. Một danh sách tên không chứng minh quyền truy cập dữ liệu thật bên dưới. Container có thể thấy một phần thông tin ở sysfs nhưng không được cấp block-device node tương ứng. Không bật privileged hoặc gắn ổ host để làm ví dụ này giống một máy vật lý.

ls -ld /dev /sys /proc /boot
ls -l /dev/null /dev/zero /dev/urandom

Bạn dự kiến thấy các đường dẫn và thông tin loại/quyền trong môi trường Linux lab. Các mục /dev/null, /dev/zero và /dev/urandom là pseudo-device được dùng trong phần sau, không phải ba ổ vật lý. Đọc đầu ra để phân biệt chúng với tệp thường; không chỉnh quyền của device node để vượt lỗi của ứng dụng mà chưa hiểu chính sách môi trường.

Kiểm tra phạm vi môi trường trước khi kết luận từ tên thiết bị.
Hình 1. Kiểm tra phạm vi môi trường trước khi kết luận từ tên thiết bị. Mở hình để xem chi tiết.

/sys xuất thông tin kernel và có cả thuộc tính điều khiển

Tài liệu sysfs của kernel giải thích cách xuất đối tượng, thuộc tính và quan hệ kernel cho userspace. Điều này giúp công cụ đọc thông tin thiết bị, nhưng không biến mọi đường dẫn /sys thành một tệp vô hại. Một số thuộc tính có thể ghi và thay đổi trạng thái. Bài chỉ liệt kê tên, không ghi vào sysfs.

find /sys/class/net -mindepth 1 -maxdepth 1 -print
find /sys/class/block -mindepth 1 -maxdepth 1 -print

Hai truy vấn giới hạn độ sâu ở một lớp mục. Kết quả phụ thuộc namespace, mount và nền tảng; không có một danh sách cố định phải khớp mọi máy. Thấy interface trong guest không chứng minh bạn đang nhìn trực tiếp card Wi-Fi của laptop. Thấy tên block device cũng chưa chứng minh container được phép đọc nội dung của nó.

/boot thường liên quan các tệp phục vụ khởi động của hệ thống, nhưng container có thể không chứa cùng dữ liệu với một guest boot đầy đủ. /proc chứa giao diện thông tin kernel/tiến trình theo cấu hình và namespace. Không cố sửa hai nơi này để làm số liệu giống ví dụ. Phần tiến trình và bộ nhớ được tiếp tục ở bài sau.

Thử pseudo-device bằng lượng dữ liệu có giới hạn

Khối dưới dùng thư mục tạm mới. /dev/null nhận và loại dữ liệu được ghi trong ví dụ. /dev/zero cung cấp byte zero; /dev/urandom cung cấp byte từ giao diện ngẫu nhiên của hệ thống. Dùng head -c để giới hạn đầu ra, tránh đọc vô hạn vào terminal hoặc làm đầy đĩa. Không dùng phép thử này làm kiểm định mật mã hay sức khỏe phần cứng.

lpi_device=$(mktemp -d)
printf '%s\n' 'Mock data' > /dev/null
head -c 32 /dev/zero > "$lpi_device/zero.bin"
head -c 32 /dev/urandom > "$lpi_device/random.bin"
wc -c < "$lpi_device/zero.bin"
wc -c < "$lpi_device/random.bin"
od -An -tx1 "$lpi_device/zero.bin"

Mỗi tệp dự kiến có 32 byte. Nội dung zero.bin hiển thị các byte 00; od có thể rút gọn dòng lặp theo cách của công cụ. Không yêu cầu random.bin phải khớp một chuỗi được in sẵn hoặc kết luận bộ sinh ngẫu nhiên an toàn chỉ vì thấy byte khác nhau. Đây là phép quan sát giao diện, không phải phép đánh giá chất lượng nguồn ngẫu nhiên.

Bằng chứng đủ để chuyển IT

Ghi loại môi trường, kiến trúc, kernel và phần thiết bị quan sát được. Nếu vấn đề liên quan phần cứng thật, bổ sung model và tình huống lỗi theo quy trình tổ chức, loại serial hoặc dữ liệu riêng trước khi đăng công khai. Không đính toàn bộ inventory chỉ để hỏi một lỗi nhỏ. Một báo cáo tốt phân biệt quan sát với giả thuyết cần thử tiếp.

Tự kiểm tra: Thấy /dev/zero có nghĩa đã có một ổ đĩa rỗng? Không; đó là pseudo-device. Không thấy NVMe trong container có chứng minh host không có NVMe? Không. uname -m có cho biết toàn bộ model CPU và tình trạng linh kiện? Không. Bạn đạt bài khi giải thích được các giới hạn này và hoàn thành phép đọc có giới hạn mà không ghi lên thiết bị thật.

Bài liên quan trong bộ LPI

Tìm hiểu thêm