6 changed files with 179 additions and 0 deletions
@ -0,0 +1,9 @@ |
|||
#!/bin/bash |
|||
|
|||
DATE=$(date +%Y%m%d_%H%M) |
|||
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" |
|||
PARENT_DIR="$(dirname "$SCRIPT_DIR")" |
|||
mkdir $PARENT_DIR/backup |
|||
rm -f $PARENT_DIR/backup/minios-live-current.tar.gz |
|||
tar -czf $PARENT_DIR/backup/minios-live-current.tar.gz --exclude .git --exclude "*.log" --exclude .script_version . |
|||
cp $PARENT_DIR/backup/minios-live-current.tar.gz $PARENT_DIR/backup/minios-live-$DATE.tar.gz |
@ -0,0 +1,16 @@ |
|||
|
|||
FROM ubuntu:focal |
|||
COPY Dockerfile.minios-live.0@install.sh /opt/install.sh |
|||
RUN chmod +x /opt/install.sh |
|||
RUN /opt/install.sh |
|||
RUN rm /opt/install.sh |
|||
ENV LOGPATH="/var/log" |
|||
ENV BUILD_TEST_ISO="0" |
|||
ENV DEV_SYSTEM="0" |
|||
ENV CREATE_BACKUP="0" |
|||
ENV DEBIAN_FRONTEND_TYPE="noninteractive" |
|||
ENV APT_CMD="apt-get" |
|||
ENV APT_OPTIONS="-y" |
|||
VOLUME /build |
|||
WORKDIR /build |
|||
CMD ["/build/minios-live/autoinstall", "-"] |
@ -0,0 +1,51 @@ |
|||
#!/usr/bin/env bash |
|||
set -e -o xtrace |
|||
|
|||
function _failure() { |
|||
echo -e "\r\nERROR: bash script [ /opt/install.sh ] failed at line $1: \"$2\"" |
|||
} |
|||
trap '_failure ${LINENO} "$BASH_COMMAND"' ERR |
|||
|
|||
# ############################################################################ # |
|||
|
|||
|
|||
apt-get update -y |
|||
apt-get install -y wget patch sudo debootstrap xorriso |
|||
touch /minios-live-container |
|||
cd /opt/ |
|||
wget -c http://ru.archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.123ubuntu2_all.deb |
|||
dpkg -i /opt/debootstrap_1.0.123ubuntu2_all.deb |
|||
rm -f /opt/debootstrap_1.0.123ubuntu2_all.deb |
|||
cat <<'EOF' >/usr/share/debootstrap/functions.diff |
|||
--- functions 2020-10-23 20:42:16.000000000 +0300 |
|||
+++ functions.new 2021-01-16 23:22:25.612064306 +0300 |
|||
@@ -1176,7 +1176,9 @@ |
|||
umount_on_exit /dev/shm |
|||
umount_on_exit /proc |
|||
umount_on_exit /proc/bus/usb |
|||
- umount "$TARGET/proc" 2>/dev/null || true |
|||
+ if [ ! -h "$TARGET/proc" ]; then |
|||
+ umount "$TARGET/proc" 2>/dev/null || true |
|||
+ fi |
|||
|
|||
# some container environment are used at second-stage, it already treats /proc and so on |
|||
if [ -z "$(ls -A "$TARGET/proc")" ]; then |
|||
|
|||
EOF |
|||
cd /usr/share/debootstrap/ |
|||
patch </usr/share/debootstrap/functions.diff |
|||
apt-get clean |
|||
find /var/log/ -type f | xargs rm -f |
|||
rm -f /var/backups/* |
|||
rm -f /var/cache/ldconfig/* |
|||
rm -f /var/cache/debconf/* |
|||
rm -f /var/cache/fontconfig/* |
|||
rm -f /var/cache/apt/archives/*.deb |
|||
rm -f /var/cache/apt/*.bin |
|||
rm -f /var/cache/debconf/*-old |
|||
rm -f /var/lib/apt/extended_states |
|||
rm -f /var/lib/apt/lists/*Packages |
|||
rm -f /var/lib/apt/lists/*Translation* |
|||
rm -f /var/lib/apt/lists/*InRelease |
|||
rm -f /var/lib/apt/lists/deb.* |
|||
rm -f /var/lib/dpkg/*-old |
@ -0,0 +1,75 @@ |
|||
#!/usr/bin/python3 |
|||
# Dockerfile.py |
|||
|
|||
import sys |
|||
import logging |
|||
import pydocker # github.com/jen-soft/pydocker |
|||
|
|||
logging.getLogger('').setLevel(logging.INFO) |
|||
logging.root.addHandler(logging.StreamHandler(sys.stdout)) |
|||
|
|||
|
|||
class DockerFile(pydocker.DockerFile): |
|||
""" add here your custom features """ |
|||
|
|||
|
|||
d = DockerFile(base_img='ubuntu:focal', name='crims0n/minios-live:latest') |
|||
|
|||
d.RUN_bash_script('/opt/install.sh', r''' |
|||
apt-get update -y |
|||
apt-get install -y wget patch sudo debootstrap xorriso |
|||
touch /minios-live-container |
|||
cd /opt/ |
|||
wget -c http://ru.archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.123ubuntu2_all.deb |
|||
dpkg -i /opt/debootstrap_1.0.123ubuntu2_all.deb |
|||
rm -f /opt/debootstrap_1.0.123ubuntu2_all.deb |
|||
cat <<'EOF' >/usr/share/debootstrap/functions.diff |
|||
--- functions 2020-10-23 20:42:16.000000000 +0300 |
|||
+++ functions.new 2021-01-16 23:22:25.612064306 +0300 |
|||
@@ -1176,7 +1176,9 @@ |
|||
umount_on_exit /dev/shm |
|||
umount_on_exit /proc |
|||
umount_on_exit /proc/bus/usb |
|||
- umount "$TARGET/proc" 2>/dev/null || true |
|||
+ if [ ! -h "$TARGET/proc" ]; then |
|||
+ umount "$TARGET/proc" 2>/dev/null || true |
|||
+ fi |
|||
|
|||
# some container environment are used at second-stage, it already treats /proc and so on |
|||
if [ -z "$(ls -A "$TARGET/proc")" ]; then |
|||
|
|||
EOF |
|||
cd /usr/share/debootstrap/ |
|||
patch </usr/share/debootstrap/functions.diff |
|||
apt-get clean |
|||
find /var/log/ -type f | xargs rm -f |
|||
rm -f /var/backups/* |
|||
rm -f /var/cache/ldconfig/* |
|||
rm -f /var/cache/debconf/* |
|||
rm -f /var/cache/fontconfig/* |
|||
rm -f /var/cache/apt/archives/*.deb |
|||
rm -f /var/cache/apt/*.bin |
|||
rm -f /var/cache/debconf/*-old |
|||
rm -f /var/lib/apt/extended_states |
|||
rm -f /var/lib/apt/lists/*Packages |
|||
rm -f /var/lib/apt/lists/*Translation* |
|||
rm -f /var/lib/apt/lists/*InRelease |
|||
rm -f /var/lib/apt/lists/deb.* |
|||
rm -f /var/lib/dpkg/*-old |
|||
''') |
|||
|
|||
d.ENV = 'LOGPATH="/var/log"' |
|||
d.ENV = 'BUILD_TEST_ISO="0"' |
|||
d.ENV = 'DEV_SYSTEM="0"' |
|||
d.ENV = 'CREATE_BACKUP="0"' |
|||
d.ENV = 'DEBIAN_FRONTEND_TYPE="noninteractive"' |
|||
d.ENV = 'APT_CMD="apt-get"' |
|||
d.ENV = 'APT_OPTIONS="-y"' |
|||
|
|||
d.VOLUME = '/build' |
|||
d.WORKDIR = '/build' |
|||
|
|||
# d.ENTRYPOINT = ["/opt/www-data/entrypoint.sh"] |
|||
d.CMD = ["/build/minios-live/autoinstall", "-"] |
|||
|
|||
d.build_img() |
@ -0,0 +1,2 @@ |
|||
#!/bin/bash |
|||
sudo docker build -t minios-live -f Dockerfile.minios-live . |
@ -0,0 +1,26 @@ |
|||
#!/bin/bash |
|||
|
|||
LOGPATH="/var/log" |
|||
|
|||
# default is output to log. you can use OUTPUT="/dev/stdout" if you want to route events to standard output. |
|||
#OUTPUT="$LOGPATH/$LIVEKITNAME.log" |
|||
OUTPUT="/dev/stdout" |
|||
|
|||
# if = "1", creates a second iso with a constant filename |
|||
# если ="1", создаёт второй iso с постоянным именем файла |
|||
BUILD_TEST_ISO="1" |
|||
|
|||
# if = "1", creates a copy of minios-live in chroot /opt |
|||
# если ="1", создаёт копию minios-live в chroot /opt |
|||
DEV_SYSTEM="0" |
|||
|
|||
# if ="1", creates backup in parent folder |
|||
# если ="1", создаёт резервную копию в родительской папке |
|||
CREATE_BACKUP="0" |
|||
|
|||
DEBIAN_FRONTEND_TYPE="noninteractive" |
|||
#DEBIAN_FRONTEND_TYPE="ncurses" |
|||
|
|||
APT_CMD="apt-get" |
|||
|
|||
APT_OPTIONS="-y" #--no-install-recommends" |
Loading…
Reference in new issue