From 0608796a2b4b4be25346e587e91ccc7d80e64477 Mon Sep 17 00:00:00 2001 From: crims0n Date: Sat, 30 Jan 2021 22:54:30 +0300 Subject: [PATCH] update --- build_modules | 1 + linux-live/minioslib | 161 +++++++++++++++++++++++++++---------------- 2 files changed, 103 insertions(+), 59 deletions(-) diff --git a/build_modules b/build_modules index 834cbb9..d9e647d 100755 --- a/build_modules +++ b/build_modules @@ -15,6 +15,7 @@ fi set -u . $SCRIPT_DIR/linux-live/minioslib || exit 1 . $SCRIPT_DIR/linux-live/config || exit 1 +. $SCRIPT_DIR/linux-live/livekitlib|| exit 1 # don't change! use ./autoinstall instead UNATTENDED="0" diff --git a/linux-live/minioslib b/linux-live/minioslib index b1331ef..025dbe6 100644 --- a/linux-live/minioslib +++ b/linux-live/minioslib @@ -1512,7 +1512,7 @@ function module_check_build_dir() { else # ▼ должно быть только перенаправление ошибки! if [ "$(ls -A $MODULE_UPPER_DIR)" != "" ]; then - echo -e "${MAGENTA}$MODULE_UPPER_DIR{ENDCOLOUR} is not empty." + echo -e "${MAGENTA}$MODULE_UPPER_DIR${ENDCOLOUR} is not empty." module_cleanup module_check_mounted echo -e "The working directory is ${MAGENTA}$MODULE_MERGED_DIR${ENDCOLOUR}." @@ -1526,15 +1526,43 @@ function module_check_build_dir() { function module_chroot_mount_fs() { echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + local MODULES MODULE_LOWER_DIR + #if [ ! -d $MODULE_MERGED_DIR/dev ]; then # mkdir $MODULE_MERGED_DIR/dev #fi module_check_mounted + MODULES_LIST="" + MODULES=($PARENT_DIR/image/$LIVEKITNAME/*.$BEXT) + for ((i = ${#MODULES[@]} - 1; i >= 0; i--)); do + MODULE_LOWER_DIR=$(basename ${MODULES[$i]} .$BEXT) + mkdir -p $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + mount ${MODULES[$i]} $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + MODULES_LIST=$MODULES_LIST":""$MODULES_DIR/lower/$MODULE_LOWER_DIR-lower" + done + MODULES_LIST=${MODULES_LIST:1} + mkdir -p $MODULE_UPPER_DIR $MODULE_WORK_DIR $MODULE_MERGED_DIR - mount -t overlay overlay -o lowerdir=$BUILD_DIR,upperdir=$MODULE_UPPER_DIR,workdir=$MODULE_WORK_DIR $MODULE_MERGED_DIR + mount -t overlay overlay -o lowerdir=$MODULES_LIST,upperdir=$MODULE_UPPER_DIR,workdir=$MODULE_WORK_DIR $MODULE_MERGED_DIR + + if [ ! -d $MODULE_MERGED_DIR/dev ]; then + mkdir -p $MODULE_MERGED_DIR/dev + fi + if [ ! -d $MODULE_MERGED_DIR/run ]; then + mkdir -p $MODULE_MERGED_DIR/run + fi + if [ ! -d $MODULE_MERGED_DIR/proc ]; then + mkdir -p $MODULE_MERGED_DIR/proc + fi + if [ ! -d $MODULE_MERGED_DIR/sys ]; then + mkdir -p $MODULE_MERGED_DIR/sys + fi + if [ ! -d $MODULE_MERGED_DIR/tmp ]; then + mkdir -p $MODULE_MERGED_DIR/tmp + fi : 'if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then ln -s /dev $MODULE_MERGED_DIR/dev @@ -1555,6 +1583,8 @@ function module_chroot_mount_fs() { function module_chroot_umount_fs() { echo -e "=====> the ${CYAN}${FUNCNAME[0]}${ENDCOLOUR} function is executing ..." + local MODULES MODULE_LOWER_DIR + : 'if [ -f /.dockerenv ] || [ "$container" = "podman" ]; then set +e rm -f $MODULE_MERGED_DIR/dev >>$OUTPUT 2>&1 @@ -1576,6 +1606,12 @@ function module_chroot_umount_fs() { set -e #fi + MODULES=($PARENT_DIR/image/$LIVEKITNAME/*.$BEXT) + for ((i = ${#MODULES[@]} - 1; i >= 0; i--)); do + MODULE_LOWER_DIR=$(basename ${MODULES[$i]} .$BEXT) + umount $MODULES_DIR/lower/$MODULE_LOWER_DIR-lower + done + module_check_mounted } @@ -1618,8 +1654,8 @@ EOF EOF # clean up useless stuff - rm -rf $MODULE_UPPER_DIR/boot - rm -rf $MODULE_UPPER_DIR/tmp/* $MODULE_UPPER_DIR/root/.bash_history >>$OUTPUT 2>&1 + rm -rf $MODULE_UPPER_DIR/boot $MODULE_UPPER_DIR/dev $MODULE_UPPER_DIR/proc $MODULE_UPPER_DIR/sys $MODULE_UPPER_DIR/rmp $MODULE_UPPER_DIR/run + rm -f $MODULE_UPPER_DIR/root/.bash_history >>$OUTPUT 2>&1 rm -rf $MODULE_UPPER_DIR/.cache find $MODULE_UPPER_DIR/var/log/ -type f | xargs rm -f >>$OUTPUT 2>&1 rm -f $MODULE_UPPER_DIR/etc/ssh/ssh_host* @@ -1645,28 +1681,23 @@ function build_modules() { cd $SCRIPT_DIR/linux-live/modules - for LIST in *; do + for MODULE in *; do - MODULE_UPPER_DIR="$MODULES_DIR/$LIST-upper" - MODULE_WORK_DIR="$MODULES_DIR/$LIST-work" - MODULE_MERGED_DIR="$MODULES_DIR/$LIST-merged" + if (ls $PARENT_DIR/image/$LIVEKITNAME/*.$BEXT | grep -q $MODULE 2>/dev/null); then + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + echo -e "Please remove ${MAGENTA}$PARENT_DIR/image/$LIVEKITNAME/$MODULE.$BEXT${ENDCOLOUR} if you want to build ${MAGENTA}$MODULE${ENDCOLOUR}." + echo -e "${RED}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!${ENDCOLOUR}" + else - module_check_build_dir + MODULE_UPPER_DIR="$MODULES_DIR/$MODULE-upper" + MODULE_WORK_DIR="$MODULES_DIR/$MODULE-work" + MODULE_MERGED_DIR="$MODULES_DIR/$MODULE-merged" - module_chroot_mount_fs + module_check_build_dir - if [ -d /opt/minios-live ] || [ -f /.minios-live-container ]; then - chroot $MODULE_MERGED_DIR /usr/bin/env \ - OUTPUT=$OUTPUT \ - LOGPATH=$LOGPATH \ - BUILD_TEST_ISO=$BUILD_TEST_ISO \ - CREATE_BACKUP=$CREATE_BACKUP \ - DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ - APT_CMD=$APT_CMD \ - APT_OPTIONS=$APT_OPTIONS \ - LIVE_TYPE=$LIVE_TYPE \ - sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ - $APT_CMD update >>$OUTPUT 2>&1 && + module_chroot_mount_fs + + if [ -d /opt/minios-live ] || [ -f /.minios-live-container ]; then chroot $MODULE_MERGED_DIR /usr/bin/env \ OUTPUT=$OUTPUT \ LOGPATH=$LOGPATH \ @@ -1677,35 +1708,46 @@ function build_modules() { APT_OPTIONS=$APT_OPTIONS \ LIVE_TYPE=$LIVE_TYPE \ sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ - $APT_CMD install $APT_OPTIONS \ - $(grep -vE "^\s*#" $SCRIPT_DIR/linux-live/modules/$LIST | tr "\n" " ") >>$OUTPUT 2>&1 - else - chroot $MODULE_MERGED_DIR sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ - $APT_CMD update >>$OUTPUT 2>&1 && + $APT_CMD update >>$OUTPUT 2>&1 && + chroot $MODULE_MERGED_DIR /usr/bin/env \ + OUTPUT=$OUTPUT \ + LOGPATH=$LOGPATH \ + BUILD_TEST_ISO=$BUILD_TEST_ISO \ + CREATE_BACKUP=$CREATE_BACKUP \ + DEBIAN_FRONTEND_TYPE=$DEBIAN_FRONTEND_TYPE \ + APT_CMD=$APT_CMD \ + APT_OPTIONS=$APT_OPTIONS \ + LIVE_TYPE=$LIVE_TYPE \ + sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS \ + $(grep -vE "^\s*#" $SCRIPT_DIR/linux-live/modules/$MODULE | tr "\n" " ") >>$OUTPUT 2>&1 + else chroot $MODULE_MERGED_DIR sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ - $APT_CMD install $APT_OPTIONS \ - $(grep -vE "^\s*#" $SCRIPT_DIR/linux-live/modules/$LIST | tr "\n" " ") >>$OUTPUT 2>&1 - fi + $APT_CMD update >>$OUTPUT 2>&1 && + chroot $MODULE_MERGED_DIR sudo DEBIAN_FRONTEND=$DEBIAN_FRONTEND_TYPE \ + $APT_CMD install $APT_OPTIONS \ + $(grep -vE "^\s*#" $SCRIPT_DIR/linux-live/modules/$MODULE | tr "\n" " ") >>$OUTPUT 2>&1 + fi - module_chroot_finish_up + module_chroot_finish_up - if [ $LIST = "02-xubuntu" ]; then - (cd $SCRIPT_DIR/linux-live/rootcopy-modules/02-xubuntu && cp --parents -afr * $MODULE_MERGED_DIR/) + if [ $MODULE = "02-xubuntu" ]; then + (cd $SCRIPT_DIR/linux-live/rootcopy-modules/02-xubuntu && cp --parents -afr * $MODULE_MERGED_DIR/) - if cat $MODULE_MERGED_DIR/etc/passwd | grep /home/live; then - chroot $MODULE_MERGED_DIR userdel live >>$OUTPUT 2>&1 - rm -rf $MODULE_MERGED_DIR/home/live >>$OUTPUT 2>&1 - fi - if ! cat $MODULE_MERGED_DIR/etc/passwd | grep /home/live; then - echo "Set up user 'live'" >>$OUTPUT 2>&1 - chroot $MODULE_MERGED_DIR adduser --gecos '' live --disabled-password >>$OUTPUT 2>&1 - fi - echo "Set up password for user 'live'" >>$OUTPUT 2>&1 - echo live:evil | chroot $MODULE_MERGED_DIR chpasswd >>$OUTPUT 2>&1 - chroot $MODULE_MERGED_DIR addgroup live adm >>$OUTPUT 2>&1 - chroot $MODULE_MERGED_DIR addgroup live sudo >>$OUTPUT 2>&1 + if cat $MODULE_MERGED_DIR/etc/passwd | grep /home/live; then + chroot $MODULE_MERGED_DIR userdel live >>$OUTPUT 2>&1 + rm -rf $MODULE_MERGED_DIR/home/live >>$OUTPUT 2>&1 + fi + if ! cat $MODULE_MERGED_DIR/etc/passwd | grep /home/live; then + echo "Set up user 'live'" >>$OUTPUT 2>&1 + chroot $MODULE_MERGED_DIR adduser --gecos '' live --disabled-password >>$OUTPUT 2>&1 + fi + echo "Set up password for user 'live'" >>$OUTPUT 2>&1 + echo live:evil | chroot $MODULE_MERGED_DIR chpasswd >>$OUTPUT 2>&1 + chroot $MODULE_MERGED_DIR addgroup live adm >>$OUTPUT 2>&1 + chroot $MODULE_MERGED_DIR addgroup live sudo >>$OUTPUT 2>&1 - chroot $MODULE_MERGED_DIR /bin/bash -x <$MODULE_MERGED_DIR/etc/lightdm/lightdm.conf + if [ -d $MODULE_MERGED_DIR/etc/lightdm ]; then + cat <$MODULE_MERGED_DIR/etc/lightdm/lightdm.conf [Seat:*] autologin-session=xubuntu autologin-user=live autologin-user-timeout=0 EOF - fi + fi - if [ -d $BUILD_DIR/etc/NetworkManager ]; then - echo "Disable dhclient.service autostart." >>$OUTPUT 2>&1 - chroot $BUILD_DIR systemctl disable dhclient >>$OUTPUT 2>&1 - fi + if [ -d $MODULE_MERGED_DIR/etc/NetworkManager ]; then + echo "Disable dhclient.service autostart." >>$OUTPUT 2>&1 + chroot $MODULE_MERGED_DIR systemctl disable dhclient >>$OUTPUT 2>&1 + fi - fi + fi - module_chroot_umount_fs + module_chroot_umount_fs - # create compressed 01-core.sb - : 'cd $MODULE_UPPER_DIR + # create compressed 01-core.sb + : 'cd $MODULE_UPPER_DIR COREFS="" for i in $MKMOD; do if [ -d /$i ]; then COREFS="$COREFS $i" fi done - mksquashfs $COREFS $PARENT_DIR/image/$LIVEKITNAME/$LIST.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -keep-as-directory -noappend || exit' + mksquashfs $COREFS $PARENT_DIR/image/$LIVEKITNAME/$MODULE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -keep-as-directory -noappend || exit' - mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/image/$LIVEKITNAME/$LIST.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend || exit + mksquashfs $MODULE_UPPER_DIR $PARENT_DIR/image/$LIVEKITNAME/$MODULE.$BEXT -comp $COMP_TYPE -b 1024K -always-use-fragments -noappend || exit + fi done } \ No newline at end of file