Phần II · Tùy biến nhân · Chương 8Part II · Customizing a Kernel · Chapter 8
Sổ công thức: bật đúng tùy chọn cho đúng phần cứng Sổ tay “bật cái gì cho cái gì” The recipe book: switching on the right option for the right hardware
Kroah-Hartman mở chương bằng một câu đóng vai trò lời hứa trả công: các chương trước đã dạy cơ chế cấu hình lại nhân, còn phần thưởng nằm ở chương này — nơi tập hợp tất cả những kiểu thay đổi phổ biến nhất mà người ta cần làm với nhân của mình, kèm hướng dẫn cụ thể 1. Đây là chương duy nhất của cuốn sách có hình dạng một quyển sổ công thức: bảy nhóm — ổ đĩa, thiết bị, CPU, mạng, hệ tệp, bảo mật, gỡ lỗi — mỗi nhóm là một chuỗi đường dẫn menu phải đi qua.
Mấy chương trước dạy bạn cách chỉnh nhân. Chương này cho bạn công thức: muốn dùng USB thì bật cái gì, muốn dùng Wi-Fi thì bật cái gì, muốn máy chạy mát hơn thì bật cái gì 1. Giống sách nấu ăn: mỗi món một danh sách nguyên liệu. Nhớ nhé: chương này để tra, không phải để học thuộc.
Kroah-Hartman opens the chapter with a sentence that reads like a payback promise: previous chapters taught the mechanics of reconfiguring the kernel, and the payoff comes here, where you find all the most common kinds of changes people need to make to their kernels, with specific instructions on how to do so 1. This is the one chapter shaped like a cookbook: seven groups — disks, devices, CPU, networking, filesystems, security, debugging — each a chain of menu paths to walk.
Cấu trúc lặp lại của mọi công thức đáng để nhận ra sớm, vì nó là bài học thật sự của chương: (1) dò phần cứng bằng một lệnh — thường là lspci, lsusb hoặc cat /proc/cpuinfo; (2) bật lớp hạ tầng mà thiết bị cưỡi lên — PCI, SCSI, USB, mạng; (3) bật driver cụ thể của chính con chip bạn có 12. Ba nhịp đó không đổi qua cả bảy nhóm, và chúng vẫn đúng với nhân hôm nay dù tên tùy chọn đã thay đổi nhiều.
Luận điểm chương 8. Cấu hình nhân không phải là đoán, mà là một chuỗi ánh xạ có thể tra cứu: phần cứng bạn dò được → lớp hạ tầng nó phụ thuộc vào → driver cụ thể của nó. Ông dựng cả chương theo đúng thứ tự đó, từ lspci đến đường dẫn menu 12.
Ý chính. Đừng đoán xem phải bật gì. Hãy hỏi máy xem nó có thiết bị gì, rồi bật lớp chung trước, cuối cùng mới bật driver riêng 12. Nhớ nhé: dò trước, bật sau.
Chapter 8 thesis. Kernel configuration is not guesswork but a lookup chain: the hardware you detect → the infrastructure layer it rides on → its specific driver. He builds the whole chapter in exactly that order, from lspci to the menu path 12.
lspci, lsusb, /proc/cpuinfo — hỏi chính máy xem nó có gì.
Hỏi máy: “trong người anh có những gì?”
lspci, lsusb, /proc/cpuinfo — ask the machine what it holds.
lspci vừa đọc.
Cuối cùng mới chọn đúng tên con chip.
The exact chip in your machine — its name taken straight from the lspci line you just read.
Cụm khái niệm 01 · trang 63–66Concept cluster 01 · pages 63–66
Ổ đĩa: ba con đường tới cùng một khối dữ liệu Ổ cứng và USB: ba đường vào Disks: three roads to the same block of data
Ông mở nhóm đầu tiên bằng một ghi nhận đơn giản: nhân Linux hỗ trợ rất nhiều loại ổ đĩa khác nhau, và phần này chỉ ra cách cấu hình để nhận được hầu hết các loại bộ điều khiển đĩa phổ biến 1. Điều đáng chú ý là cả ba con đường — USB, IDE, SATA — đều hội tụ về cùng một chỗ trong nhân: tầng SCSI. Hiểu được điều đó thì ba công thức bỗng trở thành một.
Máy bạn có thể gắn ổ cứng theo nhiều kiểu: cắm USB, cắm cáp IDE cũ, hay cắm cáp SATA mới. Nhân Linux hỗ trợ hết 1. Điều hay là: cuối cùng cả ba kiểu đều đi chung một con đường trong nhân, gọi là tầng SCSI. Nhớ nhé: khác cổng cắm, chung đường đi.
He opens the first group with a plain observation: the Linux kernel supports a wide range of different disk types, and this section shows how to configure the kernel so that it supports most of the more common types of disk controllers 1. What is worth noticing is that all three roads — USB, IDE, SATA — converge on the same place inside the kernel: the SCSI layer. Once you see that, three recipes collapse into one.
Tầng SCSI như một giao thức chung. Ông giải thích thẳng: một thiết bị lưu trữ USB thực chất là một thiết bị SCSI nói chuyện qua kết nối USB, nên hệ con SCSI bắt buộc phải bật 1. Với SATA cũng vậy — thư viện libata lo phần đặc thù SATA, nhưng dùng tầng SCSI để nói chuyện với tầng khối 1.
SCSI là ngôn ngữ chung. Cái USB của bạn, bên trong nhân, được coi như một ổ SCSI nói qua dây USB 1. Ổ SATA cũng mượn đúng ngôn ngữ đó 1. Nhớ nhé: quên bật SCSI là hỏng cả hai.
The SCSI layer as a shared protocol. He says it outright: a USB storage device is in reality a USB SCSI device talking over a USB connection, so the SCSI subsystem must be enabled 1. The same holds for SATA — the libata library handles the SATA-specific work but uses the SCSI layer to talk to the block layer 1.
USB flash → SCSI Device Support
→ SCSI disk support
→ USB Mass Storage
SATA → SCSI + libata + PIIX/ICH
USB → bật SCSI → bật “SCSI disk”
→ bật “USB Mass Storage”
SATA → bật SCSI → bật SATA → chọn chip
USB flash → SCSI Device Support
→ SCSI disk support
→ USB Mass Storage
SATA → SCSI + libata + PIIX/ICH
-
usb storage
USB Storage — ba nấc, không phải một USB — phải bật ba thứ USB Storage — three rungs, not one
Công thức có ba bước, và bước nào thiếu cũng làm hỏng cả: bật
SCSI Device Support, rồiSCSI disk supportđể thiết bị mount được đúng cách, rồiUSB Mass Storage supportở dạng module 1. Trước đó, hỗ trợ USB nói chung phải chạy được đã — ông trỏ người đọc sang công thức “USB” ở nhóm sau 1.Muốn cắm USB lưu trữ thì phải bật ba thứ: hỗ trợ SCSI, hỗ trợ “đĩa SCSI”, và “USB Mass Storage” 1. Thiếu một là không thấy ổ đâu. Nhớ nhé: đủ ba nấc mới lên tới đích.
The recipe has three steps and missing any one breaks the whole: enable
SCSI Device Support, thenSCSI disk supportso the device can be mounted properly, thenUSB Mass Storage supportas a module 1. Before all that, general USB support must already be working — he points the reader to the “USB” recipe in the next group 1.Bạn thấy nó ở đâu. Cách dò của ông là chạy
/usr/sbin/lsusb -v | grep Storage; nếu ra dòngbInterfaceClass 8 Mass Storagethì máy đang có một thiết bị lưu trữ USB 1.Gặp ở đâu. Gõ
lsusb -v | grep Storage; thấy chữMass Storagelà máy có USB lưu trữ 1. Nhớ nhé: máy tự khai ra hết.Where you see it. His detection step is to run
/usr/sbin/lsusb -v | grep Storage; if it printsbInterfaceClass 8 Mass Storage, a USB storage device is present on the system 1.Thiết bị lệch chuẩn
Ông ghi chú một chi tiết dễ bỏ qua: một số thiết bị lưu trữ USB được liệt kê thành mục cấu hình riêng, vì chúng không tuân theo đặc tả USB chuẩn và cần mã đặc biệt; nếu bạn có một trong số đó, phải bật đúng mục của nó 1. Đây là lý do một cái USB “y hệt” cái khác vẫn có thể không chạy.
Ký hiệu
[*]và[M]Trong mọi công thức của chương,
[*]nghĩa là dựng thẳng vào nhân và[M]nghĩa là dựng thành module. Ông chọn[M]choUSB Mass Storage supportnhưng[*]choSCSI Device Support1 — hạ tầng thì dựng cứng, driver rời thì để nạp khi cần. -
IDE disks
IDE — công thức của sách, và số phận của nó IDE — kiểu ổ cứng đời cũ IDE — the book's recipe, and its fate
Năm 2006 ông viết rằng đĩa IDE là loại đĩa PC phổ biến nhất 1. Công thức: bật
PCI Support, rồiATA/ATAPI/MFM/RLL supportcùngEnhanced IDE/MFM/RLL disk/cdrom/tape/floppy support, rồi — để có đường lui nếu chọn sai chip — bật thêmgeneric/default IDE chipset support, và cuối cùngPCI IDE chipset supportđể mở ra danh sách dài các loại bộ điều khiển 1.Hồi 2006, ổ IDE là loại thông dụng nhất trên máy bàn 1. Công thức: bật PCI, bật khối ATA/IDE, bật thêm bản “chung chung” để phòng chọn sai, rồi mới chọn đúng loại chip 1. Nhớ nhé: chọn thêm bản dự phòng thì đỡ hỏng.
In 2006 he wrote that IDE disks are the most common type of PC disks 1. The recipe: enable
PCI Support, thenATA/ATAPI/MFM/RLL supportwithEnhanced IDE/MFM/RLL disk/cdrom/tape/floppy support, then — as a good backup in case you pick the wrong type —generic/default IDE chipset support, and finallyPCI IDE chipset support, which opens a lengthy submenu of controller types 1.Đã đổi kể từ đó. Đây là công thức lỗi thời rõ nhất của chương. Cơ sở dữ liệu LKDDB ghi nhận tùy chọn
CONFIG_IDEmang nhãn “DEPRECATED” từ 2.6.33 và có mặt lần cuối ở nhân 5.13 10; bản 5.14 gỡ hẳn driver IDE cũ vì đã bịlibatathay thế 8. Phần cứng PATA vẫn chạy — chỉ là qualibata9.Giờ khác rồi. Tùy chọn IDE cũ đã bị bỏ khỏi nhân từ bản 5.14 810; ổ đời cũ nay chạy bằng
libata9. Nhớ nhé: đọc công thức này như đọc sử.Changed since. This is the chapter's most clearly time-bound recipe. LKDDB records
CONFIG_IDEcarrying a “DEPRECATED” prompt from 2.6.33 and appearing for the last time in kernel 5.13 10; 5.14 removed the legacy IDE driver outright as obsoleted by libata 8. PATA hardware still works — it just goes throughlibatanow 9. -
serial ATA
SATA — bốn nấc, và đây là nhánh còn sống SATA — kiểu ổ cứng đời mới SATA — four rungs, and this is the branch that survived
Ông gọi SATA là kẻ kế vị của bộ điều khiển IDE 1, và công thức của nó có bốn nấc:
PCI Support→SCSI Device Support→SCSI disk support→Serial ATA (SATA) supportnằm trong mụcSCSI low-level drivers, rồi chọn đúng chip; ví dụ ông đưa ra là phần lớn bo mạch Intel cần driverIntel PIIX/ICH SATA support1.SATA là đời sau của IDE 1. Bật theo bốn nấc: PCI → SCSI → “đĩa SCSI” → SATA, rồi chọn chip; máy Intel thường là
PIIX/ICH1. Nhớ nhé: chọn đúng tên chip trong danh sáchlspci.He calls SATA the successor to the IDE disk controller 1, and its recipe has four rungs:
PCI Support→SCSI Device Support→SCSI disk support→Serial ATA (SATA) supportunderSCSI low-level drivers, then the specific controller; his example is that most Intel motherboards need theIntel PIIX/ICH SATAdriver 1.Bạn thấy nó ở đâu. Cái tên
libatamà ông nhắc tới năm 2006 chính là thứ về sau nuốt luôn cả nhánh IDE: hôm nay tài liệu nhân mô tảlibatalà thư viện dùng chung cho cả Serial ATA lẫn Parallel ATA 9, và LKDDB ghi mục chọnCONFIG_ATAvới nhãn “Serial ATA and Parallel ATA drivers (libata)” 10.Gặp ở đâu. Cái thư viện
libatatrong sách nay lo cả ổ cũ lẫn ổ mới 910. Nhớ nhé: nhánh SATA là nhánh sống sót.Where you see it. The
libataname he mentions in 2006 is exactly what later absorbed the IDE branch: today the kernel documentslibataas the shared library for both Serial ATA and Parallel ATA 9, and LKDDB listsCONFIG_ATAwith the prompt “Serial ATA and Parallel ATA drivers (libata)” 10.Ghi CD: hai nhánh, một quy tắc
Ông kết nhóm ổ đĩa bằng câu ngắn gọn nhất chương: nếu nhân đọc được CD-ROM thì nó cũng ghi được CD-ROM 1. Hai nhánh: ổ CD-ROM IDE chỉ cần thêm
Include IDE/ATAPI CDROM support, còn ổ SATA/SCSI cầnSCSI CDROM support1.Đường dẫn
lspciTrong một chú thích chân trang, ông thừa nhận gần như mọi bản phân phối đặt
lspciở/usr/sbin/nhưng một số nơi khác — và bảo người đọc chạywhich lspciđể tìm 1. Một chi tiết nhỏ nhưng nói lên giọng của cả chương: không giả định gì về máy của bạn.
Cụm khái niệm 02 · trang 66–70Concept cluster 02 · pages 66–70
Thiết bị: bus trước, driver sau Thiết bị cắm thêm: bật cổng trước Devices: the bus first, the driver second
Câu mở đầu nhóm này là câu tự hào nhất của cả chương: Linux hỗ trợ một dải thiết bị rộng lớn — nhiều hơn bất kỳ hệ điều hành nào từng có 2. Nhưng ngay sau đó là một quy tắc kỷ luật: muốn dùng thiết bị USB, trước hết phải bật hỗ trợ cho bộ điều khiển USB — thứ điều khiển đường kết nối USB trên máy 2. Bus trước, driver sau, không có ngoại lệ.
Linux nhận được nhiều loại thiết bị hơn mọi hệ điều hành khác 2. Nhưng có luật: muốn dùng thiết bị USB thì phải bật “cái cổng USB” trong nhân trước đã 2. Nhớ nhé: có cổng rồi mới có đồ cắm vào cổng.
This group's opening line is the proudest in the chapter: Linux supports a vast range of different types of devices — more than any other operating system ever has 2. What follows immediately is a rule of discipline: to use a USB device you must first enable support for a USB controller, the thing that drives the USB connection on the machine 2. Bus first, driver second, no exceptions.
Bộ điều khiển chủ (host controller). Con chip trên bo mạch nói chuyện với dây cáp. Với USB, ông liệt kê ba loại — EHCI HCD (USB 2.0), OHCI HCD, UHCI HCD (most Intel and VIA) — và nói rõ: bật cả ba là an toàn nếu bạn không biết mình có loại nào 2.
Bộ điều khiển là gì. Là con chip giữ cái cổng cắm. USB có ba loại; ông bảo cứ bật cả ba cho chắc nếu không biết máy mình loại nào 2. Nhớ nhé: không chắc thì bật hết, không sao cả.
Host controller. The chip on the board that speaks to the cable. For USB he lists three — EHCI HCD (USB 2.0), OHCI HCD, UHCI HCD (most Intel and VIA) — and says plainly that it is safe to enable them all if you do not know which you have 2.
PCI Support
└ Support for Host-side USB [M]
├ EHCI / OHCI / UHCI [M]
└ driver của thiết bị [M]
Bật PCI
→ bật USB
→ bật cả ba loại chip USB
→ bật driver của món đồ
PCI Support
└ Support for Host-side USB [M]
├ EHCI / OHCI / UHCI [M]
└ the device's own driver [M]
-
usb
USB — và cái bẫy “driver nằm ở menu khác” USB — có driver nằm ở chỗ khác USB — and the “driver lives in another menu” trap
Sau ba nấc PCI → USB → host controller, ông cảnh báo một điều dễ làm người đọc bế tắc: phần lớn driver thiết bị USB nằm dưới mục USB chính, nhưng một số loại — video USB, DVB, âm thanh — lại được liệt kê trong mục quản lý riêng loại thiết bị đó. Ví dụ driver âm thanh USB nằm dưới menu
Sound, ở mụcUSB Devices→USB Audio/MIDI driver2.Đa số driver USB nằm trong mục USB. Nhưng loa/tai nghe USB thì lại nằm trong mục Âm thanh, chứ không nằm trong mục USB 2. Nhớ nhé: tìm theo loại thiết bị, đừng chỉ tìm theo cổng cắm.
After the three rungs PCI → USB → host controller, he warns about something that leaves readers stuck: most USB device drivers sit under the main USB section, but some kinds — USB video, DVB and sound — are listed in the section controlling that class of device. The USB sound driver, for instance, lives under the
Soundmenu atUSB Devices→USB Audio/MIDI driver2.Bạn thấy nó ở đâu. Lệnh dò của ông là
/usr/sbin/lspci | grep USB; ví dụ trong sách trả về năm bộ điều khiển Intel ICH5 — bốn UHCI và một EHCI 2, đúng kiểu bo mạch năm 2006: nhiều cổng USB 1.1 cộng một cổng USB 2.0 chung.Gặp ở đâu. Gõ
lspci | grep USBđể xem máy có mấy bộ điều khiển USB. Máy ví dụ trong sách có tận năm cái 2. Nhớ nhé: một máy có thể có nhiều cổng khác loại.Where you see it. His detection command is
/usr/sbin/lspci | grep USB; the book's example returns five Intel ICH5 controllers — four UHCI and one EHCI 2, exactly the 2006 board shape: several USB 1.1 ports plus one shared USB 2.0 controller. -
IEEE 1394 / FireWire
FireWire — bus nhanh của một thời FireWire — cổng nhanh đời cũ FireWire — the fast bus of an era
Ông giới thiệu IEEE 1394 bằng đúng cái tên mà người ta quen gọi — FireWire, tên do Apple phổ biến — và mô tả nó là một bus tốc độ cao nối thiết bị ngoài, giống như USB 2. Công thức: PCI →
IEEE 1394 (FireWire) support→ chọn bộ điều khiển (OHCI-1394hoặcTexas Instruments PCILynx) → chọn driver giao thức:SBP-2cho ổ cứng,Ethernet over 1394,OHCI-1394 Video,Raw IEEE1394 I/O2.FireWire là cổng nhanh kiểu cũ, Apple đặt tên, dùng để nối đồ bên ngoài giống USB 2. Bật theo bốn nấc: PCI → FireWire → chip điều khiển → giao thức (ổ cứng, mạng, video) 2. Nhớ nhé: cùng một khuôn ba nhịp như USB.
He introduces IEEE 1394 by the name people actually use — FireWire, the name Apple publicised — and describes it as a high-speed bus connecting external devices, much as USB does 2. The recipe: PCI →
IEEE 1394 (FireWire) support→ pick the host controller (OHCI-1394orTexas Instruments PCILynx) → pick the protocol drivers:SBP-2for hard disks,Ethernet over 1394,OHCI-1394 Video,Raw IEEE1394 I/O2.Đã đổi kể từ đó. Ngăn xếp
ieee1394mà sách hướng dẫn về sau bị thay bằng ngăn xếp “juju”: LKDDB ghiCONFIG_IEEE1394mang nhãn “Legacy alternative FireWire driver stack” ở 2.6.31–2.6.36 rồi biến mất, trong khiCONFIG_FIREWIREchạy liên tục từ 2.6.26 đến nay 26.Giờ khác rồi. Bộ mã FireWire trong sách đã bị thay bằng bộ mới; tên tùy chọn giờ là
CONFIG_FIREWIRE26. Nhớ nhé: ý tưởng còn, tên đổi.Changed since. The
ieee1394stack the book walks through was later replaced by the “juju” stack: LKDDB recordsCONFIG_IEEE1394prompted as “Legacy alternative FireWire driver stack” across 2.6.31–2.6.36 and then gone, whileCONFIG_FIREWIREhas run continuously since 2.6.26 26. -
hotplug buses
PCI Hotplug và PCMCIA — cắm nóng, hai thế hệ Khe cắm thẻ ở laptop PCI Hotplug and PCMCIA — hot-plugging, two generations
Với hai bus này, ông bỏ hẳn bước
lspcivà thay bằng một lời khuyên thực dụng đáng nhớ: hãy nhìn vào phần cứng xem có cắm được thẻ ExpressCard (hoặc thẻ PCMCIA) vào đó không 2. Công thức ExpressCard: PCI →Support for PCI Hotplug (EXPERIMENTAL)→ACPI PCI Hotplug drivercho phần lớn laptop, cộngPCI Express Hotplug driver2. Còn PCMCIA thì bật cả hai chế độ16-bit PCMCIAvà32-bit CardBusđể phủ dải thiết bị rộng nhất, với cầu nối phổ biến nhất là loại “yenta-like” 2.Với khe cắm thẻ, ông bảo cứ nhìn thẳng vào máy xem có cái khe đó không 2. Rồi bật hỗ trợ cắm nóng, và với thẻ PCMCIA thì bật cả hai loại 16-bit và 32-bit cho chắc 2. Nhớ nhé: đôi khi cách dò tốt nhất là dùng mắt.
For these two buses he drops the
lspcistep entirely and substitutes a memorable piece of practicality: look at the hardware to see whether an ExpressCard (or a PCMCIA card) can be plugged into it 2. The ExpressCard recipe: PCI →Support for PCI Hotplug (EXPERIMENTAL)→ACPI PCI Hotplug driverfor most laptops, plusPCI Express Hotplug driver2. For PCMCIA, enable both16-bit PCMCIA supportand32-bit CardBus supportto cover the widest range of devices, with the most common bridge being the “yenta-like” controller 2.Nhãn
EXPERIMENTALnăm 2006Nhiều tùy chọn trong chương mang nhãn
(EXPERIMENTAL)— PCI Hotplug, các target Snapshot/Mirror/Multipath của Device Mapper, RAID-10 25. Nhãn ấy là ảnh chụp năm 2006, không phải phán quyết vĩnh viễn: LKDDB cho thấyCONFIG_HOTPLUG_PCIvẫn còn trong nhân hiện hành 10.Hai thế hệ cùng tồn tại
Ông nói rõ mối quan hệ: laptop mới đang chuyển sang định dạng ExpressCard, nên phần PCMCIA và phần PCI Hotplug trỏ sang nhau 2. Đây là kiểu chú thích khiến chương trở thành một lát cắt lịch sử phần cứng chứ không chỉ là danh sách tùy chọn.
-
ALSA
Âm thanh — ALSA lên ngôi, OSS lui về dĩ vãng Âm thanh: bật loa cho máy Sound — ALSA takes over, OSS recedes
Ông viết rằng ALSA (Advanced Linux Sound Architecture) là hệ thống âm thanh hiện tại của nhân Linux, còn hệ cũ OSS đã bị khai tử và gần như toàn bộ driver cũ đã bị gỡ khỏi cây mã nguồn 2. Công thức:
Sound Card Support→Advanced Linux Sound Architecture→ nếu còn ứng dụng đời cũ thì bật thêm các API tương thíchOSS Mixer APIvàOSS PCM (digital audio) API→ chọn card của bạn trong mụcPCI Devices2.ALSA là hệ âm thanh hiện dùng của Linux; hệ cũ OSS gần như đã bị bỏ 2. Bật: hỗ trợ card âm thanh → ALSA → (nếu có phần mềm cũ thì bật thêm lớp tương thích OSS) → chọn card của bạn 2. Nhớ nhé: giữ lớp cũ chỉ khi thật sự cần.
He writes that ALSA (Advanced Linux Sound Architecture) is the current sound system for the Linux kernel, and that the earlier OSS system has been deprecated with almost all of the older drivers removed from the source tree 2. The recipe:
Sound Card Support→Advanced Linux Sound Architecture→ if you have older applications, also enable the compatibilityOSS Mixer APIandOSS PCM (digital audio) API→ pick your card underPCI Devices2.Bạn thấy nó ở đâu. Dò bằng
/usr/sbin/lspci | grep -i audio; máy ví dụ của ông trả về một Intel ICH5 AC'97 và một Creative SB Audigy 2. Dự đoán của ông đúng:CONFIG_SNDvẫn là mục chọn ALSA trong nhân hiện hành 10.Gặp ở đâu. Gõ
lspci | grep -i audiođể xem card âm thanh của bạn là gì 2. ALSA đến giờ vẫn là hệ âm thanh của nhân 10. Nhớ nhé: đây là công thức già mà chưa cũ.Where you see it. Detect with
/usr/sbin/lspci | grep -i audio; his example machine returns an Intel ICH5 AC'97 and a Creative SB Audigy 2. His call held:CONFIG_SNDis still the ALSA entry point in current kernels 10.
Cụm khái niệm 03 · trang 71–75Concept cluster 03 · pages 71–75
CPU, nguồn và bộ nhớ: chỗ bạn đổi hành vi, không phải khả năng Bộ xử lý và pin: chỉnh tính nết của máy CPU, power and memory: where you change behaviour, not capability
Ông đặt mục tiêu của nhóm này rất rõ: nếu bạn muốn nhân Linux chạy nhanh nhất có thể cho đúng bộ xử lý và loại phần cứng của mình, có vài tùy chọn cho phép vắt nốt chút hiệu năng cuối cùng ra khỏi phần cứng 3. Khác biệt căn bản so với hai nhóm trước: ở đây bật sai không làm thiết bị biến mất, mà làm máy chậm đi, nóng hơn, hoặc hết pin sớm hơn.
Phần này để chỉnh cho máy chạy nhanh hơn, hợp với đúng bộ xử lý của bạn 3. Chỉnh sai thì máy không hỏng, chỉ chạy chậm hoặc tốn pin thôi. Nhớ nhé: đây là chỗ chỉnh “tính nết”, không phải “bộ phận”.
He states the goal of this group plainly: if you wish to have the Linux kernel run as fast as possible for your specific processor and hardware type, a few options let you get the last bit of performance out of the hardware 3. The difference from the first two groups is fundamental: here a wrong setting does not make a device vanish, it makes the machine slower, hotter, or shorter on battery.
Trưng dụng (preemption). Định nghĩa của ông ngắn và chính xác: khả năng nhân tự ngắt chính mình giữa lúc đang làm việc khác, để lo một việc có độ ưu tiên cao hơn — chẳng hạn cập nhật một chương trình âm thanh hay video 3. Máy chủ và máy bàn có yêu cầu tải khác hẳn nhau, nên nhân cho phép chọn chế độ 3.
Trưng dụng là gì. Là chuyện nhân đang làm việc A thì dừng lại để làm việc B gấp hơn, ví dụ phát nhạc cho khỏi giật 3. Máy chủ và máy nhà cần kiểu khác nhau 3. Nhớ nhé: máy chủ cần đều tay, máy nhà cần nhanh tay.
Preemption. His definition is short and exact: the ability of the kernel to interrupt itself while it is doing something else, in order to work on something of higher priority, such as updating a sound or video program 3. Servers and desktops have very different workload requirements, so the kernel offers a choice of modes 3.
Preemption Model
(X) No Forced Preemption (Server)
( ) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)
Chọn một kiểu:
· Máy chủ — không ngắt ép
· Máy bàn — ngắt vừa phải
· Máy bàn nhạy — ngắt nhiều nhất
Preemption Model
(X) No Forced Preemption (Server)
( ) Voluntary Kernel Preemption (Desktop)
( ) Preemptible Kernel (Low-Latency Desktop)
-
processor family
Chọn đúng họ CPU — và cái giá của việc chọn “chung chung” Khai đúng tên bộ xử lý Picking the right CPU family — and the price of “generic”
Dò bằng
cat /proc/cpuinfo | grep "model name"3, rồi chọn hai thứ:Subarchitecture Type— mặc định làPC-compatible, và chỉ chọn khác nếu máy bạn thuộc các loại đặc biệt như NUMAQ hay Unisys ES7000 3 — vàProcessor family, danh sách dài từ386tớiOpteron/Athlon64/Hammer/K83. Ông cũng chỉ ra lối thoát: nếu muốn một nhân chạy được trên mọi loại máy trong danh sách, hãy chọnGeneric architecture3.Gõ
cat /proc/cpuinfo | grep "model name"để biết CPU của bạn tên gì 3. Rồi chọn đúng dòng trong danh sách. Nếu muốn một nhân chạy được cho nhiều máy khác nhau thì chọn loại “chung” 3. Nhớ nhé: chọn riêng thì nhanh, chọn chung thì tiện.Detect with
cat /proc/cpuinfo | grep "model name"3, then pick two things: theSubarchitecture Type— which defaults toPC-compatible, and should be changed only if your machine is one of the special kinds such as NUMAQ or Unisys ES7000 3 — and theProcessor family, a long list running from386toOpteron/Athlon64/Hammer/K83. He also points to the escape hatch: if you want one kernel that runs on all the listed machine types, selectGeneric architecture3.Bạn thấy nó ở đâu. Ông không giải thích hết ở đây mà trỏ thẳng sang Chương 11, mục
M386, để có mô tả đầy đủ về cách chọn bộ xử lý tùy theo dải máy bạn muốn nhân chạy trên đó 3 — một ví dụ của cách cuốn sách tự nối chương này sang chương kia.Gặp ở đâu. Muốn hiểu kỹ hơn thì sách bảo lật sang Chương 11, mục
M3863. Nhớ nhé: công thức ngắn, tra cứu dài — hai phần bổ cho nhau.Where you see it. He does not explain it all here but points straight at Chapter 11's
M386entry for the full description of how to pick the proper processor type given the range of machines you want the kernel to run on 3 — an example of how the book stitches recipe to reference.SMP: đừng bỏ phí lõi
Lời khuyên của ông cho máy nhiều CPU, siêu phân luồng hoặc lõi kép rất dứt khoát: bật
Symmetric multi-processing support, vì nếu không bạn sẽ lãng phí các bộ xử lý còn lại do hoàn toàn không dùng tới chúng 3. Một số mục trong danh sáchSubarchitecturecũng chỉ hiện ra khi SMP đã được chọn 3.Phụ thuộc chéo giữa các tùy chọn
Tùy chọn
Preempt The Big Kernel Lockchỉ chọn được nếu trước đó đã chọnPreemptible KernelhoặcSymmetric multi-processing support3. Đây là Kconfig dependency hiện ra dưới dạng “mục biến mất khỏi menu” — nguyên nhân phổ biến nhất khiến người mới tưởng mình tìm nhầm chỗ. -
preemption model
Ba chế độ trưng dụng — và cái khóa lớn đã chết Ba kiểu “ngắt việc” của nhân Three preemption models — and the big lock that died
Ba lựa chọn của sách trải từ máy chủ sang máy bàn độ trễ thấp 3. Muốn nhân nhạy hơn nữa, ông chỉ thêm một nấc: cho phép ngắt cả một trong những khóa nội bộ chính của nhân, qua tùy chọn
Preempt The Big Kernel Lock3.Có ba kiểu: hợp cho máy chủ, hợp cho máy bàn, và hợp cho máy cần phản ứng thật nhanh 3. Muốn nhanh hơn nữa thì bật thêm một tùy chọn về “khóa lớn” trong nhân 3. Nhớ nhé: nhanh phản ứng thường đổi bằng một chút hiệu năng tổng.
The book's three choices run from server to low-latency desktop 3. To make the kernel even more responsive to higher-priority tasks, he offers one more rung: allowing interruptions to one of the kernel's main internal locks, via
Preempt The Big Kernel Lock3.Đã đổi kể từ đó. Tùy chọn đó không còn tồn tại. LKDDB ghi
CONFIG_PREEMPT_BKLxuất hiện lần cuối ở nhân 2.6.25 13, và chính Big Kernel Lock bị gỡ hẳn khỏi cây mã nguồn ở 2.6.39 13. Ở đầu kia của dải, chế độ real-time đã đi ngược lên:PREEMPT_RTđược hợp nhất vào nhân chính ở bản 6.12, sau khoảng hai mươi năm phát triển ngoài luồng 22.Giờ khác rồi. Tùy chọn “khóa lớn” đã bị bỏ từ lâu 13, còn chế độ thời gian thực thì mới được đưa hẳn vào nhân ở bản 6.12 22. Nhớ nhé: ý tưởng “ngắt để kịp” vẫn sống, chỉ là bằng cơ chế khác.
Changed since. That option no longer exists. LKDDB records
CONFIG_PREEMPT_BKLappearing for the last time in 2.6.25 13, and the Big Kernel Lock itself was removed from the tree in 2.6.39 13. At the other end of the range the real-time mode moved the opposite way:PREEMPT_RTwas merged into the mainline kernel in 6.12, after roughly twenty years out of tree 22. -
suspend / cpufreq
Ngủ đông và điều tốc — hai công thức của laptop Ngủ đông và tiết kiệm pin Suspend and frequency scaling — the two laptop recipes
Ngủ đông: bật
Software Suspend, rồi khai báo phân vùng để lưu ảnh nhân qua mụcDefault resume partition— thường là phân vùng swap, tìm bằng/sbin/swapon -s3. Ông cảnh báo rõ: phải chọn đúng phân vùng và không dùng phân vùng đang chứa dữ liệu của hệ thống 3; khi khởi động lại thì truyềnresume=/dev/swappartitiontrên dòng lệnh nhân, hoặcnoresumenếu không muốn khôi phục ảnh đã lưu 3. Điều tốc: bậtCPU Frequency scaling, chọn các governor (performance,powersave,userspace,ondemand,conservative), chọn governor mặc định lúc khởi động, rồi chọn driver đúng CPU — ví dụIntel Enhanced SpeedStep3.Muốn máy “ngủ đông” rồi bật lại y nguyên: bật
Software Suspendvà khai đúng phân vùng swap để cất trạng thái 3. Cẩn thận: đừng khai nhầm phân vùng đang chứa dữ liệu 3. Muốn tiết kiệm pin: bật phần chỉnh tốc độ CPU rồi chọn kiểu chỉnh 3. Nhớ nhé: khai sai phân vùng là mất dữ liệu thật.Suspend: enable
Software Suspend, then name the partition the kernel image is written to viaDefault resume partition— usually the swap partition, found with/sbin/swapon -s3. He warns explicitly: make sure you specify the proper partition and do not use one the system holds data on 3; on the way back up, passresume=/dev/swappartitionon the kernel command line, ornoresumeif you do not want the saved image restored 3. Frequency scaling: enableCPU Frequency scaling, select the governors (performance,powersave,userspace,ondemand,conservative), choose the default one at boot, then the driver matching your CPU — for exampleIntel Enhanced SpeedStep3.Bạn thấy nó ở đâu. Hai công thức này già đi rất chậm. Tài liệu nhân hiện hành vẫn mô tả đúng bộ governor ấy —
performance,powersave,userspace,ondemand,conservative— trong CPU Performance Scaling 14; còn tham số khởi độngresume=vànoresumevẫn nằm trong danh mục tham số dòng lệnh nhân 15. Tên tùy chọn thì đã đổi: LKDDB ghiCONFIG_SOFTWARE_SUSPENDchỉ tồn tại tới 2.6.22, rồiCONFIG_HIBERNATIONtiếp quản từ 2.6.23 15.Gặp ở đâu. Các kiểu chỉnh tốc độ CPU trong sách đến nay vẫn dùng 14, và tham số
resume=vẫn còn 15. Chỉ cái tên tùy chọn ngủ đông là đổi thànhHIBERNATION15. Nhớ nhé: ý giữ nguyên, tên đổi.Where you see it. These two recipes age slowly. Current kernel documentation still describes that same governor set —
performance,powersave,userspace,ondemand,conservative— under CPU Performance Scaling 14, and theresume=andnoresumeboot parameters are still in the kernel command-line list 15. The option name did change: LKDDB recordsCONFIG_SOFTWARE_SUSPENDsurviving only to 2.6.22, withCONFIG_HIBERNATIONtaking over from 2.6.23 15. -
high memory / ACPI
Bộ nhớ và ACPI — hai tùy chọn của thời 32-bit Bộ nhớ nhiều và quản lý nguồn Memory and ACPI — two options from the 32-bit era
Ông giải thích gọn một nghịch lý phần cứng: Linux trên phần cứng Intel 32-bit truy cập được tới 64 GB bộ nhớ, nhưng không gian địa chỉ của bộ xử lý 32-bit chỉ có 4 GB — nên nhân phải ánh xạ phần dư sang vùng khác rồi chuyển sang khi cần 3. Vì thế có ba mô hình bộ nhớ theo dung lượng thật: dưới 1 GB, từ 1 đến 4 GB, và trên 4 GB, chọn trong mục
High Memory Supportvới ba giá trịoff/4GB/64GB3. ACPI thì ông mô tả là chuẩn cho phép BIOS phối hợp với hệ điều hành để truy cập phần cứng một cách gián tiếp, và khuyến nghị bật nếu bạn dùng laptop 3.Máy 32-bit chỉ “nhìn” được 4 GB một lúc, nên nhân phải xoay xở để dùng được nhiều hơn 3. Bạn khai máy mình có bao nhiêu RAM để nhân khỏi làm việc thừa 3. Còn ACPI lo chuyện pin, quạt, nút nguồn — laptop thì nên bật 3. Nhớ nhé: khai đúng RAM, bật ACPI nếu xài laptop.
He explains a hardware paradox compactly: Linux on 32-bit Intel hardware can access up to 64 GB of memory, but the address space of a 32-bit processor is only 4 GB — so the kernel maps the extra memory into another area and switches to it when tasks need it 3. Hence three memory models by actual size: under 1 GB, between 1 and 4 GB, and above 4 GB, chosen in
High Memory Supportwith its three valuesoff/4GB/64GB3. ACPI he describes as a standard letting the BIOS work with the operating system to reach hardware indirectly, and recommends enabling it if you have a laptop 3.Bạn thấy nó ở đâu. Đây là công thức gắn chặt nhất với kiến trúc 32-bit. LKDDB ghi mục chọn
CONFIG_HIGHMEM64G(“64GB”) tồn tại từ 2.6.24 và xuất hiện lần cuối ở nhân 6.14 10 — nghĩa là nếu bạn chạy x86-64 thì toàn bộ mục này không hiện ra, và điều đó là bình thường.Gặp ở đâu. Mục “bộ nhớ cao” chỉ có trên máy 32-bit đời cũ 10. Máy 64-bit ngày nay không thấy mục này, và như vậy là đúng. Nhớ nhé: không thấy mục nào đó, có khi vì máy bạn không cần.
Where you see it. This is the recipe most tied to the 32-bit architecture. LKDDB records the
CONFIG_HIGHMEM64G(“64GB”) choice running from 2.6.24 and appearing for the last time in kernel 6.14 10 — meaning that on x86-64 the whole menu simply does not appear, and that is correct.Danh sách driver ACPI
Ông liệt kê từng “driver” ACPI nên bật theo phần cứng thật:
AC Adapter,Battery,Button,Video,Fan,Processor,Thermal Zone, cộng các mục riêng cho laptop ASUS/Medion, IBM ThinkPad và Toshiba 3. Danh sách này là một lát cắt thị trường laptop 2006 được đóng băng trong một menu cấu hình.Trỏ sang Chương 11
Hai lần trong nhóm này ông từ chối giải thích tại chỗ và trỏ sang chương tham chiếu: mục
HIGHMEMcho mô hình bộ nhớ, mụcCPU_FREQcho chuyện các governor làm gì 3. Cách chia việc này giữ cho chương công thức luôn ngắn và có thể tra nhanh.
Cụm khái niệm 04 · trang 75–83Concept cluster 04 · pages 75–83
Mạng, hệ tệp và bảo mật: ba nhóm, một cái công tắc gốc Mạng, ổ đĩa ảo và khóa cửa Networking, filesystems and security: three groups, one root switch
Ba nhóm cuối chia sẻ một đặc điểm cấu trúc: mỗi nhóm có một công tắc gốc mà thiếu nó thì mọi thứ bên dưới vô nghĩa. Với mạng, ông nói thẳng: với mọi tùy chọn mạng, kể cả các driver, tùy chọn cấu hình mạng chính phải được bật 4 — tức Networking support, rồi TCP/IP networking để máy nói chuyện được với các máy khác trên Internet 4. Với bảo mật, công tắc gốc là Enable different security models 6.
Ba nhóm cuối đều có một “cầu dao tổng”. Muốn dùng mạng thì phải bật hỗ trợ mạng và TCP/IP trước, rồi mới tới mọi thứ khác 4. Muốn dùng mô hình bảo mật thì phải bật cái công tắc bảo mật chung 6. Nhớ nhé: cầu dao tổng trước, đèn sau.
The last three groups share a structural feature: each has a root switch without which everything under it is meaningless. For networking he says it outright: for all networking options, including the drivers, the main network configuration option must be enabled 4 — that is, Networking support, followed by TCP/IP networking so the machine can talk to other machines on the Internet 4. For security, the root switch is Enable different security models 6.
Netfilter. Định nghĩa của ông: phần Netfilter của nhân Linux là một khung để lọc và thao tác mọi gói tin mạng đi qua máy, thường dùng khi bạn muốn bật tường lửa bảo vệ máy khỏi các hệ thống khác trên Internet, hoặc dùng máy làm proxy cho các máy khác trong mạng 4.
Netfilter là gì. Là bộ lọc gói tin của nhân — thứ làm nên tường lửa. Bật nó nếu bạn muốn chặn bớt kết nối, hoặc cho các máy khác đi nhờ ra Internet qua máy bạn 4. Nhớ nhé: tường lửa nằm trong nhân, không phải trong ứng dụng.
Netfilter. His definition: the Netfilter portion of the Linux kernel is a framework for filtering and manipulating all network packets that pass through the machine, commonly used to run a firewall protecting it from other systems on the Internet, or to use the machine as a proxy for others on the network 4.
Networking support ← gốc
├ TCP/IP networking
├ Network packet filtering ← netfilter
├ Bluetooth subsystem support
└ Generic IEEE 802.11 Stack ← wifi
Bật hỗ trợ mạng ← gốc
├ TCP/IP
├ tường lửa
├ Bluetooth
└ Wi-Fi
Networking support ← root
├ TCP/IP networking
├ Network packet filtering ← netfilter
├ Bluetooth subsystem support
└ Generic IEEE 802.11 Stack ← wifi
-
netfilter
Netfilter — lọc gói là chọn giao thức nào Tường lửa — chọn lọc cái gì Netfilter — filtering means choosing which protocols
Ba bước: bật
Network packet filtering (replaces ipchains); bậtNetfilter netlink interfacecùngNetfilter Xtables support— ông ghi rõ mục sau là bắt buộc choip_tables4; rồi chọn từng giao thức muốn theo dõi, mà quan trọng nhất làConnection tracking (required for masq/NAT), kèm các mô-đun trợ giúp giao thức nhưFTP protocol supportvàTFTP protocol support4.Bật lọc gói, bật phần
Xtables(bắt buộc choip_tables), rồi chọn các giao thức cần theo dõi — nhất là phần “theo dõi kết nối” dùng cho chia sẻ mạng 4. Nhớ nhé: tường lửa chỉ lọc được thứ bạn bảo nó theo dõi.Three steps: enable
Network packet filtering (replaces ipchains); enableNetfilter netlink interfacetogether withNetfilter Xtables support— which he notes is required forip_tables4; then pick the protocols you want tracked, chieflyConnection tracking (required for masq/NAT)along with protocol helpers such asFTP protocol supportandTFTP protocol support4.Bạn thấy nó ở đâu. Chữ “replaces ipchains” trong nhãn tùy chọn là một hóa thạch quý: nó đánh dấu lúc Netfilter/
iptablesthay thế thế hệ trước. LKDDB ghiCONFIG_NETFILTERmang nhãn “Network packet filtering framework (Netfilter)” liên tục từ 2.6.20 tới nhân hiện hành 10; trong không gian người dùng,nftablesđã trở thành lớp mặt trước được khuyến nghị 19.Gặp ở đâu. Khung Netfilter vẫn còn nguyên trong nhân đến nay 10; chỉ có công cụ dùng ở ngoài là đã chuyển sang
nftables19. Nhớ nhé: phần trong nhân bền hơn phần công cụ.Where you see it. The phrase “replaces ipchains” in the option label is a useful fossil: it marks the moment Netfilter/
iptablesdisplaced the previous generation. LKDDB recordsCONFIG_NETFILTERprompted as “Network packet filtering framework (Netfilter)” continuously from 2.6.20 to current kernels 10; in userspace,nftableshas become the recommended front end 19. -
wireless / bluetooth / IrDA
Không dây — ba giao thức, ba số phận khác nhau Không dây: hồng ngoại, Bluetooth, Wi-Fi Wireless — three protocols, three different fates
Ông đặt ba giao thức không dây cạnh nhau và nói rõ quan hệ lịch sử giữa chúng: IrDA là giao thức hồng ngoại của nhiều laptop và PDA để liên lạc ở khoảng cách rất ngắn, phổ biến trên phần cứng đời cũ, còn phần cứng mới thì dùng Bluetooth thay thế 4; Bluetooth thì ông mô tả là công nghệ không dây được tạo ra để thay IrDA, hoạt động trong bán kính 10 mét và thông dụng trên điện thoại di động 4. Wi-Fi cần bật
Generic IEEE 802.11 Networking StackcùngSoftware MAC add-onvà các tùy chọn mã hóaWEP,802.11i CCMP,TKIP4.Ba kiểu không dây: hồng ngoại (cũ), Bluetooth (thay hồng ngoại, tầm 10 mét, hay dùng trên điện thoại), và Wi-Fi 4. Mỗi kiểu một công thức, nhưng đều nằm dưới mục Mạng 4. Nhớ nhé: không dây vẫn là “mạng”, nên cầu dao tổng vẫn phải bật.
He places the three wireless protocols side by side and names their historical relation: IrDA is an infrared protocol used by a number of laptops and PDAs over very short distances, prevalent on older hardware, with newer hardware using Bluetooth instead 4; Bluetooth he describes as the wireless technology created to replace IrDA, operating within a 10-metre radius and common in mobile phones 4. Wi-Fi needs
Generic IEEE 802.11 Networking Stackplus theSoftware MAC add-onand theWEP,802.11i CCMPandTKIPencryption options 4.Đã đổi kể từ đó. Ba số phận rẽ hẳn ra. IrDA bị chuyển vào
stagingở 4.14 rồi gỡ hẳn ở 4.17 cùng toàn bộ driver của nó 11. Ngăn xếpCONFIG_IEEE80211mà sách dùng bị đánh dấu “DEPRECATED” và biến mất sau 2.6.28, được thay bằngCONFIG_MAC80211— có mặt từ 2.6.22 và còn tới nay 21. Bluetooth thì đứng yên:CONFIG_BTchạy liên tục từ dòng 2.5 tới nhân hiện hành 10.Giờ khác rồi. Hồng ngoại đã bị gỡ khỏi nhân từ bản 4.17 11. Phần Wi-Fi trong sách đã được thay bằng bộ mới tên
mac8021121. Bluetooth thì vẫn nguyên 10. Nhớ nhé: ba anh em, ba ngả đường.Changed since. The three fates diverged completely. IrDA was moved to
stagingin 4.14 and removed outright in 4.17 along with its whole driver set 11. TheCONFIG_IEEE80211stack the book uses was marked “DEPRECATED” and disappeared after 2.6.28, replaced byCONFIG_MAC80211, present since 2.6.22 and still current 21. Bluetooth simply stayed:CONFIG_BTruns continuously from the 2.5 series to today's kernels 10.Driver mạng: hai ngăn theo tốc độ
Với card Ethernet, ông mô tả “nhiệm vụ vui vẻ” là tìm đúng driver, và chỉ chỗ: phần cứng hiện đại thường nằm trong mục
Ethernet (1000 Mbit), còn thiết bị cũ hơn nằm ởEthernet (10 or 100Mbit)4. Cách chia menu theo tốc độ này là một quy ước của thời ấy.Wi-Fi USB nằm ở menu khác
Lại đúng cái bẫy “driver ở menu khác”: driver Wi-Fi PCI nằm ở
Wireless LAN (non-hamradio)dưới Network device support, còn driver Wi-Fi USB lại nằm ởUSB Support→USB Network Adapters4. Nhân phân loại driver theo bus, không theo chức năng. -
RAID / LVM
RAID và Device Mapper — gộp nhiều đĩa thành một Ghép nhiều ổ thành một ổ RAID and Device Mapper — many disks as one
Ông định nghĩa RAID là cách gộp nhiều đĩa để chúng trông như một đĩa lô-gic, phục vụ dự phòng hoặc tốc độ bằng cách trải dữ liệu qua nhiều mặt đĩa; và phân biệt rõ RAID phần cứng — do bộ điều khiển đĩa lo, nhân không cần giúp gì — với RAID phần mềm do nhân điều khiển 5. LVM thì làm việc tương tự nhưng không ở mức thiết bị như RAID, mà qua một cơ chế ánh xạ khối và sector, dùng thành phần gọi là Device Mapper 5. Công thức: bật
Multiple devices driver support (RAID and LVM), rồiRAID supportvới ít nhất một mức RAID, hoặcDevice mapper supportcùng các targetCrypt,Snapshot,Mirror,Zero,Multipath5.RAID là ghép nhiều ổ cứng lại cho giống một ổ — để an toàn hơn hoặc nhanh hơn 5. LVM cũng ghép, nhưng theo kiểu chia nhỏ rồi xếp lại, nhờ bộ phận tên Device Mapper 5. Bật mục “Multi-device support” rồi chọn kiểu bạn cần 5. Nhớ nhé: phải chọn ít nhất một mức RAID, không thì bật cũng như không.
He defines RAID as combining numerous disks so they look like one logical disk, providing redundancy or speed by spreading data across different platters; and separates hardware RAID — handled by the disk controller with no help needed from the kernel — from software RAID, which the kernel controls 5. LVM does something similar but not at the device level like RAID: it works through a block and sector mapping mechanism, using a component called Device Mapper 5. The recipe: enable
Multiple devices driver support (RAID and LVM), thenRAID supportwith at least one RAID level, orDevice mapper supportwith theCrypt,Snapshot,Mirror,ZeroandMultipathtargets 5.Bạn thấy nó ở đâu. Đây là nhóm công thức bền nhất chương. Tài liệu nhân hiện hành vẫn mô tả hệ con
mdcho RAID phần mềm 16 và Device Mapper với chính những target ấy 17; LKDDB ghiCONFIG_DM_CRYPTvàCONFIG_MD_RAID456chạy liên tục từ dòng 2.6 tới nay 10. NhãnEXPERIMENTALnăm 2006 trên Snapshot và Mirror đã rụng từ lâu.Gặp ở đâu. RAID và Device Mapper trong sách đến nay vẫn còn nguyên và vẫn dùng hằng ngày 161710. Nhớ nhé: đây là phần cũ mà vẫn đúng.
Where you see it. This is the chapter's most durable group. Current kernel documentation still describes the
mdsubsystem for software RAID 16 and Device Mapper with those same targets 17; LKDDB recordsCONFIG_DM_CRYPTandCONFIG_MD_RAID456running unbroken from the 2.6 series to now 10. The 2006EXPERIMENTALtags on Snapshot and Mirror fell off long ago. -
SMB / CIFS / OCFS2 / SELinux
Chia sẻ với Windows, cụm Oracle, và mô hình bảo mật Nối với máy Windows, và khóa cửa cho nhân Sharing with Windows, Oracle clusters, and the security model
Hệ tệp: ông đưa hai lựa chọn nối với Windows —
SMB file system supportđể nối tới máy Windows for Workgroups, Windows 95 hoặc 98, vàCIFS supportđược khuyến nghị cho máy Windows mới hơn 5. CònOCFS2là hệ tệp cụm của Oracle, hoạt động cho cả cài đặt mạng lớn lẫn hệ thống cục bộ nhỏ, và được khuyến nghị khi dùng cơ sở dữ liệu lớn như Oracle hay DB2 5. Bảo mật: mô hình chuẩn là “capability” và ông bảo luôn luôn chọn nó trừ khi bạn thật sự muốn chạy một nhân không an toàn 6; SELinux thì đòi ba thứ đi kèm — mạng phải bật,Auditing supportphải bật, vàSocket and Networking Security Hooksphải bật — trước khi chọn đượcNSA SELinux Support6.Muốn mở ổ chia sẻ của máy Windows: máy Windows cũ thì bật SMB, máy mới thì bật CIFS 5.
OCFS2là hệ tệp cho cụm máy, hợp với cơ sở dữ liệu lớn 5. Về bảo mật: luôn bật mô hình chuẩn; muốn dùng SELinux thì phải bật thêm mạng và phần ghi nhật ký trước 6. Nhớ nhé: bảo mật cũng có “cầu dao tổng”.Filesystems: he gives two ways to reach Windows —
SMB file system supportfor connecting to Windows for Workgroups, Windows 95 or 98 machines, andCIFS support, recommended instead for newer Windows machines 5.OCFS2is Oracle's cluster filesystem, working for large network installations and small local systems alike, recommended when using large databases such as Oracle or DB2 5. Security: the standard model is the “capability” model, and he says you should always select it unless you really want to run an insecure kernel 6; SELinux requires three companions — networking enabled,Auditing supportenabled, andSocket and Networking Security Hooksenabled — beforeNSA SELinux Supportcan be chosen 6.Đã đổi kể từ đó. Hai nhánh, hai kết cục.
CONFIG_SMB_FSbị hạ xuốngdrivers/staging/smbfsvà LKDDB ghi nó xuất hiện lần cuối ở nhân 2.6.38 12; tài liệu hiện hành mô tả mô-đuncifslà client cho SMB3 cũng như các phương ngữ cũ hơn, và khuyến nghị mạnh dùng SMB3 thay vì CIFS vì lý do bảo mật 12. Còn SELinux thì sống khỏe, chỉ đổi nhãn: LKDDB ghiCONFIG_SECURITY_SELINUXmang nhãn “NSA SELinux Support” tới nhân 6.5 rồi đổi thành “SELinux Support” từ 6.6 18. MụcCONFIG_SECURITY_CAPABILITIESriêng biệt trong sách cũng đã biến mất sau 2.6.26 24.Giờ khác rồi. Tùy chọn
SMB_FScũ đã bị bỏ; giờ dùngcifs, và nên chọn phương ngữ SMB3 cho an toàn 12. SELinux vẫn còn, chỉ bỏ chữ “NSA” trong tên từ bản 6.6 18. Nhớ nhé: tên đổi không có nghĩa là công thức sai.Changed since. Two branches, two outcomes.
CONFIG_SMB_FSwas demoted intodrivers/staging/smbfsand LKDDB records it appearing for the last time in kernel 2.6.38 12; current documentation describes thecifsmodule as the client for the SMB3 protocol as well as older dialects, and strongly prefers SMB3 over CIFS for security reasons 12. SELinux, by contrast, thrived and only changed its label: LKDDB recordsCONFIG_SECURITY_SELINUXprompted as “NSA SELinux Support” through kernel 6.5, renamed “SELinux Support” from 6.6 18. The separateCONFIG_SECURITY_CAPABILITIESoption in the book also disappeared after 2.6.26 24.Hệ tệp truyền thống chỉ là một dòng menu
Trước khi vào các hệ tệp “phi truyền thống”, ông cho thấy các hệ tệp thường —
ext2,ext3,Reiserfs,JFS,XFS— chỉ là năm ô chọn trong menuFile systems5. Sự bình thản đó là chủ ý: phần khó không nằm ở hệ tệp, mà ở lớp thiết bị bên dưới nó.
Cụm khái niệm 05 · trang 83–84Concept cluster 05 · pages 83–84
Gỡ lỗi nhân: mở mắt cho mình, đổi bằng một chút tốc độ Nhìn vào trong nhân: được nhìn thì mất chút nhanh Kernel debugging: buying sight with a little speed
Nhóm cuối cùng của chương — và của cả Phần II — là một danh sách các tùy chọn giúp gỡ lỗi những gì đang diễn ra bên trong nhân: hữu ích để khám phá cách nhân vận hành, hoặc để tìm ra vấn đề tiềm tàng trong mã nguồn hiện tại 7. Ông kèm một cảnh báo sòng phẳng mà ít sách viết ra: bật gần như bất kỳ tùy chọn nào trong số này cũng làm nhân chậm đi một chút, nên nếu thấy hiệu năng giảm thì hãy tắt bớt 7.
Phần cuối là các tùy chọn giúp bạn nhìn vào bên trong nhân — để học, hoặc để tìm lỗi 7. Nhưng bật chúng thì máy chậm đi một chút, nên thấy ì thì tắt bớt 7. Nhớ nhé: nhìn rõ hơn thì đi chậm hơn một chút.
The chapter's last group — and Part II's last — is a list of options that help debug what is going on inside the kernel: useful for discovering new things about how the kernel works, or for finding potential problems in the current source 7. He adds a fair warning few books write down: enabling almost any of these slows the kernel down a small amount, so if you notice a drop in performance you may wish to disable them 7.
debugfs. Ông mô tả gọn: một hệ tệp nằm trên RAM, dùng để xuất ra rất nhiều loại thông tin gỡ lỗi 7. Sau khi bật và khởi động nhân mới, nhân tạo thư mục /sys/kernel/debug làm chỗ để mount; các tệp trong đó đều là ảo và được nhân sinh ra động, giống như tệp trong procfs hay sysfs 7.
debugfs là gì. Là một “thư mục ảo” trong bộ nhớ, nơi nhân bày ra thông tin bên trong của nó 7. Các tệp ở đó không nằm trên ổ cứng — nhân tự tạo ra khi bạn đọc 7. Nhớ nhé: nó giống cửa sổ nhìn vào trong, không phải kho chứa.
debugfs. His description is compact: a RAM-based filesystem used to output a lot of different debugging information 7. After enabling it and booting the rebuilt kernel, the kernel creates /sys/kernel/debug as the place to mount it; the files there are all virtual and dynamically generated by the kernel, like those in procfs or sysfs 7.
$ mount -t debugfs none /sys/kernel/debug
# hoặc trong /etc/fstab:
debugfs /sys/kernel/debug debugfs 0 0
Gắn thủ công:
mount -t debugfs none /sys/kernel/debug
Gắn tự động khi khởi động:
thêm một dòng vào /etc/fstab
$ mount -t debugfs none /sys/kernel/debug
# or in /etc/fstab:
debugfs /sys/kernel/debug debugfs 0 0
-
printk timestamps
Dấu thời gian trên thông điệp nhân Đóng dấu giờ cho thông báo của nhân Timestamps on kernel messages
Vấn đề ông nêu rất cụ thể:
dmesgkhông gắn dấu thời gian lên các sự kiện nó hiển thị, còn độ phân giải thời gian của/var/log/messageschỉ tới giây 7. Giải pháp là bậtShow timing information on printkstrong menuKernel hacking, để mỗi thông điệp mang dấu thời gian chính xác tới đơn vị thời gian nhỏ nhất mà nhân đo được — thường ở cỡ micro-giây 7.dmesgin ra thông báo nhưng không ghi giờ; còn nhật ký hệ thống chỉ ghi tới giây 7. Bật tùy chọn “hiện thời gian trên printk” thì mỗi dòng có dấu giờ rất mịn 7. Nhớ nhé: có giờ thì mới xâu chuỗi được sự việc.The problem he names is precise:
dmesgputs no timestamps on the events it shows, and the time resolution of/var/log/messagesis only to the nearest second 7. The fix isShow timing information on printksunderKernel hacking, giving each message a timestamp accurate to the smallest measurable kernel time value — usually in the microsecond range 7.Bạn thấy nó ở đâu. Đây là một trong những tùy chọn ổn định nhất mà chương nhắc tới: LKDDB ghi
CONFIG_PRINTK_TIMEvới đúng nhãn “Show timing information on printks” chạy liên tục từ 2.6.12 tới nhân hiện hành 10. Hai mươi năm, cùng một dòng chữ trong menu.Gặp ở đâu. Tùy chọn này còn nguyên trong nhân đến nay, đúng tên, đúng chữ 10. Nhớ nhé: có những công thức không hề già.
Where you see it. This is one of the steadiest options the chapter names: LKDDB records
CONFIG_PRINTK_TIMEwith the exact prompt “Show timing information on printks” running from 2.6.12 to current kernels 10. Twenty years, the same line of text in the menu. -
magic SysRq
Phím SysRq thần kỳ — cửa hậu hợp pháp vào nhân Phím đặc biệt để ra lệnh cho nhân Magic SysRq — the legitimate back door
Công thức ngắn nhất của cả chương: bật
Magic SysRq keytrongKernel hacking7. Công dụng thì không nhỏ chút nào — phím SysRq trên bàn phím có thể dùng để điều khiển nhân theo nhiều cách khi nhân đang chạy, hoặc sau khi nó đã sập 7. Ông không liệt kê các hành động mà trỏ sang tệpDocumentation/sysrq.txttrong cây mã nguồn 7.Chỉ cần bật một ô: “Magic SysRq key” 7. Sau đó bạn có thể ra lệnh cho nhân bằng tổ hợp phím, kể cả khi máy đã treo 7. Nhớ nhé: đây là lối thoát hiểm khi máy không còn nghe chuột.
The shortest recipe in the chapter: enable
Magic SysRq keyunderKernel hacking7. What it buys is not small — the SysRq key can be used to control the kernel in a number of different ways while it is running, or after it has crashed 7. He does not list the actions but points toDocumentation/sysrq.txtin the kernel source tree 7.Bạn thấy nó ở đâu. Tệp ông trỏ tới vẫn còn, chỉ đổi định dạng: nay là
Documentation/admin-guide/sysrq.rst, đọc được trực tuyến tại docs.kernel.org, và nó mô tả cả cách bật/tắt lúc chạy qua/proc/sys/kernel/sysrq20. LKDDB ghiCONFIG_MAGIC_SYSRQliên tục từ 2.6.9 tới nay 10.Gặp ở đâu. Tài liệu về phím SysRq vẫn còn, nay nằm ở docs.kernel.org 20, và tùy chọn vẫn tồn tại trong nhân 10. Nhớ nhé: đường dẫn tệp đổi, nội dung thì còn.
Where you see it. The file he points to still exists, just reformatted: it is now
Documentation/admin-guide/sysrq.rst, readable online at docs.kernel.org, and it also documents runtime enabling via/proc/sys/kernel/sysrq20. LKDDB recordsCONFIG_MAGIC_SYSRQcontinuously from 2.6.9 to today 10. -
general debugging
Danh sách gỡ lỗi chung — và cái giá của nó Các ô gỡ lỗi khác, và cái giá phải trả The general debugging list — and its price
Dưới
Kernel debugging, ông đề xuất một tập cụ thể:Detect Soft Lockups,Debug slab memory allocations,Memory leak debugging,Mutex debugging, deadlock detection,Spinlock debugging,Sleep-inside-spinlock checking7, và để trống vài ô khác nhưkobject debugging,Highmem debugging,Compile the kernel with debug info7. Mục đích ông nói rõ: để giúp lập trình viên nhân gỡ lỗi, hoặc đơn giản là để học thêm về cách nhân vận hành bằng cách đọc những thông điệp các tùy chọn này in ra 7.Ông gợi ý bật một nhóm ô gỡ lỗi: phát hiện treo mềm, kiểm tra cấp phát bộ nhớ, dò rò rỉ bộ nhớ, kiểm tra khóa 7. Bật để học, hoặc để báo lỗi cho người viết nhân 7. Nhớ nhé: bật nhiều thì máy chậm, nên bật có chọn lọc.
Under
Kernel debugginghe proposes a concrete set:Detect Soft Lockups,Debug slab memory allocations,Memory leak debugging,Mutex debugging, deadlock detection,Spinlock debugging,Sleep-inside-spinlock checking7, leaving others unticked such askobject debugging,Highmem debuggingandCompile the kernel with debug info7. His stated purpose: to help kernel developers debug problems, or simply to learn more about how the kernel works by reading the messages these options print 7.Đã đổi một phần. Danh sách này già không đều.
CONFIG_DEBUG_FSvẫn còn và có trang tài liệu riêng 10, cònCONFIG_DEBUG_SLABthì LKDDB ghi xuất hiện lần cuối ở nhân 6.7 23. Công cụ dò rò rỉ bộ nhớ ngày nay có tên riêng và tài liệu riêng —kmemleak, nằm trong bộ công cụ phát triển của nhân 23.Giờ khác một phần. Vài ô trong danh sách vẫn còn, vài ô đã bị thay bằng công cụ mới như
kmemleak2310. Nhớ nhé: ý tưởng còn, tên đổi.Partly changed. This list ages unevenly.
CONFIG_DEBUG_FSis still present and has its own documentation page 10, whereas LKDDB recordsCONFIG_DEBUG_SLABappearing for the last time in kernel 6.7 23. Today's memory-leak detector has its own name and its own documentation —kmemleak, inside the kernel's dev-tools set 23.Mặc cả rõ ràng
Cách ông trình bày nhóm này đáng học: nêu lợi ích, nêu giá, rồi trả quyền quyết định cho người đọc — “nếu bạn nhận thấy hiệu năng giảm, có thể bạn muốn tắt các tùy chọn đó đi” 7. Không có tùy chọn nào trong nhân là miễn phí, và chương kết thúc bằng đúng bài học đó.
Kết Phần II
Nhóm gỡ lỗi khép lại Phần II của cuốn sách; ngay sau đó là Phần III, phần tham chiếu, gồm Chương 9 về tham số dòng lệnh khởi động, Chương 10 về lệnh dựng, và Chương 11 về từng tùy chọn cấu hình 7. Chương 8 chính là bản lề: nó dùng hết những gì Phần II dạy và mở cửa sang phần tra cứu.
Ba hiểu lầm thường gặpThree common misconceptions
“Công thức 2006 thì vô dụng hôm nay”“A 2006 recipe is useless today”
Hiểu lầm: tên tùy chọn đã đổi nên cả chương thành rác. Thực tế: đổi thay phân bố rất lệch. Nhánh IDE đúng là đã bị gỡ ở 5.14 8 và IrDA ở 4.17 11, nhưng CONFIG_PRINTK_TIME, CONFIG_MAGIC_SYSRQ, CONFIG_NETFILTER, CONFIG_DM_CRYPT và CONFIG_SND đều chạy liên tục từ dòng 2.6 tới nhân hiện hành 10. Cái bền nhất lại chính là khuôn ba nhịp: dò → hạ tầng → driver.
Myth: the option names changed, so the whole chapter is landfill. Fact: the change is very unevenly distributed. The IDE branch was indeed removed in 5.14 8 and IrDA in 4.17 11, but CONFIG_PRINTK_TIME, CONFIG_MAGIC_SYSRQ, CONFIG_NETFILTER, CONFIG_DM_CRYPT and CONFIG_SND all run unbroken from the 2.6 series to current kernels 10. What lasts best is the three-beat shape: detect → infrastructure → driver.
“Bật driver là xong”“Enabling the driver is enough”
Hiểu lầm: tìm đúng tên chip rồi tick vào là thiết bị chạy. Thực tế: gần như mọi công thức trong chương đều bắt đầu từ một lớp hạ tầng: USB storage cần SCSI và SCSI disk 1; mọi thứ liên quan mạng cần Networking support bật trước 4; SELinux cần mạng, Auditing support và hook mạng bật trước 6. Thiếu lớp dưới thì mục bạn cần thậm chí không hiện ra trong menu.
Myth: find the chip name, tick the box, done. Fact: nearly every recipe in the chapter starts from an infrastructure layer: USB storage needs SCSI and SCSI disk support 1; anything networking needs Networking support on first 4; SELinux needs networking, Auditing support and the networking hooks on first 6. Without the layer below, the entry you want does not even appear in the menu.
“Bật gỡ lỗi thì luôn có lợi”“Debug options are always a win”
Hiểu lầm: cứ bật hết các ô gỡ lỗi cho chắc. Thực tế: ông nói thẳng rằng bật gần như bất kỳ tùy chọn nào trong nhóm đó cũng làm nhân chậm đi một chút, và khuyên tắt bớt nếu thấy hiệu năng giảm 7. Đây là một trong vài chỗ hiếm hoi cả chương nêu rõ cái giá phải trả.
Myth: tick every debug box to be safe. Fact: he says outright that enabling almost any of those options slows the kernel down a small amount, and advises disabling them if you notice a decrease in performance 7. It is one of the few places in the chapter where the price is named explicitly.
Tự kiểmSelf-check
Tự kiểm trước khi sang Phần III Tự hỏi mình vài câu Self-check before Part III
Chương này là sổ công thức, nên bài tự kiểm cũng nên làm trên chính máy bạn đang ngồi. Mỗi câu dưới đây ứng với một nhịp trong khuôn ba bước — nếu câu nào còn mơ hồ, quay lên đọc lại nhóm tương ứng.
Chương này là sổ công thức, nên hãy thử ngay trên máy bạn. Mỗi câu dưới đây tương ứng một bước. Nhớ nhé: câu nào chưa rõ thì quay lên đọc lại.
This chapter is a recipe book, so the self-check belongs on the machine in front of you. Each question below matches one beat of the three-step shape — if any is still hazy, reread the matching group above.
- Bạn chạy được ba lệnh dò của chương —
lspci,lsusb,cat /proc/cpuinfo— và đọc ra bộ điều khiển đĩa, bộ điều khiển USB và tên bộ xử lý của chính máy mình?Nếu
lspcikhông có ở/usr/sbin/, sách bảo dùngwhich lspciđể tìm đúng đường dẫn 1. - Bạn giải thích được vì sao một ổ USB và một ổ SATA lại cùng cần
SCSI Device Support?Mấu chốt: USB storage là thiết bị SCSI nói qua dây USB, còn
libatadùng tầng SCSI để nói chuyện với tầng khối 1. - Bạn nói được vì sao driver âm thanh USB lại không nằm trong menu USB?
Vì nhân xếp một số loại — video, DVB, âm thanh — theo loại thiết bị chứ không theo bus; driver âm thanh USB nằm dưới menu
Sound2. - Bạn phân biệt được ba chế độ trưng dụng, và nói được máy của bạn nên chọn chế độ nào?
- Trước khi làm theo một công thức trong chương, bạn kiểm tra được tùy chọn đó còn tồn tại trong nhân bạn đang dựng hay không?
Cách nhanh nhất: gõ
/trongmake menuconfigđể tìm theo tên, hoặc tra tênCONFIG_*trong tài liệu nhân hiện hành 20. Vài tùy chọn của sách đã bị gỡ hẳn —CONFIG_IDE8,CONFIG_IRDA11,CONFIG_SMB_FS12.
- Bạn gõ được
lspcivàlsusbđể xem máy mình có gì chưa? - Vì sao ổ USB và ổ SATA đều cần bật SCSI?
- Vì sao driver loa USB lại nằm ở mục Âm thanh chứ không ở mục USB?
- Máy của bạn là máy chủ hay máy bàn — nên chọn kiểu “ngắt việc” nào?
- Nhớ nhé: trước khi làm theo công thức, kiểm tra xem tùy chọn đó còn trong nhân của bạn không.
- Can you run the chapter's three detection commands —
lspci,lsusb,cat /proc/cpuinfo— and read off your own disk controller, USB controller and processor name? - Can you explain why a USB disk and a SATA disk both need
SCSI Device Support?The key: USB storage is a SCSI device speaking over USB, and
libatauses the SCSI layer to reach the block layer 1. - Can you say why the USB sound driver is not in the USB menu?
- Can you tell the three preemption models apart, and say which one your machine should use?
- Before following a recipe here, can you check whether that option still exists in the kernel you are building?
Some of the book's options are gone outright —
CONFIG_IDE8,CONFIG_IRDA11,CONFIG_SMB_FS12.
Đọng lạiWhat remains
Một nửa số tùy chọn trong chương này đã bị đổi tên, gộp lại hoặc gỡ hẳn khỏi nhân. Nhưng thứ chương này thực sự dạy không phải là các tên gọi — mà là một khuôn ba nhịp: hỏi máy xem nó có gì, bật lớp nền, rồi mới bật driver. Khuôn đó vẫn nguyên vẹn sau hai mươi năm.
Nhiều tùy chọn trong chương nay đã đổi tên hoặc bị bỏ. Nhưng cách làm thì không đổi: hỏi máy có gì, bật cái nền, rồi bật driver. Nhớ nhé: học cách làm, đừng học thuộc tên.
Half the options in this chapter have since been renamed, merged or removed from the kernel. But what the chapter really teaches is not the names — it is a three-beat shape: ask the machine what it holds, enable the layer beneath, then enable the driver. That shape is intact twenty years on.