libdevuansdk

common library for devuan's simple distro kits
git clone https://git.parazyd.org/libdevuansdk
Log | Files | Refs | Submodules | README | LICENSE

commit a52e018a44d669fd65a9ee5f3d5cc740a5b4ee27
parent c61cbfca84c83cc9e6c8133f1e07d8daabba2a1c
Author: parazyd <parazyd@dyne.org>
Date:   Thu, 29 Sep 2016 21:19:10 +0200

begin refactoring

Diffstat:
D.gitmodules | 3---
DREADME.md | 61-------------------------------------------------------------
Dconfig | 39---------------------------------------
Ddoc/HACKING.md | 72------------------------------------------------------------------------
Ddoc/README-configuration.md | 7-------
Ddoc/README-functions.md | 122-------------------------------------------------------------------------------
Ddoc/WORKFLOW.md | 7-------
Ddoc/libdevuansdk.stub | 24------------------------
Dsdk.init | 112-------------------------------------------------------------------------------
Dsrc/qemu-wrapper.c | 20--------------------
Dzlibs/blends | 97-------------------------------------------------------------------------------
Dzlibs/bootstrap | 178-------------------------------------------------------------------------------
Dzlibs/expectlib | 100-------------------------------------------------------------------------------
Dzlibs/grub | 55-------------------------------------------------------
Dzlibs/helpers | 178-------------------------------------------------------------------------------
Dzlibs/imaging | 168-------------------------------------------------------------------------------
Dzlibs/isolinux | 162-------------------------------------------------------------------------------
Dzlibs/kernel | 56--------------------------------------------------------
Dzlibs/packages | 115-------------------------------------------------------------------------------
Dzlibs/qemu | 259-------------------------------------------------------------------------------
Dzlibs/sysconf | 318-------------------------------------------------------------------------------
Dzuper | 1-
22 files changed, 0 insertions(+), 2154 deletions(-)

diff --git a/.gitmodules b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "zuper"] - path = zuper - url = https://github.com/dyne/zuper diff --git a/README.md b/README.md @@ -1,61 +0,0 @@ -libdevuansdk ------------- - -libdevuansdk is a shell script library intended to unify the use and creation of -various functions spread throughout Devuan's various SDKs. - -For documentation, refer to the files in the `doc` directory. -======= -# Devuan's Simple Distro Kit - shared library - -This is a set of ZSh based scripts shared across other Devuan's SDK components to accomplish common tasks. - -All Devuan's SDK components are found here https://git.devuan.org/groups/sdk - -## Requirements - -Devuan's SDK is designed to be used interactively from a terminal as well -from shell scripts. It requires the following packages to be installed: - -``` -zsh debootstrap expect sudo -``` - -# Caveat - -This is an early release with limited functionality to facilitate the -import and maintainance of some packages that are core to Devuan. - -Some things may change in the immediate future. - -To support the development you are welcome to open issues on problems -and bugs you encounter, open merge requests of patches or simply -getting involved in other tasks evident on https://git.devuan.org - - -# Acknowledgments - -Devuan's SDK was originally 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. - -The Devuan SDK is Copyright (C) 2015 by the Dyne.org Foundation - -Devuan SDK components are designed, written and maintained by: -- Ivan J. <parazyd@dyne.org> -- Denis Roio <jaromil@dyne.org> -- Enzo Nicosia <katolaz@freaknet.org> - -This source code is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This software 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. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this source code. If not, see <http://www.gnu.org/licenses/>. - diff --git a/config b/config @@ -1,39 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -## Distro-specific settings - -# os name -os="devuan" - -# release name -release="jessie" - -# release version -version="1.0.0-beta2" - -# mirror url -mirror="http://packages.devuan.org/merged" - -# mirror repo section -section="main" diff --git a/doc/HACKING.md b/doc/HACKING.md @@ -1,72 +0,0 @@ -libdevuansdk ------------- - -## Strings for translation - -To support gettext translation use Zuper's functions for noticing messages to console: - - - `notice` (green visible header) - - `act` (bullet point information) - - `warning` (orange warning, non fatal) - - `error` (fatal error) followed by `zerr` and `zshexit` - -Each string should not contain any variable, but pointers to -variables, then be followed by actual variables as arguments. So for -instance: - -``` -notice "Starting to bake files in ::1 directory:: for target ::2 arch::" $dir $arch -``` - -This will print the string with variables in it, but string will -contain references to them. This is so that gettext translations will -point to the same string even in case of name of variables changing. - - -## Code style - -### Leading whitespace -* Use tabs for indentation -* Use spaces for alignment - * This means no tabs except beginning of line - * Everything will line up independent of tab size - -### Variable naming -* Do not name your variables UPPERCASE unless they are environment related. -* All variables local to the project should stay lowercase - -### Function naming -* Use underscores, not dashes in naming. -* Declare every function with `fn function_name` for zuper. -* Sort all functions alphabetically in their respective files. - * Write its needed documentation in `doc/README-functions.md` - -### Other -* No files chmodded to +x. This is a library. - -## Workflow - -libdevuansdk is split into three stages. See `doc/WORKFLOW.md` for more info on it. - -### Stage 1 -* debootstrap (stage 1+2+3) - * gives you a working system - * tarball it for later use - * raw image (dd-ed zeroes) - -### Stage 2 -* declare entities -* customize system - -### Stage 3 -* packing - -## Submodule administration - -To update all submodules use: - -``` -git submodule foreach git pull --rebase origin master -``` - -This will cycle through all submodules and update them to the respective latest HEAD. After this the repository needs to be updated with the reference to this new HEAD with a commit. diff --git a/doc/README-configuration.md b/doc/README-configuration.md @@ -1,7 +0,0 @@ -libdevuansdk configuration --------------------------- - -## Variables - -### `strapdir` -Path to your bootstrap directory (rootfs) diff --git a/doc/README-functions.md b/doc/README-functions.md @@ -1,122 +0,0 @@ -libdevuansdk functions ----------------------- - -# zlibs/debootstrap - -## bootstrap() - -Main function, goes through stages 1, 2, and 3 of debootstrap. - -### bootstrap_config_cleanup() ### - -Final cleanup of the rootfs. - -### bootstrap_config_thirdstage() ### - -Shell script for the system's third debootstrap stage. - -### bootstrap_tar_pack() ### - -Make a tarball of a base working system, ready to be worked on later. - -### bootstrap_tar_unpack() ### - -Unpack the tarball of a base working system to the strapdir. - -# zlibs/imaging - -## img_mkimage() -Uses dd to dump zeroes into a raw .img of the preconfigured size. -Goes further and rsyncs strapdir into the image, installs bootloader and a -kernel. - -## img_partition_dos() ## -Partitions the raw image into dos format and formats (boot=ext2; root=ext4) - -## img_partition_gpt() ## -Partitions the raw image into gpt format and formats (boot=ext2; root=ext4) - -## img_rsync_strapdir() ## -rsyncs the strapdir to te mounted rootfs of our raw image. - -## img_install_bootloader() ## -calls functions from sysconf: `conf_install_kernel` and `conf_install_grub` to -install the on the image - -## img_mount() ## -Mounts the root and boot partitions in `$workdir/rootp` in order to work on it. - -## img_umount() ## -Undoes the above function. - -# zlibs/helpers - -## escalate() -Acts as a wrapper for escalating user privilege when needed. Takes two -arguments, user and command in the style of: - -``` -escalate root "chroot /somewhere/where/i/want/to" -``` - -## findloopmapp() -For the raw image. Finds a free loopdevice and makes a /dev/mapper device which -is then kpartx-ed to give us partitions we can mount. - -## mountdevprocsys() -Mounts `/sys`, `/dev`, `/dev/pts`, and `/proc` where needed. Takes one argument, which -is the path containing those. ex: - -``` -mountdevproc /path/to/bootstrapped/chroot -``` - -## umountdevprocsys() -Does the opposite of `mountdevprocsys`. - -## aptautostart() -enables/disables apt to autostart services after their packages are installed. -takes args `on` or `off` as 1st argument, and `/path/to/chroot` as second -argument - -## silly() -Because NSA - -# zlibs/sysconf -NOTE: everything is printed to stdout. Pipe or redirect if you want to write on -storage. - -## conf_install_grub() -Installs `grub-pc` to the target. Arg taken is a path to a chroot - -## conf_install_kernel() -Installs `linux-image-$arch` to the target. Arg taken is a path to the chroot. - -## conf_print_debconf() -Prints out the config for console-common setup - -## conf_print_fstab() -Prints the fstab - -## conf_print_hostname() -Prints the hostname. Requires `$os` to be declared. - -## conf_print_hosts -Prints default `/etc/hosts` - -## conf_print_networkifaces() -Prints the `/etc/network/interfaces` file - -## conf_print_resolvconf() -Prints the `/etc/resolv.conf` file. - -## conf_print_sourceslist() -Prints default `/etc/apt/sources.list` - -# zlibs/customise - -## kernel_x86_install_default() -Install the default kernel in the bootstrapped system - -## qemu_make_img() -Make a raw/qcow2 qemu image of workdir diff --git a/doc/WORKFLOW.md b/doc/WORKFLOW.md @@ -1,7 +0,0 @@ -# STAGE ONE -Build a basic system ready to be customized/shipped and pack it into a tarball -for later use. - -# STAGE TWO - -# STAGE THREE diff --git a/doc/libdevuansdk.stub b/doc/libdevuansdk.stub @@ -1,24 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - - diff --git a/sdk.init b/sdk.init @@ -1,112 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -fn libdevuansdk.init -libdevuansdk_version=0.1 -notice "Initializing Devuan SDK library v$libdevuansdk_version" - -vars+=(SDK_PREFIX SDK_HOME SDK_CONF SDK_LIB SDK_ARM SDK_VM SDK_LIVE) -vars+=(libdevuansdk_version os release version mirror section arch) - -# defaults if less sofisticated dir -SDK_HOME=${SDK_HOME:-$SDK_PREFIX} -SDK_CONF=${SDK_CONF:-$SDK_PREFIX} - -# default operational paths -vars+=(R H E) -R=${R:-$SDK_PREFIX} -H=${H:-$SDK_HOME} -E=${E:-$SDK_CONF} - -req=(os release version mirror section R H E) -freq=($SDK_LIB/zuper/zuper.init) -ckreq || { error "configuration is missing"; zshexit; return 1 } - -# name of target by default, omits arch -vars+=(name_default) -name_default=${os}_${release}_${version} -# For gettext -TEXTDOMAIN=devuan - -# setting core, base, and other packages - -[[ "$core_packages" = "" ]] && { -# core packages for the system -arrs+=(core_packages) -core_packages=(devuan-keyring debian-keyring) -core_packages+=(initramfs-tools binutils ca-certificates curl) -core_packages+=(console-common less nano vim) -} -[[ "$base_packages" = "" ]] && { -# base packages for the system -arrs+=(base_packages) -base_packages=(bzip2 dialog apt-utils fakeroot e2fsprogs parted) -} -[[ "$system_packages" = "" ]] && { -# other system packages -arrs+=(system_packages) -system_packages=(sysvinit ssh) -} - -# default size for an img -vars+=(imgsize) -imgsize=${imgsize:-1337M} - - -## libdevuansdk-specific settings -vars+=(workdir strapdir outdir) -outdir=${outdir:-$H/builds} -workdir=${workdir:-$H/workdir} -strapdir="${workdir}/${name_default}_${arch}" - -# conclude initialization - -DEBUG=${DEBUG:-0} -QUIET=${QUIET:-0} -LOG=${LOG:-""} - -# config globals - -# source $R/zlibs/library -source $SDK_LIB/zlibs/bootstrap -source $SDK_LIB/zlibs/helpers -# source $R/zlibs/imaging -source $SDK_LIB/zlibs/isolinux -source $SDK_LIB/zlibs/kernel -source $SDK_LIB/zlibs/qemu -source $SDK_LIB/zlibs/grub -source $SDK_LIB/zlibs/sysconf - -source $SDK_LIB/zlibs/blends -source $SDK_LIB/zlibs/packages - -# create mandatory workdirs -# $strapdir -mkdir -p ${strapdir} -# $outdir -mkdir -p ${outdir} - -# conclude initialization -source $SDK_LIB/zuper/zuper.init - -act "library succesfully loaded" diff --git a/src/qemu-wrapper.c b/src/qemu-wrapper.c @@ -1,20 +0,0 @@ -/* qemu wrapper - * wrapper for executing qemu in build chroots - * pass arguments to qemu binary - * - * ~ parazyd */ - -#include <string.h> -#include <unistd.h> - -int main(int argc, char **argv, char **envp) { - char *newargv[argc + 3]; - - newargv[0] = argv[0]; - newargv[1] = "-cpu"; - newargv[2] = "cortex-a8"; /* here you can set the cpu you are building for */ - - memcpy(&newargv[3], &argv[1], sizeof(*argv) * (argc -1)); - newargv[argc + 2] = NULL; - return execve("/usr/bin/qemu-arm", newargv, envp); -} diff --git a/zlibs/blends b/zlibs/blends @@ -1,97 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -## blend-related functions - - -## Apply a blend, i.e. read the "blend" file and source the -## corresponding *_init and *_run files -## -## FIXME!!!! We need a way to check that the source of init and run -## files were successful, so that we can popd as necessary upon failure -## -blend_apply(){ - fn blend_apply $@ - - blenddir=$1 - req=(blenddir strapdir arch) - reqck || return 1 - - if [[ ! -d $blenddir || ! -f ${blenddir}/blend ]]; then - error "::1 dir:: is not a valid blend" $blenddir - return 1 - fi - - pushd $blenddir - source blend - - ## Check if release is among the supported blend_releases - [[ -z ${blend_releases[(r)$release]} ]] && { - error "::1 rel:: is not among the releases supported by blend ::2 dir:: " $rel $blenddir; - popd; - return 1 - } - - [[ -z ${blend_archs[(r)$arch]} ]] && { - error "::1 arch:: is not among the architectures supported by blend ::2 dir:: " $arch $blenddir; - popd; - return 1 - } - - notice "Selecting blend architecture ::1 arch:: " $arch - pushd ${arch} - - [[ -n ${blend_init} ]] && { - notice "Initialising blend ::1 blend:: " $blenddir - ## - [[ ! -f ${blend_init} ]] && { - error "Blend initialisation file \"::1 file::\" not found" ${blend_init} - popd - popd - return 1 - } - - source ${blend_init} - act "Initialisation successful" - } - - [[ -n ${blend_run} ]] && { - - notice "Applying blend ::1 blend:: " $blenddir - ## - [[ ! -f ${blend_run} ]] && { - error "Blend run file \"::1 file::\" not found" ${blend_run} - popd - popd - return 1 - } - source ${blend_run} - act "Application successful" - } - # come back to blend main dir - popd - # come back to working directory before the call to blend_apply - popd - -} - diff --git a/zlibs/bootstrap b/zlibs/bootstrap @@ -1,178 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -## Debootstrap things - -vars+=(bootstrap_tgz) - -bootstrap() { - fn bootstrap $@ - arch="$1" - req=(os strapdir workdir arch release mirror) - ckreq || return 1 - - notice "Bootstrapping ::1 OS:: base" ${os} - - bootstrap_tgz=$H/builds/${name_default}_${arch}.tgz - strapdir=${workdir}/${name_default}_${arch} - - if [[ -f $bootstrap_tgz ]]; then - notice "Using the existing bootstrap tarball found in ::1 tmpdir::" $H/tmp - ls -lh $bootstrap_tgz - bootstrap_tar_unpack ${strapdir} - else - # Debootstrap stage 1 - sudo debootstrap --foreign --arch ${arch} ${release} ${strapdir} ${mirror} - - qemu_install_user - - # Debootstrap stage 2 - sudo chroot ${strapdir} /debootstrap/debootstrap --second-stage - - # write all system configuration - conf_print_debconf | sudo tee ${strapdir}/debconf.set - conf_print_fstab | sudo tee ${strapdir}/etc/fstab - conf_print_hostname | sudo tee ${strapdir}/etc/hostname - conf_print_hosts | sudo tee ${strapdir}/etc/hosts - conf_print_networkifaces | sudo tee ${strapdir}/etc/network/interfaces - conf_print_resolvconf | sudo tee ${strapdir}/etc/resolv.conf - conf_print_sourceslist | sudo tee ${strapdir}/etc/apt/sources.list - - # write third-stage for chroot - bootstrap_config_thirdstage | sudo tee ${strapdir}/thirdstage.sh - bootstrap_config_cleanup | sudo tee ${strapdir}/cleanup.sh - sudo chmod +x ${strapdir}/thirdstage.sh - sudo chmod +x ${strapdir}/cleanup.sh - - # chroot into it and configure further - # Debootstrap stage 3 - export LC_ALL=C - export DEBIAN_FRONTEND=noninteractive - - mountdevprocsys ${strapdir} - - sudo chroot ${strapdir} /thirdstage.sh - sudo chroot ${strapdir} /cleanup.sh - - umountdevprocsys ${strapdir} - - bootstrap_tar_pack - fi -} - -bootstrap_config_cleanup() { - fn config_cleanup - - cat << EOF -#!/bin/sh - -rm -f /debconf.set -rm -f /thirdstage.sh -rm -f /etc/ssh/*key -rm -f /etc/ssh/*.pub -rm -f /root/.bash_history -# our file for which we check the bootstrap is complete -echo "1" > .done -EOF -} - -bootstrap_config_thirdstage() { - fn bootstrap_config_thirdstage - req=(core_packages base_packages system_packages) - ckreq || return 1 - - cat << EOF -#!/bin/sh -dpkg-divert --add --local --divert /usr/sbin/invoke-rc.d.chroot --rename /usr/sbin/invoke-rc.d -cp /bin/true /usr/sbin/invoke-rc.d -echo -e "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d -chmod +x /usr/sbin/policy-rc.d - -apt-get update -apt-get --yes --force-yes install locales-all - -debconf-set-selections /debconf.set - -apt-get update -apt-get -y install ${core_packages} - -echo "root:devuan" | chpasswd -sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' /lib/udev/rules.d/75-persistent-net-generator.rules -rm -f /etc/udev/rules.d/70-persistent-net.rules -export DEBIAN_FRONTEND=noninteractive - -apt-get --yes --force-yes install ${base_packages} ${system_packages} ${extra_packages} - -apt-get --yes --force-yes dist-upgrade - -apt-get --yes --force-yes autoremove - -apt-get clean - -rm -f /usr/sbin/policy-rc.d -rm -f /usr/sbin/invoke-rc.d -dpkg-divert --remove --rename /usr/sbin/invoke-rc.d -EOF -} - -bootstrap_tar_pack() { - fn bootstrap_tar_pack - req=(bootstrap_tgz) - ckreq || return 1 - - local _dest=`dirname $bootstrap_tgz` - - if [[ -f $bootstrap_tgz ]]; then - act "tarball found already in ::1 dir::" $_dest - else - notice "Creating boostrap tarball in ::1 tgz::" $bootstrap_tgz - silly - - pushd ${strapdir} - - mkdir -p ${_dest} - sudo tar czf $bootstrap_tgz \ - --exclude={./boot,./dev,./sys,./proc} \ - ./ - - popd - fi - ls -lh $bootstrap_tgz -} - -bootstrap_tar_unpack() { - fn bootstrap_tar_unpack $@ - local unpath="$1" - req=(unpath bootstrap_tgz) - ckreq || return 1 - - [[ -f ${unpath}/.done ]] && { - warning "bootstrap already unpacked in ::1 dir::" $unpath - return 1 - } - - mkdir -p ${unpath} - silly - tar xf $bootstrap_tgz -C ${unpath} - sudo mkdir -p ${unpath}/{boot,dev,sys,proc} -} diff --git a/zlibs/expectlib b/zlibs/expectlib @@ -1,100 +0,0 @@ -#!/usr/bin/env tclsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. -# - -package require Expect - - -proc ssh_run_cmd_ssh {sshuser sshpass sshhost sshport cmdname args} { - - set timeout 30 - - spawn ssh -p $sshport $sshuser@$sshhost - - expect "yes/no" { - send "yes\r" - expect "*?assword" { send "$sshpass\r" } - } "*?assword" { send "$sshpass\r" } - - expect "$ " { send "${cmdname} ${args}\r" } - expect "$ " { send "exit \r"} - interact -} - - -proc ssh_scpget {sshuser sshpass sshhost sshport srcfile dstfile} { - - set timeout 120 - - spawn scp -P $sshport $sshuser@$sshhost:${scporig} $scpdest - - expect "yes/no" { - send "yes\r" - expect "*?assword" { send "$sshpass\r" } - } "*?assword" { send "$sshpass\r" } - - expect "100%" - sleep 1 -} - -proc ssh_scpput {sshuser sshpass sshhost sshport srcfile dstfile} { - - set timeout 120 - - spawn scp -P $sshport $scporig $sshuser@$sshhost:$scpdest - - - expect "yes/no" { - send "yes\r" - expect "*?assword" { send "$sshpass\r" } - } "*?assword" { send "$sshpass\r" } - - expect "100%" - sleep 1 -} - - -proc expectlib_call { name args } { - - puts "name: $name" - puts "args: $args" - - switch -- $name { - scpput { - ssh_scpput {*}$args - } - scpget { - ssh_scpget {*}$args - } - sshrun { - ssh_run_cmd_ssh {*}$args - } - } -} - - -set params [split $argv " "] - -expectlib_call {*}$params - - diff --git a/zlibs/grub b/zlibs/grub @@ -1,55 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - - -grub_install_target_dev() { - fn grub_install_target_dev $@ - root=$1 - install_dev=$2 - req=(root install_dev) - freq=($root/.done) - ckreq || return 1 - - # TODO: should we use qemu-chroot here for $arch = arm (parazyd?) - sudo chroot ${root} apt-get install --assume-yes --no-install-recommends grub-common - if [[ ! -d ${root}/boot/grub ]]; then - sudo mkdir ${root}/boot/grub - fi - - ztmp - devicemap=$ztmpfile - - cat > ${devicemap} <<EOF -(hd0) /dev/loop0 -EOF - sudo cp ${devicemap} ${root}/boot/grub/device.map - sudo chroot ${root} grub-mkconfig -o /boot/grub/grub.cfg - ## we now tamper with grub.cfg, to remove all references to - ## loopback devices... - ## FIXME!!! This is a hack... - sudo -- sed -r -i -e 's/.*loop.*//g' ${root}/boot/grub/grub.cfg - - sudo grub-install --root-directory=${root} --no-floppy \ - --modules="ext2 part_msdos" --target=i386-pc --boot-directory=${root}/boot \ - ${install_dev} -} diff --git a/zlibs/helpers b/zlibs/helpers @@ -1,178 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -## Helper functions that make your life easier - -escalate() { - fn escalate $@ - local user="$1" - local cmnd="$2" - req=(user cmnd) - ckreq || return 1 - - if isfound sudo; then - sudo -E -u ${user} ${=cmnd} - else - su -c "${=cmnd}" ${user} - fi -} - -findloopmapp() { - fn findloopmapp - req=(imgpath imgname workdir) - ckreq || return 1 - - pushd ${workdir} - loopdevice=`sudo losetup -f --show ${imgname}` - mappdevice=`sudo kpartx -va $loopdevice | sed -E 's/.*(loop[0-9])p.*/\1/g' | head -1` - func "Loop device: ::1 loopdev::" $loopdevice - func "Mapper device: ::1 mappdev::" $mappdevice - - silly sleep - - mappdevice="/dev/mapper/${mappdevice}" - bootpart=${mappdevice}p1 - rootpart=${mappdevice}p2 - - popd -} - -mountdevprocsys() { - fn mountdevprocsys $@ - local mntdir="$1" - req=(mntdir) - ckreq || return 1 - - sudo mount -o bind /sys ${mntdir}/sys && act "mounted /sys in $mntdir" - sudo mount -t proc proc ${mntdir}/proc && act "mounted /proc in $mntdir" - sudo mount -o bind /dev ${mntdir}/dev && act "mounted /dev in $mntdir" - sudo mount -o bind /dev/pts ${mntdir}/dev/pts && act "mounted /dev/pts $mntdir" -} - -umountdevprocsys() { - fn umountdevprocsys $@ - local mntdir="$1" - req=(mntdir) - ckreq || return 1 - - sudo umount ${mntdir}/dev/pts && act "unmounted /dev/pts in $mntdir" && sleep 2 - sudo umount ${mntdir}/dev && act "unmounted /dev in $mntdir" && sleep 2 - sudo umount ${mntdir}/proc && act "unmounted /proc in $mntdir" && sleep 2 - sudo umount ${mntdir}/sys && act "unmounted /sys in $mntdir" && sleep 2 -} - -aptautostart() { - fn aptautostart $@ - local watdo="$1" - local wheredo="$2" - req=(watdo wheredo) - - case $watdo in - on) - aptautostart printon | sudo tee ${wheredo}/aptautostart.sh - sudo chmod +x ${wheredo}/aptautostart.sh - sudo chroot ${wheredo} /aptautostart.sh - ;; - off) - aptautostart printoff | sudo tee ${wheredo}/aptautostart.sh - sudo chmod +x ${wheredo}/aptautostart.sh - sudo chroot ${wheredo} /aptautostart.sh - ;; - printon) - cat << EOF -#!/bin/sh -rm -f /usr/sbin/policy-rc.d -rm -f /usr/sbin/invoke-rc.d -dpkg-divert --remove --rename /usr/sbin/invoke-rc.d -rm -f /aptautostart.sh -EOF - ;; - printoff) - cat << EOF -#!/bin/sh -dpkg-divert --add --local --divert /usr/sbin/invoke-rc.d.chroot --rename /usr/sbin/invoke-rc.d -cp /bin/true /usr/sbin/invoke-rc.d -echo -e "#!/bin/sh\nexit 101" > /usr/sbin/policy-rc.d -chmod +x /usr/sbin/policy-rc.d -EOF - ;; - *) - error "Please pass a correct argument (on/off)" - ;; - esac -} - -silly() { - fn silly $@ - local arg1="$1" - local arg2="$2" - - # cheers mailpile! - funneh=("do not think of purple hippos" - "increasing entropy & scrambling bits" - "indexing kittens..." - "patching bugs..." - "spinning violently around the y-axis" - "warming up particle accelerator" - "this server is powered by a lemon and two electrodes" - "becoming self-aware" - "BCC-ing ALL THE SPIES!" - "all of your config settings & passwords are encrypted with AES-256" - "the most common e-mail password is 123456, hopefully yours is different" - "good things come to those who wait" - "Make Free Software and be happy" - "We like volcanos, do you like volcanos?" - "Crossing out swear words..." - "Informing David Cameron of suspicious ac^H^H^H ... naaah :)" - "Abandon all hope, ye who enter here" - "Compiling bullshit bingo grid..." - "Estimating chance of asteroid hitting Earth" - "Applying coupons..." - "Backing up the entire Internet..." - "Making you wait for no reason" - "Doing nothing" - "Pay no attention to the man behind the curtain" - "You are great just the way you are" - "Supplying monkeys with typewriters" - "Swapping time and space" - "Self potato" - "Hey, there is some Nigerian prince here who wants to give you twenty million dollars..." - "A million hamsters are spinning their wheels right now") - - local rnd=`shuf -i1-30 -n 1` - act "${funneh[$rnd]}" - - [[ arg1 == "sleep" ]] && sleep $arg2 -} - -check_executable() { - fn check_executable $@ - progname=$1 - - if [[ `which ${progname} | grep "not found" | wc -l` -ge 1 ]]; then - return 0; - else - return 1; - fi - -} diff --git a/zlibs/imaging b/zlibs/imaging @@ -1,168 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -## Imaging - -vars+=(imgname imgpath) - -img_mkimage() { - fn img_mkimage $@ - imgpath=${strapdir}.img - local mbrtype="$1" - local bootfstype="$2" - local rootfstype="$3" - local imgsize="$4" - req=(imgpath imgsize mbrtype bootfstype rootfstype) - ckreq || return 1 - - imgname=`basename ${imgpath}` - - notice "Creating raw image..." - silly - dd if=/dev/zero \ - of="${imgpath}" \ - bs=1M count=${imgsize} - - if [[ $mbrtype == "dos" ]]; then - img_partition_dos $bootfstype $rootfstype - elif [[ $mbrtype == "gpt" ]]; then - img_partition_gpt $bootfstype $rootfstype - else - error "No valid MBR type specified..." - zerr; zshexit - fi - - img_mount - img_rsync_strapdir - # [[ -z $override_bootloader ]] && img_install_bootloader - img_umount -} - -img_partition_dos() { - fn img_partition_dos $@ - local bootfstype="$1" - local rootfstype="$2" - req=(imgname imgpath bootfstype rootfstype) - ckreq || return 1 - - notice "Partitioning with dos" - silly - - parted_boot=${parted_boot:-ext2 0 64} - parted_root=${parted_root:-ext4 64 -1} - - pushd ${workdir} - - parted ${imgname} --script -- mklabel msdos - parted ${imgname} --script -- mkpart primary ${parted_boot} - parted ${imgname} --script -- mkpart primary ${parted_root} - - # setup loopdevice and mappdevice (zlibs/helpers) - findloopmapp - - img_format_partitions ${bootfstype} ${rootfstype} - - popd -} - -img_format_partitions() { - fn img_format_partitions $@ - local bootfstype="$1" - local rootfstype="$2" - req=(bootfstype rootfstype bootpart rootpart) - ckreq || return 1 - - notice "Formatting partitions..." - sudo mkfs.${bootfstype} ${bootpart} - sudo mkfs.${rootfstype} ${rootpart} - -} - -img_partition_gpt() { - fn img_partition_gpt $@ - local bootfstype="$1" - local rootfstype="$2" - req=(imgname imgpath bootfstype rootfstype) - ckreq || return 1 - - notice "Partitioning with gpt" - silly - - pushd ${workdir} - - parted ${imgname} --script -- mklabel gpt - cgpt create -z ${imgname} - cgpt create ${imgname} - cgpt add -i 1 -t kernel -b 8192 -s 32768 -l kernel -S 1 -T 5 -P 10 ${imgname} - cgpt add -i 2 -t data -b 40960 -s `expr $(cgpt show ${imgname} \ - | awk '/Sec GPT table/ {print \$1}') - 40960` -l Root ${imgname} - - # setup loopdevice and mappdevice (zlibs/helpers) - findloopmapp - - img_format_partitions ${bootfstype} ${rootfstype} - - popd -} - -img_rsync_strapdir() { - fn img_rsync_strapdir - req=(workdir strapdir) - ckreq || return 1 - - notice "Rsyncing strapdir to raw image..." - silly - sudo rsync -HPavz -q ${strapdir}/* ${workdir}/rootp -} - -img_install_bootloader() { - fn img_install_bootloader - - conf_install_kernel ${workdir}/rootp - conf_install_grub ${workdir}/rootp -} - -img_mount() { - fn img_mount - req=(bootpart rootpart workdir) - ckreq || return 1 - - mkdir -p ${workdir}/rootp - - sudo mount ${rootpart} ${workdir}/rootp && act "mounted root partition" - sudo mkdir -p ${workdir}/rootp/{boot,dev,proc,sys} - sudo mount ${bootpart} ${workdir}/rootp/boot && act "mounted boot partition" - - mountdevprocsys ${workdir}/rootp -} - -img_umount() { - fn img_umount - req=(bootpart rootpart workdir) - ckreq || return 1 - - umountdevprocsys ${workdir}/rootp - - sudo umount ${workdir}/rootp/boot && act "umounted boot partition" - sudo umount ${workdir}/rootp && act "umounted root partition" -} diff --git a/zlibs/isolinux b/zlibs/isolinux @@ -1,162 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -vars+=(iso isodir) - -isolinux_prepare() { - fn isolinux_prepare $@ - req=(strapdir os release version arch) - root=$strapdir - freq=($strapdir/.done) - # freq=($R/chroot/$chroot_arch/$iso/initrd.gz) - reqck || return 1 - - iso=${os}_${release}_${version}_${arch}.iso - isodir=$workdir/iso_${os}_${release}_${version}_${arch} - notice "Preparing ISO in $isodir" - mkdir -p $isodir - - [[ -r /usr/lib/ISOLINUX/isolinux.bin ]] || { - error "Isolinux binary not found" - zerr; zshexit } - [[ -r /usr/lib/ISOLINUX/isohdpfx.bin ]] || { - error "Isolinux binary not found" - zerr; zshexit } - - mkdir -p $isodir/isolinux - cp /usr/lib/ISOLINUX/isolinux.bin $isodir/isolinux - cp /usr/lib/syslinux/modules/bios/*.c32 $isodir/isolinux - cat <<EOF > $isodir/isolinux/isolinux.cfg -path -include menu.cfg -default vesamenu.c32 -prompt 0 -timeout 0 -label Shell -com32 rosh.c32 -EOF - cat <<EOF > $isodir/isolinux/menu.cfg -menu hshift 7 -menu width 61 - -menu title Devuan GNU+Linux - -include stdmenu.cfg -include txt.cfg -EOF - cat <<EOF > $isodir/isolinux/stdmenu.cfg -menu color title * #FFFFFFFF * -menu color border * #00000000 #00000000 none -menu color sel * #ffffffff #76a1d0ff * -menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * -menu color tabmsg * #ffffffff #00000000 * -menu color help 37;40 #ffdddd00 #00000000 none -# XXX When adjusting vshift, take care that rows is set to a small -# enough value so any possible menu will fit on the screen, -# rather than falling off the bottom. -menu vshift 12 -menu rows 10 -menu helpmsgrow 15 -# The command line must be at least one line from the bottom. -menu cmdlinerow 16 -menu timeoutrow 16 -menu tabmsgrow 18 -menu tabmsg Press ENTER to boot or TAB to edit a menu entry -EOF - - cat <<EOF > $isodir/isolinux/txt.cfg -label default - menu label ^Boot Devuan $release $version $arch - kernel linux - append vga=788 initrd=initrd.img boot=live -EOF -# -# append vga=788 initrd=initrd.img boot=live toram=filesystem.squashfs - -} - -isolinux_mkinitrd() { - fn isolinux_mkinitrd $@ - req=(iso isodir arch) - freq=($isodir/isolinux/isolinux.bin) - ckreq || return 1 - - sudo chroot $strapdir apt-get install -y live-boot live-boot-initramfs-tools extlinux - # sudo chroot $strapdir update-initramfs -u - # sudo chroot $strapdir update-initramfs -c -k all - sudo chroot $strapdir live-update-initramfs -u - - # latest kernel - local kernel="" - for i in ${(f)"$(ls -t $strapdir/boot)"}; do - [[ "$i" =~ "vmlinuz" ]] || continue - kernel=$strapdir/boot/$i - done - # latest ramdisk - local initrd="" - for i in ${(f)"$(ls -t $strapdir/boot)"}; do - [[ "$i" =~ "initrd" ]] || continue - initrd=$strapdir/boot/$i - done - - cp -v $kernel $isodir/isolinux/linux - cp -v $initrd $isodir/isolinux/initrd.img - -} - -isolinux_mkusr() { - fn isolinux_mkusr $@ - req=(iso isodir) - ckreq || return 1 - - ztmp - conf_print_usrexcludes > $ztmpfile - - usrdir=$workdir/usr_${os}_${release}_${version}_${arch} - - mkdir -p $usrdir - - rsync -raX $strapdir/ $usrdir --exclude-from=$ztmpfile - - mkdir -p $isodir/live - mksquashfs $usrdir/ $isodir/live/filesystem.squashfs -noappend -} - -isolinux_make() { - fn isolinux_make $@ - req=(iso isodir outdir) - freq=($isodir/isolinux/isolinux.bin) - ckreq || return 1 - - mkdir -p $outdir - - sudo xorriso \ - -as mkisofs -r -J -joliet-long -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin \ - -partition_offset 16 -V DEVUAN \ - -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ - -boot-info-table -o $outdir/$iso $isodir - - notice "$iso ready" - ls -lh $outdir/$iso -} - diff --git a/zlibs/kernel b/zlibs/kernel @@ -1,56 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - - -kernel_x86_install_default(){ - fn kernel_x86_install_default $@ - req=(strapdir os release version arch) - root=$strapdir - freq=($root/.done) - reqck || return 1 - - local kernel_base=linux-image - local kernel="" - - case $arch in - amd64) - kernel=${kernel_base}-amd64 - ;; - i386) - kernel=${kernel_base}-586 - ;; - *) - error "Architecture ::1 arch:: is not supported!!!" ${arch} - zerr; zshexit - ;; - esac - - notice "Installing stock kernel for ::1 arch:: (::2 kernel::)" $arch $kernel - - mountdevprocsys ${root} - - sudo chroot ${root} apt-get --yes --force-yes --no-install-recommends install $kernel - - umountdevprocsys ${root} - notice "default kernel installed" -} diff --git a/zlibs/packages b/zlibs/packages @@ -1,115 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - - -pkg_install(){ - fn pkg_install $@ - - pkg_name=$1 - root=${2:-$strapdir} - req=(pkg_name root) - reqck || return 1 - - mountdevprocsys ${root} - - sudo chroot ${root} apt-get --yes --force-yes install ${pkg_name} - - umountdevprocsys ${root} - - -} - - -pkg_install_ssh(){ - - -} - - -pkg_remove(){ - - -} - - -pkg_remove_ssh(){ - - -} - - -pkg_set_list(){ - - fn pkg_set_list $@ - - pkglist=$1 - root=${2:-$strapdir} - req=(pkglist root) - reqck || return 1 - - - scriptfilebase=set_package_list.sh - scriptfile=${root}/${scriptfilebase} - - pkg_config_set_list ${pkglist} | sudo tee ${scriptfile} - sudo chmod u+x ${scriptfile} - sudo cp ${pkglist} ${root}/`basename ${pkglist}` - - [[ $? = 0 ]] || { - error "failed: _pkg_config_set_list ${pkglist} ${scriptfile}" - zsherr; zshexit - } - - mountdevprocsys ${root} - - sudo chroot ${root} ./${scriptfilebase} - - umountdevprocsys ${root} - - sudo rm ${scriptfile} ${root}/`basename ${pkglist}` - -} - -pkg_config_set_list() { - - fn _pkg_config_set_list $@ - - pkglist=`basename $1` - req=(pkglist) - reqck || return 1 - - cat <<EOF -apt-get install dselect -dpkg --get-selections > selections.bak -dpkg --clear-selections -dselect update -dpkg --set-selections < ${pkglist} -dselect install -dselect config -dselect remove - -## Now we purge all the packages marked as "deinstall" -apt-get purge `dpkg --get-selections | grep "deinstall$" | cut -f 1` - -EOF -} diff --git a/zlibs/qemu b/zlibs/qemu @@ -1,259 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -qemu_install_user() { - fn qemu_install_user - local cputype="$1" - - [[ -n $enable_qemu ]] && { - act "installing qemu-arm-static" - sudo cp -vf /usr/bin/qemu-arm-static $strapdir/usr/bin/ - } - - [[ -n $cputype ]] && { - act "compiling qemu wrapper" - cp $R/src/qemu-wrapper.c /tmp/qemu-wrapper.c - sed -i -e 's/cortex-a8/'$cputype'/' /tmp/qemu-wrapper.c - gcc -static /tmp/qemu-wrapper.c -O3 -s /tmp/qemu-wrapper - sudo mv -vf /tmp/qemu-wrapper $strapdir/usr/bin/ - - print ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/qemu-wrapper:' | sudo tee /proc/sys/fs/binfmt_misc/register - } -} - -qemu_make_img() { - - fn qemu_make_img $@ - local imgfile=${1:-"$H/builds/${name_default}_${arch}.img"} - local imgsize=${2:-2G} - local imgformat=${3:-raw} - req=(strapdir os release version arch imgfile imgsize) - root=$strapdir - freq=($root/.done) - reqck || return 1 - - local blockskip=2050 - - ## create the qemu image - notice "Creating qemu image: $imgfile" - - qemu-img create -f ${imgformat} ${imgfile} ${imgsize} - [[ $? = 0 ]] || { - error "failed: qemu-img create -f ${imgformat} ${imgfile} ${imgsize}" - zsherr; zshexit } - - sudo parted ${imgfile} --script -- mklabel msdos && - sudo parted ${imgfile} --script -- mkpart primary ${blockskip}s -1s && - sudo parted ${imgfile} --script -- set 1 boot on - [[ $? = 0 ]] || { - error "failed: parted $imgfile scripts (mklabel, mkpart and setboot)" - zsherr; zshexit } - - ## setup the loop device - loop1=`sudo losetup -f` - sudo losetup ${loop1} ${imgfile} - [[ $? = 0 ]] || { - error "failed: losetup $loop2 $imgfile" - zsherr; zshexit } - - loop2=`sudo losetup -f` - sudo losetup -o $((${blockskip} * 512)) ${loop2} ${loop1} - [[ $? = 0 ]] || { - sudo losetup -d ${loop1} - error "failed: losetup -o $((${blockskip} * 512)) ${loop2} ${loop1}" - zsherr; zshexit } - - ## now we create the fs - act "creating filesystem" - sudo mkfs.ext4 ${loop2} - [[ $? = 0 ]] || { - sudo losetup -d ${loop2} - sudo losetup -d ${loop1} - error "failed: mkfs.ext4 $loop2" - zsherr; zshexit } - - ## and we loop-mount it - - ztmpd - mntdir=$ztmpdir - sudo mount -o loop ${loop2} ${mntdir} - [[ $? = 0 ]] || { - sudo losetup -d ${loop2} - sudo losetup -d ${loop1} - error "failed: mount -o loop ${loop2} ${mntdir}" - zsherr; zshexit } - - func "mntdir: $mntdir" - func "strapdir: $strapdir" - - # now we rsync everything - notice "Copying filesystem into image" - # ztmp - # excludefile=${ztmp} - # qemu_config_exclude | sudo tee ${excludefile} - # sudo rsync -raX --exclude-from=${excludefile} ${strapdir}/ ${mntdir} - sudo rsync -raX ${strapdir}/ ${mntdir} - [[ $? = 0 ]] || { - umount $mntdir - sudo losetup -d ${loop2} - sudo losetup -d ${loop1} - error "failed: rsync -raX ${strapdir}/ ${mntdir}" - zsherr; zshexit } - - # we now install the grub bootloader - mountdevprocsys ${mntdir} - grub_install_target_dev ${mntdir} ${loop1} - umountdevprocsys ${mntdir} - - sync - sudo umount ${mntdir} - - sudo losetup -d ${loop2} - sudo losetup -d ${loop1} - - if [[ ! -z ${imgfile} ]]; then - notice "QEMU image created in ::1 imgfile::" ${imgfile} - else - warning "Unable to create QEMU image file in ::1 imgfile::" ${imgfile} - fi -} - -qemu_config_esclude(){ - fn qemu_config_exclude - - cat <<EOF -- /proc/* -- /sys/* -- /dev/* -- /tmp/* -- /mnt/* -- /live -- /persistence.conf -- /boot/grub/grub.cfg -- /boot/grub/menu.lst -- /boot/grub/device.map -- /boot/*.bak -- /boot/*.old-dkms -- /etc/udev/rules.d/70-persistent-cd.rules -- /etc/udev/rules.d/70-persistent-net.rules -- /etc/fstab -- /etc/fstab.d/* -- /etc/mtab -- /etc/blkid.tab -- /etc/blkid.tab.old -- /etc/apt/sources.list~ -- /etc/crypttab -- /etc/initramfs-tools/conf.d/resume # see remove-cryptroot and nocrypt.sh -- /etc/initramfs-tools/conf.d/cryptroot # see remove-cryptroot and nocrypt.sh -- /home/snapshot -- /var/log/* -- /var/log/[a-b,A-Z]* -- /var/log/[d-f]* -- /var/log/[h-z]* -- /var/log/*gz - -- /var/cache/apt/archives/*.deb -- /var/cache/apt/pkgcache.bin -- /var/cache/apt/srcpkgcache.bin -- /var/cache/apt/apt-file/* -- /var/cache/debconf/*~old -- /var/lib/apt/lists/* -- /var/lib/apt/*~ -- /var/lib/apt/cdroms.list -- /var/lib/aptitude/*.old -- /var/lib/dhcp/* -- /var/lib/dpkg/*~old -- /var/spool/mail/* -- /var/mail/* -- /var/backups/*.gz -#- /var/backups/*.bak -- /var/lib/dbus/machine-id -- /var/lib/live/config/* - -- /usr/share/icons/*/icon-theme.cache - -- /root/.aptitude -- /root/.bash_history -- /root/.disk-manager.conf -- /root/.fstab.log -- /root/.lesshst -- /root/*/.log -- /root/.local/share/* -- /root/.nano_history -- /root/.synaptic -- /root/.VirtualBox -- /root/.ICEauthority -- /root/.Xauthority -- /root/.links2 - -- /root/.ssh -- /root/[a-zA-Z0-9]* - -- /home/*/.Trash* -- /home/*/.local/share/Trash/* -- /home/*/.mozilla/*/Cache/* -- /home/*/.mozilla/*/urlclassifier3.sqlite -- /home/*/.mozilla/*/places.sqlite -- /home/*/.mozilla/*/cookies.sqlite -- /home/*/.mozilla/*/signons.sqlite -- /home/*/.mozilla/*/formhistory.sqlite -- /home/*/.mozilla/*/downloads.sqlite -- /home/*/.adobe -- /home/*/.aptitude -- /home/*/.bash_history -- /home/*/.cache -- /home/*/.dbus -- /home/*/.gksu* -- /home/*/.gvfs -- /home/*/.lesshst -- /home/*/.log -- /home/*/.macromedia -- /home/*/.nano_history -- /home/*/.pulse* -- /home/*/.recently-used -- /home/*/.recently-used.xbel -- /home/*/.local/share/recently-used.xbel -- /home/*/.thumbnails/large/* -- /home/*/.thumbnails/normal/* -- /home/*/.thumbnails/fail/* -- /home/*/.vbox* -- /home/*/.VirtualBox -- /home/*/VirtualBox\ VMs -#- /home/*/.wine -- /home/*/.xsession-errors* -- /home/*/.ICEauthority -- /home/*/.Xauthority - -# You might want to comment these out if you're making a snapshot for -# your own personal use, not to be shared with others. -- /home/*/.gnupg -- /home/*/.ssh -- /home/*/.xchat2 - -### ignore all non-hidden files in /home/devuan -- KatolaZ -- 2016-05-21 - -- /home/devuan/[a-zA-Z0-9]* - - -EOF -} diff --git a/zlibs/sysconf b/zlibs/sysconf @@ -1,318 +0,0 @@ -#!/usr/bin/env zsh -# -# Copyright (c) 2016 Dyne.org Foundation -# libdevuansdk is written and maintained by -# Jaromil <jaromil@dyne.org> -# KatolaZ <katolaz@freaknet.org> -# parazyd <parazyd@dyne.org> -# -# This file is part of libdevuansdk -# -# This source code is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software 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. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this source code. If not, see <http://www.gnu.org/licenses/>. - -## base system configurations - -conf_print_debconf() { - fn conf_print_debconf - - cat << EOF -console-common console-data/keymap/policy select Select keymap from full list -console-common console-data/keymap/full select en-latin1-nodeadkeys -EOF -} - -conf_print_fstab() { - fn conf_print_fstab - - cat << EOF -#<file system> <mount point> <type> <options> <dump> <pass> -proc /proc proc nodev,noexec,nosuid 0 0 - -# rootfs -/dev/sda2 / ext4 errors=remount-ro 0 1 - -# boot -/dev/sda1 /boot ext2 noauto 0 0 -EOF -} - -conf_print_hostname() { - fn conf_print_hostname - req=(os) - ckreq || return 1 - - print ${os} -} - -conf_print_hosts() { - fn conf_print_hosts - req=(os) - ckreq || return 1 - - cat << EOF -127.0.0.1 ${os} localhost -::1 localhost ip6-localhost ip6-loopback -fe00::0 ip6-localnet -fe00::0 ip6-mcastprefix -fe02::1 ip6-allnodes -fe02::1 ip6-allrouters -EOF -} - -conf_print_networkifaces() { - fn conf_print_networkifaces - - cat << EOF -# interfaces(5) file used by ifup(8) and ifdown(8) - -# Please note that this file is written to be used with dhcpcd -# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf' - -# Include files from /etc/network/interfaces.d: -source-directory /etc/network/interfaces.d - -auto lo -iface lo inet loopback - -auto eth0 -iface eth0 inet dhcp - -# auto eth0 -# iface eth0 inet static -# address 10.0.1.10 -# netmask 255.255.255.0 - -# allow-hotplug wlan0 -# iface wlan0 inet manual -# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf - -# allow-hotplug wlan1 -# iface wlan1 inet manual -# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf -EOF -} - -conf_print_resolvconf() { - fn conf_print_resolvconf - - cat << EOF -nameserver 8.8.8.8 -nameserver 8.8.4.4 -EOF -} - -conf_print_sourceslist() { - fn conf_print_sourceslist - req=(mirror release section) - ckreq || return 1 - - cat << EOF -deb ${mirror} ${release} ${section} -deb ${mirror} ${release}-updates ${section} -deb ${mirror} ${release}-security ${section} - -deb-src ${mirror} ${release} ${section} -deb-src ${mirror} ${release}-updates ${section} -deb-src ${mirror} ${release}-security ${section} -EOF -} - -conf_print_usrexcludes() { - fn conf_print_usrexcludes -cat <<EOF -# rsync excludes file for refractasnapshot and refractasnapshot-gui -# version 9.2.0 - - -# Exclude some system files. These are required, and you probably -# shouldn't change them. - -- /dev/* -- /cdrom/* -- /media/* -- /swapfile -- /mnt/* -- /sys/* -- /proc/* -- /tmp/* -- /live -- /persistence.conf -- /boot/grub/grub.cfg -- /boot/grub/menu.lst -- /boot/grub/device.map -- /boot/*.bak -- /boot/*.old-dkms -- /etc/udev/rules.d/70-persistent-cd.rules -- /etc/udev/rules.d/70-persistent-net.rules -- /etc/fstab -- /etc/fstab.d/* -- /etc/mtab -- /etc/blkid.tab -- /etc/blkid.tab.old -- /etc/apt/sources.list~ -- /etc/crypttab -- /etc/initramfs-tools/conf.d/resume # see remove-cryptroot and nocrypt.sh -- /etc/initramfs-tools/conf.d/cryptroot # see remove-cryptroot and nocrypt.sh -- /home/snapshot - -# Added for newer version of live-config/live-boot in wheezy -# These are only relevant here if you create a snapshot while -# you're running a live-CD or live-usb. -- /lib/live/overlay -- /lib/live/image -- /lib/live/rootfs -- /lib/live/mount -- /run/* - - -## Entries below are optional. They are included either for privacy -## or to reduce the size of the snapshot. If you have any large -## files or directories, you should exclude them from being copied -## by adding them to this list. -## -## Entries beginning with /home/*/ will affect all users. - - -# Uncomment this to exclude everything in /var/log/ -#- /var/log/* - -# As of version 9.2.0, current log files are truncated, -# and archived log files are excluded. -# -# The next three lines exclude everything in /var/log -# except /var/log/clamav/ (or anything else beginning with "c") and -# /var/log/gdm (or anything beginning with "g"). -# If clamav log files are excluded, freshclam will give errors at boot. -- /var/log/[a-b,A-Z]* -- /var/log/[d-f]* -- /var/log/[h-z]* -- /var/log/*gz - -- /var/cache/apt/archives/*.deb -- /var/cache/apt/pkgcache.bin -- /var/cache/apt/srcpkgcache.bin -- /var/cache/apt/apt-file/* -- /var/cache/debconf/*~old -- /var/lib/apt/lists/* -- /var/lib/apt/*~ -- /var/lib/apt/cdroms.list -- /var/lib/aptitude/*.old -- /var/lib/dhcp/* -- /var/lib/dpkg/*~old -- /var/spool/mail/* -- /var/mail/* -- /var/backups/*.gz -#- /var/backups/*.bak -- /var/lib/dbus/machine-id -- /var/lib/live/config/* - -- /usr/share/icons/*/icon-theme.cache - -- /root/.aptitude -- /root/.bash_history -- /root/.disk-manager.conf -- /root/.fstab.log -- /root/.lesshst -- /root/*/.log -- /root/.local/share/* -- /root/.nano_history -- /root/.synaptic -- /root/.VirtualBox -- /root/.ICEauthority -- /root/.Xauthority -- /root/.links2 - -- /root/.ssh -- /root/[a-zA-Z0-9]* - -- /home/*/.Trash* -- /home/*/.local/share/Trash/* -- /home/*/.mozilla/*/Cache/* -- /home/*/.mozilla/*/urlclassifier3.sqlite -- /home/*/.mozilla/*/places.sqlite -- /home/*/.mozilla/*/cookies.sqlite -- /home/*/.mozilla/*/signons.sqlite -- /home/*/.mozilla/*/formhistory.sqlite -- /home/*/.mozilla/*/downloads.sqlite -- /home/*/.adobe -- /home/*/.aptitude -- /home/*/.bash_history -- /home/*/.cache -- /home/*/.dbus -- /home/*/.gksu* -- /home/*/.gvfs -- /home/*/.lesshst -- /home/*/.log -- /home/*/.macromedia -- /home/*/.nano_history -- /home/*/.pulse* -- /home/*/.recently-used -- /home/*/.recently-used.xbel -- /home/*/.local/share/recently-used.xbel -- /home/*/.thumbnails/large/* -- /home/*/.thumbnails/normal/* -- /home/*/.thumbnails/fail/* -- /home/*/.vbox* -- /home/*/.VirtualBox -- /home/*/VirtualBox\ VMs -#- /home/*/.wine -- /home/*/.xsession-errors* -- /home/*/.ICEauthority -- /home/*/.Xauthority - -# You might want to comment these out if you're making a snapshot for -# your own personal use, not to be shared with others. -- /home/*/.gnupg -- /home/*/.ssh -- /home/*/.xchat2 - -### ignore all non-hidden files in /home/devuan -- KatolaZ -- 2016-05-21 - -- /home/devuan/[a-zA-Z0-9]* - -### -### ignore the symlink /initrd.img -> /boot/initrd.img-`uname -r` -### -- KatolaZ -- 2016-05-21 -### - -##- /initrd.img - -# Exclude ssh_host_keys. New ones will be generated upon live boot. -# This fixes a security hole in all versions before 9.0.9-3. -# If you really want to clone your existing ssh host keys -# in your snapshot, comment out these two lines. -#- /etc/ssh/ssh_host_*_key* -#- /etc/ssh/ssh_host_key* - -# Examples of things to exclude in order to keep the image small: -#- /home/fred/Downloads/* -#- /home/*/Music/* -#- /home/user/Pictures/* -#- /home/*/Videos/* - - -# To exclude all hidden files and directories in your home, uncomment -# the next line. You will lose custom desktop configs if you do. -##- /home/*/.[a-z,A-Z,0-9]* - - -#### Exclude the large initramfs -- KatolaZ -- 2016-05-16 - -##- /boot/initrd.img* - -#### Exclude inittab backup files -- KatolaZ -- 2016-06-04 - -##- /etc/inittab.* -EOF -} diff --git a/zuper b/zuper @@ -1 +0,0 @@ -Subproject commit a9b9d76b0d7efdf9ad6f5180ae447b3eabbc09d1