7 điểm bởi GN⁺ 2024-09-15 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

  • Kho này cung cấp mã nguồn cho loạt bài Writing an OS in Rust
  • Có thể đặt câu hỏi bằng cách mở GitHub issue hoặc qua phòng chat Gitter

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

Ấ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

 
GN⁺ 2024-09-15
Ý 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

    • Trông khá hay. Từ trước đến nay xv6 là dự án tôi thích nhất, vì codebase đủ nhỏ để có thể hiểu trong vài tuần, có thể build bằng GCC chuẩn do trình quản lý gói cung cấp nên không cần build một GCC tùy chỉnh từ source, và cũng có user space
      MOROS có vẻ cũng đáp ứng các điều kiện này nên tôi đã bookmark
    • http://moros.cc không có TLS à? :(
    • Tôi đã đăng ký RSS feed từ trước, và MOROS trông thật sự là một dự án rất thú vị
      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ở

    • Các hệ điều hành thời gian thực (RTOS) chính gồm Tock-OS, Oxid-OS (một phiên bản thiên về an toàn của Tock-OS, ở vị trí tương tự freertos/safertos), và Hubris của Oxide Computers; còn Embassy và RTIC là các framework thường dùng cho lập lịch và quản lý tài nguyên trên hệ thống bare-metal, nhưng không phải RTOS theo nghĩa truyền thống
      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

    • Tôi thích việc có một cách để bỏ qua phần bootloading
      Đọ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