Coder Social home page Coder Social logo

dalalsunil1986 / puppy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from egranata/puppy

0.0 0.0 0.0 32.53 MB

The Puppy Operating System

License: Apache License 2.0

C++ 5.98% Python 0.26% C 76.19% Assembly 2.62% Shell 0.89% Makefile 9.55% M4 1.10% Batchfile 0.01% Emacs Lisp 0.05% Perl 0.27% Objective-C 0.46% Mathematica 0.01% Scala 0.02% GDB 0.01% Perl 6 0.16% TeX 1.00% Roff 1.42% XSLT 0.01% DIGITAL Command Language 0.01% Lex 0.01%

puppy's Introduction

The Puppy Operating System

Welcome to Puppy.

Puppy is an operating system for IBM-compatible computers with 32-bit Intel CPUs (you may have heard of this kind of hardware under the name personal computer).

Development of Puppy has started on January 1st 2018 and the project has been open-source since May 29 2018. Since then, the operating system has grown to provide:

  • preemptive multitasking (but not a preemptive kernel);
  • memory protection;
  • system calls for userspace;
  • FAT32 filesystems;
  • support for actual physical x86 hardware, including ACPI.

Puppy also includes a partial C/C++ standard library (most notably absent is C++ iostream).

Puppy's userspace consists of a mix of custom tools as well as ported open source tools. Notably, there is no full C++ toolchain, but a port of MicroPython is available for scripting.

Future goals and features are covered by https://github.com/egranata/puppy/issues. While I would be very happy to accept input in terms of feature ideas as well as patches (but see below), some things are explicit non-goals, namely:

  • porting to anything other than x86;
  • a GUI (either porting or writing a new one);
  • developing a custom bootloader.

Hardware requirements

Puppy is actively tested on QEMU - and occasionally Bochs.

Assuming a few requirements are met, Puppy should boot and work on an actual PC:

  • PS/2 keyboard;
  • A video card and screen with VBE support and capable of 800x600 or better;
  • Intel CPU from - at least - the early-2000s (*);
  • at least 1GB of RAM (**).

(*) Testing with Bochs suggests that Puppy can boot on something as old as a Pentium Pro, but this is untested on real hardware. Alas, booting on anything older is currently not possible (see egranata#63).

(**) Testing with QEMU suggests that 33MB is the minimum required for Puppy to boot to userspace, but this is untested on real hardware.

If your system has a physical serial port, you should be able to collect kernel logs which might help in diagnosing boot-time issue. I personally use picocom for this purpose, but other tools should work if they're capable of 8N1 115200 operation. Patches to enable customizing the serial port settings at boot would be gladly accepted.

Testing on other virtualizers and/or real hardware is also most welcome.

Software requirements

To compile a Puppy image, you'll want to use Linux (native or in a VM/container; Docker is known to work). Dependencies for compilation are aptly described by build/deps.sh (the script used to setup a CI instance).

Getting started

Assuming you have the proper bits and pieces in place, to compile the project, just type

$ ./build.py

in a shell. This will churn for a while (should be under a minute) and produce a bootable HD image out/os.img.

The HD image includes the kernel, as well as a fairly minimal userspace + suite of tests. It can be used to boot an emulator, or bit-blasted to a real hard disk.

A sample configuration for Bochs and QEMU launcher script can be found in the build directory.

Assuming everything works, booting Puppy ends up with a shell prompt. ls works to start exploring the file-system.

Contributing

Contributions to the project are very welcome.

The issues list (https://github.com/egranata/puppy/issues) is actively maintained with new units of work, and issues that would benefit from help and/or are great starting points are marked as such.

If you would like to try porting userspace software to Puppy, or add drivers for new hardware, that is also welcome - any and all issues you encounter doing this are definitely worth reporting.

In order to expedite your contribution all the way to acceptance, please see CONTRIBUTING.md and follow the instructions therein.

Please be aware that this is not an officially supported Google product.

puppy's People

Contributors

egranata avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.