- Kho Blog OS chứa mã nguồn được dùng trong loạt bài Writing an OS in Rust trên os.phil-opp.com
- Mã của mỗi bài nằm trong một git branch riêng, cho phép kiểm tra trạng thái trung gian sau khi làm theo bài viết
- Hiện các bài của ấn bản thứ hai được chia thành các mục Bare Bones, Interrupts, Memory Management, Multitasking; mã của bài mới nhất nằm ở nhánh
post-12
- Tên nhánh có dạng
post-XX; ví dụ post-03 là mã của bài VGA Text Mode, còn post-07 là mã của bài Hardware Interrupts
- Ấn bản đầu tiên không còn được bảo trì nhưng vẫn có thể tham khảo; mã dự án, ngoại trừ thư mục
blog/content, dùng giấy phép tùy chọn Apache-2.0 hoặc MIT
Mục đích của kho Blog OS
Cấu trúc mã theo từng bài
- Mã của mỗi bài nằm trong một git branch riêng
- Có thể kiểm tra trạng thái trung gian sau khi làm theo bài viết
- Mã của bài mới nhất nằm ở
post-12
- Nhánh của từng bài có thể tìm trong liên kết
(source code) ở danh sách bài viết bên dưới
- Tên nhánh dùng định dạng
post-XX
post-03: VGA Text Mode
post-07: Hardware Interrupts
- Cần tham khảo README của từng nhánh để biết cách build
- Có thể dùng
git worktree để checkout một nhánh cụ thể vào thư mục con
git worktree add code post-10
- Lệnh trên tạo thư mục con
code chứa mã của bài thứ 10, Heap Allocation
Danh sách bài viết của ấn bản hiện tại
- Mục tiêu là cung cấp hướng dẫn từng bước thông qua các bài blog riêng lẻ
-
Bare Bones
-
Interrupts
-
Memory Management
-
Multitasking
Ấn bản đầu tiên
- Blog hiện tại là ấn bản thứ hai
- Ấn bản đầu tiên đã cũ và không còn được bảo trì, nhưng vẫn có thể hữu ích
- Ấn bản đầu tiên bao gồm các bài trong các mục Bare Bones, Memory Management, Exceptions, Additional Resources
Giấy phép và đóng góp
- Ngoại trừ thư mục
blog/content, dự án có thể được sử dụng theo lựa chọn của người dùng dưới Apache License 2.0 hoặc MIT license
- Đối với giấy phép của thư mục
blog/content, cần tham khảo blog/content/README.md
- Trừ khi có nêu khác đi, mọi đóng góp được chủ ý gửi để đưa vào dự án sẽ được áp dụng theo giấy phép kép ở trên, không kèm điều kiện bổ sung, theo định nghĩa của Apache-2.0
1 bình luận
Ý kiến trên Hacker News
Vài năm trước tôi đã đọc hết ấn bản thứ 2, và nội dung thật sự mở mang tầm mắt
Phần giải thích về phát triển hệ điều hành rất hay, nhưng sau khi đọc sách Rust thì nó cũng hữu ích như một tài liệu để học Rust sâu hơn
Tác giả hiểu rất rõ các idiom của Rust, nên việc xem cách diễn đạt bằng code so với cách tôi sẽ viết cũng học được rất nhiều; đặc biệt bài async-await in Rust giải thích cách future được triển khai trong Rust là phần hay nhất tôi từng thấy về chủ đề này
Mong Phil lấy lại động lực và tiếp tục làm ấn bản thứ 3 dựa trên EFI. Nhìn các commit trên nhánh Git thì có vẻ đã dừng lại, và tôi cũng đã sponsor trên GitHub khoảng 1 năm, nhưng mỗi lần thấy nó vắng mặt trong các bài “This Month In Rust OSDev” thì đều thấy tiếc
Dù vậy, ấn bản thứ 2 vẫn là tài liệu tuyệt vời để dành thời gian lập trình cuối tuần, và có thể cảm nhận rõ công sức đã bỏ vào đó
5 năm trước, sau khi hoàn thành tutorial này, tôi bắt đầu làm MOROS; tôi rất khuyến nghị nó cho những ai quan tâm đến Rust và phát triển hệ điều hành
Phil đã bỏ vào đó rất nhiều công sức, và điều đó thể hiện rõ. Dự án bao quát rất nhiều nội dung, rồi sau đó bạn có thể tiếp tục với osdev wiki
MOROS: http://moros.cc, https://github.com/vinc/moros
MOROS có vẻ cũng đáp ứng các điều kiện này nên tôi đã bookmark
Tuy nhiên vì lý do nào đó nó không khởi động được trong QEMU nên tôi vẫn chưa dùng thử; tôi nghĩ khả năng cao là vấn đề ở phía tôi hơn là ở chính hệ điều hành
Sau khi đào sâu vào Rust và phát triển hệ điều hành, hôm nay tôi mới phát hiện ra tài liệu này và rất ấn tượng với chất lượng nội dung
Bạn vừa học được nhiều về lịch sử và thiết kế hệ điều hành, vừa tiếp thu các yếu tố của Rust một cách tự nhiên. Phil đã làm thật sự xuất sắc
Tôi vừa trở về từ Rustconf, và có vẻ phía Rust có khoảng năm bản phát hành hệ điều hành lớn, trong đó nhiều cái đặc biệt tập trung vào thời gian thực
Tuy nhiên không phải tất cả đều là mã nguồn mở
Ngoài ra còn có những thứ ngách hơn hoặc chưa được công khai
Ở phía hệ điều hành truyền thống, tức không phải thời gian thực, Redox là đại diện tiêu biểu; và cũng có nhiều hệ điều hành phục vụ nghiên cứu, thử nghiệm, giáo dục, bao gồm Blog OS trong hướng dẫn/bài viết này
Tôi đặc biệt khuyến nghị ấn bản đầu tiên của loạt bài này
Phiên bản hiện tại xử lý toàn bộ bootloading bằng một crate riêng nên có cảm giác được hỗ trợ quá nhiều
Đọc bình luận này khiến tôi thật sự muốn thử một lần. Tôi muốn làm một hệ điều hành nhỏ cho vui, nhưng không thích phần phải đi qua những thủ tục như thần chú chỉ để đạt tới trạng thái máy đủ ổn để làm được điều gì đó
Tất nhiên điều đó không xấu, chỉ là mỗi người thích những phần khác nhau
Nhờ tài liệu này mà tôi bắt đầu với Rust vào năm 2021, và tôi thật sự biết ơn vì có những tài liệu như vậy
Các bài viết về phát triển hệ điều hành của Phil lúc nào cũng dễ đọc
Nghe nói anh ấy sẽ trình bày tại hội nghị GOSIM vào tháng tới
https://china2024.gosim.org/speakers#philipp-oppermann
Hy vọng có thể gặp trực tiếp và trò chuyện
https://harvey-os.org/ đã nghỉ hưu, và đội ngũ hiện đang làm dự án này: https://github.com/r9os/r9
Tôi không phải lập trình viên chuyên nghiệp, nhưng khi thấy cách diễn đạt “viết X trên Y”, tôi lại nghĩ đến meme “But why?” của Ryan Reynolds: https://screenrant.com/ryan-reynolds-but-why-gif-harold-kuma...
Nếu để học thì tôi nghĩ cứ làm thoải mái. Code càng nhiều thì càng tiến bộ
Nhân tiện, MOROS trông là một dự án và trang web rất đẹp