Essence: ระบบปฏิบัติการเดสก์ท็อปที่สร้างขึ้นใหม่ตั้งแต่ต้นเพื่อการควบคุมและความเรียบง่าย
(nakst.gitlab.io)- โครงการ ระบบปฏิบัติการเดสก์ท็อปแบบฟูลสแตก ที่สร้างเคอร์เนล ไดรเวอร์ แอปพลิเคชัน และองค์ประกอบเดสก์ท็อปร่วมกัน โดยครอบคลุมกว้างกว่าการทดลองเคอร์เนลแบบเรียบง่าย
- เริ่มทดสอบได้ผ่าน nightly build ของ
Essence.tar.xz,Essence.ovaสำหรับ VirtualBox และคำสั่งรัน QEMU - บิลด์สาธารณะที่เปิดให้ใช้งานมีให้เฉพาะสำหรับ อีมูเลเตอร์เท่านั้น เพื่อความสะดวกในการทดสอบ ส่วนบิลด์สำหรับฮาร์ดแวร์จริงยังอยู่ระหว่างเตรียมให้ใช้งาน
- ในเคอร์เนลมีองค์ประกอบหลักอย่างตัวจัดการแคชที่ไม่ขึ้นกับระบบไฟล์, ตัวจัดการหน่วยความจำ, สแตกเครือข่าย TCP/IP, ระบบไฟล์เสมือน และตัวจัดการหน้าต่าง
- เดสก์ท็อปมาพร้อมไลบรารี UI แบบกำหนดเอง, ซอฟต์แวร์เวกเตอร์เรนเดอเรอร์, หน้าต่างแบบแท็บ และ การเรนเดอร์ข้อความหลายภาษา บน FreeType·Harfbuzz
เส้นทางการรันและการมีส่วนร่วม
- Essence เป็นโครงการ ระบบปฏิบัติการ และมีวิดีโอเดโมการรันบนฮาร์ดแวร์จริง ณ เดือนตุลาคม 2021
- ช่องทางสนทนาแยกเป็นเซิร์ฟเวอร์ Discord และฟอรัม
- Discord: https://discord.gg/skeP9ZGDK8
- ฟอรัม: https://essence.handmade.network/forums
- การสนับสนุนการพัฒนาสามารถทำได้ผ่าน Patreon และ Essence เป็นโครงการที่ได้รับ 2021 Icculus Microgrant
- Patreon: https://www.patreon.com/nakst
- Icculus Microgrant: https://icculus.org/microgrant/
การทดสอบและการบิลด์
- 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตอนแรกคิดว่าเป็นดิสโทร Linux อีกตัวที่ใส่ตัวจัดการหน้าต่างแบบปรับแต่งเองทับเข้าไป แต่จริง ๆ แล้วเป็น ระบบปฏิบัติการของตัวเอง
มีแม้กระทั่งเคอร์เนลที่ทำเอง และสร้างขึ้นมาจากศูนย์จริง ๆ โปรเจกต์ที่สร้างระบบปฏิบัติการหรือเบราว์เซอร์ตั้งแต่ต้น แม้อาจไม่ได้ถูกใช้แพร่หลายในวงกว้าง ก็มีคุณค่าสูงมาก และอยากปรบมือให้เหล่านักพัฒนา
ดิสโทรอื่น ๆ ก็ทุ่มเทกันมากเช่นกัน แต่ผมชอบเป็นพิเศษเวลาที่แอป KDE ต่าง ๆ เข้ากันได้ดีเหมือนเป็นแอปพื้นฐานของระบบปฏิบัติการหนึ่งเดียว ในทางกลับกัน Windows แทบไม่มีความเป็นเอกภาพแบบนี้เลย มีแนวทางเก่า ๆ ปะปนกัน ทำให้แอปหลักขาดความสอดคล้อง และยิ่งดูเหมือนระบบปฏิบัติการ Linux ที่ถูกปะติดปะต่อมากขึ้นเรื่อย ๆ ถ้า Microsoft ไม่ปล่อยให้ทีมการตลาดมากำหนดทิศทางของ Windows แล้วหันไปมุ่งขัดเกลาระบบปฏิบัติการแทน ก็น่าจะกลายเป็นผลิตภัณฑ์ที่ยอดเยี่ยมอย่างมหาศาล
Essence สร้างขึ้นตั้งแต่ต้น และค่อนข้างน่าประทับใจตรงที่มี UI ที่สะอาดตาแต่ก็ “ไม่เหมือน Linux” ต่างจากกรณีที่เอารูปลักษณ์ที่ดูดีและเป็นมิตรมาครอบทับดิสโทรเดิม ๆ นี่ดูเป็นแนวทางที่พบได้น้อยกว่ามาก และอาจตามรอย ChromeOS ได้ก็เป็นได้
หน้า Landing Page ทำได้ยอดเยี่ยมจริง ๆ บอกข้อมูลแทบทั้งหมดที่อยากรู้ได้ทันที
มีสกรีนช็อตสวย ๆ รองรับฮาร์ดแวร์กินไฟต่ำ บูตได้ด้วยพื้นที่เก็บข้อมูลน้อยกว่า 30MB และ RAM น้อยกว่านั้นอีก ไม่มีงานเบื้องหลัง ประสิทธิภาพดีเยี่ยม เปิดโค้ดภายใต้ไลเซนส์ MIT และยังมีวิดีโอเดโมด้วย ผมนึกถึงการใช้งานหลายอย่างที่จะได้รับความนิยมได้ทันทีในพื้นที่ที่ระบบปฏิบัติการเดสก์ท็อปกระแสหลักดูแลได้ไม่ดีนัก ยังอยากรู้เพิ่มเติมเรื่อง toolchain สำหรับนักพัฒนาและวิธีเริ่มต้น แต่ดูเหมือนลิงก์ Discord/Patreon จะครอบคลุมอยู่บ้าง ถ้าชูฟีเจอร์อย่างอินเทอร์เฟซแบบสัมผัสเป็นการรองรับระดับ first-class ก็น่าจะแยกตัวเองจากระบบปฏิบัติการเดสก์ท็อปเดิม ๆ ได้ดียิ่งขึ้น และยังนึกภาพอุปกรณ์ IoT ที่ต้องมี UI ได้ด้วย
ถ้า API จัดการหน้าต่างทำได้ดี ก็น่าจะใช้เป็นระบบควบคุมแบบ embedded ได้สบาย ๆ หากคอมไพล์เป็น WASM ก็น่าจะสร้างเว็บ UI ที่ใช้ระบบหน้าต่างจำลองได้ค่อนข้างดีด้วย
ดูเหมือนงานส่วนใหญ่หยุดไปตั้งแต่หลังเดือนเมษายน 2022: https://gitlab.com/nakst/essence/-/graphs/master?ref_type=he...
คล้ายกับการที่ผมบอกว่าจะสร้างเครื่องบินเจ็ตจัมโบ้เอง ต่อให้ประกอบเครื่องบินปีกสองชั้นแบบหยาบ ๆ ได้ ก็สร้างเครื่องยนต์หรือลำตัวขนาดจริงไม่ได้ และไม่มีช่างซ่อมหรือโรงงาน สุดท้ายก็ไม่มีใครใช้เจ็ตลำนั้นอยู่ดี
ชอบโครงสร้างช่วงท้ายของโค้ด 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 มาเยอะ แต่เพิ่งเคยเห็นการจัดแบบนี้ครั้งแรกอยากให้ระบบปฏิบัติการแบบนี้มีที่ยืนสำหรับคนที่ไม่ต้องการ ความเข้ากันได้ย้อนหลัง สารพัดอย่างของ Linux และฟีเจอร์ฝั่งเซิร์ฟเวอร์ อีกทั้งยังอยากหลีกเลี่ยง Microsoft หรือ Apple
อยากได้อะไรที่คล้าย ChromeOS แต่ไม่ถูกปิดล็อกขนาดนั้น
ทั้งที่นี่เป็นปัญหาใหญ่ที่สุดอย่างหนึ่งที่ผู้คนเผชิญในปัจจุบัน แต่เท่าที่ผมรู้ ดูแทบไม่มีความสนใจอย่างจริงจังที่จะลองแนวทางใหม่ในระดับระบบปฏิบัติการเลย
ถ้ามี โมเดลธุรกิจ ที่เป็นไปได้สำหรับระบบปฏิบัติการเพียงอย่างเดียว โดยไม่ต้องพึ่งการขายฮาร์ดแวร์แบบ Apple หรือพึ่งโฆษณาแบบ Android และ Windows ที่กำลังเปลี่ยนไปในทิศทางนั้นมากขึ้นเรื่อย ๆ อะไร ๆ อาจต่างออกไป สักวันถ้าผมเป็นอิสระทางการเงินก็คงทำได้
การ บูตจาก BIOS ถึงเดสก์ท็อปใน 0.7 วินาที น่าประทับใจมาก
เป็นกรณีสำหรับรถยนต์ และมุ่งไปที่สถานการณ์ที่ต้องใช้งานฟังก์ชันอย่าง infotainment หรือแผงหน้าปัดได้ทันทีหลังจากเปิดไฟเลี้ยงอุปกรณ์
เคยสงสัยว่าระบบปฏิบัติการวาด GUI คุณภาพสูงอย่างไร
ในการพัฒนาแบบ bare metal เคยลองวาดกราฟิกง่าย ๆ ด้วย linear framebuffer มาแล้ว แต่ก็ยังสงสัยว่าใน UI แบบนี้หรือหน้าจอแบบ Windows ภาพที่แทนองค์ประกอบ UI ถูกสร้างขึ้นมาอย่างไร ไม่เห็นไฟล์ PNG สำหรับขอบหน้าต่าง แต่เห็นโค้ดที่ตั้งค่าสีพิกเซลให้เข้ากับธีม เลยสงสัยว่าโดยปกติองค์ประกอบ UI ของระบบปฏิบัติการไม่ได้ทำในโปรแกรมแก้ไขภาพแล้วนำมา tile แต่เป็นการ วาดด้วยโปรแกรม ใช่ไหม
ในทางกลับกัน หากมี drawing API ก็จะ map การเข้ารหัสเวกเตอร์กราฟิก ในรูปแบบที่เรียกคำสั่งวาดที่สอดคล้องกันได้ง่ายกว่า พร้อมกันนั้นยังแก้ปัญหาการปรับขนาดได้ด้วย และ asset แบบเวกเตอร์กราฟิกโดยทั่วไปใช้พื้นที่น้อยกว่ามาก
ดังนั้นให้มองว่าเป็นคำอธิบายว่าจะวาด UI อย่างไร แทนที่จะใช้ภาพ raster
บทความที่เกี่ยวข้อง: 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ช่างเป็นคนยอดเยี่ยมจริง ๆโลกแคบจริง ๆ