begin refactoring
This commit is contained in:
parent
c61cbfca84
commit
a52e018a44
|
|
@ -1,3 +0,0 @@
|
|||
[submodule "zuper"]
|
||||
path = zuper
|
||||
url = https://github.com/dyne/zuper
|
||||
61
README.md
61
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/>.
|
||||
|
||||
39
config
39
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"
|
||||
|
|
@ -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.
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
libdevuansdk configuration
|
||||
--------------------------
|
||||
|
||||
## Variables
|
||||
|
||||
### `strapdir`
|
||||
Path to your bootstrap directory (rootfs)
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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/>.
|
||||
|
||||
|
||||
112
sdk.init
112
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"
|
||||
|
|
@ -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);
|
||||
}
|
||||
97
zlibs/blends
97
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
|
||||
|
||||
}
|
||||
|
||||
178
zlibs/bootstrap
178
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}
|
||||
}
|
||||
100
zlibs/expectlib
100
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
|
||||
|
||||
|
||||
55
zlibs/grub
55
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}
|
||||
}
|
||||
178
zlibs/helpers
178
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
|
||||
|
||||
}
|
||||
168
zlibs/imaging
168
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"
|
||||
}
|
||||
162
zlibs/isolinux
162
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
|
||||
}
|
||||
|
||||
56
zlibs/kernel
56
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"
|
||||
}
|
||||
115
zlibs/packages
115
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
|
||||
}
|
||||
259
zlibs/qemu
259
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
|
||||
}
|
||||
318
zlibs/sysconf
318
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
|
||||
}
|
||||
1
zuper
1
zuper
|
|
@ -1 +0,0 @@
|
|||
Subproject commit a9b9d76b0d7efdf9ad6f5180ae447b3eabbc09d1
|
||||
Loading…
Reference in New Issue