7 điểm bởi GN⁺ 2024-09-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • Kho lưu trữ này chứa mã nguồn của loạt bài Writing an OS in Rust được cung cấp tại os.phil-opp.com
  • Nếu có câu hỏi, bạn có thể mở issue hoặc trò chuyện trên Gitter

Vị trí mã nguồn

  • Mã của mỗi bài viết nằm trên một nhánh git riêng
  • Có thể xem trạng thái trung gian sau từng bài viết
  • Mã của bài viết mới nhất có thể xem tại đây
  • Trong danh sách bài viết, hãy theo liên kết (source code) để tìm nhánh của từng bài
  • Các nhánh được đặt tên theo định dạng post-XX (XX là số thứ tự bài viết)
  • Ví dụ: bài VGA Text Modepost-03, bài Hardware Interruptspost-07
  • Hướng dẫn build xem trong Readme của nhánh tương ứng
  • Có thể dùng git worktree để checkout nhánh vào một thư mục con
    git worktree add code post-10
    
  • Lệnh trên sẽ tạo thư mục con tên code và chứa mã của bài viết thứ 10 ("Heap Allocation")

Các bài viết

  • Mục tiêu của dự án này là cung cấp hướng dẫn từng bước qua các bài blog riêng lẻ
  • Hiện tại có các bài viết sau

Bare Bones:

Interrupts:

Memory Management:

Multitasking:

Các bài viết của ấn bản đầu tiên

  • Phiên bản blog hiện tại là ấn bản thứ hai, và ấn bản đầu tiên không còn được duy trì nữa
  • Các bài viết của ấn bản đầu tiên vẫn có thể hữu ích
  • Danh sách bài viết như sau

Bare Bones:

Memory Management:

Exceptions:

Additional Resources:

  • Cross Compile Binutils
  • Cross Compile libcore
  • Set Up GDB
  • Handling Exceptions using Naked Functions
  • Catching Exceptions (source code)
  • Better Exception Messages (source code)
  • Returning from Exceptions (source code)

Giấy phép

  • Dự án này, ngoại trừ thư mục blog/content, được cấp phép theo một trong hai giấy phép sau
  • Giấy phép của thư mục blog/content xem tại blog/content/README.md

Đóng góp

  • Trừ khi có nêu rõ khác đi, mọi đóng góp được gửi một cách có chủ đích, theo định nghĩa trong giấy phép Apache-2.0, sẽ được đưa vào theo cơ chế cấp phép kép như trên

Tóm tắt của GN⁺

  • Dự án này cung cấp hướng dẫn từng bước về cách viết hệ điều hành bằng Rust
  • Mỗi bài viết xử lý một chủ đề độc lập và đi kèm các ví dụ mã nguồn
  • Đây là tài liệu rất hữu ích cho những ai quan tâm đến phát triển hệ điều hành
  • Bạn có thể học cách phát triển hệ điều hành bằng cách tận dụng tính an toàn và hiệu năng của Rust
  • Một dự án khác có chức năng tương tự là Redox OS

1 bình luận

 
GN⁺ 2024-09-15
Ý kiến trên Hacker News
  • Đã hoàn thành ấn bản thứ hai vài năm trước và học được rất nhiều

    • Phần giải thích về phát triển OS rất tốt và cũng hữu ích cho việc học Rust
    • Tác giả hiểu rất rõ các thành ngữ của ngôn ngữ nên cách biểu đạt mã rất giàu tính sư phạm
    • Phần giải thích về cách triển khai futures trong Rust trên blog đặc biệt gây ấn tượng
    • Mong Phil sẽ khởi động lại công việc cho ấn bản thứ ba dựa trên EFI
    • Ấn bản thứ hai vẫn là một cách tuyệt vời để dành thời gian cuối tuần cho việc lập trình
  • Sau khi hoàn thành hướng dẫn này 5 năm trước, đã bắt đầu làm MOROS

    • Rất khuyến nghị cho những ai quan tâm đến Rust và phát triển OS
    • Phil đã đầu tư rất nhiều công sức và điều đó thể hiện rõ trong kết quả
    • Sau đó có thể tiếp tục học qua wiki osdev
  • Thay vì viết OS bằng Rust, nên xây dựng một nền tảng dữ liệu có thể chạy DML/DDL

  • Sau khi tìm hiểu sâu về Rust và phát triển OS, đã phát hiện ra tài liệu này

    • Đã rất ấn tượng với chất lượng của tài liệu này, và có thể học không chỉ về lịch sử và thiết kế của OS mà còn cả các yếu tố của Rust
    • Phil đã làm một công việc tuyệt vời
  • Tài liệu này là lý do khiến tôi bắt đầu với Rust vào năm 2021

    • Rất biết ơn vì tài liệu này tồn tại
  • Các bài viết của Phil về phát triển OS luôn rất đáng đọc

  • Nhóm Harvey OS hiện đang làm việc trên dự án R9OS

  • Đặc biệt khuyến nghị bài viết của ấn bản gốc

    • Ấn bản hiện tại xử lý quá trình boot bằng một crate chuyên biệt nên hỗ trợ quá nhiều
  • Vừa trở về từ Rustconf, và có khoảng chừng năm bản phát hành OS lớn tập trung vào hệ điều hành thời gian thực

    • Không phải tất cả đều là mã nguồn mở
  • Một tài liệu hay khác là về việc tạo OS RISC-V bằng Rust