OSE Linux

From Open Source Ecology
Jump to: navigation, search


HintLightbulb.png Hint: Current issues - Mac Book Pro, Firefox, OSE Linux - video does not work - Failed to Access Camera


HintLightbulb.png Hint: OSE Linux is an Ubuntu 16.04 distribution with all of OSE's software, FreeCAD macros, Cura settings, and Marlin configured for the OSE 3D printer. Releases occur quarterly with updates. OSE_Linux#Requests_and_Notes shows required updates.

What is It?

OSE software stack.

OSE Linux is a freely downloadable operating system that contains all software that is used regularly at OSE. It is run as a Live USB without the user having to modify or upset their usual operating system in any way whatsoever. This provides access to exactly the same software that we use during workshops and other training sessions - to avoid differences in versions common to different operating systems. During our training sessions, we will use OSE Linux ourselves - so your programs will look exactly like ours. This addresses hours of potentially wasted time due to differences in software or software not working.

OSE Linux also addresses the tens of hours that it would potentially take to download and configure all the software and libraries in common use by OSE. Instead, a single install, taking under half hour of dedicated user time after download, is sufficient to download the entire operating system. This is useful in large-scale collaborative processes - where everyone should use the exact same system to promote a seamless experience.

It is a good practice for OSE Developers to download and use the system to avoid software malfunction, improper settings, and in general the time it takes to download or install various software and its extensions, such as additional workbenches in FreeCAD, browser plugins, etc. OSE uses only open source software to produce all of its work product to facilitate interoperability with a large global team of developers.

Please note that OSE uses a lot of custom software - so please save yourself hours of install time and and just download the prepared OSE Linux. We are doing this to make your life easy. Note also that you should not run OSE Linux in a Virtual Machine, as a Virtual Machine will be much slower at computation intensive tasks such as CAD.

OSE Linux can be used by downloading the ISO, and creating a bootable USB stick. Instead of using one's regular operating system, one can choose - upon startup - to run the OSE Linux operating system from a USB stick, without installing it on one's hard drive. Note that currently you can't save files on the Live Linux - so upload any documents to your log, the wiki, or use cloud-documents where data is not saved locally.

OSE Linux at Workshops

For reasons of software uniformity, we like to use OSE Linux. Our experience with prior workshops at OSE which involve software training was that always there was someone who could not run some software properly, or there would be some differences in the software on different platforms. This typically obstructed smooth progress of everyone following along during software training. For this reason, we like to use OSE Linux live, so that everyone has the exact same copy. All that people need to do is to boot from our USB. Once booted, uniform results are pretty much guaranteed. Thus, we begun using OSE Linux in 2017 as a regular practice during OSE workshops - where participants are instructed to either make their own USB at home - or we provide the USB at the OSE site.

Software List

This is a partial list of software that OSE uses:

edit

Download and Install OSE Linux Live ISO

Requirements: ISO image, 4 GB USB stick

v1.0 from 2017

Download the .ISO Image file below. This will then be installed onto a USB flash drive to create a Live USB.

How To Create an OSE Linux USB using Ubunutu

Objective: A bootable USB stick that provides the OSE Live desktop, and will run all the OSE programs without touching any existing locally installed OS on the computer. It's a way to test, and use, the OSE programs (3D design, 2D design, video capture and edit, resource management) and not disturb the current computer setup.

1. Download the ISO (See above for current ISO URL)
2. Burn ISO to USB

   For Setting up the USB stick, follow the instructions How_to:Write_Image_to_SD_Card, 
simply swap the word SD for USB. There are no customizations to be made as they are suggested at the bottom, all is working out of the box.

3. Boot your computer with the USB. See OSE Linux#Getting Started






Here is the video HowTo for Ubuntu 16.04 users, GUI version

http://opensourceecology.org/w/images/2/23/OSE_Live_USB_HowTo.webm


edit

How To Create an OSE Linux USB using Windows

Download Rufus

edit


The links below would help with: Setting up the OSE_OS on a Virtual Machine (using VirtualBox) on a Windows System.
Note that some lag might be experienced with such an installation depending on your system specs and some OpenGL glitches have been reported in the past though they seem currently resolved. If the ability to switch seamlessly from Ubuntu to Windows without having to reboot is essential as an option, it might be worth a try:
Installing Ubuntu inside Windows using VirtualBox
Install Guest Additions to Windows and Linux VMs in VirtualBox
How to Access Folders on Your Host Machine from an Ubuntu Virtual Machine in VirtualBox

How To Create an OSE Linux USB using Mac

How To Create a bootable Open Source Ecology (OSE) Linux USB Stick on Mac OS X - github

How to Create an OSE Linux USB using Mac Guide by Alex Au 2018

Download

Download the latest OSE Linux ISO disk image OSE_Linux#Download_and_Install_OSE_Linux_Live_ISO. Please note there may be two disk images to choose from: a **standard disk image** and a **hybrid disk image** source. The hybrid disk image is preferred.

Insert your USB Stick and determine its device identifier

  1. Insert USB stick
  2. Open a Terminal window
  3. Determine USB stick device ID: `diskutil list`

$ diskutil list
...
/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *16.0 GB    disk3
 

Create a bootable USB Stick from a hybrid disk image

Using a hybrid ISO disk image is by far the simpler approach as you just overwrite the entire USB stick.

  1. Unmount all partitions on device: `diskutil unmountDisk [Device ID]`
  2. Copy ISO: `sudo dd if=[Path to ISO] of=[Device ID] bs=1048576`
    • Press CTRL+T to send a SIGINFO signal to `dd` to track progress source

$ diskutil unmountDisk /dev/disk3
Unmount of all volumes on disk3 was successful
$ sudo dd if=~/Downloads/ose0.3isohybrid.iso of=/dev/disk3 bs=1048576
2142+0 records in
2142+0 records out
2246049792 bytes transferred in 1841.710284 secs (1219546 bytes/sec)
 

The partition is automatically marked as as bootable.

Eject USB Stick: `diskutil eject [Device ID]`


$ diskutil eject /dev/disk3
Disk /dev/disk3 ejected
 

And you're good to go.

Getting Started

Instructions for using OSE Linux for the first time

Booting Up and BIOS Settings

After powering on your computer, but before your normal operating system starts, you can access your boot settings.

Boot target computer from USB Stick

First, configure the BIOS to prioritize booting from a USB drive. In my case, I'm installing on an HP Spectre x360 laptop [1].

  1. Power up HP Spectre x360
  2. Press `F10` to enter the BIOS
  3. Navigate to System Configuration
  4. Select Boot Options
    1. Disable Secure Boot
    2. Enable Legacy Boot
    3. In UEFI Boot Order move USB Diskette to top of list
    4. In Legacy Boot Order move USB Diskette to top of list
    5. Disable 3D Graphic Acceleration
  5. Press `F10` to save changes and exit BIOS

Your system will restart, recognize the USB Stick, and boot its contents.

_For existing Linux systems with a boot manager installed, you may still need to intervene to select an alternative boot option. Press `F9` to enter Boot Options and choose the USB Disk._

Software Tutorials

Testing

We are documenting which systems work successfully for Live boot and/or install of the OSE Linux ISO.

Please document 3 things:

  1. Version of the OSE Linux you are trying to boot and/or install - date or link to the download from above. Note that new versions will be published quarterly. It is impotant to keep notes on the specific version that you are using so there is no confusion on which OSE Linux versions are successful
  2. Hardware you are using, such as Dell Precision M6500 Laptop
  3. Operating system that you are using on your hardware - such as Ubuntu 16.04.

To document this for your system, please go to See ISO to USB Install Notes. The test should verify the following specific usage points, and receive "100% tested and working" condition for the ISO to be considered done (ie, for example, we cannot have the Dimension Drawing Workbench not working in FreeCAD. For the specific usage points that are marked "Not Cricital", they do not count in the grading.

  1. Is the time zone set correctly? (Not critical)
  2. Check.png Does Chromium connect to wireless internet without a problem?
  3. Is the version of Arduino 1.6.8 as the default?
  4. Does Arduino IDE upload sample program to the Mega after selecting the correct board and port under Tools?
  5. Is OSE Marlin available within Arduino?
  6. Can you download a file from Part Library on the wiki and open it in FreeCAD?
  7. Does the Exploded Part Animation workbench create part explosions without crashing?
  8. Do files download to the desktop (so a new user can find files immediately without having to find the Downloads folder in the directory structure)?
  9. Can you upload files to the wiki, such as an image?

Troubleshooting

OSE Linux Development

This section is used by developers making OSE Linux

How To Create the ISO File Using Ubuntu

We are using the customizer by kamilion:
https://github.com/kamilion/customizer/wiki/First-guide
however, there is a problem with the iso creation process: we need to modify the source code, as the kernel download will otherwise fail and disturb the creation of the iso. This has of course to be done before the compiling into a deb file. For that, we have to edit:
/{Unzipped Master}/src/actions/rebuild.py go to the line

   detect_boot()

and look under it, there should be a line going like

   if config.KERNEL is not default

comment that out (with #) until next else (including the else) and then correct the intendation (as python is very sensitive to that), meaning everything to the next empty line has to be moved left one 4 whitespaces. In the end, it should look like this:

       #if config.KERNEL is not "default" or None:
       #    misc.chroot_exec(('apt-get', 'install', '--yes', \
       #        config.KERNEL, '-q'))
       #else:  # use the kernel the user specified in the config.
       if arch is not "amd64":  # then use the 32bit 'linux-image-generic'
           misc.chroot_exec(('apt-get', 'install', '--yes', \
               'linux-image-generic', '-q'))
       else:  # use the amd64 'linux-signed-generic' for uEFI
           misc.chroot_exec(('apt-get', 'install', '--yes', \
               'linux-signed-generic', '-q'))



for starting the software just type into a console:

   sudo customizer-gui

There most of the things are pretty self-explainatory or described on the github page, we will be using the chroot console to setup our iso. The following commands will setup the system:
Basic Installation of programs

   echo "deb http://us.archive.ubuntu.com/ubuntu xenial main universe" >> /etc/apt/sources.list
   echo "deb http://us.archive.ubuntu.com/ubuntu xenial main multiverse" >> /etc/apt/sources.list
   dpkg --add-architecture i386
   add-apt-repository ppa:freecad-maintainers/freecad-stable -y
   add-apt-repository ppa:freecad-community/ppa -y
   add-apt-repository ppa:thopiekar/cura -y
   add-apt-repository ppa:maarten-baert/simplescreenrecorder -y
   add-apt-repository ppa:js-reynaud/kicad-4 -y
   add-apt-repository ppa:webupd8team/brackets -y
   add-apt-repository ppa:freecad-maintainers/freecad-daily -y
   add-apt-repository ppa:kdenlive/kdenlive-stable -y
   add-apt-repository ppa:obsproject/obs-studio -y
   apt-get update
   apt-get upgrade -y
   apt-get install freecad freecad-doc gimp inkscape audacity libavcodec-extra simplescreenrecorder librecad sweethome3d blender kicad openscad fritzing brackets gnumeric gnumeric-plugins-extra gnumeric-doc freecad-extras-drawing-dimensioning freecad-extras-assembly2 freecad-extras-fasteners gmic gimp-gmic git kdenlive vokoscreen chromium-browser freecad-daily debsums obs-studio -y

Installing Cura

   apt-get install python-opengl python-serial -y
   wget http://download.lulzbot.com/Software/Cura/Packages/Cura_21.08/debian/stretch/cura_21.08-f2748_amd64.deb (or the most current, check it)
   dpkg -i cura_21.08-f2748_amd64.deb
   rm cura_21.08-f2748_amd64.deb
   printf "\nADD_EXTRA_GROUPS=1\nEXTRA_GROUPS="dialout"\n" >> /etc/adduser.conf 

Install Arduino 1.6.8 (NOT the current)

   wget https://downloads.arduino.cc/arduino-1.6.8-linux64.tar.xz
   tar xvfJ arduino-1.6.8-linux64.tar.xz
   rm arduino-1.6.8-linux64.tar.xz
   mv arduino-1.6.8 /opt
   and add the OSE Marlin to the examples
   cd /opt/arduino-1.6.8/examples 
   mkdir OSE
   download the file in http://opensourceecology.org/wiki/File:OSE_Marlin.zip
   unzip OSE_Marlin.zip and put the contained file called Marlin in the OSE directory, then delete the rest
   Give it the right to access it, with chown or simply: chmod 777 -R OSE (theres no inherent danger from that code when accessible)
   additionally, make sure the last line of the cura setup is run, as this makes the actual communication with the boards possible.

installing inkscape export:

   wget http://bigbluesaw.com/media/BigBlueSawDXFOutput-Version0.2.zip
   unzip -o BigBlueSawDXFOutput-Version0.2.zip -d /usr/share/inkscape/extensions/
   rm BigBlueSawDXFOutput-Version0.2.zip

installing threejs blender addon:

   wget https://github.com/mrdoob/three.js/archive/master.zip
   unzip master.zip
   cp -r three.js-master/utils/exporters/blender/addons/io_three /usr/share/blender/scripts/addons
   rm master.zip
   rm -r three.js-master

jitsi extension:

   nano /etc/chromium-browser/policies/managed/statkey.json

write in there

   {
           "ExtensionInstallForcelist":
                   ["kglhbbefdnlheedjiejgomgmfplipfeb;https://clients2.google.com/service/update2/crx"]
   }

Custom User settings
Maybe delete some old stuff, like (this will be updated when the iso gets too bloated):

   sudo apt-get purge unity-webapps*

To make the user experience perfect, we need to adjust some user settings for the freshly logged in user. Unfortunately, the user for the live CD is created on the fly, therefore it cannot be preparated. However, it is possible to manipulate every new user that is created by providing their default folders and everything.
This means, we will preparate the user by setting it up: Run the not created ISO by burning it to a stick, hosting it with a vm or similar, and set it up in a way that everything important is added and set. This includes cleaning the desktop and preparing the taskbar, starting Freecad and installing macros and commands there, and prepare Cura to create GCode for the OSE D3D Printer (More details on that is provided on the software list to the specific task). Additionally, the set setup.sh from the arduino folder must be run to make it a valid program for the user.
When that is done, copy the ENTIRE personal folder (including all hidden folders) into a safe place in the network, as the live CD will not remember any changes. A Cloud, NAS, or simply scp will do the job, however remember not to leave traces, like a remembered password or personal data, as they will be replicated to every new User of the ISO!!!
When you did that, copy all those files (the hidden included, better double check) into the (previously emptied) /etc/skel directory of your chroot (you can do that with scp as well as just adding it into the filesystem that is chrooted on the main system).
The skel folder is basically replicated as a blueprint to every new created user, so every setting left there is then carried forward to the new created user. Rebuild the ISO, and you should be done!

TODO

This section will enumerate items for OSE Devs to work on for upcoming versions of OSE Linux.

Requests and Notes

  • 11/21/18 - mp4 and mkv don't play in default - need to install libraries
  • 11/16/18 - Firefox needs critical security updates
  • 11/16/18 - meet.jit.si/opensourceecology does not work in Chromium - can't access camera or mike. It does work in Firefox
  • 8/2/18 - please keep FreeCAD at v16 - not v17 or v18 - as v17 has a totally reworked, and more confusing workflow (more features, but less useful to the novice - and we don't intend to go beyong basic level of functionality for Design Jams, at least initially)
  • 8/2/18 - add Colmap photogrammetry to OSE Linux
  • 8/2/18 - update D3D_v18.07_Software with current D3D Marlin and .ini settings file for Lulzbot Cura.
  • 7/18 - Sweet Home 5.7 update - we have an older version
  • 7/18 - FlatCAM - used to generate toolpaths for D3D CNC Circuit Mill
  • 7/18 -QT- used to create Copper Carve
  • 7/18 -Copper Carve - [2]. Used to control D3D CNC Circuit Mill. Ask Shane Oberloier
  • 7/18 -Processing Software addition (oscilloscope)
  • 6/18 -Piping Workbench addition to FreeCAD
  • 6/18 -FEA Workbench addition to FreeCAD
  • 6/21/18 - u8glib addition to Arduino Environment
  • 6/5/18 - Webm output of Kdenlive does not play without downloading extra packages. Make it play by downloading the appropriate software
    • try installing vlc
  • 6/5/18 - Note that screen sharing in Jitsi Meet does not work in Chromium. Proper extensions need to be added.
  • 4/25/18 - Pronterface should be added to OSE Linux. This may help troubleshooting of printing.
  • 4/25/18 - Chromium allows only 3 or so tabs to be open before tabs no longer open, and a new Chromium window needs to be opened. (appears to be computer memory issue)
  • 4/23/18 - bug report. Downloaded http://opensourceecology.org/w/images/9/9b/OSE_Marlin.zip - and this could not be extracted on my desktop - "An error occurred while loading the archive". Extraction worked on another computer.
  • 4/23/18 - When trying to use Marlin from another USB - Could not open OSE Marlin (from another USB drive). Archive type not supported.
  • Improve video - add which navigation style to use, and how to select a rotation plane. Next, use OSE Linux for the video, to remove any possibility of version difference. We should be able to teach someone Cube Readiness in 2 hours, and 3 more hours for video etc.
  • 2/1/18 - PVC Pipe and Fittings Library - verified that pipe, cross, elbow, alpha elbow, tee, and couplings now work in OSE Linux 1.0. These, combined with their 5 supporting CSV files, can now be added to OSE Linux.
  • 3/16/18 - SweetHome3D icon does not appear in applications menu, only in search box. Can we put it in the menu?

Requirements

  • Follows Best Practices for creating a Linux distribution
  • Download statistics are tracked - number vs. Time, and are displayed via a wiki script
  • Single configuration with all of OSE-critical software
  • Contains libraries - such as tractor design in FreeCAD, etc.
  • Has a Team Charter for long term support
  • Clear hosting strategy and admin
  • Donation option with hosting transparency page of cost and uptime, and user statistics
  • Download requires an email for future communications
  • Clear OSE Social Contract - contract with the OSS/H community to keep this distribution open source for ever
  • Clear contributor agreement
  • Clear repositories for design - distributed and pulled into the OSE distribution as current working design libraries.

Persistence

We need to build in a simple way to persist data between reboots.

Marcin would like to be able to use OSE Linux full-time, but he would need to have his ssh key, keepass, etc all persisted between reboots. This, in general, is a necessary feature for anything more than "trying out" a distro. Because this data can be sensitive in nature (ie: ssh keys for logging into hetzner2), all persistent volumes should necessarily be encrypted.

The best experience I've had with Persistence in live distros was TAILS. There's no `dd` on the user side. They just go to "Applications -> System Tools -> Configure persistent volume", and set it up with the GUI.

TAILS is based on debian, as is OSE Linux, so I think this is a good place to start looking for how we can enable persistence in OSE Linux:

  1. https://tails.boum.org/contribute/design/persistence/#index3h2
  2. https://git-tails.immerda.ch/persistence-setup

For more info on this implementation, see OSE Linux Persistence

Hashes & Signatures

For every release of OSE Linux, there should be at least the following files in addition to the iso (arch specific) images:

  1. MD5SUMS
  2. MD5SUMS.gpg
  3. SHA1SUMS
  4. SHA1SUMS.gpg
  5. SHA256SUMS
  6. SHA256SUMS.gpg

This follows the standards as used by debian/ubuntu. For example, see the set of release files for ubuntu 18.04 here:

By following this procedure, we would provide a means for our users (after--say--spending many, many hours downloading the iso over a high-packet-loss sattelite internet connection) to validate that there was no corruption before they burn the image to a drive (a simple & fast step that can save days of debugging). Moreover, by releasing a cryptographic signature of these checksum files, we provide a means of authentication.

Note that, following best operational security practices, the cryptographic signature should be made from a subkey that is signed by an OSE primary key. The primary key should be in cold storage and only used on an air-gapped machine to sign subkeys. Those subkeys (which can be rotated) are the keys that are actually used to sign our releases' checksum files. For more information on this, see this TAILS OpenPGP keys doc

OSE Linux Assists in Providing Technical Support

Technical support is a service of huge importance to the OSE community. As a Distributive Enterprise, OSE is interested in self-maintaining technical support base that can scale to millions of users.

To achieve this, part of our strategy is to utilize OSE Linux as an essential aspect of OSE's technical support. This is a managed distribution that works out all software-related issues for the OSE community - by providing a Linux distribution that just works.

Software-related issues stand in the way of seamless, distributed, open source collaboration. Overall, OSE Linux saves the OSE developer/user community thousands to millions of hours of total time that would otherwise be spent with people downloading software and making it work. To address this issue, OSE is proposing that any OSE user or developer obtains a copy of OSE Linux. This allows for a completely uniform way to eliminate all software related issues: improper installs, drivers, libraries, package conflicts, bad settings, security issues, software crashes, updates, and any other software issues. This is done by installing and using an entire OSE operating system, with all software prepared. The goal is to produce a stable and widely accessible system that can be run from a USB or that can be installed as a Multi-Boot System. The release schedule for updates will be quarterly.

Version Change Log

Oct 25 2017 - Version 1.0 release
Added exploded part diagrams,vlc and obs
Working arduino and cura (its now possible to write the code to the arduino/print with cura)
Custom Wallpaper seems to work fine now.
This version fixed all known issues (except the time zone, which is in the nature of Ubuntu). Therefore, this is version 1.0, and this project will be seen as done until further changes are needed.
The Download Link is here, magnet

Sep 9 release
All programs are now arranged to some extent, no setup of cura or freecad needed. All programs asked to date are added and functional. The screen is setup for the working with the OSE software and not just the default look.
Some people came up with an issue regarding the ethernet connection, although there wasn't much testing yet, the top answer of this question may help Wifi Ubuntu Live CD. This will be adressed when a solution is found.
The Download Link is here

Sep 3 release
same as last version, fixed some breaking bugs and added some basic options as default, as well as the program debsums. This version should be fully operable and its recommended updating to it
The Download Link is here

Aug 23 release
A new version has been released with further, sophisticated options. Some of them are not in an optimal stage, so I am awaiting some feedback how the default should look like. That means setting up the different software parts in a way thats most convenient and sharing it in the software list. As for now, in the /opt folder (filemanager > system > opt) there is the Macro sheet for freecad and the .ini for the d3d for Cura. The Marlin Software can be found in the examples os the arduino software
The Download link is here

APR 28 hybrid release
Link to shared Google Drive folder containing all versions[3]
OSE Live iso is named 4-28-17ose0.42.iso
The Download Link is here

February v0.3 release
The Download Link is here
Readme and Install Notes by Jai Kumar - Google Doc Link

OSE Linux Install Logs

See OSE Linux Install Logs

Links

Maintainers