Phần I · Dựng nhân · Chương 3Part I · Building the Kernel · Chapter 3
Lấy mã nguồn nhân: chọn cây, chọn nguồn, chọn chỗ để Tải “bản vẽ” của nhân về máy Retrieving the kernel source: which tree, which server, which directory
Chương 3 mở đầu bằng một câu tưởng như hiển nhiên nhưng thực ra là một quyết định: khi tự dựng nhân, bạn muốn bản phát hành ổn định mới nhất 1. Greg Kroah-Hartman thừa nhận nhiều bản phân phối có gói mã nguồn nhân riêng, nhưng “hiếm khi là phiên bản mới nhất, tiên tiến nhất”; ưu điểm của chúng là được làm cho tương thích với trình biên dịch và công cụ của chính bản phân phối — điều Chương 2 đã giải thích vì sao quan trọng — nhưng chúng có thể không mang lại chức năng hay hiệu năng bạn muốn 1.
Muốn tự làm nhân thì việc đầu tiên là xin “bản vẽ” về: đó là mã nguồn. Ông Greg Kroah-Hartman nói nên lấy bản ổn định mới nhất 1. Bản Linux bạn đang dùng cũng có sẵn mã nguồn, nhưng thường cũ hơn 1. Nhớ nhé: chương này chỉ làm ba việc — chọn bản, tải về, và cất đúng chỗ.
Chapter 3 opens with a sentence that looks obvious but is really a decision: when you're building your own kernel, you want the latest stable release 1. Greg Kroah-Hartman grants that many distributions provide their own packages of kernel sources, but that these “are rarely the most cutting-edge, recent versions”; their advantage is being built to be compatible with the compiler and other tools the distribution provides — Chapter 2 explained why that matters — yet they may not end up providing the functionality or performance you want 1.
Hãy để ý câu kết của đoạn mở đầu: “nếu bạn có thể tạo ra môi trường của riêng mình với nhân, trình biên dịch và các công cụ mới nhất, bạn sẽ dựng được đúng thứ bạn muốn” 1. Đây là một sự đánh đổi có cấu trúc, không phải lời khuyên tuỳ hứng: gói của bản phân phối mua sự tương thích đã được kiểm chứng bằng cái giá là độ mới. Chương 3 dạy bạn cách trả giá ngược lại — và vì thế nó đặt ngay sau Chương 2, nơi bạn vừa dựng xong bộ công cụ đủ mới để gánh được cây mã mới.
Luận điểm chương 3. Chương này chỉ tập trung vào hai việc: xác định nên tải bộ mã nguồn nhân nào, và lấy nó về bằng cách nào 1. Ba bước là chọn cây (ổn định hay phát triển), tải từ mạng máy chủ kernel.org, rồi giải nén vào một thư mục trong thư mục nhà của bạn — chứ không phải vào /usr/src/linux/ 3.
Ý chính. Chương này chỉ hỏi hai câu: lấy bản nào, và lấy ở đâu 1. Rồi cất mã nguồn vào một thư mục của riêng bạn 3. Nhớ nhé: chọn bản, tải về, mở ra — đúng ba bước.
Chapter 3 thesis. The chapter focuses on exactly two things: determining which kernel sources to download, and how to obtain them 1. Three steps: choose a tree (stable or development), download from the kernel.org server network, then unpack into a directory inside your own home directory — not into /usr/src/linux/ 3.
linux trong thư mục nhà, quyền người dùng thường.
Một thư mục tên linux của riêng bạn.
A linux directory in your home, as a normal user.
Cụm khái niệm 01Concept cluster 01
Dùng cây nào: ổn định, phát triển, và cái chết của quy ước chẵn lẻ Bản chắc chắn hay bản thử nghiệm? What tree to use: stable, development, and the death of the odd/even rule
Kroah-Hartman kể lại lịch sử trước khi đưa ra lời khuyên. Trong quá khứ, nhân Linux chỉ tách thành hai cây: nhánh “phát triển” và nhánh “ổn định”. Nhánh phát triển mang số lẻ ở vị trí thứ hai, nhánh ổn định mang số chẵn — ví dụ bản 2.5.25 là nhân phát triển, còn 2.4.25 là bản phát hành ổn định 1. Quy ước ấy gọn gàng đến mức bạn đọc số hiệu là biết mình đang cầm thứ gì.
Ngày xưa nhân Linux có hai “dòng”: dòng đang thử nghiệm và dòng đã chắc chắn. Nhìn con số thứ hai là biết: số lẻ là dòng thử, số chẵn là dòng chắc. Ví dụ 2.5.25 là bản thử, 2.4.25 là bản chắc 1. Nhớ nhé: xưa kia con số tự nói cho bạn biết.
Kroah-Hartman gives the history before the advice. In the past, the Linux kernel was split into only two trees: the “development” branch and the “stable” branch. Development carried an odd number in the second position, stable an even one — 2.5.25 was a development kernel, while 2.4.25 was a stable release 1. The convention was tidy enough that the number alone told you what you were holding.
Cây (tree). Một dòng phát hành của cùng một dự án, có người bảo trì riêng và nhịp phát hành riêng. Với nhân Linux, “chọn cây” nghĩa là chọn giữa: bản bạn dùng được ngay, và bản bạn thử giúp nhà phát triển. Sách khuyên rõ: muốn dùng thì lấy bản phát hành ổn định; muốn giúp thử nghiệm tính năng của bản tới và gửi phản hồi thì lấy bản phát triển 1.
Cây là gì. Là một “dòng” bản phát hành. Muốn dùng cho việc thật thì lấy dòng ổn định. Muốn nghịch và báo lỗi giúp người làm nhân thì lấy dòng phát triển 1. Nhớ nhé: dùng thật thì chọn dòng ổn định.
Tree. A release line of the same project with its own maintainer and cadence. For the kernel, “choosing a tree” means choosing between the release you can use and the release you test on the developers' behalf. The book is explicit: to just use the latest kernel for your work, use the stable kernel releases; to help test the next release's features and give feedback, use the development release 1.
TRƯỚC 2.6: 2.5.x = phát triển (lẻ)
2.4.x = ổn định (chẵn)
TỪ 2.6: 2.6.18-rc1 = phát triển
2.6.17.1 = sửa lỗi 1
Xưa: số lẻ = bản thử
số chẵn = bản chắc
Nay: có “-rc” = bản thử
thêm số đuôi = bản vá lỗi 1
BEFORE 2.6: 2.5.x = development (odd)
2.4.x = stable (even)
FROM 2.6: 2.6.18-rc1 = development
2.6.17.1 = bug fixes 1
-
odd / even
Quy ước chẵn lẻ — và lý do nó bị bỏ Số lẻ, số chẵn — và vì sao bỏ The odd/even convention — and why it was dropped
Sau khi dòng 2.6 ra đời, các nhà phát triển nhân quyết định từ bỏ cách duy trì hai cây tách biệt, và tuyên bố mọi bản phát hành 2.6 đều được coi là “ổn định”, bất kể việc phát triển đang diễn ra nhanh đến đâu 1. Vài tháng giữa các bản 2.6 lớn là khoảng thời gian để nhà phát triển thêm tính năng mới rồi kịp làm chúng ổn định trước bản kế tiếp 1.
Từ khi có dòng 2.6, người ta bỏ luôn cách chia hai dòng. Mọi bản 2.6 đều được gọi là “ổn định” 1. Khoảng vài tháng giữa hai bản lớn là lúc thêm tính năng mới rồi sửa cho chắc 1. Nhớ nhé: không còn nhìn số lẻ số chẵn nữa.
After the 2.6 series was created, the kernel developers decided to abandon the method of having two separate trees, and declared that all 2.6 kernel releases would be considered “stable”, no matter how quickly development was happening 1. The few months between major 2.6 releases give developers time to add new features and then stabilise them in time for the next release 1.
Bạn thấy nó ở đâu. kernel.org ngày nay xác nhận quy ước cũ đã chết hẳn: các số hiệu lẻ như 2.1, 2.3, 2.5 từng báo hiệu nhân phát triển, nhưng sau 2.6 thì nhân tiền phát hành chỉ được đánh dấu bằng hậu tố
-rc5.Gặp ở đâu. Bây giờ bản thử nghiệm được gắn chữ
-rcở cuối tên, thế thôi 5. Nhớ nhé: thấy-rclà bản chưa chính thức.Where you see it. kernel.org today confirms the old convention is gone for good: odd minor numbers such as 2.1, 2.3 and 2.5 once signalled development kernels, but after 2.6 pre-release kernels are flagged with an
-rcsuffix instead 5.Đánh số hôm nay
kernel.org nói thẳng rằng con số đầu tiên không mang ý nghĩa gì: nó được tăng lên “khi con số sau dấu chấm bắt đầu trông quá lớn”, và “thực sự không có lý do nào khác” 5. Vậy nên đừng đọc 2.6 → 3.x → 6.x → 7.x như các thế hệ kiến trúc; chúng chỉ là chỗ ngắt cho dễ nhìn.
Vì sao chuyện chẵn lẻ tan rã
Đoạn lịch sử của sách trùng với một biến cố công cụ: dự án nhân dùng BitKeeper từ 2002, quan hệ với công ty làm BitKeeper đổ vỡ năm 2005 và Git ra đời từ đó 10. Khi việc hợp nhất nhánh trở nên rẻ, việc giữ một cây “phát triển” tách biệt hàng năm trời mất phần lớn lý do tồn tại.
-
-stable branch
Nhánh
-stable— bản vá cho bản vừa phát hành Bản vá lỗi cho bản mới nhất The-stablebranch — fixes for the release you already haveĐi kèm với thay đổi trên, một nhánh nhân “
-stable” được lập ra, phát hành các bản sửa lỗi và cập nhật bảo mật cho bản nhân vừa ra, trong khoảng thời gian chờ bản 2.6 lớn kế tiếp 1. Ví dụ của chính sách: đội nhân phát hành 2.6.17 như một bản ổn định; sau đó nhà phát triển bắt đầu làm tính năng mới và phát hành các bản-rcđể mọi người giúp thử và gỡ lỗi; khi tất cả đồng ý bản phát triển đã đủ ổn định, nó ra đời thành 2.6.18 — cả chu kỳ thường mất khoảng hai đến ba tháng 1. Trong lúc đó, các bản 2.6.17.1, 2.6.17.2… lần lượt xuất hiện với bản vá lỗi và cập nhật bảo mật 1.Cùng lúc đó có thêm một nhánh tên
-stable, chuyên vá lỗi và vá bảo mật cho bản vừa ra 1. Sách kể ví dụ: ra bản 2.6.17, rồi trong lúc chờ bản 2.6.18 thì lần lượt có 2.6.17.1, 2.6.17.2 để sửa lỗi 1. Cả vòng ấy mất chừng hai tới ba tháng 1. Nhớ nhé: số đuôi thêm vào là bản vá, không phải tính năng mới.Alongside that change, a “
-stable” kernel branch was created, releasing bug fixes and security updates for the past kernel release before the next major 2.6 release happens 1. The book's own example: the kernel team released 2.6.17 as a stable release; developers then began new features and issued-rcversions as development kernels so people could help test and debug the changes; once everyone agreed the development release was stable enough, it shipped as 2.6.18 — the whole cycle usually taking about two to three months 1. Meanwhile 2.6.17.1, 2.6.17.2 and further stable versions appeared, carrying bug fixes and security updates 1.Bạn thấy nó ở đâu. Mô hình ấy còn nguyên và đã lớn thêm: kernel.org hiện phân loại bản phát hành thành prepatch (rc), mainline, stable và longterm; nhân mainline mới ra mỗi 9–10 tuần, còn bản vá stable ra “khi cần, thường là mỗi tuần một lần” 5.
Gặp ở đâu. Bây giờ có bốn loại: rc, mainline, stable và longterm. Bản lớn ra mỗi 9–10 tuần, bản vá thường mỗi tuần 5. Nhớ nhé: nhịp thì đổi, cách làm thì vẫn vậy.
Where you see it. The model survived and grew: kernel.org now sorts releases into prepatch (rc), mainline, stable and longterm; new mainline kernels appear every 9–10 weeks, and stable updates come “on as-needed basis, usually once a week” 5.
Bậc “longterm” mà sách chưa có
Năm 2006 chỉ có stable ngắn hạn. Ngày nay kernel.org duy trì thêm một tầng longterm: nhiều cây cũ được giữ sống để lùi bản vá về, hiện là các dòng 6.18, 6.12, 6.6, 6.1, 5.15 và 5.10, do chính Greg Kroah-Hartman cùng Sasha Levin bảo trì 5. Tác giả cuốn sách này, nói cách khác, vẫn đang vận hành đúng cái cơ chế ông mô tả ở trang 12.
Một ghi chú về con số
Mọi số hiệu trong chương — 2.4.25, 2.5.25, 2.6.17, 2.6.18-rc1 — đều là ví dụ của năm 2006, không phải chỉ dẫn để gõ hôm nay. Tại thời điểm truy cập 22-09-2026, kernel.org công bố bản ổn định mới nhất là 7.2.7 và mainline là 7.3-rc4 6. Hãy đọc chương này như một mô hình, rồi thay số bằng dữ liệu hiện hành.
Cụm khái niệm 02Concept cluster 02
Tìm mã nguồn ở đâu: một mạng lưới, không phải một máy chủ Tải ở đâu: kernel.org Where to find the source: a network, not a server
Toàn bộ mã nguồn của nhân Linux có thể tìm thấy trên một trong các site kernel.org — một mạng lưới máy chủ toàn cầu nhân bản mã nguồn Linux, để bất cứ ai cũng tìm được một máy chủ ở gần mình 2. Kroah-Hartman giải thích lợi ích kép: các máy chủ nhân chính nhờ đó chỉ phải phục vụ các site gương và giữ được độ phản hồi, còn người dùng thì tải được tệp cần thiết nhanh nhất có thể 2.
Mã nguồn nhân nằm ở kernel.org. Đó không phải một máy chủ duy nhất, mà là nhiều máy chủ giống hệt nhau đặt khắp thế giới, để ai cũng có một máy ở gần 2. Nhờ vậy máy chủ chính đỡ quá tải và bạn tải nhanh hơn 2. Nhớ nhé: gần hơn thì nhanh hơn.
All of the source code for the Linux kernel can be found on one of the kernel.org sites — a worldwide network of servers that mirror the Linux source code, enabling anyone to find a local server close to them 2. Kroah-Hartman spells out the double benefit: the main kernel servers stay responsive by serving the mirror sites, and users download the needed files as quickly as possible 2.
Về mặt kiến trúc, đây là một quyết định chống tập trung được đưa ra từ rất sớm, và nó vẫn định hình cách bạn lấy nhân hôm nay. Khác biệt là lớp phân phối đã đổi: thay cho danh sách máy gương thủ công, kernel.org hiện phục vụ tệp nén qua cdn.kernel.org, đồng thời mở HTTP, GIT và RSYNC làm ba giao thức truy cập song song 6. Ý tưởng “tìm bản sao gần bạn” không mất đi — nó chỉ chuyển xuống dưới lớp tên miền.
Site gương (mirror). Một máy chủ giữ bản sao đầy đủ của kho mã nguồn chính, đồng bộ định kỳ. Bạn tải từ gương gần nhất thay vì dồn tải lên máy chủ gốc. Sách mô tả kernel.org đúng như thế: “một mạng lưới máy chủ toàn cầu nhân bản mã nguồn Linux” 2.
Máy chủ gương là gì. Là bản sao của kho mã nguồn, đặt ở nhiều nơi cho gần người dùng 2. Nhớ nhé: bạn tải từ bản sao gần nhất, không phải từ một chỗ duy nhất.
Mirror. A server holding a complete, periodically synchronised copy of the main archive. You download from the nearest one instead of piling load onto the origin. The book describes kernel.org in exactly those terms: “a worldwide network of servers that mirror the Linux source code” 2.
# ví dụ của sách (2006, lịch sử)
$ wget http://www.kernel.org/pub/\
linux/kernel/v2.6/\
linux-2.6.17.8.tar.gz
# → 51.707.742 byte (49M) 2
# cách sách tải file về
$ wget <địa chỉ file nhân>
# file nặng khoảng 49 MB 2
# the book's example (2006, historical)
$ wget http://www.kernel.org/pub/\
linux/kernel/v2.6/\
linux-2.6.17.8.tar.gz
# → 51,707,742 bytes (49M) 2
-
wget / curl
Tải từ dòng lệnh —
wgetvàcurlTải bằng câu lệnh, không cần trình duyệt Downloading from the command line —wgetandcurlSách chỉ đường qua giao diện web trước — trên trang kernel.org chính, bấm ký tự
Ftrên dòng của phiên bản nhân để tải toàn bộ cây mã nguồn, hoặc điều hướng vào thư mục con của các bản 2.6 2 — rồi lập tức đưa ra cách dùng được lâu hơn: tải từ dòng lệnh bằngwgethoặccurl, hai tiện ích mà bản phân phối nào cũng có sẵn 2. Bản ghi phiên làm việc trong sách cho thấy tệplinux-2.6.17.8.tar.gznặng 51.707.742 byte, tức khoảng 49 MB 2.Có thể bấm tải trên trang web 2, nhưng sách khuyên dùng câu lệnh
wgethoặccurl— hai lệnh có sẵn trong mọi bản Linux 2. Tệp nhân trong ví dụ nặng khoảng 49 MB 2. Nhớ nhé: gõ lệnh thì lặp lại được, bấm chuột thì không.The book routes you through the web interface first — on the main kernel.org site, click the
Fcharacter on the line for the kernel version to download the full source tree, or navigate to the subdirectory for the 2.6 kernel versions 2 — then immediately offers the longer-lived method: download from the command line using thewgetorcurlutilities, both of which should come with your Linux distribution 2. The session transcript showslinux-2.6.17.8.tar.gzweighing in at 51,707,742 bytes, roughly 49 MB 2.Bạn thấy nó ở đâu. Đường dẫn cụ thể trong sách thuộc về năm 2006 và không còn là cách làm hiện hành. Hôm nay kernel.org phát tệp
.tar.xzquacdn.kernel.org, kèm tệp chữ ký.tar.sign, bản vá đầy đủ và bản vá tăng dần cho mỗi bản phát hành 6.Gặp ở đâu. Địa chỉ trong sách là của năm 2006. Bây giờ tệp có đuôi
.tar.xzvà đi kèm một tệp chữ ký 6. Nhớ nhé: cách làm giữ nguyên, địa chỉ thì phải tra lại.Where you see it. The exact URL in the book belongs to 2006 and is no longer current practice. Today kernel.org serves
.tar.xzarchives fromcdn.kernel.org, each with a.tar.signsignature file, a full patch and an incremental patch 6.Bước sách chưa có: xác minh chữ ký
kernel.org hướng dẫn tải kèm tệp
.tar.sign, giải nén rồi kiểm chữ ký:unxz linux-x.y.z.tar.xzsau đógpg2 --verify linux-x.y.z.tar.sign. Chữ ký được ký trên tệp.tarchưa nén để “chỉ cần một chữ ký cho cả bản.gzlẫn.xz” 7. Thiếu khoá thì lấy bằnggpg2 --locate-keys torvalds@kernel.org gregkh@kernel.org7.Lối đi thứ hai: lấy bằng git
Tài liệu nhân hiện hành khuyến nghị nhân bản nông cây stable thay vì tải tệp nén:
git clone --depth 1 -b master https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git ~/linux/, vì kho này cho truy cập cả mainline lẫn các dòng stable 8. Cần lùi xa hơn thì dùnggit fetch --shallow-exclude=… — tài liệu cảnh báo luôn phải giới hạn, nếu không sẽ kéo gần như toàn bộ lịch sử và “gây áp lực lên máy chủ” 8. -
finger_banner
Biết bản mới nhất là bản nào — một tệp văn bản Làm sao biết bản mới nhất? Knowing which version is newest — one text file
Để biết nhanh và gọn các phiên bản nhân mới nhất, sách chỉ tới thông tin sẵn có tại
kernel.org/kdist/finger_banner2. Đây là chi tiết nhỏ nhưng nói lên văn hoá của dự án: câu trả lời cho “bản mới nhất là gì” được phát ra dưới dạng văn bản thuần, đọc được bằng mắt lẫn bằng script, chứ không phải một trang cần trình duyệt.Muốn biết bản nào mới nhất, sách chỉ tới một trang văn bản đơn giản trên kernel.org 2. Nhớ nhé: câu trả lời nằm trong một tệp chữ, không cần mở trình duyệt.
For a quick and easy way to determine the latest kernel versions, the book points to the information available at
kernel.org/kdist/finger_banner2. It is a small detail that says a lot about the project's culture: the answer to “what is newest?” is published as plain text, readable by eye and by script alike, not as a page that needs a browser.Bạn thấy nó ở đâu. Tệp ấy vẫn sống, chỉ chuyển chỗ: đường dẫn cũ nay chuyển hướng sang
kernel.org/finger_banner, và cùng dữ liệu đó còn được phát dưới dạng máy đọc tạikernel.org/releases.json6.Gặp ở đâu. Tệp đó vẫn còn, chỉ đổi địa chỉ, và nay có thêm bản dạng JSON cho máy đọc 6. Nhớ nhé: ý tưởng sống lâu hơn đường dẫn.
Where you see it. The file is still alive, merely moved: the old path now redirects to
kernel.org/finger_banner, and the same data is published in machine-readable form atkernel.org/releases.json6.
Cụm khái niệm 03Concept cluster 03
Làm gì với bộ mã: bốn lệnh và một nguyên tắc Tải về rồi làm gì tiếp What to do with the source: four commands and one principle
“Giờ bạn đã tải đúng bộ mã nguồn nhân, nó được đặt ở đâu?” — Kroah-Hartman đặt câu hỏi rồi trả lời ngay: nên tạo một thư mục cục bộ trong thư mục nhà của bạn, đặt tên là linux, để chứa toàn bộ các tệp mã nguồn nhân khác nhau 3. Bốn lệnh của ông ngắn đến mức dễ bị coi thường: mkdir ~/linux, chuyển tệp nén vào đó, cd ~/linux, rồi tar -xzvf linux-2.6.17.8.tar.gz 3.
Tải xong rồi để đâu? Ông bảo: tạo một thư mục tên linux ngay trong thư mục nhà của bạn, rồi chuyển tệp vào đó và mở ra 3. Bốn lệnh thôi: tạo thư mục, chuyển tệp, đi vào, giải nén 3. Nhớ nhé: một thư mục riêng cho tất cả các bản nhân bạn tải.
“Now that you have downloaded the proper kernel source, where is it supposed to go?” — Kroah-Hartman asks, then answers at once: create a local directory in your home directory called linux to hold all of the different kernel source files 3. His four commands are short enough to be underrated: mkdir ~/linux, move the archive into it, cd ~/linux, then tar -xzvf linux-2.6.17.8.tar.gz 3.
Đáng chú ý là hình ảnh cuối chương: sau khi giải nén, trong ~/linux/ có cả hai — tệp nén gốc và thư mục vừa bung ra 3. Ông không bảo bạn xoá tệp nén, và điều đó nhất quán với lý do đặt tên thư mục là “chứa tất cả các tệp mã nguồn nhân khác nhau” 3: ~/linux là một kho lưu trữ nhiều phiên bản song song, không phải một chỗ làm việc dùng một lần. Thói quen ấy trả công ở Chương 4, khi bạn cần so cấu hình giữa hai bản nhân.
Thư mục nhà (home directory). Nơi tài khoản người dùng thường của bạn có toàn quyền ghi mà không cần root. Đặt cây mã ở đây không phải chuyện thẩm mỹ: nó là điều kiện để cả quy trình tải, cấu hình và biên dịch chạy được bằng quyền người dùng thường, đúng quy tắc an toàn của Chương 1 4.
Thư mục nhà là gì. Là thư mục riêng của bạn, nơi bạn được phép ghi mà không cần quyền quản trị. Để mã nguồn ở đó thì mọi bước đều làm bằng tài khoản thường 4. Nhớ nhé: làm trong nhà mình thì không cần xin phép ai.
Home directory. The place your ordinary user account can write to without root. Putting the tree here is not cosmetic: it is what lets the whole download-configure-build sequence run as a normal user, exactly as Chapter 1's safety rule requires 4.
$ mkdir ~/linux
$ mv ~/linux-2.6.17.8.tar.gz ~/linux/
$ cd ~/linux
$ tar -xzvf linux-2.6.17.8.tar.gz
# → linux-2.6.17.8.tar.gz + linux-2.6.17.8/ 3
$ mkdir ~/linux # tạo thư mục
$ mv ... ~/linux/ # chuyển tệp vào
$ cd ~/linux # đi vào
$ tar -xzvf ... # mở tệp ra 3
$ mkdir ~/linux
$ mv ~/linux-2.6.17.8.tar.gz ~/linux/
$ cd ~/linux
$ tar -xzvf linux-2.6.17.8.tar.gz
# → linux-2.6.17.8.tar.gz + linux-2.6.17.8/ 3
-
~/linux
Một thư mục cho mọi phiên bản Một chỗ cất cho tất cả One directory for every version
Lời khuyên là tạo
~/linuxđể “chứa tất cả các tệp mã nguồn nhân khác nhau” 3 — số nhiều là cố ý. Mỗi bản nhân bạn tải về sẽ bung ra thành một thư mục riêng mang tên phiên bản, nên nhiều phiên bản cùng tồn tại cạnh nhau mà không giẫm lên nhau. Sau lệnhtar, màn hình đầy tên tệp đang được giải nén, và tronglinux/bạn còn lại tệp nén cùng thư mụclinux-2.6.17.8/3.Tạo một thư mục
~/linuxđể cất mọi bản nhân bạn tải 3. Mỗi bản mở ra thành một thư mục riêng mang tên phiên bản, nên không lẫn vào nhau 3. Nhớ nhé: mỗi bản một ngăn, không chồng lên nhau.The advice is to create
~/linuxto “hold all of the different kernel source files” 3 — the plural is deliberate. Each kernel you download unpacks into its own version-named directory, so several versions coexist without overwriting one another. After thetarcommand, the screen fills with the files being uncompressed, andlinux/is left holding both the archive and alinux-2.6.17.8/directory 3.Bạn thấy nó ở đâu. Tài liệu nhân hiện hành giữ nguyên lời khuyên này: hãy đặt tệp nén “vào một thư mục bạn có quyền (ví dụ thư mục nhà của bạn) rồi giải nén”, với lệnh cập nhật cho định dạng
xz:xz -cd linux-6.x.tar.xz | tar xvf -9. Tài liệu git cũng nhân bản thẳng vào~/linux/8.Gặp ở đâu. Tài liệu nhân ngày nay vẫn bảo để mã nguồn trong thư mục nhà rồi giải nén 9, và lệnh git cũng tải thẳng vào
~/linux/8. Nhớ nhé: hai mươi năm sau, lời khuyên vẫn thế.Where you see it. Current kernel documentation keeps the same advice: put the tarball “in a directory where you have permissions (e.g. your home directory) and unpack it”, with the command updated for
xz:xz -cd linux-6.x.tar.xz | tar xvf -9. The git instructions clone straight into~/linux/too 8.Vì sao không phải
/usr/src/linuxChương 1 đã cấm dùng
/usr/src/linux/, và tài liệu nhân hiện hành nói còn gắt hơn: “Do NOT use the/usr/src/linuxarea!” — vì nơi đó giữ một tập tệp tiêu đề nhân (thường không đầy đủ) mà các tệp tiêu đề thư viện dựa vào, và chúng phải khớp với thư viện chứ không phải với nhân hiện tại 9. -
latest stable release
Giả định của cả phần còn lại cuốn sách Giả định cho các chương sau The assumption the rest of the book runs on
Cuối phần chọn cây, tác giả chốt một giả định làm việc: “cho mục đích của chương này, chúng ta sẽ giả định rằng bạn đang dùng một bản phát hành nhân ổn định” 1. Câu ấy nhỏ nhưng ràng buộc mọi chương sau: các bước cấu hình, biên dịch và cài đặt ở Chương 4 trở đi đều được viết cho một cây ổn định đã giải nén trong thư mục nhà của bạn.
Tác giả chốt: từ đây trở đi, coi như bạn đang dùng bản ổn định 1. Các chương sau đều dựa trên giả định đó. Nhớ nhé: nếu bạn chọn bản thử nghiệm, hãy tự biết mình đang đi lệch một chút.
At the end of the tree discussion the author fixes a working assumption: “for the purpose of this chapter, we will assume that you are using a stable kernel release” 1. It is a small sentence that binds every later chapter: the configure, build and install steps from Chapter 4 onward are written for a stable tree already unpacked in your home directory.
Bạn thấy nó ở đâu. Nếu hôm nay bạn muốn bám sát giả định ấy, hãy đọc dòng “stable” hoặc một dòng “longterm” trên kernel.org thay vì mainline — tại thời điểm truy cập 22-09-2026 đó là 7.2.7, hoặc các dòng longterm 6.18, 6.12, 6.6, 6.1, 5.15, 5.10 6.
Gặp ở đâu. Trên kernel.org, chọn dòng ghi “stable” hoặc “longterm”, đừng chọn dòng có chữ
-rc6. Nhớ nhé: nhìn nhãn, đừng nhìn con số to nhất.Where you see it. To hold to that assumption today, read the “stable” line or a “longterm” line on kernel.org rather than mainline — as accessed on 22 Sep 2026 that means 7.2.7, or the longterm series 6.18, 6.12, 6.6, 6.1, 5.15 and 5.10 6.
Ba hiểu lầm thường gặpThree common misconceptions
“Số chẵn là ổn định, số lẻ là thử nghiệm”“Even means stable, odd means development”
Hiểu lầm: quy tắc chẵn lẻ vẫn dùng được để đọc số hiệu nhân. Thực tế: chính chương này ghi lại thời điểm quy tắc ấy bị bỏ — từ dòng 2.6, mọi bản phát hành đều được coi là ổn định 1; kernel.org xác nhận nhân tiền phát hành nay chỉ mang hậu tố -rc 5.
Myth: the odd/even rule still helps you read a kernel version. Fact: this very chapter records the moment it was abandoned — from the 2.6 series on, all releases are considered stable 1; kernel.org confirms pre-release kernels now carry only an -rc suffix 5.
“Gói mã nguồn của bản phân phối là được rồi”“The distribution's source package is good enough”
Hiểu lầm: tải mã nguồn từ bản phân phối là tương đương. Thực tế: ông nói rõ các gói ấy “hiếm khi là phiên bản mới nhất, tiên tiến nhất”; chúng đổi độ mới lấy sự tương thích với công cụ của bản phân phối, và có thể không cho bạn chức năng hay hiệu năng bạn muốn 1.
Myth: pulling the source from your distribution is equivalent. Fact: he states plainly that those packages “are rarely the most cutting-edge, recent versions”; they trade recency for compatibility with the distribution's tools, and may not end up providing the functionality or performance you want 1.
“Mã nguồn nhân thì phải nằm trong /usr/src”“Kernel source belongs in /usr/src”
Hiểu lầm: đó là chỗ “đúng chuẩn” cho mã nguồn nhân. Thực tế: sách đưa mã nguồn vào ~/linux 3, và tài liệu nhân hiện hành cấm thẳng: “Do NOT use the /usr/src/linux area!”, vì các tệp tiêu đề ở đó phải khớp với thư viện hệ thống 9.
Myth: that is the “proper” home for kernel source. Fact: the book puts it in ~/linux 3, and current kernel documentation forbids the alternative outright: “Do NOT use the /usr/src/linux area!”, because the headers there must stay matched to the system library 9.
Tự kiểmSelf-check
Tự kiểm trước khi sang chương 4 Tự hỏi mình vài câu Self-check before Chapter 4
Chương 3 là chương đầu tiên có lệnh để gõ. Trước khi sang phần cấu hình, hãy chắc rằng bạn trả lời được những câu sau bằng chính trạng thái máy mình — chứ không chỉ bằng trí nhớ về trang sách.
Chương này là chương đầu tiên có câu lệnh thật. Trước khi đi tiếp, hãy kiểm tra lại trên máy mình. Nhớ nhé: làm được mới tính, đọc xong chưa tính.
Chapter 3 is the first chapter with commands to type. Before moving on to configuration, make sure you can answer the following from the actual state of your machine — not just from your memory of the page.
- Bạn nói được mình đang dùng cây nào, và vì sao lại chọn cây đó?
Mặc định của sách là bản phát hành ổn định; bản phát triển chỉ dành cho người muốn giúp thử nghiệm và gửi phản hồi 1.
- Bạn giải thích được vì sao “2.4.25 ổn định, 2.5.25 phát triển” là một quy ước lịch sử, không phải quy tắc hiện hành?
Quy ước bị bỏ từ dòng 2.6 1; hôm nay dấu hiệu duy nhất của bản tiền phát hành là hậu tố
-rc5. - Bạn phân biệt được bản vá dạng 2.6.17.1 với bản phát hành lớn 2.6.18?
Số đuôi là nhánh
-stable: chỉ sửa lỗi và cập nhật bảo mật, không thêm tính năng 1. - Bạn tải được bộ mã nguồn bằng dòng lệnh, không cần trình duyệt?
Sách dùng
wgethoặccurl2; hôm nay nên tải kèm tệp.tar.signvà kiểm bằnggpg2 --verify7. - Cây mã nguồn của bạn có đang nằm trong thư mục nhà, thuộc sở hữu tài khoản thường, và không nằm ở
/usr/src/linux?Đây là điểm giao của chương 1 và chương 3: vị trí thư mục chính là thứ giữ cho toàn bộ quy trình chạy không cần
root49.
- Bạn đang dùng bản ổn định hay bản thử nghiệm?
- Vì sao bây giờ không còn nhìn số chẵn lẻ để đoán nữa?
- Số thêm ở đuôi, ví dụ 2.6.17.1, nghĩa là gì?
- Bạn tải được tệp nhân bằng câu lệnh chưa?
- Nhớ nhé: mã nguồn phải nằm trong thư mục nhà của bạn, không phải trong
/usr/src.
- Can you say which tree you are on, and why you chose it?
The book's default is a stable release; the development release is for people who want to help test and give feedback 1.
- Can you explain why “2.4.25 stable, 2.5.25 development” is a historical convention rather than a current rule?
It was abandoned with the 2.6 series 1; today the only marker of a pre-release is the
-rcsuffix 5. - Can you tell a 2.6.17.1 fix release apart from a major 2.6.18 release?
The extra digit is the
-stablebranch: bug fixes and security updates only, no new features 1. - Can you fetch the source from the command line, with no browser?
The book uses
wgetorcurl2; today also fetch the.tar.signfile and check it withgpg2 --verify7. - Is your source tree inside your home directory, owned by your normal account, and not in
/usr/src/linux?
Đọng lạiWhat remains
Chương ngắn nhất của Phần I lại là chương quyết định nhiều nhất: khi tự dựng nhân, bạn muốn bản phát hành ổn định mới nhất — không phải bản mới nhất nói chung, cũng không phải bản tiện tay nhất. Và nơi bạn đặt nó, một thư mục trong nhà mình, đã quyết định trước rằng toàn bộ việc còn lại sẽ làm bằng quyền người dùng thường.
Chương này ngắn nhưng quan trọng: lấy bản ổn định mới nhất, và cất vào thư mục nhà của bạn. Nhớ nhé: chọn đúng bản, để đúng chỗ, rồi mới tới chuyện lắp ráp.
The shortest chapter in Part I decides the most: when you're building your own kernel, you want the latest stable release — not the newest thing in general, nor the most convenient thing to hand. And where you put it, a directory inside your own home, has already decided that everything remaining will be done as a normal user.