1 điểm bởi GN⁺ 2025-01-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Snowdrop OS là hệ điều hành real mode 16-bit dành cho kiến trúc IBM PC, một OS homebrew tự triển khai mọi thứ từ khởi động đến chạy ứng dụng chỉ bằng hợp ngữ x86
  • Bản phân phối được cung cấp dưới dạng image floppy 1,44MB và image CD-ROM, bao gồm boot loader, kernel, shell, tiện ích, ứng dụng thử nghiệm và aSMtris, một bản clone của Tetris
  • Boot loader 512 byte tìm kernel và nạp vào bộ nhớ; kernel thiết lập interrupt vector cho ứng dụng rồi nạp ứng dụng khởi đầu
  • Bao gồm trình quản lý tệp, trình soạn thảo văn bản, ứng dụng đồ họa, trình thông dịch BASIC, assembler và debugger x86, cho phép phát triển và thử nghiệm ngay bên trong OS
  • Mã nguồn được công khai không hạn chế sử dụng và chỉnh sửa, là tài liệu tham khảo cho lập trình viên muốn trực tiếp lần theo hoạt động cấp thấp của hệ điều hành

Kiến trúc tự triển khai từ khởi động đến ứng dụng

  • Snowdrop OS là dự án bắt đầu từ sự tò mò về điều gì xảy ra khi bật nguồn PC, cũng như cách đĩa khởi động được và bên trong hệ điều hành vận hành ra sao
  • Mục tiêu là một OS real mode 16-bit dành cho kiến trúc IBM PC, được viết từ đầu chỉ bằng hợp ngữ x86
  • Image phân phối được cung cấp dưới hai dạng
    • Image 1,44MB cho đĩa floppy
    • Image CD-ROM
  • Image chứa các thành phần cốt lõi tự viết
    • Boot loader nạp kernel vào bộ nhớ
    • Kernel thiết lập interrupt vector cho ứng dụng người dùng rồi nạp ứng dụng khởi đầu
    • Các ứng dụng người dùng như shell, tiện ích, ứng dụng thử nghiệm và bản clone Tetris aSMtris
  • Trong quá trình khởi động, nếu phát hiện ổ đĩa cứng, hệ thống sẽ hỏi có cài đặt hay không và có thể cài Snowdrop OS lên ổ đĩa cứng
  • Các ứng dụng và công cụ đi kèm mở rộng đến trình quản lý tệp, trình soạn thảo văn bản, ứng dụng đồ họa, trình thông dịch BASIC, assembler x86 và debugger x86
  • Mã nguồn của Snowdrop OS và các ứng dụng được công khai không hạn chế sử dụng và chỉnh sửa

Những khu vực mã nguồn đáng đọc

  • Boot loader: nằm gọn trong 512 byte, tìm và nạp kernel
  • kernel: cung cấp các dịch vụ và lớp trừu tượng cơ bản cho ứng dụng
  • Graphics and GUI framework: nền tảng để tạo ứng dụng đồ họa và ứng dụng dùng chuột
  • x86 assembler: cho phép tạo trực tiếp các ứng dụng cấp thấp trong Snowdrop OS
  • BASIC interpreter: công cụ để nhanh chóng tạo ứng dụng cấp cao
  • x86 debugger: có thể dùng cùng với assembler
  • Dynamic data structure libraries: hỗ trợ làm việc với các cấu trúc dữ liệu động như danh sách liên kết, cây và BST
  • All applications: bao gồm game, trình soạn thảo văn bản, trình quản lý tệp, công cụ và ứng dụng thử nghiệm

Các tính năng được bổ sung qua từng phiên bản

  • Lịch sử phiên bản cho thấy quá trình liên tục bổ sung tính năng, bắt đầu từ v1 với đơn tác vụ, shell và aSMtris
    • v2: driver chuột PS/2 và ứng dụng thử nghiệm chuột
    • v3: hỗ trợ đa nhiệm cơ bản và màn hình ảo
    • v4: driver ghi/xóa FAT12, trình quản lý tệp, trình soạn thảo văn bản
    • v6: game Snake nhiều người chơi qua cổng serial
    • v16: framework GUI
    • v18: trình thông dịch BASIC và linker
    • v19: cài đặt lên ổ đĩa cứng
    • v22: assembler x86, hỗ trợ nhiều đĩa, tiện ích xem tệp
    • v23: debugger x86
    • v25: bộ nhớ động và cấu trúc dữ liệu
    • v28: GUI độ phân giải cao, ứng dụng vẽ, ứng dụng desktop
    • v31: thư viện runtime và RTL cho trình thông dịch BASIC

1 bình luận

 
GN⁺ 2025-01-26
Các ý kiến trên Hacker News
  • Hồi giữa thập niên 90, tôi cũng từng làm một OS GUI 32-bit dạng sở thích tương tự, và cuốn sách này thực sự là sách phải đọc
    https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...

    • Có thể đọc miễn phí
      https://web.archive.org/web/20140704223135/https://www.ipdat...
      Sau khi Sensory Publishing giành được quyền, họ đã đổi tiêu đề và in thêm 1.000 bản, nhưng hiện chỉ còn khoảng 200 bản và không bán nữa. Giờ cuốn sách này thuộc phạm vi công cộng, còn các bản còn lại được cho là sẽ được lưu giữ cho Great Alexandria Library
  • Nếu bạn quan tâm đến những dự án như thế này thì MenuetOSKolibriOS cũng đáng xem. KolibriOS là một fork tách ra từ MenuetOS từ lâu
    MenuetOS cũng có phiên bản x64 hỗ trợ SMP, nhưng phần này là mã nguồn đóng

    • Tôi muốn học hợp ngữ, nhưng trên Coursera không tìm được khóa nào phù hợp cho người hoàn toàn mới bắt đầu. Tôi có kinh nghiệm Java và đang học C/C++ để tiến gần hơn tới phần cứng
    • Tôi không hiểu vì sao đến năm 2025 lại làm thứ như vậy dưới dạng mã nguồn đóng
      Ngoài OS sở thích ra, không biết ai sẽ thực sự dùng nó trên máy x64 đa nhân
    • Nếu muốn thứ điên rồ hơn nữa thì còn có TempleOS
  • Tôi tò mò hiện nay có những ý tưởng hay ho mới nhất nào về thiết kế OS, xét từ góc nhìn người dùng lẫn hacker OS

    • Tôi đang âm thầm công khai một thiết kế kernel mới. Đây là lần viết lại thứ 12 và cũng là lần cuối, đã phát triển khoảng 1 năm
      https://github.com/oro-os/kernel
      Đây là thiết kế microkernel không có user cũng không có capability, và cưỡng chế kiểm soát truy cập thông qua hệ phân cấp entity của kernel. Cơ chế IPC chính là các cổng bộ nhớ chia sẻ với nhiều mức độ an toàn, và được định kiểu ở cấp kernel
      Hiện đang ở giai đoạn cuối để kiểm chứng tính hữu dụng của kernel. Nếu có thể chứng minh thiết kế, tôi sẽ viết bài chính thức hơn. Nó đã là dự án trong đầu khoảng 8 năm, và nằm trong editor khoảng 4 năm
    • Những ý tưởng hay của Plan 9 phần lớn đến giờ vẫn chưa bị vượt qua hoặc chưa được tái triển khai đúng nghĩa
      https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
    • Fuchsia có khá nhiều ý tưởng táo bạo. Có microkernel, capability, hệ thống cài đặt app khá lạ, và có vẻ muốn làm app giống website hơn
      https://rtic.rs/ là một ý tưởng khá thú vị trong mảng tương tự RTOS nhúng
      Nói thật thì vẫn còn những tính năng của Plan 9 đi trước Linux rất xa. Ví dụ: https://9p.io/sys/doc/lexnames.html
    • Genode [1] có cách tiếp cận thiết kế OS thú vị ở chỗ nó là một framework. Tuy nhiên tôi không biết có bao nhiêu phần assembly trong đó
      [1] https://genode.org
    • Nếu xét hai cực được hiểu theo nghĩa rộng, tôi nghĩ câu trả lời hay nhất là Redox OS
      https://redox-os.org/
  • Cùng mạch đó, tôi cũng tò mò về các tiến bộ trong RTOS hiệu năng cao cho robotics. Mảng này có vẻ tương đối ít được chú ý
    ROS/ROS2 không phải là hệ điều hành, và phần lớn cũng không phải thứ có thể gọi là phần mềm hiệu năng cao

    • x86RTOS không hợp nhau lắm do các yếu tố như SMM, cache phức tạp. Nếu có tác vụ hiệu năng cao, có khả năng bạn sẽ muốn dùng một hoặc nhiều MCU nhúng riêng để điều khiển
      Phía nhúng có nhiều OS như FreeRTOS, Zephyr, ThreadX, và cũng có nhiều giải pháp độc quyền như Nvidia DriveOS
      Tuy nhiên OS nhúng khá hạn chế so với OS phổ thông như Linux. Có scheduler cho tác vụ, nhưng các thứ như process, filesystem, nạp file động, công cụ nhị phân thường không có hoặc chỉ là tùy chọn
    • Những người làm nghiêm túc có vẻ dùng QNX hoặc VxWorks. Đáng tiếc là hầu hết dự án robotics không nghiêm túc lắm và chỉ chạy Ubuntu
    • Dù không phải RTOS theo cách hiểu thông thường, RTIC cũng khá ổn. Theo tôi biết thì ban đầu nó được phát triển cho robotics
      https://rtic.rs
  • Có các bài liên quan như sau. Còn bài nào khác không?
    Homebrew an OS from Scratch? Snowdrop Shows How It's Done - https://news.ycombinator.com/item?id=39005640 - Jan 2024 (1 comment)
    Snowdrop OS – a homebrew operating system from scratch, in assembly language - https://news.ycombinator.com/item?id=28090574 - Aug 2021 (3 comments)

  • Chính xác thì là hợp ngữ x86

    • Chính xác hơn nữa thì là hợp ngữ x86 16-bit real mode
  • Bộ công cụ và ứng dụng được tạo ra khá ấn tượng. Dù vậy có vẻ họ vẫn không sa vào cám dỗ self-hosting
    Có lẽ cần thêm việc để đưa assembler lên ngang mức nasm, hoặc phải kéo toàn bộ mã nguồn lại gần Snowdrop ASM hơn

  • Sẽ hay nếu có cả V32, compiler BASIC
    Chắc có thể gửi yêu cầu tính năng

  • Tôi muốn thấy thứ này được port sang esp32, chẳng hạn chạy trên board như ttgo vga32
    Sẽ rất tuyệt nếu có một OS kiểu shell và GUI cơ bản với thẻ SD, VGA, âm thanh, bàn phím/chuột, WiFi, Bluetooth. Cảm giác như Commodore 64 hiện đại; in qua WiFi chỉ cần text-only cũng được, và có thêm trình duyệt kiểu lynx, email, IRC, gopher thì tốt

  • Yêu cầu build của Snowdrop OS thật ấn tượng
    Works on: Windows XP 32bit, Windows 98, Windows 95