Bản đồ toàn cuốn · 11 chương · 3 phầnWhole-book map · 11 chapters · 3 parts
Cả cuốn sách trên một trangCả cuốn sách vẽ thành một bản đồThe whole book on one page
Mười một chương của cuốn sách này không phải mười một chủ đề rời. Chúng là một quy trình, kể đúng theo thứ tự bạn sẽ làm: hiểu vì sao nhân dựng sẵn không bao giờ vừa khít, chuẩn bị công cụ, lấy mã nguồn, cấu hình, biên dịch, cài, khởi động, rồi nâng cấp mà không đánh mất cái đang chạy12. Ba chương cuối thì không đọc liền mạch — chúng là từ điển, mở ra khi bạn đang đứng trước một dòng lệnh cụ thể.
Cuốn sách có mười một chương, nhưng chúng nối vào nhau thành một việc duy nhất: tự làm lấy cái nhân Linux cho máy mình. Trang này vẽ cả việc đó ra một lần. Nhớ nhé: xem bản đồ trước, rồi hãy bước vào từng chương.
The eleven chapters of this book are not eleven separate topics. They are one procedure, told in the order you will actually perform it: understand why a stock kernel never quite fits, prepare the tools, fetch the source, configure, compile, install, boot, then upgrade without losing what already works12. The last three chapters are not read straight through — they are dictionaries, opened when you are standing in front of a specific command line.
Tác giả chia sách thành bốn phần: Phần I “Building the Kernel” (Chương 1–6), Phần II “Major Customizations” (Chương 7–8), Phần III “Kernel Reference” (Chương 9–11), và Phần IV “Additional Information” — phụ lục2. Bản đồ này đi theo ba phần đầu, vì đó là chỗ chứa toàn bộ lập luận.
Không bản phân phối nào phát hành được một nhân vừa với nhu cầu của mọi người dùng — đó là câu mở đầu và cũng là toàn bộ lý do tồn tại của cuốn sách2. Mỗi bước trong quy trình bên dưới tồn tại để chặn một kiểu hỏng cụ thể.
Nhân có sẵn phải chạy được trên mọi máy, nên nó mang theo mọi thứ. Máy của bạn thì chỉ có một. Nhớ nhé: tự dựng là để lấy lại quyền chọn.
No distribution can ship a kernel that meets every user's needs — that is the book's opening line and its entire reason for existing2. Every step in the procedure below exists to block one specific way of failing.
.config, nhiều lối vàoone .config file, many doors into itmake — một lệnh một từmake — a one-word command.config, rồi quay lại bước 3back up .config, then return to step 3Sợi chỉThe thread
Không phải để nhanh hơn — để cái máy trước mặt thôi là hộp đenVì sao có người muốn tự dựng nhân cho máy mìnhNot for speed — so the machine in front of you stops being a black box
Nhân của một bản phân phối phải khởi động được trên hàng nghìn kiểu máy khác nhau, nên nó phải mang theo trình điều khiển cho tất cả. Máy của bạn thì chỉ có một cấu hình. Kroah-Hartman mở sách đúng ở khe hở đó, và ông viết nó với một mục đích được nói thẳng: đưa thêm người vào đội ngũ phát triển nhân, vì tự dựng một nhân là việc cơ bản đầu tiên trên con đường ấy2.
Nhân có sẵn phải chạy được cho mọi người, nên nó to và mang theo rất nhiều thứ máy bạn không có. Tự dựng là cắt bớt đúng phần thừa, và bật đúng phần thiếu. Nhớ nhé: không phải để khoe, mà để hiểu máy mình.
A distribution kernel has to boot on thousands of different machines, so it must carry drivers for all of them. Your machine has exactly one configuration. Kroah-Hartman opens the book in that gap, and he states his purpose plainly: to bring more people into kernel development, because building your own kernel is the first basic task on that road2.
Mục đích đó giải thích hình dạng lạ của cuốn sách: nó không dạy lập trình nhân dòng nào cả. Tác giả nói rõ sách không đòi kinh nghiệm lập trình, chỉ đòi biết dùng dòng lệnh Linux ở mức cơ bản2. Nó là sách về thao tác, không phải về mã.
Cách dùng trang này: mỗi thẻ chương bên dưới mở thẳng vào từng mục của chương đó. Đọc tuần tự Chương 1 → 6 nếu bạn đang thật sự dựng một nhân; nhảy thẳng vào Chương 9–11 nếu bạn chỉ cần tra một tham số, một đích make, hay một ký hiệu CONFIG_*1.
Bấm tên chương để mở cả chương, bấm dòng nhỏ bên dưới để nhảy đúng mục. Nhớ nhé: sáu chương đầu đọc theo thứ tự, ba chương cuối chỉ tra khi cần.
How to use this page: each chapter card below opens straight into that chapter's sections. Read Chapters 1 → 6 in order if you are actually building a kernel; jump into Chapters 9–11 if you only need to look up a parameter, a make target, or a CONFIG_* symbol1.
nhân phân phối = máy bạn + mọi máy khác
nhân tự dựng = máy bạn
cái bạn trả = thời gian + một lần khởi động có rủi ro
cái bạn được = .config của riêng bạn
nhân có sẵn = máy bạn + tất cả máy khác
nhân tự làm = chỉ máy bạn
trả bằng: thời gian
được lại: quyền chọn
distro kernel = your machine + every other machine
your kernel = your machine
you pay: time + one risky boot
you get: a .config of your own
Phần I · Chương 1–6Part I · Chapters 1–6
Vòng đời đầy đủ của một nhân tự dựngSáu bước, đúng thứ tự phải làmThe full life cycle of a kernel you build yourself
Sáu chương này là phần Building the Kernel — xương sống của cuốn sách2. Chúng đi từ động cơ tới thói quen: vì sao làm, cần gì, lấy ở đâu, cấu hình thế nào, cài ra sao, và làm gì khi bản sau ra mắt1.
Sáu chương đầu là phần chính: vì sao làm, cần gì, tải ở đâu, chỉnh thế nào, cài ra sao, và sau này nâng cấp. Nhớ nhé: đọc theo đúng thứ tự này thì không bị hụt bước.
These six chapters are Building the Kernel — the spine of the book2. They run from motive to habit: why to do it, what you need, where to get it, how to configure, how to install, and what to do when the next release lands1.
-
01
Nhập mônIntroduction
Đặt câu hỏi “vì sao” và ba quy tắc an toàn được nhắc lại suốt phần còn lại: đừng dựng nhân bằng quyền
root, đừng dựng trong/usr/src/linux, và đừng gỡ nhân đang chạy1.Chương mở đầu: vì sao nên tự dựng, và ba điều tuyệt đối đừng làm. Nhớ nhé: an toàn học trước, kỹ thuật học sau.
Poses the "why", and the three safety rules repeated through the rest of the book: do not build as
root, do not build in/usr/src/linux, and do not remove the kernel you are currently running1. -
02
Yêu cầu để dựng và dùng nhânRequirements for Building and Using the Kernel
Chặn kiểu hỏng đầu tiên: công cụ lệch phiên bản. Để dựng cần rất ít — một trình biên dịch, một trình liên kết, và
make. Để dùng nhân mới thì danh sách dài hơn, vì một lần nâng cấp có thể lan ra tận các tiện ích userspace1.Muốn dựng nhân chỉ cần ba thứ. Nhưng muốn dùng nhân mới thì có thể phải cập nhật thêm vài công cụ khác. Nhớ nhé: kiểm tra trước, đỡ bực sau.
Blocks the first failure mode: mismatched tools. Building needs very little — a compiler, a linker, and
make. Using the new kernel needs a longer list, because one upgrade can ripple out into userspace utilities1.Ba gói, không hơn: trình biên dịch, trình liên kết, và makeThree packages, no more: a compiler, a linker, and make Công cụ để dùng nhân: nơi việc nâng cấp có thể lan raTools to use the kernel: where an upgrade can spread Công cụ riêng theo hệ tệp: một lát cắt của năm 2006Filesystem-specific tools: a cross-section of 2006 -
03
Lấy mã nguồn nhânRetrieving the Kernel Source
Chặn kiểu hỏng thứ hai: dựng nhầm cây. Chương này phân biệt cây ổn định với cây phát triển, chỉ mạng lưới gương của kernel.org, và đưa ra nguyên tắc đơn giản nhất của cả cuốn sách — giải nén vào thư mục của chính bạn, không phải vào
/usr/src/1.Tải mã nguồn về đúng chỗ và đúng loại. Nhớ nhé: để mã trong thư mục nhà của bạn, đừng đụng vào thư mục hệ thống.
Blocks the second failure mode: building the wrong tree. It separates the stable tree from the development tree, points at the kernel.org mirror network, and states the simplest rule in the book — unpack into a directory of your own, not into
/usr/src/1.Dùng cây nào: ổn định, phát triển, và cái chết của quy ước chẵn lẻWhat tree to use: stable, development, and the death of the odd/even rule Tìm mã nguồn ở đâu: một mạng lưới, không phải một máy chủWhere to find the source: a network, not a server Làm gì với bộ mã: bốn lệnh và một nguyên tắcWhat to do with the source: four commands and one principle -
04
Cấu hình và biên dịchConfiguring and Building
Trung tâm của cuốn sách. Tất cả quy về một tệp tên
.config, và mọi giao diện —menuconfig,xconfig,oldconfig— chỉ là các lối vào khác nhau của cùng tệp đó18. Dựng thì ngược lại: chỉ một từ,make.Chỉnh nhân nghĩa là sửa một tệp duy nhất. Các màn hình khác nhau chỉ là nhiều cách sửa cùng một tệp ấy. Nhớ nhé: nhớ tên nó —
.config.The heart of the book. Everything reduces to one file called
.config, and every interface —menuconfig,xconfig,oldconfig— is just another door into it18. Building is the opposite: a single word,make.Tạo cấu hình: một tệp, bốn chữ cái, hai lối vàoCreating a configuration: one file, four letters, two routes Sửa cấu hình: ba giao diện, cùng một tệpModifying the configuration: three tools, one file Dựng nhân: một lệnh một từBuilding the kernel: a one-word command Tùy chọn dựng nâng cao: nhanh hơn, hẹp hơn, khác máyAdvanced building options: faster, narrower, elsewhere -
05
Cài đặt và khởi độngInstalling and Booting from a Kernel
Chương duy nhất có rủi ro thật: đây là chỗ bạn mượn quyền
root, và là chỗ một sai sót biến máy thành cục gạch cho tới khi có đĩa cứu hộ. Phòng vệ của nó đơn giản đến bất ngờ — đừng xóa mục nhân cũ trong bộ nạp khởi động1.Đây là bước có thể làm máy không bật lên được. Cách phòng: giữ lại mục chọn nhân cũ trong menu khởi động. Nhớ nhé: luôn chừa một đường lui.
The one chapter with real risk: this is where you borrow
root, and where a slip leaves the machine unbootable until you find a rescue disk. Its defence is startlingly simple — do not delete the old kernel's entry from the bootloader1.Mượn quyền root đúng cách — và trả lại ngayBorrowing root correctly — and giving it straight back Đường tự động: hai lệnh và một chuỗi năm bướcThe automatic path: two commands, five steps Đường thủ công: ba lệnh và một script nhỏThe manual path: three commands and a small script Sửa bộ nạp khởi động: quy trình 2006, đọc bằng mắt hôm nayEditing the bootloader: the 2006 procedure, read with today's eyes -
06
Nâng cấp nhânUpgrading a Kernel
Chương đóng vòng lặp: bản sau ra, và bạn không muốn trả lời lại từ đầu hàng nghìn câu hỏi cấu hình. Câu trả lời là
make oldconfig— nó giữ nguyên mọi lựa chọn cũ và chỉ hỏi những ký hiệu mới xuất hiện110.Khi có bản nhân mới, bạn không phải chọn lại từ đầu. Một lệnh sẽ giữ lại hết câu trả lời cũ và chỉ hỏi cái mới. Nhớ nhé: sao lưu
.configtrước đã.The chapter that closes the loop: a new release lands, and you do not want to answer thousands of configuration questions again. The answer is
make oldconfig— it keeps every old choice and asks only about symbols that are new110.Sao lưu .config, rồi đếm năm bướcBack up .config, then count five steps Tải bản vá đúng, không tải lại cả cây mãDownload the right patch, not the whole tree Áp bản vá — và kiểm chứng bằng MakefileApplying the patch — and verifying via the Makefile Cấu hình lại: make oldconfig giữ lại mọi câu trả lời cũReconfiguring: make oldconfig keeps every old answer
Phần II · Chương 7–8Part II · Chapters 7–8
Từ “một nhân chạy được” sang “nhân của riêng máy này”Chỉnh cho vừa đúng máy của bạnFrom "a kernel that works" to "this machine's kernel"
Phần I cho bạn một nhân chạy được. Phần Major Customizations trả lời câu hỏi khó hơn: làm sao biết chính xác máy này cần những trình điều khiển nào2. Tác giả nói đây là chương ông tự hào nhất trong cả cuốn sách2.
Hai chương này dạy cách hỏi chính cái máy của bạn xem nó cần gì, thay vì đoán. Nhớ nhé: đừng đoán — hãy hỏi máy.
Part I gives you a working kernel. Major Customizations answers the harder question: how do you know exactly which drivers this machine needs2. The author says this is the chapter he is proudest of in the whole book2.
-
07
Tùy biến nhânCustomizing a Kernel
Ba con đường, xếp theo độ khó: mượn
.configcủa bản phân phối làm điểm xuất phát; lần ngược từsysfsvề tên module đang nạp; hoặc truy mã nhận dạng thiết bị vào tận mã nguồn. Và một cảnh báo bao trùm: trình điều khiển cho hệ thống tệp gốc phải dựng thẳng vào nhân, không phải làm module1.Ba cách tìm xem máy cần driver nào — từ dễ tới khó. Và một điều không được sai: cái ổ chứa hệ điều hành phải được gắn thẳng vào nhân. Nhớ nhé: sai chỗ này là máy không bật lên.
Three routes, ordered by difficulty: borrow the distribution's
.configas a starting point; walk back fromsysfsto a loaded module name; or trace a device ID into the source. Plus one warning over all of it: the driver for the root filesystem must be built into the kernel, not made a module1.Mượn cấu hình của bản phân phối làm điểm xuất phátBorrowing the distribution config as a starting point Lần ngược qua sysfs về tên moduleWalking sysfs back to a module name Từ con số không: truy mã nhận dạng vào mã nguồnFrom scratch: tracing an ID into the source Hệ thống tệp gốc — chỗ không được phép saiThe root filesystem — where you cannot afford to be wrong -
08
Công thức cấu hình nhânKernel Configuration Recipes
Chương “sách nấu ăn”: các tình huống thường gặp — ổ đĩa, bus thiết bị, CPU và nguồn, mạng, hệ thống tệp, gỡ lỗi — mỗi thứ kèm danh sách tùy chọn cần bật12. Đây là chương già đi nhanh nhất, vì tên ký hiệu và cây menu đã di chuyển nhiều lần từ 20062.
Chương công thức pha sẵn: gặp tình huống nào thì bật những tùy chọn nào. Nhớ nhé: đọc để học cách nghĩ, còn tên tùy chọn thì tra trong
menuconfigcủa chính bạn.The cookbook chapter: common situations — disks, device buses, CPU and power, networking, filesystems, debugging — each with a list of options to turn on12. It is also the fastest-ageing chapter, because symbol names and the menu tree have moved repeatedly since 20062.
Ổ đĩa: ba con đường tới cùng một khối dữ liệuDisks: three roads to the same block of data Thiết bị: bus trước, driver sauDevices: the bus first, the driver second CPU, nguồn và bộ nhớ: đổi hành vi, không phải khả năngCPU, power and memory: changing behaviour, not capability Mạng, hệ tệp và bảo mật: ba nhóm, một cái công tắc gốcNetworking, filesystems and security: three groups, one root switch Gỡ lỗi nhân: mở mắt cho mình, đổi bằng một chút tốc độKernel debugging: buying sight with a little speed
Phần III · Chương 9–11Part III · Chapters 9–11
Ba từ điển — mở khi cần, đừng đọc hếtBa cuốn tra cứu, chỉ mở khi cầnThree dictionaries — open when needed, do not read through
Phần Kernel Reference gồm ba bảng tra: tham số dòng lệnh khởi động, các đích make, và ký hiệu cấu hình2. Đọc liền mạch thì vô ích; giá trị của chúng nằm ở lúc bạn đang nhìn một dòng khởi động lạ hoặc một màn hình menuconfig cụ thể1.
Ba chương cuối giống như từ điển: không ai đọc từ điển từ đầu tới cuối. Nhớ nhé: mở ra đúng lúc bạn đang bí một chữ.
Kernel Reference is three lookup tables: boot command-line parameters, make targets, and configuration symbols2. Reading them straight through is pointless; their value arrives when you are staring at an unfamiliar boot line or one specific menuconfig screen1.
-
09
Tham chiếu tham số khởi độngKernel Boot Command-Line Parameter Reference
Những gì bạn nói với nhân trước khi nó chạy — console, ngắt, bộ nhớ, đĩa gốc,
init. Bản sống của bảng này nằm trong cây mã, dưới admin-guide, và dài hơn chương sách nhiều lần12.Đây là những câu bạn nhắn cho nhân ngay lúc máy bật lên, trước khi hệ điều hành chạy. Nhớ nhé: bảng mới nhất nằm trong tài liệu chính thức, không phải trong sách.
What you tell the kernel before it runs — console, interrupts, memory, root disk,
init. The living version of this table lives in the source tree under admin-guide, and is many times longer than the book chapter12.Ba đường truyền, và bốn luật chi phối cả chươngThree routes, and the four rules that govern the whole chapter Sáu nhóm lõi: console, ngắt, bộ nhớ, ngủ, CPU, lập lịchSix core groups: console, interrupts, memory, suspend, CPU, scheduler Năm nhóm trên đường khởi động: ramdisk, đĩa gốc, init, kexec, RCUFive groups along the boot path: ramdisk, root disk, init, kexec, RCU Mười nhóm còn lại: phân hệ, an ninh, và cái hộp linh tinhThe remaining ten: subsystems, security, and the miscellaneous box -
10
Tham chiếu lệnh dựng nhânKernel Build Command-Line Reference
Toàn bộ các đích
make: hỏi thông tin, dọn dẹp, cấu hình, dựng, đóng gói, sinh tài liệu. Bản cập nhật của chính bảng này là thứmake helpin ra trong cây mã bạn đang đứng10.Danh sách mọi lệnh
makebạn có thể gõ trong thư mục mã nguồn. Nhớ nhé: gõmake helplà thấy bản mới nhất ngay trên máy mình.The full set of
maketargets: informational, cleaning, configuration, building, packaging, documentation. The up-to-date version of this very table is whatevermake helpprints in the tree you are standing in10.Hỏi trước, dọn sau: đích thông tin và đích dọn dẹpAsk first, clean second: informational and cleaning targets Đích cấu hình: mười một lối vào cùng một tệp .configConfiguration targets: eleven doors into one .config Dựng cái gì, dựng thế nào, rồi gói lạiWhat to build, how to build it, how to package it Trang cuối: tài liệu, kiến trúc, và phân tíchThe last page: documentation, architecture, analysis -
11
Tham chiếu tùy chọn cấu hìnhKernel Configuration Option Reference
Chương dài nhất và cũng dễ hiểu sai nhất: nó là ảnh chụp cây
Kconfigtại thời điểm 2.6.182. Cái còn nguyên giá trị là cách đọc một mục Kconfig; còn danh sách ký hiệu thì phải tra trong cây mã của chính bạn8.Chương này liệt kê rất nhiều tùy chọn của năm 2006. Nhớ nhé: học cách đọc một mục, rồi tra danh sách thật trong
menuconfigtrên máy bạn.The longest chapter, and the easiest to misread: it is a snapshot of the
Kconfigtree as of 2.6.182. What keeps its value is how to read a Kconfig entry; the symbol list itself must be looked up in your own tree8.Đọc một mục Kconfig: bốn thứ luôn có mặtReading a Kconfig entry: four things always present Nhóm lõi: nhân dạng, CPU, bộ nhớ, vào/raThe core groups: identity, CPU, memory, I/O Nguồn điện, bus, lưu trữ, hệ thống tệp, gỡ lỗiPower, buses, storage, filesystems, debugging Đọc một ảnh chụp 2006 vào năm nayReading a 2006 snapshot today
Sợi chỉ xuyên suốtThrough-lines
Sáu ý quay lại ở nhiều chương, thường dưới tên khácSáu ý lặp đi lặp lại khắp cuốn sáchSix ideas that return across chapters, usually renamed
Đọc tuần tự dễ khiến mỗi chương trông như một việc riêng. Nhưng những ý nặng ký nhất của cuốn sách quay lại nhiều lần — đôi khi là một quy tắc an toàn, đôi khi là một lệnh, đôi khi chỉ là một thói quen1. Nhận ra chúng là chỗ cuốn sách chuyển từ một bản hướng dẫn thành một lập luận.
Nhiều ý trong sách xuất hiện đi xuất hiện lại ở các chương khác nhau. Nhớ nhé: thấy được chúng thì cả cuốn sách nối lại thành một mạch.
Read in sequence, each chapter can look like its own separate job. But the book's load-bearing ideas return several times — sometimes as a safety rule, sometimes as a command, sometimes as nothing more than a habit1. Noticing them is where the book turns from a manual into an argument.
-
.config
Một tệp là toàn bộ tài sản của bạnMột tệp duy nhất giữ hết công sứcOne file holds everything you own
Mọi thứ trong cuốn sách cuối cùng đều quy về
.config. Chương 4 sinh ra nó; Chương 6 dặn sao lưu nó trước khi làm bất cứ việc gì; Chương 7 gợi ý mượn bản của bản phân phối làm điểm xuất phát; Chương 10 liệt kê mười mấy đíchmakechỉ để sửa nó; Chương 11 giải thích từng ký hiệu bên trong18.Cả cuốn sách xoay quanh một tệp tên
.config. Nhớ nhé: giữ nó cẩn thận thì làm lại được mọi thứ.Everything in the book eventually reduces to
.config. Chapter 4 creates it; Chapter 6 tells you to back it up before doing anything; Chapter 7 suggests borrowing the distribution's copy as a start; Chapter 10 lists a dozenmaketargets whose only job is editing it; Chapter 11 explains each symbol inside it18. -
never build as root
Quyền root là thứ mượn trong vài giâyChỉ mượn quyền cao nhất trong chốc látRoot is something you borrow for seconds
Quy tắc đặt ra ở Chương 1 và được thi hành ở Chương 4 và 5: cấu hình và biên dịch làm bằng tài khoản thường, chỉ bước cài đặt mới cần
root— và trả lại ngay1. Lý do không phải nghi thức: mộtmakechạy bằngroottrong sai thư mục có thể chạm vào những tệp mà tài khoản thường không bao giờ với tới.Chỉ dùng quyền quản trị đúng lúc cài, còn lại dùng tài khoản thường. Nhớ nhé: mượn nhanh, trả ngay.
A rule set in Chapter 1 and enforced in Chapters 4 and 5: configure and compile as an ordinary user, and reach for
rootonly at the install step — then give it straight back1. The reason is not ceremony: amakerun asrootin the wrong directory can touch files an ordinary account could never reach. -
keep a way back
Luôn chừa một đường lui khởi động đượcLuôn giữ lại một nhân cũ chạy đượcAlways leave a bootable way back
Đây là sợi chỉ cứu người. Chương 1 dặn đừng gỡ nhân đang chạy; Chương 5 dặn giữ mục cũ trong bộ nạp khởi động; Chương 6 dặn sao lưu
.configtrước khi nâng cấp1. Ba lần nói, cùng một ý: đừng bao giờ ở vào tình thế chỉ còn một lựa chọn để khởi động.Giữ nguyên cái nhân cũ đang chạy được, để nếu cái mới hỏng thì vẫn bật máy lên được. Nhớ nhé: luôn có đường quay về.
This is the thread that saves people. Chapter 1 says do not remove the running kernel; Chapter 5 says keep the old entry in the bootloader; Chapter 6 says back up
.configbefore upgrading1. Three statements, one idea: never end up with only one thing to boot. -
ask, don't guess
Hỏi chính cái máy, đừng đoán phần cứngHỏi máy xem nó có gì, đừng đoánInterrogate the machine, do not guess the hardware
Phương pháp trung tâm của Chương 7: lần ngược từ
sysfsvề tên module, hoặc truy mã nhận dạng thiết bị vào mã nguồn, thay vì tick theo cảm giác trongmenuconfig1. Chương 8 chỉ là phương pháp đó đã được chạy sẵn cho các tình huống phổ biến, và Chương 11 là cuốn từ điển bạn tra khi đã biết mình cần hỏi ký hiệu nào.Máy tự nói được nó đang dùng driver nào — chỉ cần biết chỗ để xem. Nhớ nhé: hỏi máy, đừng đoán.
The central method of Chapter 7: walk back from
sysfsto a module name, or trace a device ID into the source, rather than ticking boxes by feel inmenuconfig1. Chapter 8 is that method pre-run for common situations, and Chapter 11 is the dictionary you open once you know which symbol to ask about. -
make help
Cây mã tự tài liệu hóa chính nóBản mã nguồn tự giải thích nó làm được gìThe tree documents itself
Chương 4 dựng nhân bằng
make, Chương 10 liệt kê từng đích — nhưng cả hai đều trỏ về cùng một chỗ:make helpin ra danh sách đích của chính cây mã bạn đang đứng, vàREADMEtrong cây mô tả quy trình dựng1011. Chương 10 vì vậy không bao giờ cũ hoàn toàn: nó dạy bạn cách đọc đầu ra củamake help.Ngay trong thư mục mã nguồn có sẵn lời giải thích cho mọi lệnh. Nhớ nhé: gõ
make helptrước khi đi tìm ở đâu khác.Chapter 4 builds with
make, Chapter 10 enumerates the targets — but both point at the same place:make helpprints the target list for the exact tree you are standing in, and the in-treeREADMEdescribes the build procedure1011. That is why Chapter 10 never fully ages: it teaches you to readmake helpoutput. -
2.6.18
Mỗi chi tiết cụ thể đều có hạn dùngCon số trong sách rồi sẽ cũEvery concrete detail has a shelf life
Tác giả ghi thẳng trên trang sách của mình rằng cuốn sách đúng tới bản 2.6.18, rằng các mục cấu hình sẽ di chuyển và tùy chọn mới sẽ xuất hiện — nhưng các khái niệm chính thì còn nguyên với mọi phiên bản nhân2. Đó là lời tự đánh giá chính xác, và là cách đọc đúng cả Chương 8, 9 lẫn 11.
Chính tác giả nói: các con số và tên tùy chọn trong sách sẽ cũ, nhưng cách nghĩ thì không. Nhớ nhé: học cách làm, đừng học thuộc danh sách.
The author states plainly on his own book page that the book is current as of 2.6.18, that configuration items will move around and new options will appear — but that the main concepts hold for any kernel version2. That is an accurate self-assessment, and it is the right way to read Chapters 8, 9 and 11.
Đọc một cuốn sách 2006 vào hôm nayReading a 2006 book today
Chỗ nào đã cũ — và cái gì đã thay vàoNhững chỗ trong sách không còn đúng nữaWhat has aged — and what replaced it
Cuốn sách chốt ở nhân 2.6.18, phát hành năm 20062. Hai mươi năm là quãng đủ dài để cách đánh số phiên bản, công cụ quanh việc dựng, và cả bộ nạp khởi động đều đổi. Bảng dưới nói thẳng từng chỗ, và trỏ tới tài liệu hiện hành của kernel.org — nguồn có thẩm quyền cho mọi con số hôm nay56.
Sách viết năm 2006 nên một số chi tiết đã cũ. Bảng dưới chỉ rõ chỗ nào cũ và hôm nay dùng gì thay. Nhớ nhé: cách làm vẫn đúng, chỉ con số là đổi.
The book is current as of kernel 2.6.18, published in 20062. Twenty years is long enough for version numbering, the tooling around the build, and the bootloader itself to have changed. The table below names each one, and points to current kernel.org documentation — the authority for any of today's numbers56.
Đánh số phiên bảnVersion numbering
2006: thế giới của sách là 2.6.x, và mọi ví dụ đều mang dạng số đó2.
Hôm nay: Linux 3.0 ra ngày 21-07-2011 kèm một lược đồ đánh số mới, bỏ con số thứ ba trong tên dòng7. Tại thời điểm viết trang này, kernel.org liệt kê bản stable 7.2.7 và mainline 7.3-rc45, với chu kỳ mainline khoảng 9–10 tuần6.
2006: nhân đánh số kiểu 2.6.18.
Hôm nay: đã qua 3, 4, 5, 6 và đang ở 75. Nhớ nhé: thấy số 2.6 trong sách thì đọc như một ví dụ lịch sử.
2006: the book's world is 2.6.x, and every example carries that shape of number2.
Today: Linux 3.0 was released on 21 July 2011 with a new version numbering scheme that dropped the third component from the series name7. As this page is written, kernel.org lists stable 7.2.7 and mainline 7.3-rc45, on a mainline cycle of roughly 9–10 weeks6.
Giao diện cấu hìnhThe configuration interface
2006: make menuconfig, make xconfig, make gconfig, make oldconfig1.
Hôm nay: gần như không đổi. Tài liệu Kconfig hiện hành vẫn mô tả menuconfig, xconfig và oldconfig, cộng thêm nconfig — một bản ncurses ra đời sau sách810. Đây là chỗ cuốn sách già đi ít nhất.
2006: chỉnh nhân bằng các màn hình menuconfig, xconfig.
Hôm nay: vẫn y nguyên, chỉ thêm vài lựa chọn mới8. Nhớ nhé: phần này của sách vẫn dùng được nguyên.
2006: make menuconfig, make xconfig, make gconfig, make oldconfig1.
Today: almost unchanged. Current Kconfig documentation still describes menuconfig, xconfig and oldconfig, plus nconfig — an ncurses front end that postdates the book810. This is where the book has aged least.
Cắt nhỏ một cấu hìnhTrimming a configuration
2006: Chương 7 dạy mượn .config của bản phân phối rồi tự tắt bớt, hoặc truy phần cứng bằng tay1.
Hôm nay: có hai đích làm gần hết việc đó. make help hiện liệt kê localmodconfig và localyesconfig — tắt các module không được nạp10; và hướng dẫn chính thức của kernel.org lấy yes "" | make localmodconfig rồi make olddefconfig làm điểm xuất phát được khuyến nghị9.
2006: phải tự tay tắt bớt từng thứ.
Hôm nay: có lệnh tự tắt những gì máy bạn không dùng9. Nhớ nhé: nó tiện, nhưng chỉ thấy được cái đang cắm vào máy lúc đó.
2006: Chapter 7 teaches borrowing the distribution's .config and switching things off by hand, or tracing the hardware manually1.
Today: two targets do most of that for you. make help now lists localmodconfig and localyesconfig — disabling modules that are not loaded10; and the official kernel.org guide makes yes "" | make localmodconfig followed by make olddefconfig its recommended starting point9.
Tài liệu chính thức cũng nêu rõ cái bẫy của localmodconfig: nó chỉ nhìn thấy những module đang nạp lúc bạn chạy lệnh, nên thiết bị chưa cắm vào sẽ bị coi là thừa và bị tắt9. Đây đúng là lý do Chương 7 vẫn đáng đọc: phương pháp truy phần cứng bằng tay là thứ cứu bạn khi lối tắt đoán sai.
Bộ nạp khởi độngThe bootloader
2006: Chương 5 hướng dẫn sửa tệp cấu hình của LILO hoặc GRUB đời đầu bằng tay1.
Hôm nay: GRUB 2 sinh grub.cfg từ kịch bản qua grub-mkconfig, nên sửa tay tệp đó sẽ bị ghi đè13; nhiều bản phân phối dùng kernel-install để thêm và gỡ nhân khỏi phân vùng khởi động14.
2006: tự tay sửa menu khởi động.
Hôm nay: menu đó do máy tự sinh ra, sửa tay sẽ bị mất13. Nhớ nhé: đọc ý tưởng trong sách, làm theo cách của bản phân phối bạn dùng.
2006: Chapter 5 walks you through hand-editing the config file of LILO or early GRUB1.
Today: GRUB 2 generates grub.cfg from scripts via grub-mkconfig, so hand edits to it are overwritten13; many distributions use kernel-install to add and remove kernels from the boot partition14.
Hai chương tra cứu lớnThe two big reference chapters
2006: Chương 9 và Chương 11 in ra bảng tham số khởi động và bảng ký hiệu cấu hình của bản 2.6.182.
Hôm nay: cả hai đều có bản sống trong cây mã — tham số khởi động ở admin-guide12, ký hiệu cấu hình ở chính Kconfig mà menuconfig đọc8. Dùng sách để học cách đọc một mục; dùng cây mã để lấy con số.
2006: hai chương dài in sẵn danh sách.
Hôm nay: danh sách thật nằm trong tài liệu chính thức và trong mã nguồn12. Nhớ nhé: sách dạy cách đọc, mã nguồn cho con số.
2006: Chapters 9 and 11 print the boot-parameter table and the configuration-symbol table as of 2.6.182.
Today: both have living versions in the source tree — boot parameters under admin-guide12, configuration symbols in the very Kconfig files menuconfig reads8. Use the book to learn how to read an entry; use the tree for the numbers.
Cái không đổiWhat did not change
Vẫn đúng: chính tác giả cuốn sách hôm nay vẫn là người bảo trì các dòng nhân longterm — bảng “Active kernel releases” của kernel.org ghi Greg Kroah-Hartman & Sasha Levin cho 6.18, 6.12, 6.6, 6.1 và 5.156. Và bản sách vẫn tải miễn phí theo từng chương, dưới giấy phép Creative Commons Attribution-ShareAlike 2.524.
Vẫn đúng: người viết sách vẫn đang bảo trì nhân Linux đến hôm nay6, và sách vẫn đọc miễn phí được2. Nhớ nhé: tác giả không chỉ viết về việc này, ông vẫn đang làm nó.
Still true: the book's author is still a maintainer of the longterm kernel series today — kernel.org's "Active kernel releases" table lists Greg Kroah-Hartman & Sasha Levin for 6.18, 6.12, 6.6, 6.1 and 5.156. And the book itself is still downloadable free, chapter by chapter, under Creative Commons Attribution-ShareAlike 2.524.
Khép lạiClosing
Cuốn sách không hứa cho bạn một nhân nhanh hơn. Nó hứa rằng sau mười một chương, cái máy trước mặt bạn không còn là thứ người khác quyết định thay — và rằng bạn luôn còn một đường lui để khởi động.
Học xong cuốn này, bạn không có máy nhanh hơn. Bạn có một cái máy mình hiểu. Nhớ nhé: và luôn giữ sẵn một nhân cũ để quay về.
The book does not promise you a faster kernel. It promises that after eleven chapters the machine in front of you is no longer something other people decide for you — and that you always keep one way back to boot.