Linux / lab

Soạn just-in-time

Giáo trình từng phiên

Mỗi phiên một tài liệu, soạn ngay trước buổi học chứ không soạn trước cả khoá — vì nội dung phiên sau phụ thuộc vào chỗ phiên trước dừng lại.

Đã soạn4 / 40 phiên
Phase hiện tạiPhase 1 — Process, fd, signal
Mốc gần nhấtM-L1 tại P8

Đã soạn

  • P1 · Phase 0 Dựng VM lab & serial console

    libvirt/virt-install, cloud image + cloud-init, serial console cho thấy kernel log từ dòng đầu. Kèm cơ chế NoCloud datasource, ring buffer vs console, và bẫy AppArmor.

  • P2 · Phase 0 → M-L0 Snapshot và lab-reset.sh

    Internal vs external snapshot và cái gì thật sự nằm ở đâu trên đĩa; revert vs rebuild giải hai bài toán khác nhau; script dựng lại lab từ số không. Kèm ba chỗ tài liệu phổ biến nói sai.

  • P3 · Phase 1 fork, exec, wait: zombie và orphan

    Bốn động từ dựng nên vòng đời một tiến trình, và cái gì còn lại khi nó chết. Zombie giữ đúng những gì, luật reparent ba bước, và 16 bit của exit status mà shell làm phẳng mất. Kèm năm chỗ tài liệu phổ biến nói sai.

  • P4 · Phase 1 exec và /proc: đọc ngược một tiến trình

    Kernel quyết định chạy một file bằng cách nào, luật shebang chính xác tới từng khoảng trắng, và ba cái tên của một tiến trình — hai trong ba là thứ nó muốn bạn thấy. Artifact: hồ sơ một tiến trình thật đọc hoàn toàn qua /proc.

Phase 0 đã đủ hai phiên; Phase 1 đang chạy. Các phiên còn lại chưa soạn — nội dung dự kiến của từng phiên nằm ở kế hoạch 40 phiên.

Một phiên gồm những gì

Mỗi phiên theo cùng một khung, để không phải đọc lại cấu trúc mỗi lần mở:

PhầnVai trò
Trước khi bấm giờĐiều kiện đầu vào, kiểm bằng lệnh. Hỏng một cái là hỏng cả phiên.
Kiến thức cơ sởCơ chế bên dưới, có sơ đồ khi cơ chế đáng vẽ. Đọc trước khi gõ.
Block A / B / CViệc cần làm, có timebox, mỗi block một tiêu chí nghiệm thu riêng.
BẫyQuirk của đúng phần này — version, default của distro, thông báo lỗi gây hiểu nhầm.
Definition of DoneRanh giới "xong phiên", thay cho cảm giác.
Câu hỏi kiểm traTrả lời không nhìn tài liệu. Đáp án gợi ý gập lại.
Nguồn & đọc thêmPhân loại: đọc trong phiên / tra khi cần / để dành phiên sau.

Mục tiêu phải falsifiable: "hiểu về serial console" không phải mục tiêu; "reboot VM trong virsh console và thấy kernel log từ dòng Linux version" thì có — làm được hoặc không, không có vùng xám.

Về khối lệnh gập lại

Quy ước

Chuỗi lệnh đầy đủ có, nhưng nằm sau khối Hiện lệnh đầy đủ gập lại. Mở nó sau khi đã tự ghép lệnh từ man page, hoặc khi kẹt quá 5 phút. Mở ngay từ đầu thì phiên biến thành copy-paste, và tuần sau sẽ không nhớ gì.

Ranh giới của quy ước này: lệnh vận hành và cấu hình thì gập lại được — cài gói, bật service, dựng VM, đọc log. Chúng là phương tiện, không phải bài tập, và tra lại chúng ở man page tốn thời gian mà không dạy thêm gì sau lần thứ hai.

Code phải tự viết thì không — không có lời giải, kể cả sau spoiler. Chương trình mini-container ở Phase 4 hay bài phân tích hiệu năng ở Phase 6 là sản phẩm của phiên; đưa sẵn đáp án là phá đúng thứ đang học. Ở đó chỉ có gợi ý hướng, tên hàm, và câu hỏi cần tự trả lời trước khi code.

Sắp tới

Phiên kế tiếp được soạn khi phiên hiện tại kết thúc, vì chỗ dừng lại của buổi trước là đầu vào của buổi sau. Soạn xa hơn hai phiên là công sức bỏ đi: lab luôn tràn ở chỗ không đoán trước được, và nội dung soạn sẵn sẽ không khớp.

Phase 0 gồm P1–P2. Từ P3 trở đi là Phase 1 — process, file descriptor, signal — tầng nền mà mọi thứ về sau quy về. Mốc M-L1 rơi vào P8, và câu hỏi của nó đã bắt đầu được chuẩn bị từ P3.