diff --git a/blends/devuan-minimal-live/config b/blends/devuan-minimal-live/config new file mode 100644 index 0000000..453546a --- /dev/null +++ b/blends/devuan-minimal-live/config @@ -0,0 +1,318 @@ +#!/usr/bin/env zsh +## configuration file for devuan-live blend + +vars+=(username userpass default_shell mkefi grubversion hookscripts) +arrs+=(custom_deb_packages) + +blend_name="devuan-minimal-live_" + +username="devuan" +userpass="devuan" +default_shell="/bin/bash" + +# comment to disable: +#hookscripts="yes" + +# uncomment to create uefi-bootable iso +#mkefi="yes" +#efi_work="$BLENDPATH/efi-files" + +#grubversion="grub-pc" +#grubversion="grub-efi-amd64" + +release="ascii" +version="2.0.0_beta" +mirror="http://devuan.mine.nu/merged" +section="main" +image_name="${os}_${release}_${version}_${arch}_minimal" + + +base_packages_option=(--no-install-recommends) +extra_packages_option=(--no-install-recommends) + + +### base package set +minimal_base_packages+=( + acpi + acpi-support-base + acpid + at + bash + bash-completion + bc + busybox + console-common + console-data + console-setup + console-setup-linux + coreutils + dash + dc + dialog + discover + dselect + file + groff-base + info + kbd + laptop-detect + locales + lsof + syslinux + util-linux-locales + zsh +) + +## admin package set +minimal_admin_packages+=( + debootstrap + entr + gddrescue + gdisk + htop + iftop + iotop + iw + mtr-tiny + multitail + ncdu + parted + pciutils + psmisc + sudo + time + wavemon + wireless-tools + wpasupplicant + +) + +## editors package set +minimal_editors_packages+=( + ed + nano + vim-tiny + zile +) + + +## networking package set +minimal_net_packages+=( + bind9-host + bittornado + curl + dnsutils + edbrowse + fetchmail + ftp + geoip-bin + irssi + lftp + links2 + lrzsz + mcabber + minicom + mosh + msmtp + mutt + netcat + net-tools + nfacct + nrss + openssh-client + openssh-server + procmail + rsync + telnet + tin + traceroute + w3m + wget + whois +) + + +## productivity package set +minimal_prod_packages+=( + abook + apcalc + aspell + aspell-en + calcurse + clex + dvtm + fbi + fbterm + ghostscript + gnupg + gnupg2 + gnupg-agent + mc + parallel + poppler-utils + rpl + rename + sc + screen + taskwarrior + tmux +) + +## programming package set +minimal_devel_packages+=( + tcc + libc6-dev + m4 + patch + perl + perl-base + perl-modules-5.24 + python2.7-minimal + python3.5-minimal + gawk + guile-2.0 + guile-2.0-libs +) + +## games package set +minimal_games_packages+=( + bastet + bombardier + bsdgames + cavezofphear + crawl + curseofwar + empire + freesweep + gnuchess + greed + matanza + moria + nethack-console + ninvaders + omega-rpg + pacman4console + pente + sudoku +) + +## accessibility package set +minimal_a11y_packages+=( + beep + brltty + espeak + espeakup + yasr +) + + +## multimedia package set +minimal_media_packages+=( + alsa-utils + caca-utils + hasciicam + imagemagick + jhead + moc + radio + sox +) + +## misc package set +minimal_misc_packages+=( + cmatrix + cowsay + eject + figlet + fortunes-min + fortune-mod + gpm + man-db + manpages + manpages-dev + mlocate + termsaver + toilet + toilet-fonts + ttyrec + unzip +) + +### now we include all the package sets +base_packages+=( + $minimal_base_packages + $minimal_admin_packages + $minimal_editors_packages + $minimal_net_packages + $minimal_prod_packages + $minimal_devel_packages + $minimal_games_packages + $minimal_a11y_packages + $minimal_media_packages + $minimal_misc_packages +) + +##echo "extra_packages: ${extra_packages}" + + +#### TODO: ADD setnet +#### TODO: REPLACE twidge (twitter client) +#### TODO: ADD refractasnapshot +#### TODO: ADD refractainstaller +#### TODO: ADD setnet +#### ADDED: geoip-bin + +#extra_packages+=( +# b43-fwcutter +# firmware-atheros +# firmware-b43-installer +# firmware-b43legacy-installer +# firmware-bnx2 +# firmware-bnx2x +# firmware-brcm80211 +# firmware-intelwimax +# firmware-iwlwifi +# firmware-libertas +# firmware-linux-nonfree +# firmware-myricom +# firmware-netxen +# firmware-qlogic +# firmware-ralink +# firmware-realtek +# firmware-ti-connectivity +# firmware-zd1211 +#) + + +purge_packages=( + btrfs-tools + cryptsetup + cryptsetup-bin + debian-keyring + elinks + elinks-data + git + git-core + git-man + liberror-perl + libfsplib0 + libtre5 + openntpd + tasksel + tasksel-data + vim + vim-runtime +) + + +# yad needs to be first +#custom_deb_packages+=(yad_0.27.0-1_${arch}.deb) +# +# +#custom_deb_packages+=( +# refractainstaller-base_9.3.0_all.deb +# refractainstaller-gui_9.2.2_all.deb +# refractasnapshot-base_10.0.2_all.deb +# refractasnapshot-gui_10.0.2_all.deb +# setnet_0.3.2-1_all.deb +#) diff --git a/blends/devuan-minimal-live/devuan-minimal-live.blend b/blends/devuan-minimal-live/devuan-minimal-live.blend new file mode 100644 index 0000000..2e7165f --- /dev/null +++ b/blends/devuan-minimal-live/devuan-minimal-live.blend @@ -0,0 +1,325 @@ +#!/usr/bin/env zsh +# Copyright (c) 2017 Dyne.org Foundation +# live-sdk is written and maintained by Ivan J. +# +# This file is part of live-sdk +# devuan-minimal-live.blend is maintained by KatolaZ +# +# 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 . + +BLENDPATH="${BLENDPATH:-$(dirname $0)}" + +source $BLENDPATH/config + +blend_preinst() { + fn blend_preinst + req=(blend_name username userpass) + ckreq || return 1 + + notice "executing $blend_name preinst" + + add-user $username $userpass + + #notice "copying blend-specific debs" + #cp -fv "$BLENDPATH"/*.deb "$R/extra/custom-packages" +} + +blend_postinst() { + fn blend_postinst + req=(strapdir blend_name) + ckreq || return 1 + + notice "executing $blend_name postinst" + + [[ "$mkefi" = "yes" ]] && { + iso_make_efi + iso_write_grub_cfg + } + + #install-custdebs || zerr + #pushd "$strapdir" + # sudo rsync -avx --no-o --no-g "$BLENDPATH"/rootfs-overlay/* . || zerr + #popd + + blend_finalize || zerr +} + +iso_write_isolinux_cfg() { + fn iso_write_isolinux_cfg "(override)" + req=(workdir arch username) + ckreq || return 1 + + notice "writing isolinux configuration" + + cat </dev/null +ui vesamenu.c32 +prompt 0 +menu title devuan-live boot menu +timeout 70 +menu background /isolinux/splash.png +menu color title * #FFFFFFFF * +menu color border * #00000000 #00000000 none +menu color sel * #ffffffff #A1B067 * +menu color hotsel 1;7;37;40 #ffffffff #A1B067 * +menu color tabmsg * #E5FD91 #00000000 * +menu color cmdline 0 #E5FD91 #00000000 +menu tabmsg Press ENTER to boot or TAB to edit a menu entry +menu vshift 12 +menu rows 12 + +label live + menu label ${os}-live (${arch}) + menu default + linux /live/vmlinuz + append initrd=/live/initrd.img boot=live username=${username} + +label lang + menu label Other language (TAB to edit) + linux /live/vmlinuz + append initrd=/live/initrd.img boot=live username=${username} hooks=file:///lib/live/mount/medium/live/hooks/fix-lang.sh locales=it_IT.UTF-8 + +label toram + menu label ${os}-live (${arch}) (load to RAM) + linux /live/vmlinuz + append initrd=/live/initrd.img boot=live username=${username} toram + +label failsafe + menu label ${os}-live (${arch}) (failsafe) + kernel /live/vmlinuz noapic noapm nodma nomce nolapic nosmp nomodeset vga=normal + append initrd=/live/initrd.img boot=live + +label memtest + menu label Memory test + kernel /live/memtest + +endtext +EOF + + notice "copying isolinux overlay" + sudo mkdir -p "$workdir"/binary/{live,isolinux} + #sudo cp -rav "$BLENDPATH"/isolinux-overlay/* "$workdir"/binary/isolinux/ + #[[ -n "$hookscripts" ]] && { + # sudo cp -av "$BLENDPATH"/hooks "$workdir"/binary/live/ + #} +} + +# create /boot and /efi for uefi. +# uefi code borrowed and adapted from David Hare, who borrowed and adapted it +# from similar scripts by Colin Watson and Patrick J. Volkerding. +iso_make_efi() { + fn iso_make_efi + req=(workdir efi_work) + ckreq || return 1 + + notice "creating efi boot files" + + tempdir="$(mktemp -d /tmp/work_temp.XXXX)" + # for initial grub.cfg + mkdir -p "$tempdir"/boot/grub + + + cat >"$tempdir"/boot/grub/grub.cfg <> boot/grub/x86_64-efi/grub.cfg + done + + # Additional modules so we don't boot in blind mode. + # I don't know which ones are really needed. + efimods=( + efi_gop + efi_uga + ieee1275_fb + vbe + vga + video_bochs + video_cirrus + jpeg + png + gfxterm + ) + for i in $efimods; do + print "insmod $i" >> boot/grub/x86_64-efi/grub.cfg + done + + print "source /boot/grub/grub.cfg" >> boot/grub/x86_64-efi/grub.cfg + + pushd "$tempdir" + # make a tarred "memdisk" to embed in the grub image + tar -cvf memdisk boot + + # make the grub image + grub-mkimage -O "x86_64-efi" -m "memdisk" -o "bootx64.efi" \ + -p '(memdisk)/boot/grub' \ + search iso9660 configfile normal memdisk tar cat \ + part_msdos part_gpt fat ext2 ntfs ntfscomp hfsplus \ + chain boot linux + popd + + # copy the grub image to efi/boot (to go later in the device's root) + cp "$tempdir"/bootx64.efi efi/boot + + # Do the boot image "boot/grub/efiboot.img" + dd if=/dev/zero of=boot/grub/efiboot.img bs=1K count=1440 + mkfs.vfat -F 12 boot/grub/efiboot.img + + sudo mkdir img-mnt + sudo mount -o loop boot/grub/efiboot.img img-mnt + sudo mkdir -p img-mnt/efi/boot + sudo cp "$tempdir"/bootx64.efi img-mnt/efi/boot/ + + # copy modules and font + cp $strapdir/usr/lib/grub/x86_64-efi/* boot/grub/x86_64-efi/ + + # if this doesn't work try another font from the same place (grub's default, unicode.pf2, is much larger) + # Either of these will work, and they look the same to me. Unicode seems to work with qemu. -fsr + # cp /usr/share/grub/ascii.pf2 boot/grub/font.pf2 + cp $strapdir/usr/share/grub/unicode.pf2 boot/grub/font.pf2 + + # copy splash + sudo cp -rav "$BLENDPATH"/isolinux-overlay/splash.png boot/grub/splash.png + + # Cleanup efi temps + sudo umount img-mnt + sudo rmdir img-mnt + rm -rf "$tempdir" + + popd + + + # Copy efi files to iso + pushd $workdir + sudo rsync -avx "$efi_work"/boot binary/ + sudo rsync -avx "$efi_work"/efi binary/ + popd + +} + + +iso_write_grub_cfg() { + fn iso_write_grub_cfg "(override)" + req=(workdir arch username) + ckreq || return 1 + + notice "writing grub configuration" + + # Do the main grub.cfg (which gets loaded last): + cat </dev/null +#!/bin/sh + +## permissions +for i in cdrom floppy audio dip video plugdev netdev lpadmin scanner; do + gpasswd -a ${username} \$i +done + +chsh -s "${default_shell}" ${username} +chown -R 1000:1000 /home/${username} +cp /home/${username}/Desktop/refractainstaller.desktop /usr/share/applications/ +chmod +x /home/${username}/Desktop/refractainstaller.desktop + +# This can go away when desktop-base is fixed to do the grub theme. +grep -q GRUB_THEME /etc/default/grub || { + printf "\nGRUB_THEME=/usr/share/desktop-base/grub-themes/desktop-grub-theme/theme.txt\n" >> /etc/default/grub +} + +# Not sure if this has been fixed (in devuan-baseconf?) +mv /data/etc/apt/apt.conf.d/05disable-suggests /etc/apt/apt.conf.d/ +rm -rf /data + +rm -f /etc/fstab +rm -f /etc/popularity-contest.conf + +# For ascii if no display manager is used. Maybe this should have a +# contitional that's turned on/off in the config? +# echo "needs_root_rights=yes" >> /etc/X11/Xwrapper.config + +# Disable contrib and non-free after installing firmware. +sed -i 's/contrib//g' /etc/apt/sources.list +sed -i 's/non-free//g' /etc/apt/sources.list + +## package list +dpkg -l | awk '/^ii/ { print $2 " " $3 }' > /home/${username}/package_list + +apt-get update +apt-get clean +updatedb +EOF + chroot-script -d finalize || zerr +} diff --git a/sdk b/sdk index ef7efeb..cd8839f 100755 --- a/sdk +++ b/sdk @@ -64,6 +64,7 @@ load() { blend_map=( "devuan-live" "$R/blends/devuan-live/devuan-live.blend" + "devuan-minimal-live" "$R/blends/devuan-minimal-live/devuan-minimal-live.blend" "heads" "$R/../heads.blend" "decode" "$R/../decode.blend" ) @@ -86,7 +87,7 @@ load() { source $oslib [[ -f $blendlib ]] && { source $blendlib || zerr - act "$os blend leaded" + act "$os blend loaded" export BLEND=1 }