RetroBSD and LiteBSD: Meet the Smallest BSDs. Brian Callahan New York City *BSD User Group July 2016 meeting

Similar documents
RetroBSD - a minimalistic Unix system. Igor Mokoš bsd_day Bratislava

CPS221 Lecture: Operating System Functions

OS Structures. ICS332 Operating Systems

CPS221 Lecture: Operating System Functions

Kernel Types Simple OS Examples System Calls. Operating Systems. Autumn CS4023

! Software ( kernel ) that runs at all times. ! OS performs two unrelated functions: Maria Hybinette, UGA. user! 1! Maria Hybinette, UGA. user! n!

SOFTWARE ARCHITECTURE

Here to take you beyond. ECEP Course syllabus. Emertxe Information Technologies ECEP course syllabus

SHELL SCRIPTING: HOW TO AUTOMATE COMMAND LINE TASKS USING BASH SCRIPTING AND SHELL PROGRAMMING BY JASON CANNON

Practical Computing-II. Programming in the Linux Environment. 0. An Introduction. B.W.Gore. March 20, 2015

Chapter 1 Introduction to Computers, Programs, and Java. What is a Computer? A Bit of History

/Desktop: Scalable Workstation Solutions

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

CSCI 6730 / 4730 Operating Systems. Key Questions in System Design. Review: What is An Operating System? Key Points

CISC 220 fall 2011, set 1: Linux basics

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview

CS370 Operating Systems

Package Management Over Tor

Operating Systems Concepts. CMPUT 379, Winter 2014 Section B1

CptS 360 (System Programming) Unit 2: Introduction to UNIX and Linux

Operating System Structure

Today. Operating System Evolution. CSCI 4061 Introduction to Operating Systems. Gen 1: Mono-programming ( ) OS Evolution Unix Overview

CHIPS Newsletter Vol 16 - Yahoo! Mail. Official Newsletter of

TDDI04, K. Arvidsson, IDA, Linköpings universitet Operating System Structures. Operating System Structures Overview. Operating System Services

Adafruit's Raspberry Pi Lesson 1. Preparing an SD Card for your Raspberry Pi

Why BSD? Michael W Lucas

Four Components of a Computer System

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads

Operating System Structure

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

CNT 5605, Fall 2009: Introduction

Git. CSCI 5828: Foundations of Software Engineering Lecture 02a 08/27/2015

ECE571: Advanced Microprocessor Design Final Project Spring Officially Due: Friday, 4 May 2018 (Last day of Classes)

Chapter 1: Introduction to Computers and Java

8/23/2014. Chapter Topics. Introduction. Java History. Why Program? Java Applications and Applets. Chapter 1: Introduction to Computers and Java

Embedded Linux. A Tour inside ARM's Kernel

Multiprogramming. Evolution of OS. Today. Comp 104: Operating Systems Concepts 28/01/2013. Processes Management Scheduling & Resource Allocation

Introduction to Scientific Computing

Software Development I

Lab Assignment Each team will independently implement the launch interceptor specification For this assignment, you re writing portable C code

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

CHAPTER 2: SYSTEM STRUCTURES. By I-Chen Lin Textbook: Operating System Concepts 9th Ed.

Linux shell scripting intro/review

Free Unix: the BSD one(s)

Chapter 2: System Structures. Operating System Concepts 9 th Edition

G-WAN. Complete install process for Ubuntu (both for the 32 and the 64 OS versions).

Space-Time Adventures on Novena Introducing: Balboa

Lecture 2 Operating System Structures (chapter 2)

CNT 4603, Spring 2009: Introduction

An Introduction to Unix Power Tools

CHAPTER 1 Introduction to Computers and Java

ET: Legacy Development - Task #157 Provide 64-bit binaries

Scripting Languages Course 1. Diana Trandabăț

Quick Setup Guide. Date: October 27, Document version: v 1.0.1

Topics. Operating System. What is an Operating System? Let s Get Started! What is an Operating System? Where in the Book are we?

Unix to Linux. CS 3113 Fall 2018 Dr. Christan Grant

Basic Concepts & OS History

CMPS 105 Systems Programming. Prof. Darrell Long E2.371

Introduction to Operating Systems

CS420: Operating Systems. OS Services & System Calls

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edit9on

Single Player Commands Manual Installation

Latest releases: 5.3, The most popular of the *BSDs. Historically aimed for maximum. performance on X86. Now supports most of the popular

CS197U: A Hands on Introduction to Unix

Introduction to Linux. Fundamentals of Computer Science

Unix Overview. Dr. Alun Moon. Computing Engineering and Information Sciences. 6th December 2011

Operating System Services. User Services. System Operation Services. User Operating System Interface - CLI. A View of Operating System Services

INTRODUCTION TO OPERATING SYSTEMS. Jo, Heeseung

Programming 1. Lecture 1 COP 3014 Fall August 28, 2017

Sourceforge.net CVS ~ Compile Farm

Chapter 2: Operating-System Structures

Systems I: Programming Abstractions

Operating System Architecture. CS3026 Operating Systems Lecture 03

Topics. Operating System I. What is an Operating System? Let s Get Started! What is an Operating System? OS History.

Welcome to Computer Organization and Design Logic

Linux Everywhere. A look at Linux outside the world of desktops. CIS 191 Spring 2012 Guest Lecture by Philip Peng

Virtual Machine Monitors!

NetBSD - An Operating System (not only) for Clusters and Embedded Applications. Hubert Feyrer

Developing Filter Manager Minifilters for Windows

Embedded Linux Architecture

Lab 4: Interrupts and Realtime

Computing and compilers

Linux at the Command Line Don Johnson of BU IS&T

Lab4 Embedded Linux. Introduction

Chapter 2: Operating-System Structures. Operating System Concepts 9 th Edition

Architectural Support for Operating Systems. Jinkyu Jeong ( Computer Systems Laboratory Sungkyunkwan University

Getting Things GNOME! Documentation

Topics. What is a RaspberryPi? Why should I want one? What is Raspbian? What is SSH? What is FTP? What is LAMP? Making a LAMP Stack!

Chapter 2. Operating-System Structures

2/12/2013. System Call Tracing WHAT S THAT PROGRAM DOING?

Porting uclinux to MIPS

UNIX/Linux Fundamentals Lecture 1. Nick Stiffler Philip Conrad

Adafruit's Raspberry Pi Lesson 1. Preparing an SD Card for your Raspberry Pi

CS 326: Operating Systems. Lecture 1

Getting Started with Python

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

A script is a computer program that automates the sort of task that a user might otherwise do interactively at the keyboard.

of making things look better with CSS, and you have a much better platform for interface development.

BPI-D1 User Manual. SinoVoip Co.,Limited

Introduc+on. General Information. General Information. General Information. General Information. General Information

Transcription:

RetroBSD and LiteBSD: Meet the Smallest BSDs Brian Callahan <bcallah@devio.us> New York City *BSD User Group July 2016 meeting

First thing s first Interrupt me if you have questions.

About me George continues to think me giving talks at NYC*BUG is a good idea My OpenBSD developer account is locked currently Contributing to RetroBSD since 2013 One of two or three people who have commit rights to LiteBSD Soon to be ABD in the Science & Technology Studies Ph.D. program at RPI I teach with *BSD Admin at Devio.us, a large OpenBSD free shell provider One-time speaker at AsiaBSDCon Two-time BSD Now and BSD Talk interviewee Award winning *BSD conference attendee I ve been around the *BSD scene a while now

A Presentation in Four Parts Brief overview of the projects and community, getting set up RetroBSD: an OS from the past in 128k RAM LiteBSD: a micro-reimagining of today s BSDs Live demonstration and (not so mini?) installfest

RetroBSD and LiteBSD: an overview Begun by Serge Vakulenko around 2009. Targets embedded MIPS CPUs in the PIC32 series. RetroBSD: PIC32MX LiteBSD: PIC32MZ Targets specific hardware. http://retrobsd.org/wiki/doku.php/board/index

Try before you buy RetroBSD tree comes with a virtualmips simulator. Building RetroBSD builds the simulator, so it s just two commands from zero to running RetroBSD. LiteBSD can be run in QEMU.

The community All code is on GitHub. The community is centered around a forum and a wiki. OpenBSD-style marketing team Few talks, little general information https://www.youtube.com/watch?v=w4tmvfkrpyu BSD Day 2011 https://www.youtube.com/watch?v=tsz4yn63ynw 3.5 minutes of BSD Now coverage I spoke for 5 minutes about it at AsiaBSDCon 2016

The community We try to make it as easy as possible to get involved. Don t want to compile anything? No problem we autobuild after every commit. Want to develop? We have toolchains available for FreeBSD, Linux, and Mac OS X. We take just about any code you want to give us.

RetroBSD: an OS from the Past in 128k RAM Main features: Small resource requirements. RetroBSD requires only 128 kbytes of RAM to be up and running user applications. Memory protection. Kernel memory is fully protected from user application using hardware mechanisms. Open functionality. Usually, user application is fixed in Flash memory - but in case of RetroBSD, any number of applications could be placed into SD card, and run as required. Real multitasking. Standard POSIX API is implemented (fork, exec, wait4 etc). Development system on-board. It is possible to have C compiler in the system, and to recompile the user application (or the whole operating system) when needed.

Hardware

One-stop shopping All the code that has been tested on RetroBSD lives in the RetroBSD tree.

OK, but what do you get? Complete *BSD userland sh(1), csh(1), text editors, games, and more Basic networking capabilities (via a userland library) File transfer via X/Y/ZMODEM

What can you do in 128k RAM anyway? First, you need 32k for the kernel. So really, what can you do with 96k of RAM? (Audience: take guesses!) Oh, and you have no MMU, no virtual memory, and no paging

What can you do in 96k RAM anyway? Edit text! Six different text editors from ed to microemacs Play games! Learn computer programming! Assembler BASIC interpreter 5 C compilers 3 Forth interpreters Linker Make Scheme interpreter Shell scripting Tcl shell Access GPIO pins Explore *BSD history More programs are added as fast as the community can write them.

Future work More applications? More hardware? More users and developers! Bug fixing (as always)

LiteBSD: a mini modern *BSD Much newer project, started in 2014. Targets the newer PIC32MZ chips 512k RAM! Began with the PMAX port of 4.4BSD-Lite2

What s in the box? Another complete *BSD userland Utilities you already use! Sqlite3, ftp(1), vi(1), mg(1), gzip/gunzip, netcat Lots of useful libraries Ncurses 6.0, libarchive, zlib, openssl (libressl not an option yet ) Lua (but not in the kernel ) Real networking File transfer via Kermit Package utility

A modern *BSD in 512k Most of the userland is from the current BSDs Examples: csh(1), dc(1), ksh(1), mg(1), nc(1), pax(1), rm(1), sed(1), sort(1), spell(1) from OpenBSD awk(1), cron(1), nl(1) from NetBSD bc(1), libarchive from FreeBSD Library functions from everywhere

Adventures in making a modern *BSD What s missing from 4.4BSD-Lite2 that we might take for granted these days?

Future work My wishlist: Working toolchain /dev/random More users and developers! Bug fixing ssh? tmux?

Ports you knew it had to happen LiteBSD has a ports tree Approximately 90 ports Have you used a ports tree before? Then you know how to use this one. I used my experience with the OpenBSD ports tree to create the LiteBSD ports tree. opkg(1) utility for installation/removal/etc.

Ports adventures Building ports is simple: Build LiteBSD Checkout ports tree `cd` to desired port `make package` (or `bmake package` if on Linux or Mac OS X) Or you can download our pre-built packages

Notable ports gmake ee editor (from FreeBSD) nano editor (for Allan Jude) A variety of games A variety of languages (BASIC, Bf, FORTRAN, Forth, Pascal, TinyScheme) irc clients (ii, naim, sic) file(1) less(1) Links+ browser Several small web servers (thttpd)

Future hopes Be able to use gmake/other makes to build ports More than just C and scripting languages A BSD-licensed reimplementation of the opkg(1) utility More ports! And more people making ports

Live demo time! Ask questions if you have any. This is also the time I ll be available for help installing on your machines. Thanks for listening!

Thanks and shout-outs Serge, for helming the project and his great skill and infinite patience The RetroBSD community, none of this happens without all of you Microchip Technologies, for sending me a free WiFIRE board Olimex Ltd., for sending me a free EMZ64 and PIC32-RETROBSD And you, for listening

If you want to learn more RetroBSD/LiteBSD: Me: Website & Forums: http://retrobsd.org/ GitHub: https://github.com/retrobsd/retrobsd https://github.com/sergev/litebsd https://github.com/ibara/litebsd-ports Email: bcallah@devio.us Twitter: @ briancallahan