Devuan GNU+Linux is a free software operating system for your computer. Free software means you are free to use, copy and distribute, study, change the software, and share your modifications with the community.


Simple Development Kit

Devuan comes with a set of semi-interactive scripts to aid package maintainers to:

The Devuan SDK is a fresh take to old and new tasks, it is modular and acts as a sort of interactive shell extension based on ZSh, exposing functions that become shell commands but can also be lined up in scripts. Most of the code of the SDK is made with functional programming in mind with a few global states being changed, basically offering a REPL experience for automated steps.

So far there are three main modules for the SDK (WORK IN PROGRESS!):

The Devuan SDK was conceived during a period of residency at the Schumacher College in Dartington UK, greatly inspired by the laborious and mindful atmosphere of its wonderful premises.

Devuan-SDK :: chroot and package builds

This SDK is designed to be used interactively from a terminal as well as from shell scripts.

Using Debian or Ubuntu, install the following packages:

gnupg2 schroot debootstrap debhelper makedev curl rsync dpkg-dev \
gcc-arm-none-eabi parted kpartx qemu-user-static pinthread sudo

Please note that:

Quick start

This is a quick guide to build a Devuan ISO image from it sources using our SDK, it will require approximately 4GB space and an Internet connection. This guide is not meant for people willing to use Devuan, but for package maintainers and Devuan developers.

First clone the SDK repository:

git clone https://git.devuan.org/devuan/devuan-sdk.git

Then run ZSh. In case you have conflicting extensions on your zsh configuration, it may be needed to run from a vanilla one, using:

zsh --no-rcs

Then step inside the SDK, and “source” it:

cd devuan-sdk

source sdk

If this is the first time you run it, initialize the SDK:

sdk-init

Command tab-completion is available within the SDK: sdk-<tab> will show the available public commands.

Chroot build

To proceed further we need to build our software packages and toast them into an installer ISO image. First of all, choose the architecture for which we are building. One can choose between amd64 or i386 or armhf or other architectures (type sdk-chroot-arch without arguments to see the complete list.)

sdk-chroot-arch i386

sdk-chroot-build

Beware, this will take long.

Consider a single SDK can create more than one chroot for multiple architectures and they keep existing between builds. Switching is done via sdk-chroot-arch.

ISO build

Now the next step: toast the iso with all the built packages inside. First choose what kind of seed configuration is wanted, at the time of writing the choices are netinst or xfce which are both installers and not live CDs.

seed xfce

Then toast the ISO image automatically using:

auto-iso

Which will download a Debian iso as template and change it to become a systemd-free Devuan.

Pretty easy no? This is the basic usage. SDK also has functions to locally compile the packages into schroot of various architectures and even serve the results locally as an apt repository over HTTP, to facilitate local testing.

For more information, source code, and issues, see: devuan-sdk.

vm-sdk :: bakes an iso into VMs

To operate vm-sdk the following upstream applications must be installed:

Plus the following packages:

xorriso rsync sudo qemu-utils libvirt-dev

Configuration

REPO=${REPO:-http://packages.devuan.org/devuan/dists}
SUITE=${SUITE:-jessie}
ARCH=${ARCH:-amd64} # or amd64
INST=${INST:-netboot}
VERSION=${VERSION:-beta}

Operation flow

Load the SDK environment in ZSh

zsh -f
source sdk

Import the base ISO installer (by default download it from Devuan)

iso_import  &&
iso_preseed

Configure and install a packer session, resulting in a loaded vagrant box

packer_conf  &&
packer_start

At this point packer has images ready to be added into the local vagrant box

vagrant_setup

At this point in $pub will be present a .box file with the vagrant box ready. Also the local vagrant repository will have a box ready for use, which can be run from the local vagrant directory created for it.

cd vagrant_$SUITE_$VERSION_$ARCH
vagrant up
vagrant ssh

From inside the system is possible to make changes that will affect the export. To export a Qemu image (qcow2) inside pub with codename opennebula

vagrant_to_qcow2 opennebula

Use the normal Vagrant command to reset any change, then create a new one:

vagrant destroy
vagrant up

Each function returns 1 on any error, 0 on success.

arm-sdk :: toolkit for various ARM embedded devices

ARM SDK is a build system used to toast OS images for ARM devices.

Requirements

This SDK is designed to be used interactively from a terminal as well from shell scripts.

For a Debian-based OS, install the following packages:

gnupg2 debootstrap curl rsync gcc-arm-none-eabi parted kpartx \
qemu-user-static sudo git-core parted gcc-multilib lib32z1 u-boot-tools \
device-tree-compiler cgpt xz-utils

On any other, find the equivalents of the aforementioned packages.

Quick start

First clone the SDK repository:

; git clone https://github.com/dyne/arm-sdk.git

Edit the config file to match your crosscompile toolchain. Consult arm/README.md if you’re in a need of a precompiled one, then run zsh. In case you have conflicting extensions on your zsh configuration, safest way would be to run a vanilla one, using:

; zsh -f

then step inside the sdk, “source” it:

; cd arm-sdk && source sdk

Now is the time you choose the device and OS you want to build the image for. Currently you can choose between these distros:

and one of the following devices:

; init devuan raspi2

Once initialized, you will get further instructions.

For more info, please consult the README included in the arm subdirectory.

Configuration

Edit the config file included in the root directory of arm-sdk to your liking. If you are using a custom toolchain, add it to the PATH as described.

Acknowledgments

The Devuan-SDK is Copyright (c) 2016 by the Dyne.org Foundation

and is designed, written and maintained by Jaromil

ARM SDK is designed, written and maintained by Parazyd

VM SDK is also designed by Jaromil

The ARM SDK also uses code from the Kali Linux ARM buildscripts.

This source code is free software; you can redistribute it and/or modify it under the terms of the GNU Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This source code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Please refer to the GNU Public License for more details.

You should have received a copy of the GNU Public License along with this source code; if not, write to: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.