Linux Kernel in a Nutshell · Bản đồ toàn cuốnWhole-book map
Mức đọcLevel

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.

Sợ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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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 .config trướ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.

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.

  1. 07

    Tùy biến nhânCustomizing a Kernel

    Ba con đường, xếp theo độ khó: mượn .config của bản phân phối làm điểm xuất phát; lần ngược từ sysfs về 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 .config as a starting point; walk back from sysfs to 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.

  2. 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 menuconfig củ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.

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.

  1. 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.

  2. 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 help in ra trong cây mã bạn đang đứng10.

    Danh sách mọi lệnh make bạn có thể gõ trong thư mục mã nguồn. Nhớ nhé: gõ make help là thấy bản mới nhất ngay trên máy mình.

    The full set of make targets: informational, cleaning, configuration, building, packaging, documentation. The up-to-date version of this very table is whatever make help prints in the tree you are standing in10.

  3. 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 Kconfig tạ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 menuconfig trên máy bạn.

    The longest chapter, and the easiest to misread: it is a snapshot of the Kconfig tree 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.

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.

  1. .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 đích make chỉ để 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 dozen make targets whose only job is editing it; Chapter 11 explains each symbol inside it18.

  2. 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ột make chạy bằng root trong 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 root only at the install step — then give it straight back1. The reason is not ceremony: a make run as root in the wrong directory can touch files an ordinary account could never reach.

    Chạy qua: Chương 1 Chương 4 Chương 5Runs through: Ch 1 Ch 4 Ch 5
  3. 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 .config trướ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 .config before upgrading1. Three statements, one idea: never end up with only one thing to boot.

    Chạy qua: Chương 1 Chương 5 Chương 6Runs through: Ch 1 Ch 5 Ch 6
  4. 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ừ sysfs về 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 trong menuconfig1. 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 sysfs to a module name, or trace a device ID into the source, rather than ticking boxes by feel in menuconfig1. 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.

    Chạy qua: Chương 7 Chương 8 Chương 11Runs through: Ch 7 Ch 8 Ch 11
  5. 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 help in ra danh sách đích của chính cây mã bạn đang đứng, và README trong 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ủa make 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 help trướ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 help prints the target list for the exact tree you are standing in, and the in-tree README describes the build procedure1011. That is why Chapter 10 never fully ages: it teaches you to read make help output.

    Chạy qua: Chương 4 Chương 10Runs through: Ch 4 Ch 10
  6. 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.

    Chạy qua: Chương 8 Chương 9 Chương 11Runs through: Ch 8 Ch 9 Ch 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.