4 पॉइंट द्वारा GN⁺ 2025-04-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • RetrOS-32 i386 आर्किटेक्चर पर केंद्रित एक पूरी तरह custom 32-bit hobby operating system है, जिसमें graphics, multitasking और networking शामिल हैं
  • kernel, utilities और build system C और Assembly में लिखे गए हैं, जबकि user-space applications C++ में लिखे गए हैं, और build के लिए Make तथा Docker का उपयोग होता है
  • tested real hardware में Lenovo x240, Asus Eee PC series, Dell Optiplex 780, Samsung N150 Plus, Samsung NP-NC10, और IBM Thinkpad a21p शामिल हैं
  • run करने के तरीके QEMU, copy.sh का v86, और real hardware boot को support करते हैं; real device पर .iso file को USB या CD पर burn करके GRUB ISO के साथ चलाया जाता है
  • roadmap में bootloader, preemptive multithread scheduling, filesystem, graphical window manager, network stack, user-space threads, और TCP remote virtual terminal जैसे implementation-complete items सूचीबद्ध हैं

RetrOS-32 अवलोकन

  • RetrOS-32 i386 आर्किटेक्चर पर केंद्रित 32-bit hobby operating system project है
  • project description इसे graphics, multitasking और networking वाले 32-bit hobby operating system के रूप में बताती है
  • शुरुआत की तारीख 12 मई 2022 दी गई है
  • project page Project OSHub page पर उपलब्ध है

लॉगिन और उपयोगकर्ता

  • default users system, admin, guest ये 3 हैं
  • admin का password admin है, और guest का कोई password नहीं है
  • अभी admin और guest के बीच कोई अंतर नहीं है
  • user को admin create <username> <password> command से बनाया जा सकता है

implementation language और build configuration

  • kernel, utilities, और build system C और Assembly में लिखे गए हैं
  • user-space applications C++ में लिखे गए हैं
  • compilation के लिए Make का उपयोग होता है
  • cross-platform compilation के लिए Docker का उपयोग होता है

tested hardware

  • tested real hardware की सूची इस प्रकार है
    • Lenovo x240
    • Asus Eee PC series
    • Dell Optiplex 780
    • Samsung N150 Plus
    • Samsung NP-NC10
    • IBM Thinkpad a21p

build और run करने का तरीका

  • cross-platform environment में image file compile करने के लिए Docker और emulation के लिए QEMU चाहिए
  • native compilation dependencies platform के अनुसार अलग हैं
    • MacOS: i386-elf-gcc, i386-elf-ld, i386-elf-g++
    • Linux / WSL Ubuntu: build-essential, gcc-multilib
    • अगर GRUB को bootloader के रूप में इस्तेमाल करना हो तो grub2, xorriso, xxd भी चाहिए
  • Linux पर repository clone, ./debian.sh, Git submodule initialization, make compile, make img, make qemu के क्रम में build और run किया जाता है
  • MacOS पर build tools 32-bit x86 code पर निर्भर होने के कारण अभी native compilation संभव नहीं है, इसलिए Docker सबसे सरल तरीका है
  • Windows पर Docker या WSL का उपयोग किया जाता है
  • run करने के तीन तरीके हैं
    • copy.sh v86 में .img file को hard disk image के रूप में upload करना
    • QEMU में make qemu या qemu-system-i386 <image name> चलाना
    • real hardware में .iso file को USB या CD पर burn करके GRUB ISO का उपयोग करना

project structure

  • repository structure kernel, drivers, graphics, network, filesystem, libraries, user-space apps, tests, और tools directories में बंटी हुई है
  • boot में custom bootloader और multiboot.ld है
  • kernel में मुख्य kernel source, architecture-specific code, और kernel thread code है
  • apps में user-space applications और libcore.a, libgraphic.a, libnet.a हैं
  • net में networking code है, और fs में filesystem से जुड़ा code है
  • tools में build tools और scripts शामिल हैं

implemented items और बाकी काम

  • boot से जुड़े items में custom bootloader, GRUB compatibility, और Stage 2 bootloader पूरा हो चुका है
  • kernel और system features में निम्न शामिल हैं
    • multithread preemptive scheduling
    • GDT और TSS आधारित kernel/user-space separation
    • interrupt handling
    • IPC
    • system calls
    • user-space threads
  • drivers और hardware features में PS/2 keyboard/mouse, PIT, VESA 640x480x8, RTC, Serial, E1000, PCI शामिल हैं
  • filesystem और storage features में ATA IDE driver, Ext2-जैसा filesystem, FAT16, और read/write पूरे हो चुके हैं
    • FAT16 अधिकतम 32MB file को support करता है
    • Atapi अभी अधूरा है
  • memory features में 32-bit virtual memory, kernel kalloc/kfree, और user-space malloc/free शामिल हैं
  • graphics features में window manager, GFXLib, double framebuffer rendering, mouse events, dynamic resize, fullscreen, और widget library शामिल हैं
    • Custom HTML to Widgets अभी अधूरा है
  • network stack में Ethernet, IP, ARP, UDP, Socket API, Loopback interface, DHCP, DNS, TCP, और netcat-style commands पूरे हो चुके हैं
    • Webserver, FTP, IRC, SSH, Telnet, HTTP, HTML अभी अधूरे हैं
  • applications और tools में terminal, window server, process info, Finder, C compiler/bytecode interpreter, bytecode execution के लिए custom VM, syntax-highlighting editor, calculator, 3D game, text-mode Snake game, TCP remote virtual terminal, और LZ compression library शामिल हैं
  • proposed features और known issues की पूरी सूची open issues में है

license और project links

1 टिप्पणियां

 
GN⁺ 2025-04-27
Hacker News टिप्पणियाँ
  • ऐसे प्रोजेक्ट फीके AI से कहीं ज़्यादा अच्छे लगते हैं। शायद यह बिकने वाली चीज़ न हो, लेकिन यह एक तकनीकी व्यक्ति को अपनी skills रचनात्मक तरीके से दिखाते हुए दिखाता है
    मैंने अपने late teens में hobby OS development काफी पढ़ा था, वह वाकई शानदार था, और आज भी कभी-कभी छोटे kernel बनाकर देखता हूँ। आख़िरी वाला एक छोटा RISC-V kernel था जो मेरे partner के लिए message print करता था

    • बेचने या marketing की चिंता न करनी पड़े, यह सच में बहुत आज़ाद करने वाला है। नया idea आने तक wheel को फिर से invent करते रहो
    • AI को सामूहिक रूप से “फीका” कहना अजीब है। जब तक इसे smart user experience के रूप में package नहीं किया गया था, यह लगभग पैसा न कमाने वाली academic exploration, यानी कारीगरी जैसा काम ही था
    • यह ऐसा सुनाई देता है जैसे एक छोटी hobby device मानव इतिहास की सबसे बेतुकी technology से कहीं ज़्यादा दिलचस्प हो
  • default system font का कोई ज़्यादा narrow variant होता तो अच्छा होता। उससे system बहुत ज़्यादा polished लगेगा, और कई जगहों पर अक्षरों को horizontal space की ज़्यादा ज़रूरत भी दिखती है
    हर character की width घटानी चाहिए और character spacing भी जितनी हो सके उतनी कम करनी चाहिए। अभी जो font size और resolution इस्तेमाल हो रहा है, उसमें 1-pixel spacing काफी लगती है
    मुझे font system की ज़्यादा जानकारी नहीं है, लेकिन मैंने मान लिया कि यह fixed-width bitmap font है। अगर codebase में बदलना बहुत मुश्किल हो तो ध्यान न दें
    मैं भी कुछ समय से एक web OS site scratch से बना रहा हूँ, और हाल ही में पूरी font class फिर से लिखी है, इसलिए यह हिस्सा खास तौर पर नज़र आ रहा है

    • सहमत हूँ कि मौजूदा font काफी optimized नहीं है। शुरुआत में सबसे पहले जो initial font चलाया था, लगभग वही अभी भी इस्तेमाल कर रहा हूँ
      proper font rendering भी देखी है और वह todo list में है, लेकिन लगातार टालता रहा हूँ
    • माहौल तो काफी सख्त है
      “मैंने operating system बनाया!”
      “हम्म, font अच्छा नहीं है”
      यही तो HN की पराकाष्ठा लगती है
  • शानदार। अगर आज फिर से शुरू करते, तो क्या अलग करते, यह जानने की उत्सुकता है
    low-level हिस्सों के लिए आपको कौन-सी language उपयुक्त लगती है, यह भी जानना चाहूँगा। जैसे C पर टिके रहेंगे, C++ का कोई simple subset इस्तेमाल करेंगे, या कोई newer language consider करेंगे
    resources तो बहुत हैं, लेकिन दूसरों का code copy करने के बजाय project को लगातार interesting कैसे रखा, यह भी जानना चाहूँगा

    • सबसे बड़ा बदलाव planning करना होगा। शुरुआत में लक्ष्य सिर्फ एक basic hello world OS बनाना था, लेकिन लगातार नए features जोड़ते हुए और एक साथ कई चीज़ों पर काम करते हुए ऐसा technical debt बन गया जिसे अभी भी चुका रहा हूँ
      शायद UNIX dependency भी कम करने की कोशिश करता
      language के मामले में basic syntax और सीधे core पर जाने वाले style की वजह से C पसंद है। user-space applications के लिए दूसरी languages consider कर सकता हूँ
      शुरू से ही सब कुछ खुद लिखना चाहता था, और software port न करना project का core था। कुल मिलाकर “code नहीं, ideas copy करो” वाला rule follow किया
  • 1977 में Commodore PET 2001 इस्तेमाल करने वाले व्यक्ति के नज़रिए से भी यह वाकई शानदार है। KolibriOS और MenuetOSx64 के साथ प्रयोग कर रहा था, और अब खुद OS बनाने का मन हो रहा है। यह कर दिखाना कमाल है

  • project सच में impressive है और बधाई देना चाहता हूँ। teenage years से OS development पसंद रहा है, और ऐसी achievement को सच में implement होते देखना अच्छा लगता है
    graphics subsystem कैसे initialize होता है, यह भी थोड़ा जानने की उत्सुकता है। शुभकामनाएँ

  • काश मैं भी ऐसे passion project के लिए समय निकाल पाता
    practicality भूलकर, go-to-market strategy भूलकर, product-market fit भूलकर, बस बनाना और सीखना

    • सच में “इस्तेमाल होगा या नहीं” या market के बारे में न सोचना बहुत refreshing है। यह पूरी तरह fun और learning के लिए काम है
    • उत्सुक हूँ कि आप समय क्यों नहीं निकाल पाते। बचपन से hobby projects न होते तो शायद मैं काफी भटक गया होता
      उनमें से एक toy OS था, लेकिन low-level OS development असली job बन गई तो वह project रुक गया
  • मैं इस field में दशकों से हूँ और OS development सीखने की कोशिश कर रहा हूँ। FASM, NASM, FASM-G कुछ हद तक जानता हूँ
    लेकिन assembler program के output को study करके समझना चाहता हूँ कि OS binary level पर सच में कैसे काम करता है
    क्या आपने किसी specific architecture के instruction codes सीखे, device driver programs कैसे किए, और क्या आप खुद OS develop करने के steps summarize कर सकते हैं, यह जानना चाहूँगा

    • सीखने के लिए सबसे अच्छी जगह osdev forum और osdev wiki लगती है। शुरू करने के लिए वहाँ बहुत useful resources हैं
      कुछ tutorials भी हैं, लेकिन उनमें अक्सर bugs होते हैं और अंत में उनके OS को फिर से बनाने जैसा हो जाना आसान है
      instruction codes में इतना गहराई तक नहीं गया; C compiler बनाते समय जितना देखा, उतना ही, इसलिए बस सबसे common basic instructions जानता हूँ
      https://forum.osdev.org/
      https://wiki.osdev.org/Expanded_Main_Page
  • वाकई शानदार। काश early computing spirit और ज़्यादा लौटे, जब लोग application level से ज़्यादा computer itself से छेड़छाड़ करते थे
    long-term hobby project के रूप में personal computer बनाने के बारे में सोचता रहा हूँ। ऐसा computer जिसमें पूरा software stack खुद बनाया हो, और system में जाने वाले हर bit का source पता हो
    hardware पर उसी level का control रखना मुश्किल होगा, जब तक FPGA से इतना performance न मिल जाए कि सब चला सके, लेकिन कम से कम software तो संभव लगता है
    अब तक यह unrealistically difficult लगता था, लेकिन आपने दिखा दिया कि यह संभव है। लगता है hobby C compiler भी implement कर रहे हैं: https://github.com/joexbayer/C-Compiler

    • यह जानना सच में अच्छा लगता है कि user-space के top से लेकर drivers तक सब कुछ खुद लिखा है। साथ ही यह debugging hell भी है
      C compiler इसी OS के लिए बनाया था और OS के अंदर चलता है। project बहुत बड़ा हो गया था, इसलिए इसे OS repository से अलग करना चाहता था, खासकर क्योंकि यह Linux पर भी चलता है
  • अच्छा होगा अगर आप और समझाएँ कि यह compiler operating system से कैसे interact करता है। खासकर structs जैसी features को कैसे handle करता है, और इस area की current limitations और planned improvements क्या हैं

    • compiler और OS के बीच कोई magical interaction नहीं है। यह बस उसी machine code (i386) में compile करता है और system calls के लिए interrupts का इस्तेमाल करता है
      structs को members के आधार पर size तय होने वाले memory regions की तरह handle करता हूँ, और member access उस region के अंदर offsets से होता है
      अभी limitations काफी हैं, जैसे सिर्फ int और char हैं और switch statement भी नहीं है। standard C से सबसे बड़ा अंतर structs के अंदर functions allow करना, और struct function होने पर struct को implicitly function में pass करना है। ज्यादा details यहाँ देख सकते हैं:
      https://github.com/joexbayer/C-Compiler
  • यहाँ देखे गए passion projects में से काफी समय बाद यह सबसे impressive में से एक है। जानना चाहूँगा कि आपने अपना C compiler इस्तेमाल करने का फैसला क्यों किया

    • मेरा rule था कि सब कुछ खुद लिखना है, और compiler बनाना भी हमेशा मेरे “goals” में से एक था। इसलिए यह naturally fit हो गया