Snowdrop OS, hệ điều hành homebrew được phát triển từ đầu bằng hợp ngữ
(sebastianmihai.com)- 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
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...
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ì MenuetOS và KolibriOS 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
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
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
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
https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
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
[1] https://genode.org
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
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
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
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