Osdev-Notes: Hướng dẫn viết hệ điều hành từ đầu – Đánh giá chi tiết

ByNgọc Trai MKT24/08/2026in GitHub Tools 0
osdev-notes

Vì sao Osdev-Notes đáng đọc hơn các blog dạy viết hệ điều hành từ đầu rời rạc?

Vì nó được thiết kế như một khoá học có lộ trình, không phải tuyển tập blog rời rạc. Osdev-Notes là bộ tài liệu mã nguồn mở hướng dẫn viết hệ điều hành từ đầu, chia thành 10 phần từ bootloader, linker script, quản lý bộ nhớ, lập lịch đến chạy ELF trong userspace. Mỗi phần đi kèm mã nguồn chạy được trên QEMU.

Thank you for reading this post, don't forget to subscribe!

Theo repository chính thức, tài liệu có 10 phần, được viết bởi hai tác giả Ivan G và Dean T từ chính quá trình họ viết kernel DreamOs64 và Northport. Thay vì phải tự ráp nối kiến thức từ nhiều bài blog, bạn có một thứ tự rõ ràng và luôn thấy code thật trước mắt.

Khác với nhiều repo chỉ đưa code mà không giải thích, Osdev-Notes chú trọng vào lý do thiết kế. Ví dụ, chương về higher half kernel không chỉ dán linker script mà còn nói tại sao phải đặt kernel ở địa chỉ cao, và giúp bạn quan sát lỗi khi bỏ qua bước này.

Vì sao Osdev-Notes đáng đọc hơn các blog dạy viết hệ điều hành từ đầu rời rạc?

DreamOs64 và Northport khác nhau thế nào trong Osdev-Notes?

DreamOs64 là kernel 64-bit do Ivan G xây dựng, được dùng làm ví dụ chính cho hầu hết các chương của sách. Northport là kernel 64-bit của Dean T, hướng tới SMP và RISC-V nhiều hơn. Nếu bạn muốn một đường chạy rõ ràng theo sách, hãy học song song DreamOs64; còn Northport phù hợp sau khi đã quen scheduler và memory management.

Repo đính kèm ba kernel mẫu: DreamOs64, Northport và DreamOs 32-bit. Điểm chung là đều dùng C và assembly x86, đều build thành ISO bootable. Điểm khác là mức độ phức tạp: DreamOs64 có cấu trúc thư mục gần với từng chương, còn Northport thử nhiều kiến trúc ngoài x86 nên code không đi sát từng bước trong sách.

Nếu bạn muốn dùng Osdev-Notes làm tài liệu học, hãy giữ nhật ký thay đổi khi so sánh giữa hai kernel. Cách này giúp nhận ra phần nào là cốt lõi của hệ điều hành, phần nào chỉ là lựa chọn thiết kế của từng tác giả.

DreamOs64 và Northport khác nhau thế nào trong Osdev-Notes?

Bootloader nào phù hợp nhất khi bắt đầu với Osdev-Notes?

Không có bootloader cố định được ép dùng trong Osdev-Notes. Khi mới bắt đầu, bạn nên chọn GRUB hoặc Limine vì cả hai đều hỗ trợ multiboot và dễ kiểm tra trên QEMU. Nếu chỉ muốn đi theo đúng hướng dẫn, GRUB giúp bạn ít gặp lỗi hơn vì tài liệu và cộng đồng hỗ trợ nhiều.

Sau khi đã hiểu multiboot header và linker script, bạn có thể thử tự viết bootloader riêng. Osdev-Notes đặt trọng tâm vào phần kernel, còn phần khởi động được chọn theo kiến trúc. Bạn có thể đọc thêm bài viết về bootloader trên OSDev Wiki để so sánh trước khi chọn.

Khi đã chọn bootloader, bạn cũng nên kiểm tra BIOS và UEFI. Osdev-Notes hướng dẫn tạo ISO có thể boot trên QEMU trước, sau đó mới tính đến việc nạp lên máy thật. Điều này giảm rủi ro khi chưa quen với multiboot.

Gỡ lỗi kernel với QEMU/GDB theo phong cách Osdev-Notes

Quy trình gỡ lỗi trong Osdev-Notes rất đơn giản: chạy QEMU với cờ -S -s, mở GDB và gõ target remote :1234. Sau đó đặt breakpoint tại kernel_main, dùng layout asm để xem từng lệnh, info registers để kiểm tra thanh ghi, và x/20gx để đọc bộ nhớ tại địa chỉ mong muốn.

Bạn nên cài sẵn cross-compiler theo hướng dẫn trên OSDev Wiki để tránh lỗi thư viện. Phụ lục của Osdev-Notes có hẳn một chương về debugging, kết hợp với trang GDB và tài liệu QEMU để xử lý khi không gỡ được breakpoint.

Gỡ lỗi kernel với QEMU/GDB theo phong cách Osdev-Notes

Lộ trình từ Part 0 đến Part 10 cho người đã biết C

Người đã biết C nên đi lần lượt, vì mỗi phần trong Osdev-Notes dựng trên code của phần trước. Part 0 dựng môi trường và cài cross-compiler, Part 1 viết bootloader và linker script, Part 2 chạy Hello World cùng driver cơ bản. Từ đó bạn mới đọc các phần về quản lý bộ nhớ, ngắt, lập lịch và ELF.

Nếu cố nhảy tới scheduler trước khi hiểu paging, bạn sẽ nhanh chóng bị lạc. Hãy dành thời gian làm đủ bài tập theo thứ tự, chạy trên QEMU sau mỗi chương. Bản PDF hiện có hơn 200 trang, nhưng phần lớn là code mẫu và giải thích, nên lộ trình này không phải là một cuốn sách lý thuyết khô khan.

Osdev-Notes và OSDev Wiki khác nhau thế nào?

Osdev-Notes là lộ trình tuyến tính, còn OSDev Wiki là bộ tra cứu phi tuyến. Nếu bạn cần hiểu một khái niệm nhanh, wiki phù hợp hơn; nếu bạn muốn từng bước từ con số 0, Osdev-Notes giúp bạn không phải tự nối kiến thức từ nhiều trang riêng lẻ.

Tiêu chí Osdev-Notes OSDev Wiki Sách Tanenbaum
Cấu trúc 10 phần, đọc theo thứ tự Trang riêng lẻ, tra cứu Chương sách in, lý thuyết
Mã nguồn mẫu 3 kernel mẫu trong repo Code ví dụ rời rạc Mã giả, không kernel chạy được
Thực hành Cao: build ISO, chạy QEMU Tùy bài, tự nối kiến thức Thấp, tập trung khái niệm
Giấy phép CC BY-NC 4.0 CC BY-SA 3.0 Bản quyền xuất bản

Vậy nên, hãy dùng Osdev-Notes làm tài liệu chính và mở OSDev Wiki khi gặp khái niệm cần đào sâu. Cả hai bổ sung cho nhau: một bên cho lộ trình, một bên cho chi tiết và tham chiếu chéo.

Một số người mới học OSDev đọc wiki trước và bị rối vì có quá nhiều trang về APIC, ACPI, VFS mà chưa biết nên bắt đầu từ đâu. Osdev-Notes tránh điều đó bằng cách chọn một bộ tính năng vừa đủ để có kernel chạy ELF ở userspace, rồi đưa bạn đi từng bước.

Nên dùng bản PDF miễn phí hay mua sách in Osdev-Notes?

Bản PDF miễn phí là đủ để học và thực hành, vì nó được build mới nhất từ master branch. Sách in trên Lulu chỉ cần nếu bạn muốn đọc giấy hoặc muốn ủng hộ tác giả. Nội dung hai bản giống nhau, bản giấy không thay thế được việc chạy code trên máy.

Bạn có thể tải PDF từ GitHub hoặc mua tại Lulu. Với người ở Việt Nam, chi phí và thời gian giao hàng quốc tế khiến bản PDF thực tế hơn. Một cuốn sách in khoảng vài trăm trang cũng dễ bị lỗi thời vì repo luôn cập nhật.

Nên dùng bản PDF miễn phí hay mua sách in Osdev-Notes?

Câu hỏi thường gặp

Osdev-Notes có miễn phí không?

Đúng, bản PDF tại repository chính thức hoàn toàn miễn phí, không cần đăng ký. Bạn chỉ mất phí nếu chọn mua sách in tại Lulu để ủng hộ tác giả. Bản mềm luôn là bản mới nhất từ master branch.

Cần biết những ngôn ngữ nào trước khi đọc?

Bạn cần vững con trỏ, cấp phát bộ nhớ trong C và đọc được assembly x86 dạng NASM. Osdev-Notes có phụ lục về NASM và cross-compiler, nhưng không dạy lại từ con số 0. Nếu chưa viết được chương trình C nào, bạn nên học C trước.

Có cần phần cứng thật để chạy kernel không?

Không, QEMU đủ để chạy mọi ví dụ trong sách và kết hợp với GDB để gỡ lỗi từ xa. Máy thật chỉ cần khi bạn muốn thử UEFI/BIOS hoặc driver phần cứng cụ thể, nhưng đó là bước sau khi đã chạy ổn định trên QEMU.

Làm sao để cập nhật tài liệu?

Hãy theo dõi branch master trên GitHub hoặc clone lại repository mỗi lần bắt đầu đợt học mới. Các tác giả vẫn cập nhật song song với dự án DreamOs64 và Northport, nên bản PDF được build lại thường xuyên.

Related Posts