Giter Site home page Giter Site logo

puavo-org / puavo-os Goto Github PK

View Code? Open in Web Editor NEW
12.0 12.0 7.0 99.72 MB

Puavo OS is an disk image based operating system that is built from Debian GNU/Linux and is specifically designed for learning.

Home Page: https://puavo.org

License: GNU General Public License v2.0

Makefile 4.77% Ruby 12.67% C 3.03% Shell 22.46% Python 16.59% Perl 0.19% HTML 0.57% JavaScript 31.34% CSS 1.98% Puppet 3.60% Roff 0.42% Lua 0.01% Tcl 2.36% Scheme 0.03%
debian image learning linux schools opinsys

puavo-os's Introduction

Puavo OS

To build images with these sources, your build environment should be a Debian GNU/Linux installation. To build images with "Bullseye"-version, use the "bullseye"-branch. To build images with "Bookworm"-version, use the "bookworm"-branch. The build host should probably be of the same version your target image is. As of May 2024, our main production version is Bullseye and Bookworm is under active development.

After cloning the repository, you should also update submodules (unless the repository was cloned with parameter --recursive):

git submodule init
git submodule update

To setup build host, run (with sudo or as root):

sudo make setup-buildhost

To build Puavo OS image, run:

make rootfs-debootstrap
make rootfs-update
make rootfs-image

After successful build, the built image can be found by default from /srv/puavo-os-images

Run make help to get help.

Note: As the build process scouts some parameters from the runtime environment, building it under a puavo-os session might require some manual steps not yet documented here. Building in e.g. a fresh Debian Bullseye virtual machine works with the steps listed above. Due to build process using a ramdisk /tmp, the virtual machine should have at least 16 GB of RAM for successful build.

Using Puavo OS images

Puavo OS image is not very useful in itself. Puavo OS is designed to be used with a Puavo Web server, that is used to manage user accounts and devices.

A Puavo OS image can be used to boot a system with PXE in case a suitably configured network boot server is available. To install a host with a removable drive, a separate installation image is required. You can try using puavo-make-install-disk to create one, or simply check out https://puavo.org for some example installation images.

An installation image can be booted in "live"-mode to test hardware compatibility with Puavo OS. When booted in "normal" boot mode, an installation should be performed. To install, a login to a Puavo Server is required to make it possible to manage the host. In case a Puavo Server is not available, the instructions in https://github.com/puavo-org/puavo-standalone can be followed to setup a test server. Do not use the test server in production before understanding how it works and setting up passwords properly.

The "config"-directory

The "config"-directory contains various configurations for the image.

The file "config/rootca.pem" is a CA-certificate that will be copied to image "/etc/puavo-image/rootca.pem" at image build time. The default file is compatible with the CA-infrastructure set up by Opinsys, the company behind Puavo, BUT if you are running Puavo on your own, non-Opinsys infrastructure, you should replace that with your own CA-certificate.

The values in "config/puavo_conf.json" override default values for puavo-conf variables.

Copyright

Almost all files here are copyright (C) Opinsys Oy. They are licensed under GPLv2+, that is, either version 2 of the GPL License, or (at your option) any later version.

The exceptions to that are most files under rules/gnome_shell_extensions, which are subject to copyright and license terms specified on the extension files themselves. Also, the "jetpipe"-script is taken from The LTSP Project files, and is copyright by Canonical Ltd. (likewise GPLv2+). The SSL libraries in rules/primus/files are from the OpenSSL Project and are under Apache License Version 2.0.

puavo-os's People

Contributors

0is1 avatar asokero avatar basilstotz avatar bstotz avatar cjoohs avatar eluttine avatar esamattis avatar hannele avatar jarmopi avatar jpkorhonen avatar jplahti avatar juhaerk avatar lacostej avatar lamikae avatar mazhoon avatar miguit avatar niezbop avatar ptoivola avatar sarrchri avatar tuomasjjrasanen avatar vakvak0 avatar vmlintu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puavo-os's Issues

puavo-rest-client fails with NoMethodError

/usr/lib/ruby/vendor_ruby/puavo/rest-client.rb:284:in `client': undefined method `with_headers' for #<HTTP::Client:0x00000002df2a58> (NoMethodError)
    from /usr/lib/ruby/vendor_ruby/puavo/rest-client.rb:237:in `do_request'
    from /usr/lib/ruby/vendor_ruby/puavo/rest-client.rb:219:in `block (3 levels) in <class:PuavoRestClient>'
    from /usr/lib/ruby/vendor_ruby/puavo/rest-client.rb:200:in `each'
    from /usr/lib/ruby/vendor_ruby/puavo/rest-client.rb:200:in `block (2 levels) in <class:PuavoRestClient>'
    from /usr/sbin/puavo-rest-client:177:in `puavo_rest_client_cli'
    from /usr/sbin/puavo-rest-client:193:in `<main>'

Registration fails with jessie's libssl1.0.0

CSR sent by the client generates the following error at the CA server:

OpenSSL::X509::RequestError (nested asn1 error):
app/models/certificate.rb:12:in `initialize'
app/models/certificate.rb:12:in `new'
app/models/certificate.rb:12:in `sign_certificate'
app/controllers/certificates_controller.rb:68:in `block in create'
app/controllers/certificates_controller.rb:67:in `create'

And hence it fails to create and return a signed certificate.

If libssl1.0.0 is downgraded to 1.0.1e-2+deb7u20, registration works as expected.

Select display manager

Previously we have used LightDM with Unity Greeter but as it is not available at Debian we might have to consider alternatives.

Current features at the login screen include:

  • ui element (currently at the panel) with options to 1. allow remote access, 2. clock, 3. shutdown (reboot, poweroff, suspend), 4. open virtual keyboard (needed for touch screen and virtual whiteboards), 5. choose network connection (wifi/ethernet), 6. view battery status (on laptops), choose keyboard layout (finnish, russian, dvorak, arabic...)
  • possibility to enter your username and password by typing
  • on personal devices/laptops possibility to select username from a list of people who have previously used the computer (owner of the computer as a default)
  • possibility to log in as a guest (this can be set on and off)
  • information about: device type, device hostname, system version

Login screen is an UI element that typically everyone see during the day. Therefore it should be considered that:

  • It would look aesthetically good
  • Would be a good place for sharing mutual information

Possible alternatives include

  • Lightdm with a different greeter (Webkit, razor-qt, kdm, gtk..)
  • GDM3
  • Packaging Unity greeter for Debian

Fatclient login fails

lightdm pam stack exits with the following error:

/usr/lib/puavo-ltsp-client/pam/open-session failed: exit code 98

This is because puavo-rest-client fails.

Mediate configuration queries to a daemon if it is running

Currently, configuration database is only accessible by root and only for a one caller at a time. However, it should be possible to make multiple parameter queries simultaneously and also by desktop session users.

From an application programmer's point of view, everything should be hidden behind existing configuration interfaces (libpuavoconf, puavo/conf -Ruby module and puavo-conf command).

Puavo-wlanap fails to start hostapd

hostapd outputs the following error message:

iapp_init - bind[UDP]: Address already in use
iapp_deinit - setsockopt[UDP,IP_DEL_MEMBERSHIP]: Cannot assign requested address
IEEE 802.11F (IAPP) initialization failed.

Lightdm greeter starts unreliably

In some cases, according to strace -p, /usr/bin/xinit seems to sleep forever after forking a child (child becomes defunct) and hence blocks /usr/lib/puavo-ltsp-client/xinitrc which is used as a display setup script for lightdm.

This bug was noticed on a relatively slow machine, Shuttle SFM27 (Intel Atom).

Fix autopilot

The priority use for autopilot in production systems is to test the system functionality with smoketest to make sure that on network booting devices

  • pxe boot works normally
  • login works normally

Autopilot is launched from the bootserver and it creates a new virtual device, boots it with pxe and logs in. After login it reports about successful login, logs out and removes the created device and test user.

Autopilot can also be used for stress testing system or hardware.

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.