- Là một dự án hệ điều hành desktop full-stack cùng xây dựng kernel, driver, ứng dụng và các thành phần desktop, với phạm vi rộng hơn một thử nghiệm kernel đơn thuần
- Có thể bắt đầu thử nghiệm thông qua bản dựng nightly
Essence.tar.xz,Essence.ovacho VirtualBox và lệnh chạy QEMU - Các bản dựng công khai được cung cấp chỉ dành cho emulator để thuận tiện cho việc thử nghiệm; bản dựng cho phần cứng thật vẫn đang trong kế hoạch
- Kernel bao gồm các thành phần cốt lõi như trình quản lý cache độc lập với filesystem, trình quản lý bộ nhớ, stack mạng TCP/IP, virtual filesystem và window manager
- Desktop có thư viện UI tùy chỉnh, trình render vector bằng phần mềm, cửa sổ dạng tab, và render văn bản đa ngôn ngữ dựa trên FreeType·Harfbuzz
Cách chạy và tham gia
- Essence là một dự án hệ điều hành, và tính đến tháng 10/2021 đã có video demo chạy trên phần cứng thật
- Kênh thảo luận được chia thành máy chủ Discord và diễn đàn
- Discord: https://discord.gg/skeP9ZGDK8
- Diễn đàn: https://essence.handmade.network/forums
- Có thể hỗ trợ phát triển qua Patreon, và Essence là dự án nhận 2021 Icculus Microgrant
- Patreon: https://www.patreon.com/nakst
- Icculus Microgrant: https://icculus.org/microgrant/
Thử nghiệm và build
- Có thể tải bản dựng nightly mới nhất tại build-essence releases
- Tải
Essence.tar.xzrồi giải nén - Với VirtualBox, import
Essence.ova - Với QEMU, chạy lệnh bên dưới
qemu-kvm -drive file=drive,format=raw -m 2048 -smp 2 || qemu-system-x86_64 -enable-kvm -drive file=drive,format=raw -m 2048 -smp 2
- Tải
- Các bản dựng hiện được cung cấp là cấu hình chỉ dành cho emulator để thuận tiện cho việc thử nghiệm
- Cách build và thử nghiệm nằm trong
help/Building.md
Các thành phần của OS
-
Kernel
- Trình quản lý cache độc lập với filesystem
- Trình quản lý bộ nhớ hỗ trợ shared memory, memory-mapped file, paging zeroing đa luồng và working set balancing
- Stack mạng TCP/IP
- Scheduler xử lý nhiều mức ưu tiên và priority inversion
- Nạp module theo nhu cầu
- Virtual filesystem
- Window manager
- Audio mixer
- Đang trong trạng thái viết lại
- POSIX subsystem tùy chọn
- Có thể chạy GCC và một số công cụ Busybox
-
Ứng dụng
- File Manager
- Text Editor
- IRC Client
- System Monitor
-
Thành phần đã port
- Bochs
- GCC và Binutils
- FFmpeg
- Mesa cho OpenGL render bằng phần mềm
- Musl
-
Driver
- Quản lý nguồn: ACPI dựa trên ACPICA
- Thiết bị lưu trữ phụ: IDE, AHCI, NVMe
- Đồ họa: BGA, SVGA
- Filesystem đọc/ghi: EssenceFS
- Filesystem chỉ đọc: Ext2, FAT, NTFS, ISO9660
- Âm thanh: HD Audio
- NIC: 8254x
- USB: XHCI, bulk storage devices, human interface devices
-
Desktop
- Thư viện giao diện người dùng tùy chỉnh
- Trình render vector bằng phần mềm hỗ trợ hoạt ảnh phức tạp
- Cửa sổ dạng tab
- Render và layout văn bản đa ngôn ngữ dựa trên FreeType và Harfbuzz
1 bình luận
Ý kiến trên Hacker News
Ban đầu tôi tưởng đây chỉ là một bản phân phối Linux khác với trình quản lý cửa sổ tùy biến đặt lên trên, nhưng thực ra nó là một hệ điều hành riêng
Nó thậm chí có kernel tùy biến và thật sự được xây dựng từ tận tầng thấp nhất. Những dự án làm hệ điều hành hay trình duyệt từ đầu có giá trị rất lớn dù không được dùng rộng rãi đại chúng, và tôi muốn vỗ tay cho các nhà phát triển
Các bản phân phối khác cũng nỗ lực rất nhiều, nhưng tôi đặc biệt thích cách các ứng dụng KDE hòa hợp như ứng dụng mặc định của một hệ điều hành. Ngược lại, Windows hầu như không có sự thống nhất kiểu này; các cách làm cũ bị trộn lẫn khiến các ứng dụng cốt lõi thiếu nhất quán, và nó ngày càng trông giống một hệ điều hành Linux được chắp vá. Nếu Microsoft không để đội marketing chi phối hướng đi của Windows mà tập trung trau chuốt hệ điều hành, có lẽ họ đã có một sản phẩm cực kỳ xuất sắc
Essence được làm từ đầu, và khá ấn tượng ở chỗ nó có UI gọn gàng nhưng không “giống Linux”. Khác với việc phủ một diện mạo đẹp hơn, thân thiện hơn lên một bản phân phối sẵn có, hướng đi này có vẻ hiếm hơn nhiều và có thể sẽ nối gót ChromeOS
Landing page thật sự rất tốt. Nó cho biết gần như ngay lập tức mọi thông tin tôi muốn biết
Có ảnh chụp màn hình đẹp, hỗ trợ phần cứng tiêu thụ điện thấp, có thể khởi động với dung lượng lưu trữ dưới 30MB và còn ít RAM hơn nữa, không có tác vụ nền, hiệu năng tốt, mã nguồn mở theo giấy phép MIT, và cả video demo. Tôi lập tức nghĩ ra nhiều trường hợp sử dụng có thể được ưa chuộng ở những mảng mà các hệ điều hành desktop phổ biến chưa đáp ứng được. Tôi muốn biết thêm về toolchain phát triển và cách bắt đầu, nhưng có vẻ các liên kết Discord/Patreon phần nào đã đề cập. Nếu nhấn mạnh những tính năng như giao diện cảm ứng như hỗ trợ hạng nhất, nó có thể khác biệt rõ hơn với các hệ điều hành desktop hiện có; cũng có thể hình dung các thiết bị IoT cần UI
Nếu API quản lý cửa sổ ổn, nó có vẻ đủ dùng như một hệ thống điều khiển nhúng. Nếu biên dịch sang WASM, có lẽ cũng tạo được một UI web khá ổn bằng cách tận dụng hệ thống cửa sổ giả
Có vẻ phần lớn công việc đã dừng lại từ sau tháng 4/2022: https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...
Nó giống như việc tôi nói mình sẽ tự làm một chiếc jumbo jet. Tôi có thể lắp được cỡ một chiếc máy bay hai tầng cánh sơ sài, nhưng không thể làm động cơ hay thân máy bay kích thước thật, cũng không có thợ bảo trì hay nhà máy, nên rốt cuộc sẽ chẳng ai dùng chiếc jet đó
Tôi thích cấu trúc ở phần cuối mã boot block bằng assembler
Dạng nối tiếp
times (0x1B4 - ($-$$)) nop,disk_identifier: times 10 db 0, bốn mụcpartition_entry_*: times 16 db 0, rồidw 0xAA55rất tao nhã. Nó cho thấy định danh đĩa và 4 phân vùng MBR cổ điển cùng tồn tại trong 512 byte đầu tiên với mã boot như thế nào. Cấu trúc này giả định rằng sau khi sao chép boot block lên đĩa, một chương trình bên ngoài, ví dụ công cụ nhưfdisk, sẽ thiết lập các giá trị phân vùng. Tôi đã xem nhiều mã boot block nhưng lần đầu thấy kiểu tổ chức nàyTôi mong những hệ điều hành như thế này có chỗ đứng cho những người không cần đủ loại tương thích ngược và tính năng server của Linux, đồng thời cũng muốn tránh Microsoft hay Apple
Tôi muốn thứ gì đó giống ChromeOS nhưng không bị khóa chặt như vậy
Đây là vấn đề lớn nhất mà người dùng ngày nay gặp phải, nhưng theo những gì tôi biết, dường như không có nhiều quan tâm thực chất đến việc thử một cách tiếp cận mới ở cấp hệ điều hành
Nếu có một mô hình kinh doanh khả thi chỉ dựa vào hệ điều hành, thay vì kiểu Apple dựa vào bán phần cứng, hay kiểu Android dựa vào quảng cáo và Windows đang ngày càng đi theo hướng đó, thì có thể mọi chuyện đã khác. Có lẽ một ngày nào đó khi độc lập về tài chính thì sẽ làm được
Khởi động 0,7 giây từ BIOS đến desktop thật ấn tượng
Đó là trường hợp dùng cho ô tô, nhắm đến tình huống các chức năng như hệ thống thông tin giải trí hay bảng đồng hồ phải dùng được ngay sau khi nguồn phụ kiện được bật
Tôi từng thắc mắc hệ điều hành vẽ GUI chất lượng cao như thế nào
Trong phát triển bare-metal, tôi từng vẽ đồ họa đơn giản bằng linear frame buffer, nhưng vẫn tò mò hình ảnh biểu diễn các thành phần UI trong những giao diện như thế này hay như Windows được tạo ra ra sao. Tôi không thấy tệp PNG cho viền cửa sổ, mà thấy mã đặt màu pixel theo theme. Tôi thắc mắc liệu các thành phần UI của hệ điều hành thường được vẽ bằng chương trình thay vì tạo bằng trình chỉnh sửa ảnh rồi lát gạch hay không
Ngược lại, nếu có API vẽ, việc ánh xạ một mã hóa đồ họa vector dưới dạng gọi các lệnh vẽ tương ứng sẽ dễ hơn. Đồng thời cũng giải quyết vấn đề thay đổi kích thước, và tài nguyên đồ họa vector thường chiếm ít dung lượng hơn nhiều
Vì vậy có thể hiểu đó là các mô tả về cách vẽ UI thay vì dùng ảnh raster
Bài liên quan: Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - tháng 1 năm 2022, 290 bình luận
Thường thì các nỗ lực làm hệ điều hành mới trông quá phi thực tế, kiểu muốn đun sôi cả đại dương, nhưng tôi thích cái này. Nó có vẻ có tiềm năng ngay lập tức
Nếu đưa ra vài lời khuyên: thứ nhất, thêm ảo hóa từ sớm sẽ cho phép chạy các hệ điều hành khác và những ứng dụng quen thuộc. Về dài hạn, có thể khám phá kiểu ảo hóa liền mạch tương tự Parallels Coherence để chạy ứng dụng bên ngoài trên hệ điều hành chủ đó, và đây có thể là giải pháp ngắn hạn/trung hạn cho vấn đề “không có ứng dụng” vốn ám ảnh các hệ điều hành mới. Thứ hai, nên giới hạn phạm vi hỗ trợ phần cứng vào một vài nền tảng mục tiêu như các hãng laptop hướng Linux như System76, Framework, và Raspberry Pi. Thứ ba, nếu xem xét cách mang driver của Linux hoặc BSD sang dùng thông qua API tương thích, có thể xử lý được những thiết bị nổi tiếng khó hỗ trợ như card Wi-Fi
Nhìn trang chủ của nakst, tác giả Essence, tại https://nakst.gitlab.io/, có câu này
nakst's webpage // This site works best with JavaScript disabled— đúng là một người tuyệt vờiThế giới thật nhỏ