Phần I · Dựng nhân · Chương 1Part I · Building the Kernel · Chapter 1
Vì sao lại tự dựng một nhân Linux? Tự làm “trái tim” cho máy của mình Why build your own Linux kernel?
Greg Kroah-Hartman mở cuốn sách bằng một nghịch lý dễ chịu: nhân Linux là một khối mã khổng lồ — ông ghi nhận “hơn bảy triệu dòng mã” ở thời điểm 2006 1 — nhưng cũng là hệ điều hành linh hoạt nhất từng được tạo ra, chạy được từ một mô hình trực thăng điều khiển từ xa, một chiếc điện thoại di động, cho tới phần lớn các siêu máy tính lớn nhất thế giới 1. Chính sự linh hoạt đó là lý do để bạn tự tay chỉnh nó.
Nhân (kernel) là phần lõi điều khiển mọi thứ bên trong máy tính: bàn phím, màn hình, ổ cứng, mạng. Ông Greg Kroah-Hartman nói nó rất to — năm 2006 đã “hơn bảy triệu dòng” 1 — nhưng lại rất dễ uốn: cũng một cái nhân ấy có thể chạy trong đồ chơi điều khiển từ xa, trong điện thoại, và trong siêu máy tính 1. Nhớ nhé: to không có nghĩa là cứng nhắc.
Greg Kroah-Hartman opens the book with a pleasant paradox: the Linux kernel is an enormous body of code — he records “over seven million lines of code” as of 2006 1 — and yet it is the most flexible operating system ever created, running on everything from a radio-controlled model helicopter, to a cell phone, to the majority of the largest supercomputers in the world 1. That flexibility is precisely why you would tune it yourself.
Con số “bảy triệu dòng” là một mốc thời gian, không phải một hằng số. Sách viết cho dòng nhân 2.6 năm 2006; đến bản 6.14-rc1 đầu năm 2025 cây mã nguồn đã vượt 40 triệu dòng theo thống kê của Phoronix được các trang kỹ thuật dẫn lại 5. Luận điểm của ông vì thế chỉ mạnh thêm: khối mã càng lớn thì phần bạn thực sự cần càng nhỏ so với tổng thể.
Luận điểm chương 1. Không một bản phân phối nào cung cấp đúng cái nhân mà đa số người dùng của nó mong muốn 1; vì vậy, sớm muộn trong đời dùng Linux bạn sẽ cần dựng hoặc tinh chỉnh một nhân — và việc đó phải làm với quyền người dùng thường, không phải quyền siêu người dùng 2.
Ý chính. Bản Linux có sẵn được làm cho “số đông”, nên không vừa khít với máy của riêng bạn 1. Có lúc bạn sẽ muốn tự làm một cái vừa khít. Nhớ nhé: làm bằng tài khoản thường, đừng làm bằng quyền quản trị 2.
Chapter 1 thesis. No Linux distribution provides the exact kernel most of its users want 1; so at some point in your Linux career you will want to build a kernel, or tweak the parameters of one you are running — and that work belongs to a normal user account, never the superuser 2.
Cụm khái niệm 01Concept cluster 01
Nghịch lý linh hoạt: khổng lồ nhưng uốn được Rất to, nhưng vẫn uốn được The flexibility paradox: enormous, yet malleable
Câu mở đầu của chương đặt hai đại lượng cạnh nhau: kích thước và độ mềm dẻo. Kroah-Hartman viết rằng bất chấp khối mã lớn, nhân Linux vẫn là hệ điều hành linh hoạt nhất từng có 1. Chữ “bất chấp” mới là điều đáng chú ý: ở hầu hết hệ thống phần mềm, lớn đồng nghĩa với cứng. Ở đây thì không, vì phần lớn khối mã ấy là driver và tùy chọn có thể bật, tắt, hoặc dựng thành module riêng lẻ.
Thường thì cái gì càng to càng khó đổi. Nhân Linux thì ngược lại: nó to vì chứa sẵn rất nhiều “mảnh rời” cho đủ loại thiết bị, và bạn được chọn lấy mảnh nào. Nhớ nhé: to ở đây là “nhiều lựa chọn”, không phải “nặng nề”.
The chapter's opening sentence sets two quantities side by side: size and malleability. Kroah-Hartman writes that despite its large code base, the Linux kernel is the most flexible operating system that has ever been created 1. The word “despite” is the interesting one: in most software systems, large means rigid. Not here, because most of that code is drivers and options you can switch on, off, or build as separate modules.
Nhân (kernel). Lớp mã chạy ở đặc quyền cao nhất, đứng giữa phần cứng và mọi chương trình bạn dùng. Cuốn sách này cố tình không bàn về lập trình bên trong nhân — nó bàn về cách cấu hình, dựng, cài đặt và tùy biến nhân, và ông nói rõ không cần kinh nghiệm lập trình để đọc 3.
Nhân là gì. Là phần lõi đứng giữa máy móc và các ứng dụng. Sách này không dạy viết mã cho nhân — nó dạy cách lắp và chỉnh nhân, và không cần biết lập trình 3. Nhớ nhé: đây là sách của người dùng, không phải sách của lập trình viên.
Kernel. The layer of code running at the highest privilege, sitting between the hardware and every program you use. This book deliberately does not cover kernel programming — it covers configuring, building, installing and customizing, and the author states plainly that no programming experience is needed 3.
nhân phân phối = nhu cầu của SỐ ĐÔNG
nhân của bạn = nhu cầu CỦA BẠN
→ nhỏ hơn + nhanh hơn
nhân có sẵn = cho tất cả mọi người
nhân tự dựng = riêng cho máy bạn
→ gọn hơn + nhanh hơn
distro kernel = needs of the MAJORITY
your kernel = YOUR needs
→ smaller + faster
-
flexibility
Linh hoạt — cùng một nhân, muôn vàn thân xác Linh hoạt — một lõi, nhiều loại máy Flexibility — one kernel, many bodies
Ông liệt kê dải thiết bị để minh họa: một mô hình trực thăng điều khiển từ xa, một chiếc điện thoại di động, và phần lớn các siêu máy tính lớn nhất thế giới 1. Ba ví dụ này cách nhau nhiều bậc độ lớn về bộ nhớ, năng lượng và số nhân xử lý — nhưng vẫn là cùng một cây mã nguồn, chỉ khác tập tùy chọn cấu hình.
Ông kể ba ví dụ: trực thăng đồ chơi, điện thoại, và siêu máy tính 1. Ba thứ khác nhau một trời một vực, nhưng cùng dùng một bộ mã nguồn. Nhớ nhé: khác nhau là ở phần bạn chọn bật, không phải ở bộ mã.
He lists a range of devices to illustrate: a radio-controlled model helicopter, a cell phone, and the majority of the largest supercomputers in the world 1. These three sit orders of magnitude apart in memory, power and core count — yet they share one source tree, differing only in the set of configuration options.
Bạn thấy nó ở đâu. Mỗi lần một bản phân phối phát hành “kernel-server” và “kernel-desktop” riêng, đó chính là cùng cây mã ấy được cấu hình hai kiểu.
Gặp ở đâu. Khi thấy có bản nhân “cho máy chủ” và bản “cho máy bàn”, đó là cùng một mã, chỉnh khác nhau. Nhớ nhé: khác cấu hình, không khác mã.
Where you see it. Whenever a distribution ships a separate “kernel-server” and “kernel-desktop”, that is one source tree configured two ways.
Cơ chế: y / m / n
Mỗi tùy chọn cấu hình có ba trạng thái —
ydựng thẳng vào nhân,mdựng thành module nạp khi cần,nloại hẳn ra. Chương 4 của sách mô tả đúng ba lựa chọn này trong giao diệnmake config6. Đây là đòn bẩy vật lý tạo ra “linh hoạt”. -
smaller and faster
Nhỏ hơn và nhanh hơn — phần thưởng của việc cắt gọt Gọn hơn thì chạy nhanh hơn Smaller and faster — the reward for trimming
Lời hứa của ông rất cụ thể: bằng cách tùy biến nhân cho môi trường riêng, có thể tạo ra thứ vừa nhỏ hơn vừa nhanh hơn nhân mà hầu hết bản phân phối cung cấp 1. Ông cũng nói ngược lại một cách sòng phẳng: có những lý do chính đáng để gỡ bỏ tính năng khỏi nhân, đặc biệt khi chạy trên hệ nhúng hoặc máy dạng nhỏ 1.
Bỏ bớt thứ máy bạn không có thì nhân nhẹ đi và chạy nhanh hơn 1. Với máy nhỏ, nhẹ là điều bắt buộc 1. Nhớ nhé: bỏ bớt cũng là một cách làm tốt lên.
His promise is concrete: by customizing the kernel for your specific environment, it is possible to create something both smaller and faster than the kernel provided by most Linux distributions 1. He states the converse just as plainly: there are good reasons to remove features from the kernel, particularly on an embedded system or one with a small form factor 1.
Bạn thấy nó ở đâu. Tài liệu nhân hiện hành khuyến nghị
make localmodconfig, lấy cấu hình của bản phân phối làm nền rồi tắt các module có vẻ thừa với máy bạn, và nói rõ cách này “giảm thời gian biên dịch một cách khổng lồ” 4.Gặp ở đâu. Ngày nay có lệnh
make localmodconfigtự bỏ bớt phần máy bạn không dùng, giúp biên dịch nhanh hơn rất nhiều 4. Nhớ nhé: máy tự giúp bạn cắt gọt.Where you see it. Current kernel documentation recommends
make localmodconfig, which takes your distribution's config as a base and disables modules apparently superfluous for your setup — it says this “will reduce the compile time enormously” 4.Cái giá của việc cắt
Tài liệu hiện hành cũng cảnh báo mặt trái:
localmodconfig“có khả năng tắt những tính năng bạn chưa dùng kể từ lúc khởi động” 4. Module chỉ tự nạp khi được dùng lần đầu, nên thứ bạn chưa chạm tới sẽ bị coi là không cần.Giới hạn tự đặt của sách
Ông nói thẳng rằng hiểu nội tình hành vi của nhân là hữu ích khi tinh chỉnh, nhưng nằm ngoài phạm vi cuốn sách, trừ vài tóm tắt ngắn kèm theo một số tùy chọn; Phụ lục B liệt kê sách và tài liệu để đọc thêm 1.
Cụm khái niệm 02Concept cluster 02
Vì sao nhân dựng sẵn không bao giờ vừa khít Vì sao đồ may sẵn không vừa người Why a stock kernel never quite fits
Đây là đoạn văn sắc nhất của chương, và nó không phải lời chê bản phân phối. Ông thừa nhận các bản hiện đại đã “rất chiều người dùng”, biên dịch sẵn hỗ trợ cho mọi thiết bị đã biết, cho âm thanh, thậm chí cho tiết kiệm điện 1. Vấn đề là cấu trúc chứ không phải chất lượng: mỗi bản phân phối phải cố đáp ứng nhu cầu của số đông 1. Mà bạn thì gần như chắc chắn có một nhu cầu khác số đông.
Bản Linux có sẵn đã rất tốt: cài sẵn hỗ trợ cho gần như mọi thiết bị, cho âm thanh, cho tiết kiệm pin 1. Nhưng nó phải làm vừa lòng số đông 1, mà máy của bạn thì riêng. Nhớ nhé: đồ may sẵn tốt, nhưng đồ may đo mới vừa.
This is the sharpest passage in the chapter, and it is not a complaint about distributions. He grants that modern ones have gotten very accommodating, compiling in support for every known device, for sound, and even for power conservation 1. The problem is structural, not qualitative: every distribution has to try to meet the needs of the majority 1. And you almost certainly have a need that differs from the majority.
Hãy đọc kỹ cấu trúc lập luận: ông không nói nhân dựng sẵn tồi, ông nói nó tối ưu cho một hàm mục tiêu khác. Hàm mục tiêu của bản phân phối là “chạy được trên nhiều máy nhất có thể”; hàm mục tiêu của bạn là “chạy tốt nhất trên đúng một máy”. Hai bài toán khác nhau thì nghiệm khác nhau — và đó là toàn bộ chỗ đứng của cuốn sách.
Bản phân phối (distribution). Một gói hoàn chỉnh gồm nhân đã dựng sẵn cùng công cụ người dùng. Nhân của nó được cấu hình rộng để khởi động được trên tập phần cứng lớn nhất có thể — nghĩa là mang theo rất nhiều thứ máy bạn không có.
Bản phân phối là gì. Là bộ Linux đóng gói sẵn cho bạn cài. Nhân trong đó được làm “rộng rãi” để chạy được trên nhiều máy. Nhớ nhé: rộng rãi nghĩa là mang theo nhiều thứ bạn không cần.
Distribution. A complete package of a pre-built kernel plus userspace tools. Its kernel is configured broadly, so it boots on the widest possible set of hardware — which means carrying a great deal your machine does not have.
lý do 1 · phần cứng của bạn khác
lý do 2 · muốn nhân mới ngay
lý do 3 · cần gỡ bớt tính năng
→ dựng, hoặc chỉnh tham số
1 · máy bạn khác
2 · muốn bản mới sớm
3 · muốn bỏ bớt cho nhẹ
→ tự dựng hoặc tự chỉnh
reason 1 · your hardware differs
reason 2 · you want a new kernel now
reason 3 · you need to remove features
→ build it, or tweak its parameters
-
different hardware
Phần cứng khác — lý do tầm thường nhất và phổ biến nhất Máy bạn khác máy người khác Different hardware — the plainest reason, and the commonest
Ông diễn đạt gọn tới mức dễ bị bỏ qua: “Bạn có thể chỉ đơn giản là có phần cứng khác” 1. Không cần tình huống kỳ lạ nào; chỉ cần một chiếc máy tính xách tay có con chip không nằm trong tập cấu hình mặc định là đủ để việc tùy biến trở nên đáng làm.
Ông nói đơn giản: có thể máy bạn chỉ là có phần cứng khác thôi 1. Thế là đủ lý do rồi. Nhớ nhé: không cần lý do to tát mới được tự dựng nhân.
He puts it so briefly it is easy to skip: “You may just have different hardware” 1. No exotic scenario is required; one laptop with a chip outside the default config set is reason enough for customization to be worth the effort.
Bạn thấy nó ở đâu. Chương 7 của sách dành riêng cho việc xác định đúng module cần cho phần cứng đang có — ông tự nhận đó là chương ông tâm đắc nhất 7.
Gặp ở đâu. Chương 7 dạy cách tìm đúng phần cần bật cho máy bạn; chính tác giả nói đó là chương ông thích nhất 7. Nhớ nhé: cứ đọc tiếp, sẽ có hướng dẫn cụ thể.
Where you see it. Chapter 7 is devoted to determining the correct module for the hardware you actually have — the author calls it the chapter he is especially proud of 7.
-
not waiting
Không phải chờ — nhân mới ra là dùng được Không phải chờ bản mới Not waiting — using a new kernel the day it lands
Lý do thứ hai mang tính thời gian: khi một nhân mới ra đời, bạn có thể muốn dùng ngay mà không đợi một bản phân phối được xây quanh nó 1. Khoảng trễ giữa hai mốc đó có thể tính bằng tháng, đôi khi bằng cả một chu kỳ phát hành.
Nhân mới ra hôm nay, nhưng bản Linux đóng gói nó có thể vài tháng sau mới có. Tự dựng thì dùng được ngay 1. Nhớ nhé: tự dựng là cách đi trước lịch.
The second reason is about time: when a new kernel comes out, you may want to start using it without waiting for a distribution to be built around it 1. The gap between those two moments can run to months, sometimes a whole release cycle.
Bạn thấy nó ở đâu. kernel.org hôm nay công bố song song nhiều nhánh — mainline, stable, và nhiều nhánh longterm — mỗi nhánh có nhịp phát hành riêng 8.
Gặp ở đâu. Trang kernel.org luôn có nhiều dòng nhân cùng lúc: bản thử nghiệm, bản ổn định, bản hỗ trợ dài hạn 8. Nhớ nhé: có nhiều dòng để chọn, không chỉ một.
Where you see it. kernel.org today publishes several branches in parallel — mainline, stable, and multiple longterm lines — each on its own release cadence 8.
Chương 3 sẽ giải thích các nhánh ấy liên hệ với nhau ra sao.
Chapter 3 explains how those branches relate to one another.
-
tweaking parameters
Chỉnh tham số — dựng lại không phải cách duy nhất Đôi khi chỉ cần vặn lại vài nút Tweaking parameters — rebuilding is not the only path
Câu tổng kết của ông cẩn trọng hơn vẻ ngoài: trong đời dùng Linux, đôi lúc bạn sẽ muốn dựng một nhân, hoặc tinh chỉnh tham số của nhân đang chạy 1. Vế thứ hai quan trọng không kém — nhiều thay đổi hữu ích không cần biên dịch lại dòng nào.
Không phải lúc nào cũng phải dựng lại cả nhân. Nhiều khi chỉ cần đổi vài tham số của nhân đang chạy 1. Nhớ nhé: thử cách nhẹ trước, cách nặng sau.
His summary sentence is more careful than it looks: during your Linux career you will sometimes want to build a kernel, or to tweak the parameters of one you are running 1. The second half matters just as much — many useful changes require no recompilation at all.
Bạn thấy nó ở đâu. Chương 9 của sách là một tra cứu đầy đủ các tham số dòng lệnh khởi động truyền cho nhân 7 — đúng con đường “chỉnh mà không dựng lại”.
Gặp ở đâu. Chương 9 liệt kê các tham số bạn truyền cho nhân lúc khởi động 7. Nhớ nhé: đó là cách chỉnh mà không phải dựng lại.
Where you see it. Chapter 9 is a full reference to the kernel boot command-line parameters 7 — exactly the “tune without rebuilding” route.
Cụm khái niệm 03 · “Using This Book”Concept cluster 03 · “Using This Book”
Dùng cuốn sách này: ba quy tắc an toàn Ba luật an toàn khi làm theo sách Using this book: three safety rules
Mục này ngắn nhưng là mục có hệ quả thực tế lớn nhất của chương. Nó mở đầu bằng một khung cảnh báo in đậm: đừng cấu hình hay dựng nhân với quyền siêu người dùng 2. Ông gọi đây là điều quan trọng nhất cần nhớ khi đi qua các bước trong sách 2.
Phần này ngắn mà quan trọng nhất. Câu đầu tiên là một lời cảnh báo: đừng dựng nhân bằng quyền quản trị 2. Ông bảo đây là điều quan trọng nhất phải nhớ 2. Nhớ nhé: dùng tài khoản thường thôi.
This section is short but carries the chapter's largest practical consequence. It opens with a boxed warning: do not configure or build your kernel with superuser permissions enabled 2. He calls this the most important thing to remember while working through the steps in the book 2.
Siêu người dùng (superuser, root). Tài khoản không bị ràng buộc bởi quyền hạn tệp tin. Sách chia rạch ròi: tải mã nguồn, giải nén, cấu hình, biên dịch — làm với tài khoản thường; chỉ hai hoặc ba lệnh để cài nhân mới là cần quyền root 2.
root là gì. Là tài khoản được phép làm mọi thứ, kể cả thứ gây hỏng. Sách nói: tải, giải nén, chỉnh, biên dịch thì dùng tài khoản thường; chỉ lúc cài mới cần root 2. Nhớ nhé: chỉ mượn quyền lớn vào phút chót.
Superuser (root). The account unbound by file permissions. The book draws a clean line: downloading the source, uncompressing it, configuring and building it — all as a normal user; only the two or three commands it takes to install a new kernel should be done as the superuser 2.
tải · giải nén · cấu hình · dựng → user thường
cài đặt (2–3 lệnh) → root
thư mục làm việc → ~/linux/, KHÔNG /usr/src/
tải, giải nén, chỉnh, dựng → tài khoản thường
cài → quyền quản trị
chỗ làm → thư mục nhà của bạn
download · unpack · configure · build → normal user
install (2–3 commands) → root
working dir → ~/linux/, NOT /usr/src/
-
never build as root
Đừng dựng bằng root — và lý do có thật đằng sau Đừng dùng quyền quản trị để dựng Never build as root — and the real reason behind it
Đây không phải lời khuyên vệ sinh chung chung. Ông kể một sự cố cụ thể: đã từng có lỗi trong quy trình dựng nhân khiến một số tệp đặc biệt trong thư mục
/devbị xóa nếu người dùng có quyền siêu người dùng lúc dựng 2. Ngoài ra, giải nén mã nguồn với quyền root cũng gây rắc rối vì một số tệp không nhận đúng quyền hạn, dẫn tới lỗi biên dịch về sau 2.Không phải lời khuyên suông đâu. Đã từng có lỗi làm mất mấy tệp quan trọng trong
/devnếu người dùng dựng nhân bằng quyền quản trị 2. Giải nén bằng quyền đó cũng làm sai quyền tệp và gây lỗi sau này 2. Nhớ nhé: một cú nhấp sai bằng quyền lớn thì hỏng thật.This is not generic hygiene advice. He recounts a specific incident: there have been bugs in the kernel build process that deleted some special files in
/devif the user had superuser permissions while building 2. Uncompressing the source as root causes its own trouble too, since some files end up without the proper permissions and cause build errors later 2.Bạn thấy nó ở đâu. Hướng dẫn dựng nhân hiện hành của kernel.org giữ nguyên ranh giới đó: mọi lệnh
git clonevàmakechạy trong thư mục nhà, chỉ bước cài mới dùngsudo make modules_install install4.Gặp ở đâu. Hướng dẫn mới nhất của kernel.org vẫn làm y hệt: dựng bằng tài khoản thường, chỉ bước cài mới thêm
sudo4. Nhớ nhé: hai mươi năm sau, luật vẫn vậy.Where you see it. Today's kernel.org build guide keeps the same boundary: every
git cloneandmakeruns in your home directory, and only the install step usessudo make modules_install install4.Đoạn chú thích đáng đọc
Ông kể thêm trong chú thích: lỗi đó mất khá lâu mới sửa được, vì không lập trình viên nhân chủ chốt nào dựng nhân bằng root nên họ không gặp nó; phải nhiều tuần sau mới xác định được chính việc dựng nhân là nguyên nhân. Một số người còn nửa đùa nửa thật đề nghị giữ lại lỗi này để ngăn người ta dựng nhân bằng root, nhưng phe điềm tĩnh đã thắng và lỗi được sửa 2.
Vì sao chi tiết này quan trọng
Nó minh họa một đặc tính của phần mềm cộng tác: lỗi chỉ xuất hiện ở những đường đi mà người phát triển không dùng. Quy tắc “đừng dựng bằng root” vừa bảo vệ bạn, vừa giữ bạn ở trên con đường được thử nhiều nhất.
-
where the source lives
Đặt mã nguồn ở đâu — tránh xa
/usr/src/linux/Để mã nguồn trong thư mục nhà Where the source lives — stay out of/usr/src/linux/Quy tắc thứ hai cũng dứt khoát: không bao giờ đặt mã nguồn nhân vào
/usr/src/linux/, vì đó là vị trí của nhân mà các thư viện hệ thống đã được biên dịch dựa theo, chứ không phải nhân tùy biến mới của bạn 2. Ông mở rộng ra cả cây: đừng làm bất cứ việc phát triển nhân nào dưới/usr/src/, hãy làm trong một thư mục người dùng nơi không có gì xấu xảy ra được với hệ thống 2.Đừng để mã nguồn vào
/usr/src/linux/. Chỗ đó dành cho nhân mà hệ thống dựa vào, không phải nhân mới của bạn 2. Hãy làm trong thư mục riêng của bạn, nơi có lỡ sai cũng không hỏng máy 2. Nhớ nhé: làm trong sân nhà mình.The second rule is just as firm: the kernel source should never be placed in
/usr/src/linux/, as that is the location of the kernel the system libraries were built against, not your new custom kernel 2. He widens it to the whole tree: do no kernel development under/usr/src/at all, only in a local user directory where nothing bad can happen to the system 2.Bạn thấy nó ở đâu. Chương 3 của sách gợi ý tạo thư mục
~/linuxtrong thư mục nhà để chứa các bản mã nguồn 9; hướng dẫn hiện hành của kernel.org cũng dùng đúng~/linux/và ước tính cần khoảng 12 GB dung lượng 4.Gặp ở đâu. Sách bảo tạo thư mục
~/linux9; hướng dẫn mới của kernel.org cũng vậy, và nói cần chừng 12 GB trống 4. Nhớ nhé: nhớ chừa đủ chỗ trống.Where you see it. Chapter 3 suggests creating a
~/linuxdirectory in your home to hold the source trees 9; today's kernel.org guide uses the same~/linux/and estimates roughly 12 GB of space is needed 4. -
scope of this book
Phạm vi sách — người dùng, không phải lập trình viên Sách này dành cho ai Scope — for users, not programmers
Quy tắc thứ ba là về kỳ vọng. Sách nhắm tới mọi thứ cần biết để dựng, tùy biến và cài nhân đúng cách; không cần kinh nghiệm lập trình, nhưng có mong đợi người đọc quen dùng Linux và dòng lệnh cơ bản 3. Khía cạnh lập trình bên trong nhân được đẩy sang các sách khác liệt kê trong Phụ lục B 3.
Sách dạy cách lắp và chỉnh nhân, không dạy viết mã cho nhân. Không cần biết lập trình, nhưng cần biết dùng Linux và gõ lệnh cơ bản 3. Nhớ nhé: biết mình đang đọc sách gì thì đỡ hụt hẫng.
The third rule is about expectations. The book aims to cover everything needed to properly build, customize and install the kernel; no programming experience is needed, though some familiarity with using Linux and basic command-line usage is expected 3. Kernel programming itself is handed off to the other books listed in the Bibliography 3.
Bạn thấy nó ở đâu. Toàn bộ cuốn sách được phát hành tự do theo giấy phép Creative Commons “Attribution-ShareAlike” phiên bản 2.5 và có bản trực tuyến tại trang của tác giả 310.
Gặp ở đâu. Cả cuốn sách được cho miễn phí theo giấy phép Creative Commons 2.5 và đọc được trên mạng 310. Nhớ nhé: bạn được chia sẻ lại nó.
Where you see it. The whole book is freely available under the Creative Commons “Attribution-ShareAlike” licence, version 2.5, with an online edition on the author's own site 310.
Ba hiểu lầm thường gặpThree common misconceptions
“Dựng nhân là việc của lập trình viên”“Building a kernel is a programmer's job”
Hiểu lầm: phải biết C mới đụng được vào nhân. Thực tế: sách nói rõ không cần kinh nghiệm lập trình để hiểu và dùng nó 3; cấu hình và dựng là việc của người dùng, và mục tiêu “thầm kín” của tác giả là kéo thêm người vào đội ngũ phát triển nhân qua chính cánh cửa này 11.
Myth: you must know C to touch the kernel. Fact: the book states plainly that no programming experience is needed to understand and use it 3; configuring and building is a user's task, and the author's stated “secret goal” is to bring more people into kernel development through exactly this door 11.
“Nhân của bản phân phối là tệ”“The distribution kernel is bad”
Hiểu lầm: tự dựng vì nhân dựng sẵn kém chất lượng. Thực tế: ông khen các bản phân phối hiện đại đã rất chiều người dùng, biên dịch sẵn hỗ trợ cho mọi thiết bị đã biết 1. Vấn đề là chúng buộc phải tối ưu cho số đông 1, chứ không phải chúng làm dở.
Myth: you build your own because the stock kernel is poor. Fact: he praises modern distributions as very accommodating, compiling in support for every known device 1. The issue is that they must optimise for the majority 1, not that they do the job badly.
“Cứ sudo cho chắc”“Just run everything with sudo”
Hiểu lầm: quyền cao thì ít lỗi hơn. Thực tế: ngược lại — đã từng có lỗi xóa tệp trong /dev đúng vì người dùng có quyền siêu người dùng lúc dựng, và giải nén bằng root làm sai quyền tệp gây lỗi biên dịch về sau 2.
Myth: more privilege means fewer errors. Fact: the reverse — bugs have deleted files in /dev precisely because the user held superuser permissions while building, and unpacking as root leaves files without proper permissions, causing build errors later 2.
Tự kiểmSelf-check
Tự kiểm trước khi sang chương 2 Tự hỏi mình vài câu Self-check before Chapter 2
Chương 1 không có lệnh nào để gõ. Nó chỉ yêu cầu bạn trả lời được mấy câu sau trước khi đi tiếp — nếu một câu còn mơ hồ, hãy đọc lại đoạn tương ứng phía trên.
Chương này chưa phải gõ lệnh nào. Chỉ cần trả lời được mấy câu dưới đây thôi. Nhớ nhé: câu nào chưa rõ thì quay lên đọc lại.
Chapter 1 has no commands to type. It only asks you to be able to answer the following before moving on — if any of them is still hazy, reread the matching passage above.
- Bạn nêu được lý do cụ thể nào để tự dựng nhân cho chính máy của bạn — phần cứng khác, muốn phiên bản mới, hay cần cắt bớt?
Nếu chưa có lý do nào, đó cũng là một câu trả lời hợp lệ: lúc ấy hãy đọc sách như một bản đồ để dành, không phải một việc phải làm ngay.
- Bạn phát biểu lại được vì sao nhân của bản phân phối không thể vừa khít, mà không biến nó thành lời chê bản phân phối?
Mấu chốt: hàm mục tiêu khác nhau — “chạy trên nhiều máy nhất” khác với “chạy tốt nhất trên một máy”.
- Bạn nói được chính xác bước nào trong quy trình cần quyền
rootvà bước nào thì không?Đáp án của sách: chỉ hai hoặc ba lệnh để cài nhân mới cần root; tải, giải nén, cấu hình, dựng thì không 2.
- Bạn biết sẽ đặt cây mã nguồn ở đâu, và vì sao không phải
/usr/src/linux/? - Bạn phân biệt được “dựng lại nhân” với “chỉnh tham số của nhân đang chạy”?
- Máy của bạn có gì khác người khác, khiến bạn muốn tự làm nhân riêng?
- Vì sao nhân có sẵn không vừa khít máy bạn?
- Bước nào cần quyền quản trị, bước nào không?
- Bạn sẽ để mã nguồn ở thư mục nào?
- Nhớ nhé: trả lời được cả năm câu thì sang chương 2 được rồi.
- Can you name a concrete reason to build a kernel for your own machine — different hardware, a newer version, or trimming it down?
- Can you restate why a distribution kernel cannot fit exactly, without turning it into a complaint about distributions?
- Can you say precisely which steps need
rootand which do not?The book's answer: only the two or three commands that install a new kernel; downloading, unpacking, configuring and building do not 2.
- Do you know where your source tree will live, and why not
/usr/src/linux/? - Can you tell “rebuilding the kernel” apart from “tweaking the parameters of the one you are running”?
Đọng lạiWhat remains
Nhân Linux lớn đến mức không ai đọc hết, nhưng không có bản phân phối nào cung cấp đúng cái nhân mà đa số người dùng của nó mong muốn — và đó chính là chỗ trống dành cho bạn. Bước đầu tiên không phải là biên dịch, mà là đăng xuất khỏi quyền root.
Nhân Linux rất to, nhưng không cái nào làm sẵn vừa khít máy bạn. Việc đầu tiên không phải là gõ lệnh dựng, mà là nhớ dùng tài khoản thường. Nhớ nhé: an toàn trước, tốc độ sau.
The Linux kernel is too large for anyone to read entire, yet no distribution provides the exact kernel most of its users want — and that gap is the space left for you. The first step is not compiling; it is stepping back out of root.