331 lines
11 KiB
Plaintext
331 lines
11 KiB
Plaintext
# https://dev1galaxy.org/viewtopic.php?id=551
|
|
#FROM devuan:jessie-slim
|
|
#FROM devuan:ascii-slim
|
|
FROM dyne/devuan:beowulf
|
|
ENV DEBIAN_FRONTEND noninteractive
|
|
|
|
RUN echo 'Acquire::http { Proxy "http://192.168.1.49:3142"; };' > /etc/apt/apt.conf.d/02proxy
|
|
RUN apt-get update && apt-get -y upgrade
|
|
|
|
RUN apt-get install -y xorriso squashfs-tools live-boot syslinux-common git zsh debootstrap sudo kpartx xz-utils sudo cgpt parted vim curl sed gawk bsdmainutils
|
|
RUN apt-get install -y live-build live-config live-config-sysvinit isolinux grub-efi-amd64-bin grub-common dosfstools gnutls-bin
|
|
#RUN apt-get install -y kpartx cgpt
|
|
#RUN git clone https://git.devuan.org/cyteen/live-sdk
|
|
RUN git clone https://git.devuan.org/sdk/live-sdk.git /live-sdk
|
|
WORKDIR /live-sdk
|
|
#RUN git submodule update --init --recursive --checkout
|
|
RUN pwd
|
|
RUN ls -lh
|
|
RUN git pull && git submodule update --init --recursive --checkout
|
|
|
|
# sub modules might be behind current libdevuansdk git, if you require a more current version of libdevuansdk clone directly:
|
|
#WORKDIR /live-sdk/lib
|
|
#RUN rm -rf libdevuansdk
|
|
#RUN git clone https://git.devuan.org/sdk/libdevuansdk
|
|
|
|
#WORKDIR /live-sdk
|
|
# NB now included in the live-sdk if extra does not have a syslinux directory with isolinux.bin
|
|
#mkdir -p /live-sdk/extra/syslinux
|
|
|
|
# from package live-build
|
|
#cp /usr/share/live/build/bootloaders/isolinux/*.c32 /live-sdk/extra/syslinux
|
|
#cp /usr/share/live/build/bootloaders/isolinux/isolinux.bin /live-sdk/extra/syslinux
|
|
|
|
# from package ISOLINUX
|
|
#cp /usr/lib/ISOLINUX/isohdpfx.bin /live-sdk/extra/syslinux
|
|
|
|
|
|
ENV USER_NAME "default"
|
|
ENV USER_PASS "default"
|
|
ENV DEFAULT_SHELL "/bin/zsh"
|
|
|
|
ENV OS "devuan"
|
|
ENV ARCH "amd64"
|
|
ENV RELEASE "beowulf"
|
|
ENV VERSION 2.0.0
|
|
ENV TEMPLATE_NAME "devuan-beowulf-live"
|
|
#ENV TEMPLATE_NAME "live-zfs"
|
|
ENV BLEND_NAME "live-zfs"
|
|
ENV BLEND_VERS "1.0"
|
|
|
|
#ENV APT_MIRROR "http://192.168.44.47:3142/pkgmaster.devuan.org/merged"
|
|
ENV APT_MIRROR "http://pkgmaster.devuan.org/merged"
|
|
|
|
ENV USE_HOOKS "yes"
|
|
ENV SECTION "main contrib non-free"
|
|
ENV IMAGE_NAME "${os}_${release}_${version}_${arch}_desktop"
|
|
|
|
ENV SOURCES_LIST "${BLENDPATH}/sources.list"
|
|
ENV MANUAL_LIST "${BLENDPATH}/manual.list"
|
|
ENV AUTO_LIST "${BLENDPATH}/auto.list"
|
|
|
|
COPY ./live-sdk/blends/${TEMPLATE_NAME} /live-sdk/blends/${BLEND_NAME}
|
|
RUN mv /live-sdk/blends/${BLEND_NAME}/${TEMPLATE_NAME}.blend /live-sdk/blends/${BLEND_NAME}/${BLEND_NAME}.blend
|
|
|
|
|
|
# Enable/disable UEFI - Currently code checks to see if the $mkefi is set not if it is yes or no and turning it off breaks the xorriso build options.
|
|
#ENV MKEFI "no"
|
|
#ENV GRUB_VER "grub-pc"
|
|
#ENV EFI_WORK ""
|
|
#RUN sed -i "s,^\(mkefi=\).*,\1\"${MKEFI}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i "s,^\(efi_work=\).*,\1\"${EFI_WORK}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i '/^mkefi=/s/^/# /' /live-sdk/blends/${BLEND_NAME}/config
|
|
|
|
ENV MKEFI "yes"
|
|
ENV GRUB_VER "grub-efi-amd64"
|
|
ENV EFI_WORK "${BLENDPATH}/efi-files"
|
|
RUN sed -i '/# mkefi=/s/# /^/' /live-sdk/blends/${BLEND_NAME}/config
|
|
|
|
#WORKDIR /live-sdk/blends/
|
|
#RUN git clone https://git.devuan.org/cyteen/blends/live-zfs
|
|
#RUN git checkout -b ${BLEND_NAME}
|
|
|
|
## Once working and building push to git
|
|
#RUN git push origin ${BLEND_NAME}
|
|
|
|
|
|
WORKDIR /live-sdk
|
|
# Add the new blend to the sdk blend_map so we can build it.
|
|
RUN pwd
|
|
RUN ls
|
|
RUN sed -i "/blend_map=.*/ s/.*/&\n\t\t\"${BLEND_NAME}\" \"\$R\/blends\/${BLEND_NAME}\/${BLEND_NAME}.blend\"/" sdk
|
|
|
|
# Add call for sourceslist
|
|
#RUN sed -i "/install-custdebs.*/ s/.*/&\n\tinstall-packageslist || zerr/" sdk
|
|
|
|
COPY bin/edit-config.sh /live-sdk/edit-config.sh
|
|
|
|
# #!/bin/bash
|
|
# /live-sdk/edit-config.sh
|
|
#
|
|
# CONFIG_FILE="${2}"
|
|
# declare -A arr
|
|
# arr+=( "${1}" )
|
|
# for TARGET_KEY in "${!arr[@]}"; do
|
|
# echo "x " ${TARGET_KEY} ${arr[${TARGET_KEY}]} ${CONFIG_FILE}
|
|
# if grep -q "^${TARGET_KEY}=" ${CONFIG_FILE}; then
|
|
# sed -i "s|^${TARGET_KEY}.*|${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE}
|
|
# else
|
|
# sed -i "/^blend_name=.*/ s|.*|&\n${TARGET_KEY}=\"${arr[${TARGET_KEY}]}\"|" ${CONFIG_FILE}
|
|
# fi
|
|
# done
|
|
|
|
# FIXME: Some settings in the blend config fail to override libdevuansdk/conf we should test setting in blend first to identify which ones are not imported.
|
|
|
|
# Construct array for edit-config
|
|
# Taken from /live-sdk/lib/libdevuansdk/config
|
|
ENV CORE_PACKAGES \
|
|
devuan-keyring \
|
|
debian-keyring \
|
|
ca-certificates \
|
|
initramfs-tools \
|
|
e2fsprogs \
|
|
curl \
|
|
less \
|
|
vim \
|
|
nano \
|
|
sysvinit \
|
|
""
|
|
|
|
ENV BASE_PACKAGES \
|
|
apt-utils \
|
|
dselect \
|
|
parted \
|
|
openssh-server \
|
|
openssh-client \
|
|
sudo \
|
|
alsa-base \
|
|
alsa-utils \
|
|
mawk \
|
|
tmux \
|
|
screen \
|
|
#openntpd \
|
|
ntp \
|
|
wpasupplicant \
|
|
wireless-tools \
|
|
elinks \
|
|
firmware-linux-free \
|
|
btrfs-tools \
|
|
zsh \
|
|
rsync \
|
|
git-core \
|
|
mlocate \
|
|
""
|
|
|
|
#ENV PURGE_PACKAGES \
|
|
# dbus \
|
|
# ""
|
|
|
|
ENV FINALIZE_PURGE_PACKAGES \
|
|
avahi-daemon \
|
|
avahi-autoipd \
|
|
libavahi-common-data \
|
|
libavahi-common3 \
|
|
libavahi-glib1 \
|
|
libavahi-client3 \
|
|
cups-browsed \
|
|
gvfs-daemon \
|
|
libpam-gnome-keyring \
|
|
pulseaudio \
|
|
policykit-1 \
|
|
xscreensaver \
|
|
xscreensaver-data \
|
|
""
|
|
|
|
ENV CORE_VALUES " \
|
|
["core_packages="]=${CORE_PACKAGES[@]} \
|
|
"
|
|
|
|
ENV BASE_VALUES " \
|
|
["base_packages="]=${BASE_PACKAGES[@]} \
|
|
"
|
|
|
|
ENV PURGE_VALUES " \
|
|
["purge_packages="]=${PURGE_PACKAGES[@]} \
|
|
"
|
|
|
|
ENV FINALIZE_PURGE_VALUES " \
|
|
["finalize_purge_packages="]=${FINALIZE_PURGE_PACKAGES[@]} \
|
|
"
|
|
|
|
ENV BLEND_CONFIG /live-sdk/blends/${BLEND_NAME}/config
|
|
|
|
RUN edit-config-list.sh ${CORE_VALUES} ${BLEND_CONFIG}
|
|
RUN edit-config-list.sh ${BASE_VALUES} ${BLEND_CONFIG}
|
|
RUN edit-config-list.sh ${PURGE_VALUES} ${BLEND_CONFIG}
|
|
|
|
# FIXME: Does edit-config.sh cope with multi-line variables in CONFIG_VALUES below.
|
|
|
|
ENV SDK_CONFIG /live-sdk/lib/libdevuansdk/config
|
|
|
|
#ENV CONFIG_VALUES " \
|
|
# ["core_packages"]=${CORE_PACKAGES} \
|
|
# ["base_packages"]=${BASE_PACKAGES} \
|
|
# ["purge_packages"]=${PURGE_PACKAGES} \
|
|
# "
|
|
|
|
ENV CONFIG_VALUES " \
|
|
["os"]=${OS} \
|
|
["release"]=${RELEASE} \
|
|
["version"]=${VERSION} \
|
|
["mirror"]=${APT_MIRROR} \
|
|
["section"]=${SECTION} \
|
|
["image_name"]=${IMAGE_NAME} \
|
|
"
|
|
|
|
#RUN edit-config.sh ${CONFIG_VALUES} ${SDK_CONFIG}
|
|
RUN edit-config.sh ${CONFIG_VALUES} ${BLEND_CONFIG}
|
|
|
|
ENV BLEND_CONFIG_VALUES " \
|
|
["user_name"]=${USER_NAME} \
|
|
["user_pass"]=${USER_PASS} \
|
|
["default-shell"]=${DEFAULT_SHELL} \
|
|
["blend_name"]=${BLEND_NAME} \
|
|
["blend_vers"]=${BLEND_VERS} \
|
|
["hookfile"]=${USE_HOOKS} \
|
|
["arch"]=${ARCH} \
|
|
["mkefi"]=${MKEFI} \
|
|
["efi-work"]=${EFI_WORK} \
|
|
["grubversion"]=${GRUB_VER} \
|
|
["sources_list"]=${SOURCES_LIST} \
|
|
["manual_list"]=${MANUAL_LIST} \
|
|
["auto_list"]=${AUTO_LIST} \
|
|
"
|
|
|
|
RUN edit-config.sh ${BLEND_CONFIG_VALUES} ${BLEND_CONFIG}
|
|
|
|
# Add zfs var and arrs filesystems you would like to snapshot separately or
|
|
# apply and indiviual quota
|
|
#vars+=(zfs_poolname)
|
|
ENV ZFS_POOLNAME "rpool"
|
|
|
|
#arrs+=(zfs_datasets)
|
|
ENV ZFS_DATASETS " \
|
|
"/home" \
|
|
"/home/${username}" \
|
|
"/space" \
|
|
"/opt" \
|
|
"/tmp" \
|
|
"/usr" \
|
|
"/usr/share" \
|
|
"/usr/local" \
|
|
"/var" \
|
|
"/var/cache" \
|
|
"/var/cache/apt" \
|
|
"/var/lib" \
|
|
"/var/tmp" \
|
|
"/var/lib/virt" \
|
|
"/var/lib/lxc" \
|
|
"/var/lib/docker" \
|
|
"/var/log" \
|
|
"/var/spool" \
|
|
"/var/tmp" \
|
|
"
|
|
|
|
# Given on the load commandline
|
|
#RUN sed -i "s,^\(os=\).*,\1\"${OS}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
|
|
#RUN sed -i "s,^\(blend_name=\).*,\1\"${BLEND_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#
|
|
#RUN sed -i "s,^\(username=\).*,\1\"${USER_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i "s,^\(userpass=\).*,\1\"${USER_PASS}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i "s,^\(default_shell=\).*,\1\"${DEFAULT_SHELL}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#
|
|
#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i "s,^\(hookscripts=\).*,\1\"${USE_HOOKS}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i "s,^\(section=\).*,\1\"${SECTION}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN sed -i "s,^\(image_name=\).*,\1\"${IMAGE_NAME}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#
|
|
#RUN sed -i "s,^\(grubversion=\).*,\1\"${GRUB_VER}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#
|
|
##RUN sed -i "s,^\(blend_vers=\).*,\1\"${BLEND_VERS}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN grep -q '^blend_vers=' /live-sdk/blends/${BLEND_VERS}/config && \
|
|
# sed -i "s/^blend_vers.*/mirror=${BLEND_VERS}/" /live-sdk/blends/${BLEND_NAME}/config || \
|
|
# sed -i "/blend_name=.*/ s/.*/&\n^release=${BLEND_VERS}\"/" /live-sdk/blends/${BLEND_NAME/config}
|
|
#
|
|
##RUN sed -i "s,^\(release=\).*,\1\"${RELEASE}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN grep -q '^release=' /live-sdk/blends/${BLEND_NAME}/config && \
|
|
# sed -i "s/^release.*/mirror=${RELEASE}/" /live-sdk/blends/${BLEND_NAME}/config || \
|
|
# sed -i "/blend_name=.*/ s/.*/&\n^release=${RELEASE}\"/" /live-sdk/blends/${BLEND_NAME/config}
|
|
#
|
|
#RUN grep -q '^mirror=' /live-sdk/blends/${BLEND_NAME}/config && \
|
|
# sed -i "s/^mirror.*/mirror=${APT_MIRROR}/" /live-sdk/blends/${BLEND_NAME}/config || \
|
|
# sed -i "/blend_name=.*/ s/.*/&\n^mirror=${BLEND_NAME}\"/" /live-sdk/blends/${BLEND_NAME/config}
|
|
#
|
|
#RUN sed -i "s,^\(mirror=\).*,\1\"${APT_MIRROR}\"," /live-sdk/blends/${BLEND_NAME}/config
|
|
|
|
|
|
# Add/remove packages not already in the blend
|
|
#RUN echo ""extra_packages+=( smartmontools gsmartcontrol ) >> /live-sdk/blends/${BLEND_NAME}/config
|
|
#RUN purge_packages+=( policykit-1) >> /live-sdk/blends/${BLEND_NAME}/config
|
|
|
|
# Add hook scripts not all ready in the blend
|
|
#RUN echo "" > /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh
|
|
#COPY common/hooks/hook.sh /live-sdk/blends/${BLEND_NAME}/hooks/hook.sh
|
|
|
|
# Add custom debs not already in the blend
|
|
#RUN echo "custom_deb_packages+=( sanoid_1.4.14-1_amd64.deb )" >> /live-sdk/blends/${BLEND_NAME}/config
|
|
#COPY common/custom-packages/sanoid_1.4.14-1_amd64.deb /live-sdk/blends/${BLEND_NAME}/sanoid_1.4.14-1_amd64.deb
|
|
|
|
## copy a get-selections from the livecd (install your prefered programs beforehand)
|
|
#dpkg --get-selections > /var/tmp/packages.list
|
|
#/usr/bin/apt-mark showauto > /var/tmp/pkgs_auto.lst
|
|
#/usr/bin/apt-mark showmanual > /var/tmp/pkgs_manual.lst
|
|
COPY packages.list blend/${BLEND_NAME}/packages.list
|
|
#COPY pkgs_auto.list blend/${BLEND_NAME}/pkgs_auto.list
|
|
#COPY pkgs_manual.list blend/${BLEND_NAME}/pkgs_manual.list
|
|
|
|
COPY pkgs_auto.list-ascii blend/${BLEND_NAME}/pkgs_auto.list
|
|
COPY pkgs_manual.list-ascii blend/${BLEND_NAME}/pkgs_manual.list
|
|
|
|
SHELL ["/bin/zsh", "-c"]
|
|
|
|
RUN echo "#!/usr/bin/env zsh" > build-iso.zsh && \
|
|
echo "source sdk" >> build-iso.zsh && \
|
|
echo "load ${OS} ${ARCH} ${BLEND_NAME}" >> build-iso.zsh && \
|
|
echo "build_iso_dist" >> build-iso.zsh && \
|
|
chmod +x build-iso.zsh
|
|
|
|
#ENTRYPOINT ["/bin/zsh", "-f", "-c", "source sdk"]
|
|
CMD ["build-iso.zsh"]
|