3 คะแนน โดย GN⁺ 2023-09-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โครงการ ระบบปฏิบัติการเดสก์ท็อปแบบฟูลสแตก ที่สร้างเคอร์เนล ไดรเวอร์ แอปพลิเคชัน และองค์ประกอบเดสก์ท็อปร่วมกัน โดยครอบคลุมกว้างกว่าการทดลองเคอร์เนลแบบเรียบง่าย
  • เริ่มทดสอบได้ผ่าน nightly build ของ Essence.tar.xz, Essence.ova สำหรับ VirtualBox และคำสั่งรัน QEMU
  • บิลด์สาธารณะที่เปิดให้ใช้งานมีให้เฉพาะสำหรับ อีมูเลเตอร์เท่านั้น เพื่อความสะดวกในการทดสอบ ส่วนบิลด์สำหรับฮาร์ดแวร์จริงยังอยู่ระหว่างเตรียมให้ใช้งาน
  • ในเคอร์เนลมีองค์ประกอบหลักอย่างตัวจัดการแคชที่ไม่ขึ้นกับระบบไฟล์, ตัวจัดการหน่วยความจำ, สแตกเครือข่าย TCP/IP, ระบบไฟล์เสมือน และตัวจัดการหน้าต่าง
  • เดสก์ท็อปมาพร้อมไลบรารี UI แบบกำหนดเอง, ซอฟต์แวร์เวกเตอร์เรนเดอเรอร์, หน้าต่างแบบแท็บ และ การเรนเดอร์ข้อความหลายภาษา บน FreeType·Harfbuzz

เส้นทางการรันและการมีส่วนร่วม

การทดสอบและการบิลด์

  • nightly build ล่าสุดดาวน์โหลดได้จาก build-essence releases
    • ดาวน์โหลด Essence.tar.xz แล้วแตกไฟล์
    • บน VirtualBox ให้นำเข้า Essence.ova
    • บน QEMU ให้รันคำสั่งด้านล่าง
      • 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
  • บิลด์ที่ให้ใช้งานในตอนนี้เป็นการตั้งค่าสำหรับ อีมูเลเตอร์เท่านั้น เพื่อความสะดวกในการทดสอบ
  • วิธีบิลด์และทดสอบอยู่ใน help/Building.md

องค์ประกอบของ OS

  • เคอร์เนล

    • ตัวจัดการแคชที่ไม่ขึ้นกับระบบไฟล์
    • ตัวจัดการหน่วยความจำที่รองรับ shared memory, memory-mapped files, multi-threaded paging zeroing และ working set balancing
    • สแตกเครือข่าย TCP/IP
    • ตัวจัดตารางงานที่รองรับหลายระดับความสำคัญและจัดการกับ priority inversion
    • การโหลดโมดูลแบบ on-demand
    • ระบบไฟล์เสมือน
    • ตัวจัดการหน้าต่าง
    • ตัวผสมเสียง
      • กำลังอยู่ระหว่างเขียนใหม่
    • POSIX subsystem แบบเลือกใช้
      • สามารถรัน GCC และเครื่องมือบางส่วนของ Busybox ได้
  • แอปพลิเคชัน

    • File Manager
    • Text Editor
    • IRC Client
    • System Monitor
  • องค์ประกอบที่พอร์ตมาแล้ว

    • Bochs
    • GCC และ Binutils
    • FFmpeg
    • Mesa สำหรับ OpenGL แบบซอฟต์แวร์เรนเดอริง
    • Musl
  • ไดรเวอร์

    • การจัดการพลังงาน: ACPI บนฐาน ACPICA
    • ที่เก็บข้อมูลสำรอง: IDE, AHCI, NVMe
    • กราฟิก: BGA, SVGA
    • ระบบไฟล์แบบอ่าน/เขียน: EssenceFS
    • ระบบไฟล์แบบอ่านอย่างเดียว: Ext2, FAT, NTFS, ISO9660
    • เสียง: HD Audio
    • NIC: 8254x
    • USB: XHCI, bulk storage devices, human interface devices
  • เดสก์ท็อป

    • ไลบรารีส่วนติดต่อผู้ใช้แบบกำหนดเอง
    • ซอฟต์แวร์เวกเตอร์เรนเดอเรอร์ที่รองรับแอนิเมชันซับซ้อน
    • หน้าต่างแบบแท็บ
    • การเรนเดอร์และจัดวางข้อความหลายภาษาบน FreeType และ Harfbuzz

1 ความคิดเห็น

 
GN⁺ 2023-09-28
ความคิดเห็นจาก Hacker News
  • ตอนแรกคิดว่าเป็นดิสโทร Linux อีกตัวที่ใส่ตัวจัดการหน้าต่างแบบปรับแต่งเองทับเข้าไป แต่จริง ๆ แล้วเป็น ระบบปฏิบัติการของตัวเอง
    มีแม้กระทั่งเคอร์เนลที่ทำเอง และสร้างขึ้นมาจากศูนย์จริง ๆ โปรเจกต์ที่สร้างระบบปฏิบัติการหรือเบราว์เซอร์ตั้งแต่ต้น แม้อาจไม่ได้ถูกใช้แพร่หลายในวงกว้าง ก็มีคุณค่าสูงมาก และอยากปรบมือให้เหล่านักพัฒนา

    • ในแง่นั้น ผมก็มองดิสโทรอย่าง ElementaryOS ในทางที่ดีด้วย เพราะพวกเขาดูแล แก้ไข และสร้างซอฟต์แวร์ของตัวเอง เพื่อให้ดิสโทรของตนรู้สึกเหมือนเป็น สภาพแวดล้อมเดียวที่ผสานกันจริง ๆ
      ดิสโทรอื่น ๆ ก็ทุ่มเทกันมากเช่นกัน แต่ผมชอบเป็นพิเศษเวลาที่แอป KDE ต่าง ๆ เข้ากันได้ดีเหมือนเป็นแอปพื้นฐานของระบบปฏิบัติการหนึ่งเดียว ในทางกลับกัน Windows แทบไม่มีความเป็นเอกภาพแบบนี้เลย มีแนวทางเก่า ๆ ปะปนกัน ทำให้แอปหลักขาดความสอดคล้อง และยิ่งดูเหมือนระบบปฏิบัติการ Linux ที่ถูกปะติดปะต่อมากขึ้นเรื่อย ๆ ถ้า Microsoft ไม่ปล่อยให้ทีมการตลาดมากำหนดทิศทางของ Windows แล้วหันไปมุ่งขัดเกลาระบบปฏิบัติการแทน ก็น่าจะกลายเป็นผลิตภัณฑ์ที่ยอดเยี่ยมอย่างมหาศาล
    • เพราะ ดิสโทร Linux ที่เปลี่ยนแค่หน้าตา แบบนี้มีอยู่ทั่วไปมาก ตอนแรกจึงเดาไปแบบนั้นได้ง่าย
      Essence สร้างขึ้นตั้งแต่ต้น และค่อนข้างน่าประทับใจตรงที่มี UI ที่สะอาดตาแต่ก็ “ไม่เหมือน Linux” ต่างจากกรณีที่เอารูปลักษณ์ที่ดูดีและเป็นมิตรมาครอบทับดิสโทรเดิม ๆ นี่ดูเป็นแนวทางที่พบได้น้อยกว่ามาก และอาจตามรอย ChromeOS ได้ก็เป็นได้
    • นึกถึง Oberon OS ขึ้นมานิดหน่อย: https://en.wikipedia.org/wiki/Oberon_(operating_system)
    • กลับกัน ผมคลิกเข้ามาเพราะคิดว่าจะเป็น Linux อีกตัวที่อ้างว่า “สร้างจากศูนย์” แล้วกะจะวิจารณ์ แต่ปรากฏว่าไม่ใช่ เลยขำดี
  • หน้า Landing Page ทำได้ยอดเยี่ยมจริง ๆ บอกข้อมูลแทบทั้งหมดที่อยากรู้ได้ทันที
    มีสกรีนช็อตสวย ๆ รองรับฮาร์ดแวร์กินไฟต่ำ บูตได้ด้วยพื้นที่เก็บข้อมูลน้อยกว่า 30MB และ RAM น้อยกว่านั้นอีก ไม่มีงานเบื้องหลัง ประสิทธิภาพดีเยี่ยม เปิดโค้ดภายใต้ไลเซนส์ MIT และยังมีวิดีโอเดโมด้วย ผมนึกถึงการใช้งานหลายอย่างที่จะได้รับความนิยมได้ทันทีในพื้นที่ที่ระบบปฏิบัติการเดสก์ท็อปกระแสหลักดูแลได้ไม่ดีนัก ยังอยากรู้เพิ่มเติมเรื่อง toolchain สำหรับนักพัฒนาและวิธีเริ่มต้น แต่ดูเหมือนลิงก์ Discord/Patreon จะครอบคลุมอยู่บ้าง ถ้าชูฟีเจอร์อย่างอินเทอร์เฟซแบบสัมผัสเป็นการรองรับระดับ first-class ก็น่าจะแยกตัวเองจากระบบปฏิบัติการเดสก์ท็อปเดิม ๆ ได้ดียิ่งขึ้น และยังนึกภาพอุปกรณ์ IoT ที่ต้องมี UI ได้ด้วย

    • ใช่เลย ในบรรดาหน้าเว็บดิสโทรสไตล์ยุค 2000 มีหลายแห่งเกินไปที่ซ่อน สกรีนช็อต ไว้ไม่ให้เห็นตั้งแต่หน้าแรก ราวกับอายที่จะโชว์ระบบของตัวเอง
    • toolchain และประสบการณ์สำหรับนักพัฒนาถูกพูดถึงในวิดีโอเล็กน้อย ดูเป็นแนวทางที่ค่อนข้างดีสำหรับให้ผู้ใช้ปรับธีมเดสก์ท็อปของตัวเอง
    • ชุดฟีเจอร์นี้ดูเป็นแพลตฟอร์มที่ค่อนข้างน่าสนใจสำหรับ แอปพลิเคชันแบบ embedded
      ถ้า API จัดการหน้าต่างทำได้ดี ก็น่าจะใช้เป็นระบบควบคุมแบบ embedded ได้สบาย ๆ หากคอมไพล์เป็น WASM ก็น่าจะสร้างเว็บ UI ที่ใช้ระบบหน้าต่างจำลองได้ค่อนข้างดีด้วย
  • ดูเหมือนงานส่วนใหญ่หยุดไปตั้งแต่หลังเดือนเมษายน 2022: https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...

    • คอมมิตหลังปี 2021 ดูเหมือนเป็นการแก้บั๊ก อาจไม่ได้หยุด แต่เป็น สถานะที่โดยรวมเสร็จสมบูรณ์แล้ว ก็ได้
    • เช่นเคย ผมไม่เข้าใจว่าทำไมต้องแสร้งทำเป็นว่านี่จะกลายเป็นผลิตภัณฑ์ที่ใช้งานได้จริง
      คล้ายกับการที่ผมบอกว่าจะสร้างเครื่องบินเจ็ตจัมโบ้เอง ต่อให้ประกอบเครื่องบินปีกสองชั้นแบบหยาบ ๆ ได้ ก็สร้างเครื่องยนต์หรือลำตัวขนาดจริงไม่ได้ และไม่มีช่างซ่อมหรือโรงงาน สุดท้ายก็ไม่มีใครใช้เจ็ตลำนั้นอยู่ดี
  • ชอบโครงสร้างช่วงท้ายของโค้ด boot block ใน assembler
    รูปแบบที่ต่อด้วย times (0x1B4 - ($-$$)) nop, disk_identifier: times 10 db 0, partition_entry_*: times 16 db 0 สี่รายการ และ dw 0xAA55 นั้นสง่างามดี มันแสดงให้เห็นว่าตัวระบุดิสก์และ พาร์ทิชัน MBR แบบคลาสสิก 4 รายการ อยู่ร่วมกับโค้ดบูตภายใน 512 ไบต์แรกได้อย่างไร โครงสร้างนี้ตั้งสมมติฐานว่าหลังจากคัดลอก boot block ลงดิสก์แล้ว โปรแกรมภายนอก เช่นเครื่องมืออย่าง fdisk จะเป็นผู้ตั้งค่าพาร์ทิชัน ผมดูโค้ด boot block มาเยอะ แต่เพิ่งเคยเห็นการจัดแบบนี้ครั้งแรก

    • ทำให้นึกถึง ความสง่างาม ความเรียบง่าย และประสิทธิภาพ ที่เรากำลังพลาดไปเพราะการแข่งขันด้านระบบปฏิบัติการที่จำกัด
    • ทำให้ต้องรีบตรวจสอบอีกครั้งว่านี่เป็นโปรเจกต์ของ Justine Tunney ที่ทั้งดูบ้าบอและอัจฉริยะหรือเปล่า
  • อยากให้ระบบปฏิบัติการแบบนี้มีที่ยืนสำหรับคนที่ไม่ต้องการ ความเข้ากันได้ย้อนหลัง สารพัดอย่างของ Linux และฟีเจอร์ฝั่งเซิร์ฟเวอร์ อีกทั้งยังอยากหลีกเลี่ยง Microsoft หรือ Apple
    อยากได้อะไรที่คล้าย ChromeOS แต่ไม่ถูกปิดล็อกขนาดนั้น

    • ถ้าเป็นรูปแบบที่มี การออกแบบความปลอดภัยแบบอิงสิทธิ์ ที่เป็นมิตรต่อผู้ใช้ เพื่อไม่ให้แอปที่ดาวน์โหลดจากอินเทอร์เน็ตขโมยข้อมูลรับรองและเอกสารของผมได้ ผมอยากเห็นจริง ๆ
      ทั้งที่นี่เป็นปัญหาใหญ่ที่สุดอย่างหนึ่งที่ผู้คนเผชิญในปัจจุบัน แต่เท่าที่ผมรู้ ดูแทบไม่มีความสนใจอย่างจริงจังที่จะลองแนวทางใหม่ในระดับระบบปฏิบัติการเลย
    • ผมคิดและสร้างสิ่งแบบนี้มาหลายปีแล้ว แต่เรื่องชีวิตประจำวันมักได้ความสำคัญก่อนเสมอ
      ถ้ามี โมเดลธุรกิจ ที่เป็นไปได้สำหรับระบบปฏิบัติการเพียงอย่างเดียว โดยไม่ต้องพึ่งการขายฮาร์ดแวร์แบบ Apple หรือพึ่งโฆษณาแบบ Android และ Windows ที่กำลังเปลี่ยนไปในทิศทางนั้นมากขึ้นเรื่อย ๆ อะไร ๆ อาจต่างออกไป สักวันถ้าผมเป็นอิสระทางการเงินก็คงทำได้
    • ลองใช้ haiku-os.org ดูก็ได้
    • แล้วตระกูล BSD หรือ 9front ซึ่งเป็น fork ของ Plan 9 ล่ะ คิดว่าอย่างไร?
    • ใน ChromeOS สามารถเพิ่มสภาพแวดล้อม Linux ได้ง่าย ๆ ทุกเมื่อ
  • การ บูตจาก BIOS ถึงเดสก์ท็อปใน 0.7 วินาที น่าประทับใจมาก

    • Intel เคยมีงานนำเสนอเมื่อหลายปีก่อนว่า บนแพลตฟอร์ม embedded พวกเขาทำ การบูต Linux ใน 0.3 วินาที ตั้งแต่จ่ายไฟจนถึง UI ที่โต้ตอบได้เต็มรูปแบบ
      เป็นกรณีสำหรับรถยนต์ และมุ่งไปที่สถานการณ์ที่ต้องใช้งานฟังก์ชันอย่าง infotainment หรือแผงหน้าปัดได้ทันทีหลังจากเปิดไฟเลี้ยงอุปกรณ์
  • เคยสงสัยว่าระบบปฏิบัติการวาด GUI คุณภาพสูงอย่างไร
    ในการพัฒนาแบบ bare metal เคยลองวาดกราฟิกง่าย ๆ ด้วย linear framebuffer มาแล้ว แต่ก็ยังสงสัยว่าใน UI แบบนี้หรือหน้าจอแบบ Windows ภาพที่แทนองค์ประกอบ UI ถูกสร้างขึ้นมาอย่างไร ไม่เห็นไฟล์ PNG สำหรับขอบหน้าต่าง แต่เห็นโค้ดที่ตั้งค่าสีพิกเซลให้เข้ากับธีม เลยสงสัยว่าโดยปกติองค์ประกอบ UI ของระบบปฏิบัติการไม่ได้ทำในโปรแกรมแก้ไขภาพแล้วนำมา tile แต่เป็นการ วาดด้วยโปรแกรม ใช่ไหม

    • ทุกวันนี้แทบจะเป็น เวกเตอร์กราฟิก เสมอ สมัยก่อนใช้บิตแมปแบบง่าย ๆ และระบบปฏิบัติการนี้ก็ใช้เวกเตอร์กราฟิกเป็นพิเศษ
    • ถ้าสร้างตั้งแต่ต้น ไฟล์ PNG อาจซับซ้อนกว่าเสียอีกเพราะต้องถอดรหัส
      ในทางกลับกัน หากมี drawing API ก็จะ map การเข้ารหัสเวกเตอร์กราฟิก ในรูปแบบที่เรียกคำสั่งวาดที่สอดคล้องกันได้ง่ายกว่า พร้อมกันนั้นยังแก้ปัญหาการปรับขนาดได้ด้วย และ asset แบบเวกเตอร์กราฟิกโดยทั่วไปใช้พื้นที่น้อยกว่ามาก
    • ในลิงก์ข้างต้นก็ระบุไว้ว่าส่วนติดต่อผู้ใช้เป็นแบบ อิงเวกเตอร์ ทั้งหมด
      ดังนั้นให้มองว่าเป็นคำอธิบายว่าจะวาด UI อย่างไร แทนที่จะใช้ภาพ raster
    • ทุกวันนี้โดยมากอิง OpenGL shader ที่ใช้ hardware acceleration
    • ถ้าเผื่อพลาดแนวคิดนี้ไป นี่อาจเป็นแหล่งอ้างอิงได้: https://en.wikipedia.org/wiki/Vector_graphics
  • บทความที่เกี่ยวข้อง: Essence: Desktop operating system built from scratch - https://news.ycombinator.com/item?id=29950740 - มกราคม 2022, 290 ความคิดเห็น

  • ปกติความพยายามทำระบบปฏิบัติการใหม่มักดูไม่สมจริงแบบ พยายามต้มทั้งมหาสมุทร เกินไป แต่อันนี้ชอบ ดูมีความเป็นไปได้ทันที
    ถ้าจะให้คำแนะนำ อย่างแรกคือถ้าเพิ่ม virtualization ตั้งแต่เนิ่น ๆ ก็จะรันระบบปฏิบัติการอื่นและแอปที่คุ้นเคยได้ ในระยะยาวอาจสำรวจ virtualization ที่ลื่นไหลคล้าย Parallels Coherence เพื่อให้รันแอปภายนอกบนระบบปฏิบัติการโฮสต์นั้นได้ และอาจเป็นวิธีแก้ระยะสั้นถึงกลางสำหรับปัญหา “ไม่มีแอป” ที่มักรบกวนระบบปฏิบัติการใหม่ อย่างที่สอง ควรจำกัดขอบเขตการรองรับฮาร์ดแวร์ไว้ที่แพลตฟอร์มเป้าหมายไม่กี่อย่าง เช่น ผู้ผลิตแล็ปท็อปสาย Linux อย่าง System76, Framework และ Raspberry Pi อย่างที่สาม หากพิจารณาวิธีนำไดรเวอร์ของ Linux หรือ BSD มาใช้ผ่าน API ที่เข้ากันได้ ก็อาจรับมือกับอุปกรณ์อย่างการ์ด Wi‑Fi ที่ขึ้นชื่อว่ารองรับยากได้

  • ถ้าดูหน้าเว็บของ nakst ผู้เขียน Essence https://nakst.gitlab.io/ จะเห็นข้อความนี้
    nakst's webpage // This site works best with JavaScript disabled ช่างเป็นคนยอดเยี่ยมจริง ๆ

    • อ้อ เป็นคนที่ทำ gdb frontend gf ด้วยนี่เอง: https://github.com/nakst/gf
      โลกแคบจริง ๆ