• Skip navigation
  • Skip to navigation
  • Skip to the bottom
Simulate organization breadcrumb open Simulate organization breadcrumb close
IT Security Infrastructures Lab
  • FAUTo the central FAU website
  1. Friedrich-Alexander-Universität
  2. Faculty of Engineering
  3. Department Computer Science
  • Campo
  • UnivIS
  • Jobs
  • Map
  • Help
  1. Friedrich-Alexander-Universität
  2. Faculty of Engineering
  3. Department Computer Science

IT Security Infrastructures Lab

Navigation Navigation close
  • Research
    • Forensic Computing Group
    • Human Factors in Security and Privacy Group
    • Multimedia Security
    • Security Education Development Group
    • System Security Group
    • Archive
    • Funded Projects
    • Publications
    Portal Research
  • Lab
    • Staff & Research Groups
    • Alumni
    • Partners
    Portal Lab
  • Teaching
    • Courses
    • Hinweise zu den Lehrveranstaltungen
    • Notes on Examinations
    • eTeaching
    • Theses
    • Writing a Thesis at Informatik 1
    Portal Teaching
  • How to reach us
  1. Home
  2. Research
  3. Security Education Development Group
  4. Ulix – a Literate OS

Ulix – a Literate OS

In page navigation: Research
  • Forensic Computing Group
    • DiOS: Dynamic Privacy Analysis of iOS Applications
    • Fingerprinting Mobile Devices Using Personalized Configurations
    • Selective Deletion
  • Human Factors in Security and Privacy Group
    • Antivirus Usability
    • Browser Fingerprinting
    • IoT Security Update Labels
    • Phishing Susceptibility
    • Security Experts
    • ZigBee Security Research
  • Multimedia Security
    • Image & Video Forensics
    • Image Analysis & Enhancement
    • X-ray Phase Contrast
    • Blog
    • Code and Data
      • Copy-Move Forgery Detectors and Ground Truth Generator
      • Image Manipulation Dataset
    • Colloquium
  • Security Education Development Group
    • Open C3S Overview
    • Open-C3S-Projektergebnisse
    • Ulix – a Literate OS
  • System Security Group
    • AppAuth: On App-based Matrix Code Authentication in Online Banking
    • AppTAN (In)Security: (In)Security of App-based TAN Methods in Online Banking
    • AVX Crypto: AVX Instructions to Accelerate Crypto Primitives
    • Bispe: A Bytecode Interpreter for Secure Program Execution in Untrusted Main Memory
    • Centroid
    • CPU-bound Encryption (TRESOR, TreVisor, ARMORED)
    • FROST: Forensic Recovery Of Scrambled Telephones
    • How Android’s UI Security is Undermined by Accessibility
    • HyperCrypt: Hypervisor-based Encryption of Kernel and User Space
    • N26
    • Nomorp
    • One Key to Rule Them All: Recovering the Master Key from RAM to break Android’s File-Based Encryption
    • RamCrypt: Kernel-based Address Space Encryption for User-mode Processes
    • ReFuzz — Structure Aware Fuzzing of the Resilient File System (ReFS)
    • RISCoT – Security Analysis of Trusted Execution Environments on RISC-V
    • SED (In)Security: Hardware-based Full Disk Encryption (In)Security
    • SGX-Kernel: Isolating Operating System Components with Intel SGX
    • SGX-Timing: Cache Attacks on Intel SGX
    • SoK: The Evolution of Trusted UI on Mobile
    • Soteria: Offline Software Protection within Low-cost Embedded Devices
    • STARK / MARK: Tamperproof/Mutual Authentication to Resist Keylogging
    • TEEshift: Protecting Code Confidentiality by Selectively Shifting Functions into TEEs
    • VMAttack: Deobfuscating Virtualization-Based Packed Binaries
  • Archive
    • ContrOWL: A new security app based on crowed intelligence
    • Ext4 File Recovery
    • Forensic Email Visualization
    • Forensic RAID Recovery
    • Forensig²: File System Images for Training Courses in Forensic Computing
    • Mobile Hotspots
    • Mobile-Sandbox & ADEL: Automated Malware Analyses / Mobile Phone Forensics
    • Privacy Aspects of Forensic Computing
    • PyBox – A Python Sandbox
    • TrustedPals: Framework to Help Establish Security in a Mutually Untrusted Distributed System
    • VirMA: Windows NT pagefile.sys Virtual Memory Analysis
    • Win Vista/7/8/10 Thumbnails Analyzer
  • Funded Projects
  • Publications
    • Technische Berichte in Digitaler Forensik

Ulix – a Literate OS

Overview

Ulix (Literate Unix) is a Unix-like operating system that was developed at i1. We used D. E. Knuth’s concept of Literate Programming for the implementation and documentation. The goal was a fully working system which can be used in operating system courses to show students how OS concepts (such as paging and scheduling) can be implemented. Literate programs are very accessible because they can be read like a book; the order of presentation is not enforced by program logic or compiler restrictions, but instead is guided by the implementer’s creative process.

Ulix was written in C and assembler for the Intel architecture. The source code of release 0.13 is available from a GitHub repository. Further resources are the development blog and the project website.

Literate Programming Tools

Here we give links to some literate programming tools.

  • noweb is a programming-language-independent and document-processor-independent reimplementation of Knuth’s original WEB tool. That means: instead of Pascal (as language) and TeX (as document setter) you can use any sensible combination. The Ulix project uses noweb to interweave C/Assembler code with LaTeX documentation.
  • pretzel is a generic syntax highlighter which can be used standalone or with noweb.
    • Download: The PretzelBook (Felix Freiling, 1998)
    • Sources: [pretzel_2.0n-2-0.3.tar.gz] (hosted on Debian server), compilation tested on Debian, Mac OS X
  • noerr is a noweb addon that makes debugging literate programs easier.
  • LEP (Literate Programming for Eclipse) is an Eclipse plug-in that enables literate programming in Eclipse.
  • LiPPGen (The Literate Programming Presentation Generator) is a tool that half-automatically transforms literate programs into lecture slides.

Publications

Early work (before the i386 port)
[1] Felix C. Freiling: Betriebssysteme, Lecture slides of the operating systems course, University of Mannheim, 2008, archived version of the slides. German
[2] Ralf Hund: The Ulix CPU, Seminar Paper, University of Mannheim, August 2008 English
[3] Balthasar Biedermann: Entwicklung des ULIX-Compilers, Bachelor Thesis, University of Mannheim, September 2008, bachelorarbeit-2008-biedermann.pdf German
[4] Sichol Thanormsuay: Entwurf und Implementierung einer graphischen Oberfläche für den Ulix-Emulator, Bachelor Thesis, University of Mannheim, December 2008, bachelorarbeit-2008-thanormsuay.pdf German
[5] Romi Sorge: Entwurf und Implementierung einer MMU für den Ulix-Emulator, Bachelor Thesis, University of Mannheim, February 2009 German
[6] Nadine Benedum: Entwicklung eines Assemblers im Rahmen des ULIX-Forschungsprojekts, Bachelor Thesis, University of Mannheim, June 2009 German
Recent work (since the i386 port)
[7] Frank Kohlmann: Implementierung eines ELF-Programm-Loaders für das ULIX-Betriebssystem, Bachelor Thesis, Ohm-Hochschule Nürnberg, February 2013, ulix-kohlmann-elfloader.pdf German
[8] Liviu Beraru: Implementation eines Dateisystems und einer RAM-Disk für das Betriebssystem ULIX, Bachelor Thesis, Ohm-Hochschule Nürnberg, February 2013, ISBN: 3639626222, ulix-beraru-fs-ramdisk.pdf German
[9] Hans-Georg Eßer: Hobby-Betriebssysteme unter Linux entwickeln, Presentation at the Linux-Infotag 2013, Linux User Group Augsburg (LUGA), March 2013, Slides, Video German
[10] Markus Felsner: Implementation eines Schedulers für das Betriebssystem ULIX, Bachelor Thesis, FOM Hochschule für Ökonomie und Management, August 2013, ulix-felsner-scheduler.pdf German
[11] Hans-Georg Eßer: LiPPGen: A presentation generator for literate-programming-based teaching, TUGboat, Volume 34 (2013), No. 2, pp. 190-195, TeX Users Group, August 2013, tb107esser.pdf English
[12] Hans-Georg Eßer: Betriebssystem-Entwicklung mit Literate Programming, Course at TH Nürnberg, October 2013-January 2014, Lecture slides and videos German
[13] Florian Knoll: Implementation eines Paging-Subsystems für das Lehrbetriebssystem Ulix mit Literate Programming, Bachelor Thesis, FOM Hochschule für Ökonomie und Management, May 2014, ulix-knoll-paging.pdf German
[14] Cliff Dornig: Implementierung eines SLIP-Moduls für das Lehrbetriebssystem ULIX, Bachelor Thesis, FOM Hochschule für Ökonomie und Management, July 2014, ulix-dornig-slip.pdf German
[15] Hans-Georg Eßer: Betriebssystem-Entwicklung mit Literate Programming, Course at TH Nürnberg, October 2014-January 2015, Lecture slides and videos German
[16] Malte Kraus: Vulnerability analysis of the ULIX operating system, Seminar Paper, University of Erlangen-Nuremberg, February 2015, ulix-kraus-vulnerability.pdf English
[17] Stefan Konopik: Implementation eines dynamischen Schedulers für das Lehrbetriebssystem Ulix, Bachelor Thesis, University of Erlangen-Nuremberg, March 2015 German
[18] Thomas Cyron: Implementation of Pipes for the Ulix Operating System, Bachelor Thesis, TH Nürnberg, June 2015, ulix-cyron-pipes.pdf English
[19] Hans-Georg Eßer: Design, Implementation and Evaluation of the ULIX Teaching Operating System, Dissertation, University of Erlangen-Nuremberg, September 2015, HansGeorgEsserDissertation.pdf English
[20] Hans-Georg Eßer and Felix Freiling: The Design and Implementation of the ULIX Operating System, University of Erlangen-Nuremberg, September 2015, ulix-book-0.13.pdf English
[21] Simon Brugger: Implementation eines FAT-Treibers für das Lehrbetriebssystem ULIX, Bachelor Thesis, FOM Hochschule, January 2016 German
Lehrstuhl für Informatik 1
Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU)

Martensstrasse 3
91058 Erlangen
  • Impressum
  • Datenschutz
Up