3 điểm bởi GN⁺ 2023-09-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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.ova cho 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

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.xz rồ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
  • 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

 
GN⁺ 2023-09-28
Ý 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

    • Ở khía cạnh đó, tôi cũng đánh giá cao các bản phân phối như ElementaryOS. Vì họ duy trì, chỉnh sửa và tạo phần mềm riêng để bản phân phối của mình thật sự có cảm giác như một môi trường tích hợp thống nhất
      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
    • Vì những bản phân phối Linux chỉ thay đổi lớp vỏ bên ngoài như thế quá phổ biến, nên ban đầu rất dễ suy đoán theo hướng đó
      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
    • Hơi gợi nhớ đến Oberon OS: https://en.wikipedia.org/wiki/Oberon_(operating_system)
    • Ngược lại, tôi bấm vào định chỉ trích vì tưởng lại là Linux tự nhận “được làm từ đầu”, ai ngờ không phải nên thấy buồn cười
  • 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

    • Đúng vậy. Trong số các trang bản phân phối kiểu thập niên 2000, có quá nhiều trang giấu ảnh chụp màn hình khỏi màn hình đầu tiên như thể xấu hổ khi cho thấy hệ thống của mình
    • Toolchain và trải nghiệm phát triển được đề cập một chút trong video. Cách đó có vẻ khá tốt để người dùng theme hóa desktop của họ
    • Tổ hợp tính năng này trông như một nền tảng khá thú vị cho ứng dụng nhúng
      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...

    • Các commit sau năm 2021 trông giống sửa lỗi. Có thể không phải đã dừng, mà là về cơ bản đã hoàn thiện
    • Như mọi khi, tôi không hiểu vì sao phải giả vờ rằng nó sẽ trở thành một sản phẩm thực tế
      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ục partition_entry_*: times 16 db 0, rồi dw 0xAA55 rấ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ày

    • Nó gợi nhớ đến sự tao nhã, đơn giản và hiệu năng mà chúng ta đang bỏ lỡ vì cạnh tranh hệ điều hành bị giới hạn
    • Lại khiến tôi phải nhanh chóng kiểm tra xem đây có phải một dự án thiên tài đến ngớ ngẩn khác của Justine Tunney không
  • Tô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

    • Tôi thật sự muốn thấy một thiết kế bảo mật dựa trên quyền thân thiện với người dùng, để ứng dụng tải từ Internet không thể đánh cắp thông tin đăng nhập và tài liệu của tôi
      Đâ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
    • Tôi đã hình dung và làm thứ như vậy nhiều năm rồi, nhưng chuyện đời thường luôn được ưu tiên hơn
      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
    • Bạn có thể thử haiku-os.org
    • Bạn nghĩ sao về các hệ BSD hoặc 9front, một fork của Plan 9?
    • Trên ChromeOS, lúc nào cũng có thể dễ dàng thêm môi trường Linux
  • Khởi động 0,7 giây từ BIOS đến desktop thật ấn tượng

    • Vài năm trước Intel từng có một bài trình bày về việc đạt khởi động Linux 0,3 giây trên nền tảng nhúng, từ lúc cấp nguồn đến UI hoàn toàn tương tác được
      Đó 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ày nay gần như luôn là đồ họa vector. Trước đây người ta dùng bitmap đơn giản, và hệ điều hành này đặc biệt sử dụng đồ họa vector
    • Nếu làm từ đầu, tệp PNG có thể còn phức tạp hơn vì cần giải mã
      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
    • Trong liên kết ở trên cũng nêu rõ giao diện người dùng hoàn toàn dựa trên vector
      Vì vậy có thể hiểu đó là các mô tả về cách vẽ UI thay vì dùng ảnh raster
    • Ngày nay nhìn chung dựa trên shader OpenGL dùng tăng tốc phần cứng
    • Nếu bạn đã bỏ lỡ khái niệm này thì có thể tham khảo: https://en.wikipedia.org/wiki/Vector_graphics
  • 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ời