antix-mx derivative

Message
Author
bled
Posts: 58
Joined: Mon Mar 07, 2016 1:06 pm

antix-mx derivative

#1 Post by bled »

regards!

------------------------

https://yadi.sk/d/2-NuHJ7-pl_DHQ

euclid5.iso

xfce
pulseaudio
mobile wifi
bluetooth
vlc
470 mb
--------------------
all apps from the best linux os
-mx-linux!

User avatar
anticapitalista
Developer
Posts: 4166
Joined: Sat Jul 15, 2006 10:40 am

Re: antix-mx derivative

#2 Post by anticapitalista »

Can't download to have a look.
anticapitalista
Reg. linux user #395339.

Philosophers have interpreted the world in many ways; the point is to change it.

antiX with runit - lean and mean.
https://antixlinux.com

User avatar
Eadwine Rose
Administrator
Posts: 11962
Joined: Wed Jul 12, 2006 2:10 am

Re: antix-mx derivative

#3 Post by Eadwine Rose »

Hrmm weird.. works for me.

Just a sec, maybe I can help you out.
MX-23.2_x64 July 31 2023 * 6.1.0-20-amd64 ext4 Xfce 4.18.1 * 8core AMD Ryzen 7 2700
Asus TUF B450-Plus Gaming UEFI * Asus GTX 1050 Ti Nvidia 525.147.05 * 2x16Gb DDR4 2666 Kingston HyperX Predator
Samsung 860EVO * Samsung S24D330 & P2250 * HP Envy 5030

User avatar
Jerry3904
Administrator
Posts: 21944
Joined: Wed Jul 19, 2006 6:13 am

Re: antix-mx derivative

#4 Post by Jerry3904 »

Works here.
Production: 5.10, MX-23 Xfce, AMD FX-4130 Quad-Core, GeForce GT 630/PCIe/SSE2, 16 GB, SSD 120 GB, Data 1TB
Personal: Lenovo X1 Carbon with MX-23 Fluxbox and Windows 10
Other: Raspberry Pi 5 with MX-23 Xfce Raspberry Pi Respin

User avatar
Eadwine Rose
Administrator
Posts: 11962
Joined: Wed Jul 12, 2006 2:10 am

Re: antix-mx derivative

#5 Post by Eadwine Rose »

Going to send you a pm soon Anti


PM sent with different download link.
MX-23.2_x64 July 31 2023 * 6.1.0-20-amd64 ext4 Xfce 4.18.1 * 8core AMD Ryzen 7 2700
Asus TUF B450-Plus Gaming UEFI * Asus GTX 1050 Ti Nvidia 525.147.05 * 2x16Gb DDR4 2666 Kingston HyperX Predator
Samsung 860EVO * Samsung S24D330 & P2250 * HP Envy 5030

User avatar
fehlix
Developer
Posts: 10375
Joined: Wed Apr 11, 2018 5:09 pm

Re: antix-mx derivative

#6 Post by fehlix »

bled wrote: Tue Jan 01, 2019 3:52 pm euclid5.iso
No checksum? Will not download without. :eek:
Gigabyte Z77M-D3H, Intel Xeon E3-1240 V2 (Quad core), 32GB RAM,
GeForce GTX 770, Samsung SSD 850 EVO 500GB, Seagate Barracuda 4TB

User avatar
dolphin_oracle
Developer
Posts: 20012
Joined: Sun Dec 16, 2007 1:17 pm

Re: antix-mx derivative

#7 Post by dolphin_oracle »

DebianDog, in case anyone is wondering.

You might want to wear sunglasses.
http://www.youtube.com/runwiththedolphin
lenovo ThinkPad X1 Extreme Gen 4 - MX-23
FYI: mx "test" repo is not the same thing as debian testing repo.

skidoo
Posts: 753
Joined: Tue Sep 22, 2015 6:56 pm

Re: antix-mx derivative

#8 Post by skidoo »

debiandog "Jessie" from the DogLinux project might have been considered "similar to" antiX (not a "derivative of" though)
https://debiandog.github.io/doglinux/ -=- https://github.com/DebianDog/doglinux
and I had tracked it, listed it within the without-systemd.org wiki http://without-systemd.org/wiki/index.p ... ut_systemd
but dropped the listing as of their "debiandog Stretch" release, which clearly is "derivative of" debian (including systemd init)

ps: the DogLinux isos should (already) be available from archive.org
(md5sum or not, i would not encourage posting to // downloading from some non-descript MEGAupload -alike filesharing site)

skidoo
Posts: 753
Joined: Tue Sep 22, 2015 6:56 pm

Re: antix-mx derivative

#9 Post by skidoo »

You might want to wear sunglasses.
I'm not gonna look. I'll mention that if that's the case (the desktop seen in the iso garish), then it must be a further, 3rd-party, remake of debiandog.
Across versions, the originals, as issued, were nicely themed and the preinstalled wallpapers had a calm/relaxing tone.

bled
Posts: 58
Joined: Mon Mar 07, 2016 1:06 pm

Re: antix-mx derivative

#10 Post by bled »

it is made with this script with mx-linux
packages!
------------------------

Code: Select all

#!/bin/bash

# fredx181 2017-07-31, 'MakeLive' for Stretch (Debian 9), creates a minimal live system
# with aufs support and porteus-boot style included
# 2017-08-05, fixed support for Jessie host (previously worked only from Stretch)
# and removed install of linux-headers and aufs-dkms (build time gets shorter)
# instead copy aufs.ko for kernel 4.9 to /lib/modules/<kernel_version>/kernel/fs/aufs
# and execute "depmod <kernel_version>" and create new initrd.img-<kernel_version> in /boot
# dancytron suggestion, separate field for Desktop related packages 
# 2017-08-14 GUI version using yad, but should be run from terminal
# 2017-08-17 GUI and CLI version into one, added different options:
# -help (or no option, will show help) -gui -cli, or e.g. -cli <config_file> (use config file), -conf (create standard config file)
# jd7654 and AndresC2 suggestion, keep the apt cache, jd7654, separate field for (graphical) applications (such as leafpad firefox)
# 2017-08-19 show helptext when made a typo on first parameter and create build_setup.conf (ready to use as config file)
# 2017-08-21 detect if login-manager is installed (and make that default)
# and make obvious in build_setup.conf which architecture the build has been made for
# 2017-08-26 GUI only, choice of DE's at start, when run without config file
# Bug fixed for LZ4 support
# 2017-09-02, added full 'Dog' build option
# 2017-09-08, added 'Kiosk' option (GUI)
# 2017-09-09, added choice of Desktop environments also for when used -cli
# 2017-09-12, added ChromeDog and ObDog to choice of Desktop environments
# 2017-09-17, more safe unmounting 'mount binds' and some minor changes
# 2017-09-24, small fix, remove 'stretch/apt/archives/lock' when script is interrupted
# 2017-09-30, try again if passwords not match
# 2017-10-10, should work on any puppy without tricks (if debootstrap installed) and on xenialdog32
# 2017-11-03, ask at start of build process, to run Xterm at later point
# (to run any command in the chroot, e.g. synaptic to install some more packages)
# 2017-11-17, added choice to install pae or no-pae kernel, in case of 32bit build
# 2017-11-23, changed installed kernel to 4.9.0-4 (previously was 4.9.0-3)
# 2018-01-12, changed installed kernel to 4.9.0-5 (previously was 4.9.0-4)
# 2018-01-13, added xserver-xorg-video-intel to standard config (otherwise X wouldn't start on some machines)
# 2018-02-24, changed installed kernel to 4.9.0-6 (previously was 4.9.0-5)
# And dropped no-pae support
# 2018-08-15, changed installed kernel to 4.9.0-7 (previously was 4.9.0-6)
#####################################################################################

# set to yes if you want to keep the locale files in /usr/share/locale
export KEEP_LOCALES="no"

export LD_LIBRARY_PATH=

standard () {
# Set the standard, (modify as desired, or run with a custom config file)

# Be careful with removing from this section (mostly essential)
BASE_INSTALL="wget net-tools ifupdown wireless-tools sysvinit-core xserver-xorg-core xserver-xorg psmisc fuse x11-utils x11-xserver-utils dbus-x11 busybox sudo mawk xinit xterm pciutils usbutils file rsync dosfstools volumeicon-alsa alsa-utils pm-utils xdotool wmctrl desktop-file-utils mime-support cryptsetup-bin squashfs-tools fakeroot xserver-xorg-input-evdev pv xserver-xorg-input-synaptics ntfs-3g nano xserver-xorg-video-intel"
# Base Dog Packages, recommended to keep: yad gtkdialog obshutdown pup-volume-monitor peasywifi
BASE_DOG_APPS_INSTALL="yad gtkdialog obshutdown pup-volume-monitor peasywifi chpupsocket edit-sfs-pcmanfm filemnt-pcmanfm remaster-scripts quick-remaster apt2sfs sfsload fixdepinstall greybird-theme-dd-stretch makedebpackage flashplayerchoice peasyclock"
# Applications
BASE_APPS_INSTALL="leafpad gparted parted synaptic viewnior firefox-esr=45.9.0esr-1 pfind conky"
# Desktop environment related
DESK_APPS_INSTALL="openbox obconf pcmanfm lxpanel lxrandr lxinput lxappearance"  
FIRMWARE="firmware-linux-free"   # see below for choices
EXTRA_DOG_APPS_INSTALL=""
# Remove automatically installed packages: during installing, some are installed that you might not need, e.g.
# xserver-xorg-video-vmware, REM_AUTO_INST=TRUE will uninstall it.
REM_AUTO_INST="TRUE"
# To force 32 bit build on a 64 bit OS, set to TRUE
FORCE32="FALSE"
}

##### Below a selection of firmware packages available (mostly for wireless) #####  
##### atmel-firmware firmware-realtek bluez-firmware firmware-atheros firmware-linux-free firmware-linux-nonfree firmware-netxen firmware-ti-connectivity firmware-b43legacy-installer firmware-iwlwifi firmware-ipw2x00 firmware-libertas firmware-intelwimax firmware-brcm80211 firmware-b43-installer firmware-qlogic firmware-bnx2 firmware-misc-nonfree firmware-bnx2x firmware-zd1211

##### Some extra dog applications: debdoginstallscripts dogradio youtube-get2 youtube-viewer peasyfwmon gifondesktop upgrade-kernel conkyclock redshiftgui mpv peasymount peasyscale peasyxorburn peasyglue

create_conf () {     # option -conf
##### Generate standard config file stretchlive.conf #####
echo '# Configuration for mklive-stretch, modify as desired
# NOTE: Leave every commented (#) line commented as it is
# See at the bottom commented out for info

### Start configuration

# Be careful with removing from this section (mostly essential)  
BASE_INSTALL="wget net-tools ifupdown wireless-tools sysvinit-core xserver-xorg-core xserver-xorg psmisc fuse x11-utils x11-xserver-utils dbus-x11 busybox sudo mawk xinit xterm pciutils usbutils file rsync dosfstools volumeicon-alsa alsa-utils pm-utils xdotool wmctrl desktop-file-utils mime-support cryptsetup-bin squashfs-tools fakeroot xserver-xorg-input-evdev pv xserver-xorg-input-synaptics ntfs-3g nano xserver-xorg-video-intel"

# Base Dog Packages, recommended to keep:
# yad gtkdialog obshutdown pup-volume-monitor peasywifi
BASE_DOG_APPS_INSTALL="yad gtkdialog obshutdown pup-volume-monitor peasywifi chpupsocket edit-sfs-pcmanfm filemnt-pcmanfm remaster-scripts quick-remaster apt2sfs sfsload fixdepinstall greybird-theme-dd-stretch makedebpackage flashplayerchoice peasyclock"

BASE_APPS_INSTALL="leafpad gparted parted synaptic viewnior firefox-esr=45.9.0esr-1 pfind conky"

DESK_APPS_INSTALL="openbox obconf pcmanfm lxpanel lxrandr lxinput lxappearance"
  
FIRMWARE="firmware-linux-free"

EXTRA_DOG_APPS_INSTALL=""

REM_AUTO_INST="TRUE"
# Force 32 bit on 64 bit OS (set to FALSE for 64-bit build on 64-bit OS)
FORCE32="FALSE"

### End configuration

# A selection of firmware packages available (mostly for wireless):
# atmel-firmware firmware-realtek bluez-firmware firmware-atheros firmware-linux-free firmware-linux-nonfree firmware-netxen firmware-ti-connectivity firmware-b43legacy-installer firmware-iwlwifi firmware-ipw2x00 firmware-libertas firmware-intelwimax firmware-brcm80211 firmware-b43-installer firmware-qlogic firmware-bnx2 firmware-misc-nonfree firmware-bnx2x firmware-zd1211 
# Some extra dog applications:
# debdoginstallscripts dogradio youtube-get2 youtube-viewer peasyfwmon gifondesktop upgrade-kernel conkyclock redshiftgui mpv peasymount peasyscale peasyxorburn peasyglue
# Choice of Desktop:
# Default is openbox with pcmanmfm providing the desktop, lxpanel, etc..
# To change, replace what is in the DESK_APPS_INSTALL field with for example:
# mate-core (for MATE), xfce4 (for XFCE), lxde (for LXDE)
# No guarantee that all work as expected, might require some fixing
# Remove automatically installed packages:
# During installing all the packages, some are installed that you might not need, e.g.
# xserver-xorg-video-vmware, REM_AUTO_INST=TRUE will uninstall it.
# (possibly (large) library libllvm3.9 will then be autoremoved, depending on your other package choices)
# To force 32 bit build on a 64 bit OS set FORCE32=TRUE
# Locales: To keep locale files, set to KEEP_LOCALES=yes on top of the script' > stretchlive.conf
}

# Not running from terminal ?
tty -s;
if [ $? -ne 0 ]; then
	msg=" Please run this script from terminal"
	xmessage "`echo -e $msg`"
	exit 0
fi

if [ "`whoami`" != "root" ]; then
echo "This script should be run as root"
echo "Please run again, e.g. 'sudo ./mklive-stretch -gui', exiting now..."
sleep 3
exit
fi

echo -e "\e[0;36mChecking network connection...\033[0m"
busybox ping -c1 google.com > /dev/null
    if [ $? -ne 0 ]; then 
echo -e "\e[0;33mThere is no network connection. Cannot continue, exiting...\033[0m"
sleep 3
exit
else
echo -e "\e[0;32mOK\033[0m"
sleep 1
    fi

# Information button
function info () {
echo -e "\n *** A selection of firmware packages available (mostly for wireless) *** \n atmel-firmware firmware-realtek bluez-firmware firmware-atheros firmware-linux-free firmware-linux-nonfree firmware-netxen firmware-ti-connectivity firmware-b43legacy-installer firmware-iwlwifi firmware-ipw2x00 firmware-libertas firmware-intelwimax firmware-brcm80211 firmware-b43-installer firmware-qlogic firmware-bnx2 firmware-misc-nonfree firmware-bnx2x firmware-zd1211 \n\n *** Some extra dog applications *** \n debdoginstallscripts dogradio youtube-get2 youtube-viewer peasyfwmon gifondesktop upgrade-kernel conkyclock redshiftgui mpv peasymount peasyscale peasyxorburn peasyglue \n\n *** Choice of Desktop *** \n Default is openbox with pcmanmfm providing the desktop, lxpanel, etc..\n To change, replace what's in the 'Desktop Apps' field with for example: \nmate-core (for MATE), xfce4 (for XFCE), lxde (for LXDE)\n No guarantee that all work as expected, might require some fixing \n\n *** Remove automatically installed packages (checkbox) *** \n During installing all the packages, some are installed that you might not need, e.g.\nxserver-xorg-video-vmware, having the box checked will uninstall it.\n(possibly (large) library libllvm3.9 will then be autoremoved, depending on your other package choices)\n\n *** Locales ***\nTo keep locale files, set to 'KEEP_LOCALES=yes' on top of the script  " | yad --margins 7 --window-icon "icons/audio-x-generic.png" --title="Information about Firmware and More" --fontname="MonoSpace Bold 12" --back=#ffffff --height=660 --width=775 --text-info --wrap --button="gtk-close:0"
}
export -f info

function de_info () {
echo -e "\n *** Extra modules *** \n https://debiandog.github.io/MakeLive/modules/ \n\n *** Config files *** \n https://debiandog.github.io/MakeLive/configs/ \n\n *** Screenshots *** \n https://debiandog.github.io/MakeLive/screenshots/ \n\n *** Thunar without root warning debs (32 bit only) *** \n https://debiandog.github.io/MakeLive/thunar/ \n\n *** Firmware .squashfs module *** \n https://debiandog.github.io/MakeLive/modules/99-firmware-stretch-live.squashfs\n\n *** Info Kiosk *** \n https://debiandog.github.io/MakeLive/configs/Info-Kiosk.txt" | yad --margins 7 --window-icon "icons/audio-x-generic.png" --title="Information" --show-uri --fontname="MonoSpace Bold 12" --back=#ffffff --height=460 --width=775 --text-info --wrap --button="gtk-close:0"
}
export -f de_info

de_config () {
if [ -z `which yad` ]; then
	msg=" You don't have yad installed.\nIt's a dependency of this program.\n Please install it.\n Or run with option: -cli"
	echo $msg
	xmessage "`echo -e $msg`"
exit 0
fi

wget --no-check-certificate -P /tmp/ -r -e robots=off -N -q -nd -l1 -A "*png" https://debiandog.github.io/MakeLive/icons/ 2> /dev/null

LFONT="  ***  <span size='large' >  <b>Choose Desktop Environment</b>  </span>  *** "
CHOICE=$(yad --borders=6 --window-icon="gtk-ok" --center --height 650 --width="810" --list --title="Choose Desktop Environment" \
--text=" $LFONT  \n  Select one of the options and click Ok \n Next you can modify the packages install list, but: \n <b>Note:</b> Recommended to not remove packages, only add packages, specially for the 'Desktop' field \n Click 'Skip' for no preconfigured DE, the standard packages list (openbox) will appear then. " --separator="" \
--column ":IMG" --column Name --column Description \
/tmp/openbox.png "Openbox" " Openbox with pcmanfm (providing the desktop) and lxpanel (standard)" \
/tmp/xfce4.png "Xfce4" " Xfce4 with Whisker Menu" \
/tmp/jwm.png "Jwm" " Jwm preconfigured" \
/tmp/mate.png "Mate" " Mate basic" \
/tmp/lxde.png "LxDD" " LxDog with LXDE environment (32 bit only) by Peebee, many additions and configurations" \
/tmp/fvwm-crystal.png "Fvwm-crystal" " FVWM-Crystal, eye-candy but also powerful desktop environment" \
/tmp/dog.png "DDog" " Full DebianDog Openbox_Xfce-Jwm version" \
/tmp/kiosk.png "Kiosk" " Kiosk version, restricted to browsing the internet only" \
/tmp/obdog.png "ObDog" " Full Dog, openbox with pcmanfm, lxpanel - or Jwm, with firefox" \
/tmp/chrome.png "ChromeDog" " Full Dog, openbox with pcmanfm, lxpanel - or Jwm, with google-chrome (64bit only)" \
--print-column 2 --buttons-layout=spread --button="gtk-info:bash -c de_info" --button="Skip:2" --button="gtk-quit:1" --button="gtk-ok:0")
ret=$?

case $ret in
0)
[ -z "$CHOICE" ] && yad --title="Nothing Selected" --center --text "  Please select one of the options            " --button="gtk-close:0" && exec $0 -gui
export DE_CONFIG="$CHOICE"
[ "$DE_CONFIG" = "Openbox" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/openbox_lx.conf && config=/tmp/openbox_lx.conf
[ "$DE_CONFIG" = "Xfce4" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/xfce4.conf && config=/tmp/xfce4.conf
[ "$DE_CONFIG" = "Jwm" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/jwm.conf && config=/tmp/jwm.conf
[ "$DE_CONFIG" = "Mate" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/mate.conf && config=/tmp/mate.conf
[ "$DE_CONFIG" = "LxDD" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/lxdd.conf && config=/tmp/lxdd.conf
[ "$DE_CONFIG" = "Fvwm-crystal" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/fvwm-crystal.conf && config=/tmp/fvwm-crystal.conf
[ "$DE_CONFIG" = "DDog" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/ddog.conf && config=/tmp/ddog.conf
[ "$DE_CONFIG" = "Kiosk" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/kiosk.conf && config=/tmp/kiosk.conf
[ "$DE_CONFIG" = "ObDog" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/obdog.conf && config=/tmp/obdog.conf
[ "$DE_CONFIG" = "ChromeDog" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/chromedog.conf && config=/tmp/chromedog.conf
;;
1|252)
exit
;;
2)
echo "Skipping DE configuration"
;;
esac
}
export -f de_config

de_config_cli () {
echo -e "\e[0;36mChoose Desktop Environment\033[0m"
echo
echo -e "\e[0;36mPlease select one of the options \nNext you can modify the packages install list\033[0m"
echo "1) Openbox, Openbox with pcmanfm (providing the desktop) and lxpanel (standard)"
echo "2) Xfce4, Xfce4 with Whisker Menu"
echo "3) Jwm, Jwm preconfigured" 
echo "4) Mate, Mate basic"
echo "5) LxDD, LxDog with LXDE environment (32 bit only) by Peebee, many additions and configurations"
echo "6) Fvwm-crystal, FVWM-Crystal, eye-candy but also powerful desktop environment"
echo "7) DDog, Full DebianDog Openbox_Xfce-Jwm version"
echo "8) Kiosk, Kiosk version, restricted to browsing the internet only"
echo "9) ObDog, Full Dog, openbox with pcmanfm, lxpanel - or Jwm, with firefox"
echo "10) ChromeDog, Full Dog, openbox with pcmanfm, lxpanel - or Jwm, with google-chrome (64bit only)"
echo
echo "0) Skip this step, use default, as defined on top of script (Openbox)"
echo 
echo "Type the number and press Enter."
echo

read n
case $n in
    1)
DE_CONFIG="Openbox" ;;
    2) 
DE_CONFIG="Xfce4" ;;
    3)
DE_CONFIG="Jwm" ;;
    4)
DE_CONFIG="Mate" ;;
    5)
DE_CONFIG="LxDD" ;;
    6)
DE_CONFIG="Fvwm-crystal" ;;
    7)
DE_CONFIG="DDog" ;;
    8)
DE_CONFIG="Kiosk" ;;
    9)
DE_CONFIG="ObDog" ;;
    10)
DE_CONFIG="ChromeDog" ;;
    0)
echo "Skipping DE configuration" ;;
esac

[ "$DE_CONFIG" = "Openbox" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/openbox_lx.conf && config=/tmp/openbox_lx.conf
[ "$DE_CONFIG" = "Xfce4" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/xfce4.conf && config=/tmp/xfce4.conf
[ "$DE_CONFIG" = "Jwm" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/jwm.conf && config=/tmp/jwm.conf
[ "$DE_CONFIG" = "Mate" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/mate.conf && config=/tmp/mate.conf
[ "$DE_CONFIG" = "LxDD" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/lxdd.conf && config=/tmp/lxdd.conf
[ "$DE_CONFIG" = "Fvwm-crystal" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/fvwm-crystal.conf && config=/tmp/fvwm-crystal.conf
[ "$DE_CONFIG" = "DDog" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/ddog.conf && config=/tmp/ddog.conf
[ "$DE_CONFIG" = "Kiosk" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/kiosk.conf && config=/tmp/kiosk.conf
[ "$DE_CONFIG" = "ObDog" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/obdog.conf && config=/tmp/obdog.conf
[ "$DE_CONFIG" = "ChromeDog" ] && wget -P /tmp/ --no-check-certificate https://debiandog.github.io/MakeLive/configs/chromedog.conf && config=/tmp/chromedog.conf
}
export -f de_config_cli

yad_gui () {
if [ "$(uname -m)" = "i686" ]; then 
SETUP=`yad --borders=4 --height=680 --width=790  --center --title="MakeLive Stretch"  --text="<b>       \tCreate a Debian 9 (Stretch) minimal live system similar to 'DebianDog' </b>\n With aufs support and porteus-boot style included\n It's required to have at least 3 GB free space, and to run this script on a Linux filesystem, e.g. ext4 \n Add or remove packages as desired, although be careful with removing too much " \
--window-icon="preferences-system" --form --columns=1 \
--field="Base Install (most are essential, recommended not to remove packages from this list): :TXT" "$BASE_INSTALL" \
--field="Base Dog Packages Install:  (recommended to keep:  yad gtkdialog obshutdown pup-volume-monitor peasywifi):TXT" "$BASE_DOG_APPS_INSTALL" \
--field="Applications Install::TXT" "$BASE_APPS_INSTALL" \
--field="Desktop :: " "$DESK_APPS_INSTALL" \
--field="Firmware:: " "$FIRMWARE" \
--field="Extra Dog Packages:: " "$EXTRA_DOG_APPS_INSTALL" \
--field="Remove some automatically installed packages (these may take much space, see Information):CHK" "$REM_AUTO_INST" \
--button="gtk-info:bash -c info" --button="gtk-quit:1" --button="gtk-ok:0"`
ret=$?
[ $ret -ne 0 ] && exit
export BASE_INSTALL="`echo $SETUP | cut -d "|" -f 1`"
export BASE_DOG_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 2`"
export BASE_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 3`"
export DESK_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 4`"
export FIRMWARE="`echo $SETUP | cut -d "|" -f 5`"
export EXTRA_DOG_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 6`"
export REM_AUTO_INST="`echo $SETUP | cut -d "|" -f 7`"
export FORCE32="TRUE"

elif [ "$(uname -m)" = "x86_64" ]; then
[ "$FORCE32" = "TRUE" ] && CONF32="Build configuration loaded <b>possibly suitable only for  i686</b> (32 bit) uncheck bottom checkbox for a 64-bit build \n"  
SETUP=`yad --borders=4 --height=680 --width=790  --center --title="MakeLive Stretch"  --text="<b>       \tCreate a Debian 9 (Stretch) minimal live system similar to 'DebianDog' </b>\n With aufs support and porteus-boot style included\n $CONF32 It's required to have at least 3 GB free space, and to run this script on a Linux filesystem, e.g. ext4 \n Add or remove packages as desired, although be careful with removing too much " \
--window-icon="preferences-system" --form --columns=1 \
--field="Base Install (most are essential, recommended not to remove packages from this list): :TXT" "$BASE_INSTALL" \
--field="Base Dog Packages Install:  (recommended to keep:  yad gtkdialog obshutdown pup-volume-monitor peasywifi):TXT" "$BASE_DOG_APPS_INSTALL" \
--field="Applications Install::TXT" "$BASE_APPS_INSTALL" \
--field="Desktop :: " "$DESK_APPS_INSTALL" \
--field="Firmware:: " "$FIRMWARE" \
--field="Extra Dog Packages:: " "$EXTRA_DOG_APPS_INSTALL" \
--field="Remove some automatically installed packages (these may take much space, see Information):CHK" "$REM_AUTO_INST" \
--field="Force a 32 bit build (unchecked will build according to host system being 32 or 64 bit):CHK" "$FORCE32" \
--button="gtk-info:bash -c info" --button="gtk-quit:1" --button="gtk-ok:0"`
ret=$?
[ $ret -ne 0 ] && exit

export BASE_INSTALL="`echo $SETUP | cut -d "|" -f 1`"
export BASE_DOG_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 2`"
export BASE_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 3`"
export DESK_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 4`"
export FIRMWARE="`echo $SETUP | cut -d "|" -f 5`"
export EXTRA_DOG_APPS_INSTALL="`echo $SETUP | cut -d "|" -f 6`"
export REM_AUTO_INST="`echo $SETUP | cut -d "|" -f 7`"
export FORCE32="`echo $SETUP | cut -d "|" -f 8`"
fi
}

# This makes sure when the script is interrupted, that all mount 'binds' will unmount 
exitfn () {
    trap SIGINT              # Resore signal handling for SIGINT
echo -e "\e[0;36mUnmounting mount binds in chroot\033[0m"
#umount -l chroot/tmp
umount -l $LAUNCHDIR/stretch/chroot/proc 2> /dev/null
umount -l $LAUNCHDIR/stretch/chroot/sys 2> /dev/null
umount -l $LAUNCHDIR/stretch/chroot/dev/pts 2> /dev/null
umount -l $LAUNCHDIR/stretch/chroot/dev 2> /dev/null

[ ! -d $LAUNCHDIR/stretch/apt ] && mv -f $LAUNCHDIR/stretch/chroot/var/cache/apt $LAUNCHDIR/stretch/
rm -f $LAUNCHDIR/stretch/apt/archives/lock 2> /dev/null
   sleep 2
   if mountpoint -q $LAUNCHDIR/stretch/chroot/dev; then     # just in case check dev
   echo -e "\e[0;31mSomething went wrong, directory chroot cannot be removed\033[0m"
   echo -e "\e[0;31mMake sure it's not in use by some process and try again, exiting...\033[0m"
   sleep 2
   exit
   else
   rm -rf $LAUNCHDIR/stretch/chroot
   fi
exit
}
export -f exitfn

trap "exitfn" 1 2 3 15           # Set up SIGINT trap to call function 'exitfn'

# OK or FAILED
ok_or_failed () {
[ $? -eq 0 ] && echo -e "\e[0;32mOK\033[0m" || echo -e "\e[0;31mFAILED\033[0m"
}
export -f ok_or_failed

cr_build_info () {
# Create setup info list build_setup.txt
echo "Live system built on $(uname -m) for $ARCH on $(date)" > build_setup.txt
echo -e "Preinstalled on top of debootstrap build:\nlive-boot wget menu dialog apt-utils dbus ca-certificates apt-transport-https xserver-xorg-legacy\n" >> build_setup.txt
echo -e "Base Install:\n$BASE_INSTALL\n" >> build_setup.txt
echo -e "Base Dog Packages Install:\n$BASE_DOG_APPS_INSTALL\n" >> build_setup.txt
echo -e "Applications Install:\n$BASE_APPS_INSTALL\n" >> build_setup.txt
echo -e "Desktop Environment Packages:\n$DESK_APPS_INSTALL\n" >> build_setup.txt
echo -e "Firmware:\n$FIRMWARE\n" >> build_setup.txt
echo -e "Extra Dog Packages:\n$EXTRA_DOG_APPS_INSTALL\n" >> build_setup.txt
echo -e "Remove xserver-xorg-video-vmware=$REM_AUTO_INST" >> build_setup.txt

# Info architecture for build config
[ "$ARCH" = "i386" ] && INFO_i386="Config generated for $ARCH, FORCE32 is set to TRUE (this way it works also on 64 bit)"
##### Generate config from build #####
echo '# Configuration for mklive-stretch, generated for architecture: '$ARCH', modify as desired
# NOTE: Leave every commented (#) line commented as it is
### Start configuration

# Be careful with removing from this section (mostly essential)  
BASE_INSTALL="'"$BASE_INSTALL"'"

# Base Dog Packages, recommended to keep:
# yad gtkdialog obshutdown pup-volume-monitor peasywifi
BASE_DOG_APPS_INSTALL="'"$BASE_DOG_APPS_INSTALL"'"

BASE_APPS_INSTALL="'"$BASE_APPS_INSTALL"'"

DESK_APPS_INSTALL="'"$DESK_APPS_INSTALL"'"
  
FIRMWARE="'"$FIRMWARE"'"

EXTRA_DOG_APPS_INSTALL="'"$EXTRA_DOG_APPS_INSTALL"'"

REM_AUTO_INST="'"$REM_AUTO_INST"'"

# Force 32 bit on 64 bit OS (set to FALSE for 64-bit build on 64-bit OS)
# '$INFO_i386'
FORCE32="'"$FORCE32"'"

### End configuration

# A selection of firmware packages available (mostly for wireless):
# atmel-firmware firmware-realtek bluez-firmware firmware-atheros firmware-linux-free firmware-linux-nonfree firmware-netxen firmware-ti-connectivity firmware-b43legacy-installer firmware-iwlwifi firmware-ipw2x00 firmware-libertas firmware-intelwimax firmware-brcm80211 firmware-b43-installer firmware-qlogic firmware-bnx2 firmware-misc-nonfree firmware-bnx2x firmware-zd1211 
# Some extra dog applications:
# debdoginstallscripts dogradio youtube-get2 youtube-viewer peasyfwmon gifondesktop upgrade-kernel conkyclock redshiftgui mpv peasymount peasyscale peasyxorburn peasyglue
# Choice of Desktop:
# Default is openbox with pcmanmfm providing the desktop, lxpanel, etc..
# To change, replace what is in the DESK_APPS_INSTALL field with for example:
# mate-core (for MATE), xfce4 (for XFCE), lxde (for LXDE)
# No guarantee that all work as expected, might require some fixing
# Remove automatically installed packages:
# During installing all the packages, some are installed that you might not need, e.g.
# xserver-xorg-video-vmware, REM_AUTO_INST=TRUE will uninstall it.
# (possibly (large) library libllvm3.9 will then be autoremoved, depending on your other package choices)
# To force 32 bit build on a 64 bit OS set FORCE32=TRUE
# Locales: To keep locale files, set to KEEP_LOCALES=yes on top of the script' > build_setup.conf
}
export -f cr_build_info

########################## End functions #####################################

############# Start #############

export LAUNCHDIR="$PWD"

########### Options (GUI or CLI, configuration)  ###########

helptext="mklive-stretch\n
usage: $(basename $0) [OPTION] <config_file>\n
 	Options:\n
	-gui ( run GUI, requires yad installed )\n
	choice of Desktop Environments (GUI) and packages to install \n
	-cli ( commandline only, no GUI )\n 
	choice of Desktop Environments (CLI) and packages to install \n  
	-gui <config_file>\n
	load custom config file\n
	-cli <config_file>\n
	load custom config file \n
	-conf ( create 'stretchlive.conf' ) \n
	create a standard config file in same directory as running this script from\n
	( to modify and load as custom configuration )\n 
	-help show this help\n
	Example using custom config file: \n
	mklive-stretch -cli mycustom.conf \n"

params=$@
	
if [ ${#params} -eq 0 ]; then	# no options, no text, so print info/help...
	echo -e $helptext
	exit
fi

arg=$1
config=$2
		case $arg in
		-gui)
	if [ $2 ]; then
	. $config
	CONFIG="yes"
	yad_gui
	else
	de_config
		if [ "$DE_CONFIG" ]; then
		. $config
		CONFIG="yes"
		yad_gui
		else
		standard # when DE config skipped
		yad_gui
		fi
	fi
			;;
		-cli)
CLI="yes"
	if [ $2 ]; then
	. $config
	CONFIG="yes"
	else
	de_config_cli
if [ "$DE_CONFIG" ]; then
echo -e "\e[0;36mYou can edit now: \e[1;29m$(readlink -f $config)\e[0;29m (to add packages as desired)\033[0m"
read -sp "When done, press ENTER to continue . . . "
echo
. $config
CONFIG="yes"
else
standard # when DE config skipped
fi
	fi
			;;
		-conf)
echo -e "\e[0;32mCreating $PWD/stretchlive.conf\033[0m"
create_conf
exit
			;;
		-help|--help)
echo -e $helptext
exit
			;;
		*)
echo -e "\e[0;31mNot a valid parameter\033[0m"
echo -e $helptext
exit
			;;
		esac

# export final variables defined through GUI or CLI (with or without custom config)
export BASE_INSTALL="$BASE_INSTALL"
export BASE_DOG_APPS_INSTALL="$BASE_DOG_APPS_INSTALL"
export BASE_APPS_INSTALL="$BASE_APPS_INSTALL"
export DESK_APPS_INSTALL="$DESK_APPS_INSTALL"
export FIRMWARE="$FIRMWARE"
export EXTRA_DOG_APPS_INSTALL="$EXTRA_DOG_APPS_INSTALL"
export REM_AUTO_INST="$REM_AUTO_INST"
export FORCE32="$FORCE32"

if [ "$(uname -m)" = "i686" ]; then
echo
echo -e "\e[0;32mOK, running 32-bit OS, building live system for 32-bit: $(uname -m)\033[0m"
export ARCH="i386"
export FORCE32="TRUE"
elif [ "$(uname -m)" = "x86_64" ]; then
echo
	if [ "$FORCE32" = "TRUE" ]; then
	echo -e "\e[0;32mOK, running 64-bit OS, building live system for 32-bit: i686\033[0m"
	export ARCH="i386"
	else
	echo -e "\e[0;32mOK, running 64-bit OS, building live system for 64-bit: $(uname -m)\033[0m"
	export ARCH="amd64"
	fi
fi
echo -e "\e[0;33mCreate a Debian 9 (Stretch) minimal live system similar to 'DebianDog'\nWith aufs support and porteus-boot style included\n\nIt's required to have at least 3 GB free space\nand to run this script on a Linux filesystem, e.g. ext4\033[0m"
echo -e "\e[0;32mBuilding will be done in: $PWD/stretch\033[0m"
if [ "$CONFIG" = "yes" ]; then
	if [ -z "$BASE_INSTALL" ]; then
	echo -e "\e[0;31mThis config file cannot be used, sorry, exiting...\033[0m"
	exit
	else
echo -e "\e[0;36mRunning with configuration: \e[1;29m$(readlink -f $config)\e[0;29m\033[0m"
	fi
else
echo -e "\e[0;36mNo custom config in use\033[0m"
echo -e "\e[0;36mUsing standard configuration defined on top of script\033[0m"
fi
echo -e "\e[0;33mBuild setup info can be found in: $PWD/stretch/build_setup.txt\033[0m"
echo -e "\e[0;32mIf you'd like a log from the output, run again e.g:\033[0m"
echo -e "\e[0;33m$0 -gui 2>&1 | tee mklive-stretch.log\033[0m"
echo -e "\e[0;36mFirst setting up debootstrap, this will take a few minutes\nAfter that you will be asked to set the password for 'root'\033[0m"
echo
# read -sp "Press ENTER to continue . . . "
echo -e "\e[0;33mAt the end of the install process you may want to run one or more commands\n (in the chroot) \n If so, Xterm will run and you can type e.g. synaptic, to install more packages\n Or e.g. rox or thunar (filemanager), if installed)\033[0m"
read -p "Do you want to run Xterm just before exiting chroot ? (Enter=no) (y/N)?" choice

case "$choice" in 
  y|Y)
echo -e "\e[0;36mOK, will run xterm later, at the end of install process\033[0m"
export RUNXTERM=yes
;;
  n|N|"")
echo -e "\e[0;36mOK, will not run xterm at the end of install process\033[0m"
;;
esac

echo

echo -e "\e[0;36mChecking network connection...\033[0m"
busybox ping -c1 google.com > /dev/null
    if [ $? -ne 0 ]; then 
echo -e "\e[0;33mThere is no network connection. Cannot continue, exiting...\033[0m"
sleep 3
exit
else
echo -e "\e[0;32mOK\033[0m"
sleep 1
    fi


if [ -d "stretch" ]; then 
echo -e "\e[0;33m Working directory 'stretch' already exists \n To be able to continue, contents need to be removed first\n All files inside will be deleted, except the apt cache in chroot\033[0m"
read -p "Are you sure to delete contents of directory stretch ? (Enter=yes) (Y/n)?" choice

case "$choice" in 
  y|Y|"")

echo -e "\e[0;36mUnmount mount binds and remove stretch/chroot...\033[0m"
#umount -l chroot/tmp
umount -l stretch/chroot/proc 2> /dev/null
umount -l stretch/chroot/sys 2> /dev/null
umount -l stretch/chroot/dev/pts 2> /dev/null
umount -l stretch/chroot/dev 2> /dev/null

mv stretch/chroot/var/cache/apt stretch/ 2> /dev/null
   if mountpoint -q stretch/chroot/dev; then      # just in case check dev
   echo -e "\e[0;31mSomething went wrong, directory stretch/chroot cannot be removed\033[0m"
   echo -e "\e[0;31mMake sure it's not in use by some process and try again, exiting...\033[0m"
   sleep 2
   exit
   else
   rm -rf stretch/chroot
   fi
mkdir -p stretch/chroot/var/cache 2> /dev/null
mv stretch/apt stretch/chroot/var/cache/ 2> /dev/null
find stretch -mindepth 1 ! -wholename 'stretch/chroot/*' -delete 2> /dev/null
echo -e "\e[0;32mOK, continue...\033[0m"
;;
  n|N)
echo "Exiting..."
sleep 3
exit 0
;;
*)
echo -e "\e[0;31mNot a valid choice, exiting....\033[0m"
sleep 3
exit 0
;;
esac
fi

if [ $(command -v apt-get 2>/dev/null) ];then
 echo -e "\e[0;36mUpdate the package lists...\033[0m"
 apt-get update
 echo -e "\e[0;36mInstall some required packages, e.g. debootstrap, squashfs-tools, etc...\033[0m"
 apt-get install debootstrap wget xorriso isolinux xz-utils squashfs-tools cpio -y
 ok_or_failed
fi

########## Set up debootstrap ##########
echo -e "\e[0;36mSetting up debootstrap in stretch/chroot\033[0m"
echo -e "\e[0;36mThis may take a while...\033[0m"
mkdir -p stretch/chroot && cd stretch &&
debootstrap --arch=$ARCH --variant=minbase --include=apt-transport-https,ca-certificates stretch chroot http://ftp.us.debian.org/debian/

# create build_info.txt and build_setup.conf
cr_build_info

echo -e "\e[0;36mDownload required archives containing scripts, initrd-skel, etc...\033[0m"
sleep 3
wget --no-check-certificate https://raw.githubusercontent.com/DebianDog/MakeLive/gh-pages/dog-boot-stretch-20180815.tar.gz
wget --no-check-certificate https://raw.githubusercontent.com/DebianDog/MakeLive/gh-pages/initrdport-stretch.tar.gz
wget --no-check-certificate https://raw.githubusercontent.com/DebianDog/MakeLive/gh-pages/isodata-stretch.tar.gz
ok_or_failed

echo -e "\e[0;36mExtracting...\033[0m"
tar -zxf dog-boot-stretch-20180815.tar.gz
tar -zxf isodata-stretch.tar.gz
tar -zxf initrdport-stretch.tar.gz
ok_or_failed
echo -e "\e[0;36mCopy scripts, required for porteus-boot, to the chroot...\033[0m"
cp -af dog-boot-stretch-20180815/* chroot/
ok_or_failed

# mount bind some required directories from host filesystem
mount --bind /proc chroot/proc
#mount --bind /tmp chroot/tmp
mount --bind /dev chroot/dev
mount --bind /sys chroot/sys
mount -t devpts devpts chroot/dev/pts
# provide a network connection in chroot
echo -en "`cat /etc/resolv.conf`" > chroot/etc/resolv.conf

#################################################
############ Start running in chroot ############
#################################################
chroot_in () {
if [ -z $(which apt-get) ]; then
echo -e "\e[0;31mSorry, apt-get not found, cannot continue\033[0m"
echo -e "\e[0;36mExiting . . .\033[0m"
touch /exit_
sleep 3
exit
fi 
export HOME=/root
export LC_ALL=C

# Google chrome for 64 bit only, so remove on i386
[ "$ARCH" = "i386" ] && rm -f /etc/apt/sources.list.d/google-chrome.list

# Setup install without install recommends
echo "APT::Install-Recommends "false"; APT::Install-Suggests "false";" > /etc/apt/apt.conf
sleep 1
[ "$ARCH" = "i386" ] && sed -i '1 s|^|deb https://fredx181.github.io/StretchDog/i386/Packages/ ./\n|' /etc/apt/sources.list
[ "$ARCH" = "amd64" ] && sed -i '1 s|^|deb https://fredx181.github.io/StretchDog/amd64/Packages/ ./\n|' /etc/apt/sources.list

apt-get update # required, dog repository just added
[ $? -ne 0 ] && apt-get update # try again if failed

echo -e "\e[0;36mPlease set the password for 'root'\033[0m"
echo -e "\e[0;33mAlso now you may want to add to or edit files in the chroot folder\033[0m" 
passwd root
if [ $? -ne 0 ]; then # try again if passwords not match
echo -e "\e[0;36mPlease try again, type password for root\033[0m"
passwd root
fi
[ $? -ne 0 ] && echo -e "\e[0;31mWarning: password is not set\033[0m"; sleep 3
echo
# add groups fuse and wheel
addgroup fuse
addgroup wheel
echo
# create user puppy
echo -e "\e[0;36mAdd user 'puppy'...\033[0m"
adduser puppy --gecos ",,," --disabled-password 2> /dev/null
echo
echo -e "\e[0;36mPlease set the password for user 'puppy'\033[0m"
passwd puppy
if [ $? -ne 0 ]; then # try again if passwords not match
echo -e "\e[0;36mPlease try again, type password for puppy\033[0m"
passwd puppy
fi
[ $? -ne 0 ] && echo -e "\e[0;31mWarning: password is not set\033[0m"; sleep 3 
usermod -a -G sudo,cdrom,disk,audio,video,plugdev,fuse,wheel puppy

# configure keyboard first
echo -e "\e[0;36mInstall keyboard-configuration \033[0m"
apt-get install dialog keyboard-configuration --yes

# Merge all install variables into one
INSTALL="$BASE_INSTALL $BASE_APPS_INSTALL $DESK_APPS_INSTALL $BASE_DOG_APPS_INSTALL $EXTRA_DOG_APPS_INSTALL $FIRMWARE"

# check gnome-mplayer and transmission version
if [ "$(echo "$INSTALL" | grep gnome-mplayer)" ]; then
G_MPLAYER=$(echo "$INSTALL" | tr ' ' '\n' | grep "gnome-mplayer")
[ "$ARCH" = "i386" ] && INSTALL="$(echo "$INSTALL" | sed "s/$G_MPLAYER/gnome-mplayer-1.0.7/g")"
[ "$ARCH" = "amd64" ] && INSTALL="$(echo "$INSTALL" | sed "s/$G_MPLAYER/gnome-mplayer-1.0.6/g")"
fi

if [ "$(echo "$INSTALL" | grep transmission)" ]; then
T_MISSION=$(echo "$INSTALL" | tr ' ' '\n' | grep "transmission")
[ "$ARCH" = "i386" ] && INSTALL="$(echo "$INSTALL" | sed "s/$T_MISSION/transmission-2.31/g")"
[ "$ARCH" = "amd64" ] && INSTALL="$(echo "$INSTALL" | sed "s/$T_MISSION/transmission-2.60/g")"
fi

# simulate install first to check for errors, if there are, exit
echo -e "\e[0;36mChecking packages . . .\033[0m"
sleep 3
apt-get install -s -y $INSTALL
ret=$?
if [ $ret -eq 100 ]; then
echo -e "\e[0;31mSorry, there are one or more errors, see above.\033[0m"
echo -e "\e[0;31mCould be a typo in a package name.\033[0m"
echo -e "\e[0;36mExiting . . .\033[0m"
touch /exit_
sleep 3
exit
else
echo -e "\e[0;32mAll packages checked OK, continue now to install some basic packages... \033[0m"
sleep 3
fi

# Install some basic packages (do not edit, essential!)
apt-get install live-boot wget menu dbus apt-utils xserver-xorg-legacy gnupg --yes
# try again if failed
if [ $? -ne 0 ]; then
apt-get install live-boot wget menu dbus apt-utils xserver-xorg-legacy gnupg --yes
	if [ $? -ne 0 ]; then
	echo -e "\e[0;31mFAILED\033[0m"
	touch /exit_
	exit
	fi
fi

dbus-uuidgen > /var/lib/dbus/machine-id
echo "live" > /etc/hostname
echo "127.0.0.1	 localhost" > /etc/hosts
echo "127.0.1.1	 live" >> /etc/hosts
mkdir /live
mkdir -p /opt/bin

update-rc.d snapexit defaults

# make /bin/sh symlink to bash instead of dash:
echo -e "\e[0;36mmake /bin/sh symlink to bash instead of default dash\033[0m"
echo "dash dash/sh boolean false" | debconf-set-selections
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure dash

############ Start installing packages ############
### First install the kernel
if [ "$ARCH" = "i386" ]; then
echo -e "\e[0;36mInstall linux-image-4.9.0-7-686-pae\033[0m"
sleep 3
apt-get install --yes linux-image-4.9.0-7-686-pae
# try again if failed
if [ $? -ne 0 ]; then
	apt-get install --yes linux-image-4.9.0-7-686-pae
	if [ $? -ne 0 ]; then
	echo -e "\e[0;31mFAILED\033[0m"
	touch /exit_
	exit
	fi
fi
 
elif [ "$ARCH" = "amd64" ]; then
# Add google signing key
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -
apt-get update # required, google repository key just added to sources.list
[ $? -ne 0 ] && apt-get update # try again
echo
echo -e "\e[0;36mInstall linux-image-4.9.0-7-amd64\033[0m"
sleep 3
apt-get install --yes linux-image-4.9.0-7-amd64
# try again if failed
  if [ $? -ne 0 ]; then
	apt-get install --yes linux-image-4.9.0-7-amd64
	if [ $? -ne 0 ]; then
	echo -e "\e[0;31mFAILED\033[0m"
	touch /exit_
	exit
	fi
  fi 
fi
### End installing kernel

# check kernel version just installed in chroot, output of VERNEWKERNEL will be used later 
VERNEWKERNEL=$(grep " install " /var/log/dpkg.log | sort -r |  cut -d " " -sf4 | grep -o "^[^:]*" | grep linux-image | head -n 1 | sed -e 's/linux-image-//')

####### Start installing packages, defined on GUI #######
echo -e "\e[0;36mInstall packages, as defined in configuration\033[0m"

sleep 3
# If one of the variables is empty, it will be skipped

### Do the real installing
apt-get install -y $INSTALL
# try again if failed
if [ $? -ne 0 ]; then
apt-get install -y $INSTALL
	if [ $? -ne 0 ]; then
	echo -e "\e[0;31mFAILED\033[0m"
	touch /exit_
	exit
	fi
fi
############ End of installing packages ############

echo -e "\e[0;36mCopy aufs and squashfs (LZ4 support) module\033[0m"
sleep 3
if [ "$ARCH" = "i386" ]; then
    if [ "$NOPAE" = "yes" ]; then
mv -f /lib/aufs-nopae /lib/modules/$VERNEWKERNEL/kernel/fs/aufs
rm -rf /lib/aufs64
rm -rf /lib/aufs32
mv -f /lib/squashfs-nopae/* /lib/modules/$VERNEWKERNEL/kernel/fs/squashfs/
rm -rf /lib/squashfs32
rm -rf /lib/squashfs-nopae
rm -rf /lib/squashfs64
depmod $VERNEWKERNEL

    else   
mv -f /lib/aufs32 /lib/modules/$VERNEWKERNEL/kernel/fs/aufs
rm -rf /lib/aufs64
rm -rf /lib/aufs-nopae
mv -f /lib/squashfs32/* /lib/modules/$VERNEWKERNEL/kernel/fs/squashfs/
rm -rf /lib/squashfs32
rm -rf /lib/squashfs-nopae
rm -rf /lib/squashfs64
depmod $VERNEWKERNEL
    fi

elif [ "$ARCH" = "amd64" ]; then
mv -f /lib/aufs64 /lib/modules/$VERNEWKERNEL/kernel/fs/aufs
rm -rf /lib/aufs32
rm -rf /lib/aufs-nopae
mv -f /lib/squashfs64/* /lib/modules/$VERNEWKERNEL/kernel/fs/squashfs/
rm -rf /lib/squashfs64
rm -rf /lib/squashfs-nopae
rm -rf /lib/squashfs32
depmod $VERNEWKERNEL
fi

# Pin the kernel version
echo "Adding new entry (pin) of package linux-image-$VERNEWKERNEL in preferences files..."
VERSION=$(dpkg -s linux-image-$VERNEWKERNEL | grep "Version:" | awk '{ print $2 }')
echo '

Package: linux-image-'$VERNEWKERNEL'
Pin: version '$VERSION'
Pin-Priority: 1001
' >> /etc/apt/preferences

echo '

Package: linux-image-'$VERNEWKERNEL'
Pin: version '$VERSION'
Pin-Priority: 1001
' >> /var/lib/synaptic/preferences

echo "Fixing preferences files... (e.g. remove first empty line(s) )"
# no empty lines allowed at top of preferences files, delete them
sed -i '/./,$!d' /etc/apt/preferences 
sed -i '/./,$!d' /var/lib/synaptic/preferences
# replace multiple empty lines by one
sed -i '/^$/N;/^\n$/D' /etc/apt/preferences
sed -i '/^$/N;/^\n$/D' /var/lib/synaptic/preferences

mkdir -p /etc/systemd/network 2> /dev/null   # might not exist
ln -s /dev/null /etc/systemd/network/99-default.link # traditional network interface names

# create new initrd with aufs and new squashfs (lz4) included
CRYPTSETUP=Y update-initramfs -t -c -k $VERNEWKERNEL

##### Extra apt-get remove #####
# Remove xserver-xorg-video-vmware ? 
# Takes a lot of space due to (large) dependency libllvm3.9 package
if [ "$REM_AUTO_INST" = "TRUE" ]; then
echo -e "\e[0;36mAs requested, remove xserver-xorg-video-vmware\033[0m"
apt-get purge -y xserver-xorg-video-vmware
fi

### Uninstall gnome-icon-theme
GNOME_ICON=$(apt-cache rdepends --installed gnome-icon-theme | grep -v "gnome-icon-theme\|Reverse Depends" | grep -v "|")  # check for reverse dependencies, remove only if none
[ -z "$GNOME_ICON" ] && apt-get purge --yes gnome-icon-theme    # in case installed

# if "xserver-xorg-input-evdev" is installed:
# apt-get purge --yes  xserver-xorg-input-libinput # uncomment if lxinput doesn't work
apt-get --yes autoremove
#####################################
mv -f /usr/local/XTerm /etc/X11/app-defaults/

if [ "$RUNXTERM" = "yes" ]; then
echo -e "\e[0;36mAs requested, running Xterm now\nDo not forget to close Xterm and all other windows, when done\033[0m"
xterm
fi

echo "Cleaning..."
rm -f var/lib/alsa/asound.state
rm -f root/.bash_history
rm -f root/.xsession-errors
rm -rf root/.cache
rm -rf root/.thumbnails
rm -f etc/blkid-cache
rm -f var/lib/dhcp/dhclient.eth0.leases
rm -f var/lib/dhcpcd/*.lease
rm -rf lib/consolefonts
rm -rf lib/keymaps
rm -fr var/lib/aptitude/*
ls var/lib/apt/lists | grep -v "lock" | grep -v "partial" | xargs -i rm var/lib/apt/lists/{} ;
rm -f var/cache/debconf/*-old
rm -f var/lib/dpkg/*-old

find /usr/share/doc -type f -exec rm -f {} 2> /dev/null \;
find usr/share/man -type f -exec rm -f {} 2> /dev/null \;
find usr/share/gtk-doc -type f -exec rm -f {} 2> /dev/null \;
find usr/share/info -type f -exec rm -f {} 2> /dev/null \;
    chown -R man:root usr/share/man

rm -f vmlinuz* initrd* # remove symlinks on /
[ "$KEEP_LOCALES" = "no" ] && rm -fr usr/share/locale/*

rm -f /var/lib/dbus/machine-id
#apt-get clean
rm -rf /tmp/*
rm /etc/resolv.conf
}
export -f chroot_in

if [ "$(which chroot)" = "/bin/chroot" ]; then
CHROOT="/usr/sbin/chroot"
else
CHROOT="chroot"
fi

$CHROOT chroot /bin/bash -c chroot_in

# do not continue if there were errors
[ -f "chroot/exit_" ] && exitfn

################################################
############ End running in chroot #############
################################################

echo -e "\e[0;36mUnmounting mount binds in chroot\033[0m"
#umount -l chroot/tmp
umount -l chroot/proc
umount -l chroot/dev/pts
umount -l chroot/dev
umount -l chroot/sys

echo -e "\e[0;36mStart extracting and creating new 'live' initrd files...\033[0m"
sleep 3
mkdir initrdlive
mv -f chroot/boot/initrd.img-* initrdlive/initrd.img
ok_or_failed
cd initrdlive
zcat initrd.img | cpio -i -d
rm -f initrd.img
echo -e "\e[0;36mCreating initrd.img, please wait...\033[0m"
find . -print | cpio -o -H newc 2>/dev/null | xz -f --extreme --check=crc32 > ../initrd.img
ok_or_failed
cd ..
echo -e "\e[0;36mCopy kernel modules, contents of lib/modules, from extracted 'live-boot' initrd\n to extracted 'porteus-boot' initrd skeleton, initrdport/lib/modules/ ...\033[0m"
sleep 2 
cp -a initrdlive/lib/modules/* initrdport/lib/modules/
ok_or_failed
echo -e "\e[0;36mCreating initrd1.xz, please wait...\033[0m"
cd initrdport
find . -print | cpio -o -H newc 2>/dev/null | xz -f --extreme --check=crc32 > ../initrd1.xz
ok_or_failed
cd ..
echo -e "\e[0;36mCopy initrd.img, initrd1.xz to isodata/live...\033[0m"
mv -f initrd.img isodata/live/
mv -f initrd1.xz isodata/live/
ok_or_failed
echo -e "\e[0;36mMove vmlinuz, from chroot/boot/, to isodata/live/vmlinuz1 ...\033[0m"
mv -f chroot/boot/vmlinuz-* isodata/live/vmlinuz1
ok_or_failed

rm -f chroot/boot/System.map*
rm -f isodata/live/01-filesystem.squashfs # just in case it exists remove first

# copy build_setup.txt to chroot/root
cp -a build_setup.txt chroot/root/
rm -f chroot/var/cache/apt/*.bin
mkdir -p apt/archives
mv -f chroot/var/cache/apt/archives/*.deb ./apt/archives/

if [ "$(cat chroot/etc/X11/default-display-manager 2> /dev/null)" ]; then
echo -e "\e[0;36mIt looks like you have a display-manager installed\033[0m"
cat chroot/etc/X11/default-display-manager
echo -e "\e[0;36mThis probably will conflict with the default login method (through /etc/inittab)\033[0m"
cp -af chroot/etc/inittab-noauto chroot/etc/inittab
echo -e "\e[0;32mDisabled autologin through /etc/inittab, using display-manager for login\033[0m"
sleep 3
fi

# Download extra squashfs modules if DE config is set
echo -e "\e[0;36mIf configured, download extra .squashfs modules to isodata/live...\033[0m"
[ "$DE_CONFIG" = "Openbox" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/openbox/ 2> /dev/null 
[ "$DE_CONFIG" = "Xfce4" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/xfce4/
[ "$DE_CONFIG" = "Jwm" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/jwm/ 2> /dev/null
[ "$DE_CONFIG" = "Mate" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/mate/
[ "$DE_CONFIG" = "LxDD" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/lxdd/
[ "$DE_CONFIG" = "Fvwm-crystal" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/fvwm-crystal/
if [ "$DE_CONFIG" = "DDog" ]; then
[ "$ARCH" = "i386" ] && wget --no-check-certificate -P isodata/live "https://debiandog.github.io/MakeLive/modules/ddog/zz_openbox_xfce-jwm_32.squashfs"
[ "$ARCH" = "amd64" ] && wget --no-check-certificate -P isodata/live "https://debiandog.github.io/MakeLive/modules/ddog/zz_openbox_xfce-jwm_64.squashfs"
fi
[ "$DE_CONFIG" = "Kiosk" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/kiosk/
[ "$DE_CONFIG" = "ObDog" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/obdog/
[ "$DE_CONFIG" = "ChromeDog" ] && wget --no-check-certificate -P isodata/live -r -e robots=off -nd -l1 -A "*squashfs" https://debiandog.github.io/MakeLive/modules/chromedog/ 

# Allow the user to makes changes in chroot just before creating filesystem.squashfs 
echo "At this point you may want to add/edit files in chroot folder"
echo "Also you can add .squashfs modules in the isodata/live folder, to be included in the ISO"
read -sp "Press ENTER to continue . . . "
echo
echo -e "\e[0;33mNow we will create compressed filesystem: '01-filesystem.squashfs'\nPlease enter your choice, xz compression will give smaller size than gzip,\033[0m"
echo -e "\e[0;33mbut xz takes much longer time to compress\033[0m"
read -p "Type gzip or xz : " choice

case "$choice" in 
  gzip)
echo -e "\e[0;36mCreating isodata/live/01-filesystem.squashfs...\033[0m"
mksquashfs chroot isodata/live/01-filesystem.squashfs
;;
  xz)
echo -e "\e[0;36mCreating isodata/live/01-filesystem.squashfs...\033[0m"
mksquashfs chroot isodata/live/01-filesystem.squashfs -comp xz -b 512k
;;
*)
echo -e "\e[0;31mNot a valid choice, please try again, type: gzip or xz \033[0m"
sleep 1
TRYAGAIN=yes
;;
esac

if [ "$TRYAGAIN" = "yes" ]; then
### Second chance in case having made a typo
read -p "Type gzip or xz : " choice

case "$choice" in 
  gzip)
echo -e "\e[0;36mCreating isodata/live/01-filesystem.squashfs...\033[0m"
mksquashfs chroot isodata/live/01-filesystem.squashfs
;;
  xz)
echo -e "\e[0;36mCreating isodata/live/01-filesystem.squashfs...\033[0m"
mksquashfs chroot isodata/live/01-filesystem.squashfs -comp xz -b 512k -Xbcj x86
;;
*)
echo -e "\e[0;31mNot a valid choice, exiting now... \033[0m"
sleep 1

exit 0
;;
esac
fi

ok_or_failed
echo

# Move back the cache to chroot
mv -f ./apt/archives/*.deb chroot/var/cache/apt/archives/ 2> /dev/null
rm -rf apt 2> /dev/null

echo -e "\e[0;36mFinally creating ISO...\033[0m"
NEWISO=$PWD/isodata
LABEL=deblive
NAME=../DebLive_Stretch-$ARCH.iso

cd "$NEWISO"

xorriso -as mkisofs -r -J -joliet-long -l -isohybrid-mbr /usr/lib/ISOLINUX/isohdpfx.bin -partition_offset 16 -V "$LABEL" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ${NAME} "$NEWISO"
ok_or_failed
cd ..
echo
echo -e "\e[0;32mFinished! If all went well, DebLive_Stretch-$ARCH.iso has been created. \nAlso the required files for a frugal install are in isodata 'live' folder \n\nHave a good day!\033[0m"
echo

# read -s -n 1 -p "Press any key to close . . ."

exit 0


Edit eadwine, added code tags, they are to the right of the " button

Post Reply

Return to “General”