[X2Go-Commits] [[X2Go Wiki]] page changed: doc:howto:tce

wiki-admin at x2go.org wiki-admin at x2go.org
Fri Dec 2 14:07:08 CET 2022


A page in your DokuWiki was added or changed. Here are the details:

Browser             : Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
IP Address          : 78.43.74.240
Hostname            : ip-078-043-074-240.um18.pools.vodafone-ip.de
Old Revision        : https://wiki.x2go.org/doku.php/doc:howto:tce?rev=1669986343
New Revision        : https://wiki.x2go.org/doku.php/doc:howto:tce
Date of New Revision: 2022/12/02 13:07
Edit Summary        : [Starting the Build] updated buildscript
User                : stefanbaur

There may be newer changes after this revision. If this
happens, a message will be shown on the top of the rev page.

@@ -269,9 +269,9 @@
  # Set Directory name
  LBX2GO_TCEDIR="./live-build-x2go-${LBX2GO_TIMESTAMP}-${LBX2GO_IMAGETYPE}-$(echo $LBX2GO_ARCH | awk '{print $2}')-${LBX2GO_CONFIG##*/}"
  
  if [ -z "$LBX2GO_ARCH" ] ||
-         ( echo "$LBX2GO_ARCH" | grep -q "arm" && [ -z "$LBX2GO_ARCH_MODEL" ] ) ||
+ 	( echo "$LBX2GO_ARCH" | grep -q "arm" && [ -z "$LBX2GO_ARCH_MODEL" ] ) || 
     [ -z "$LBX2GO_SPACE" ] ||
     [ -z "$LBX2GO_CONFIG" ] ||
     [ -z "$LBX2GO_DEFAULTS" ] ||
     [ -z "$LBX2GO_DEBVERSION" ] ||
@@ -339,40 +339,44 @@
      # This is part of our experimental ARM support
      # It adds required arm64-only packages when an arm64 build is requested
      if echo $LBX2GO_ARCH | grep -q "arm" ; then
  
-         # firmware for wifi
-         echo "firmware-brcm80211/buster-backports" >>config/package-lists/raspi.list.chroot
+ 	# bullseye and newer do not need this
+     	if [ "${LBX2GO_DEBVERSION}" = "buster" ]; then 
+ 		# firmware for wifi 
+ 		echo "firmware-brcm80211/buster-backports" >>config/package-lists/raspi.list.chroot
+ 	fi
  
-         if [ "$LBX2GO_ARCH_MODEL" = "Pi3" ] ; then
-                 # modules required for Raspberry Pi 3 LAN
-                 echo "crc16" >> config/includes.chroot/etc/initramfs-tools/modules
-                 echo "mii" >> config/includes.chroot/etc/initramfs-tools/modules
-                 echo "smsc95xx" >> config/includes.chroot/etc/initramfs-tools/modules
-                 echo "usbcore" >> config/includes.chroot/etc/initramfs-tools/modules
-                 echo "usbnet" >> config/includes.chroot/etc/initramfs-tools/modules
-                 echo "fake-hwclock" >>config/package-lists/raspi.list.chroot
-                 echo "usbutils" >>config/package-lists/raspi.list.chroot
+ 	if [ "$LBX2GO_ARCH_MODEL" = "Pi3" ] ; then
+ 		# modules required for Raspberry Pi 3 LAN
+ 		echo "crc16" >> config/includes.chroot/etc/initramfs-tools/modules
+ 		echo "mii" >> config/includes.chroot/etc/initramfs-tools/modules
+ 		echo "smsc95xx" >> config/includes.chroot/etc/initramfs-tools/modules
+ 		echo "usbcore" >> config/includes.chroot/etc/initramfs-tools/modules
+ 		echo "usbnet" >> config/includes.chroot/etc/initramfs-tools/modules
+ 		echo "fake-hwclock" >>config/package-lists/raspi.list.chroot
+ 		echo "usbutils" >>config/package-lists/raspi.list.chroot
  
-                 # firmware for basic raspi functions - required for boot on Pi3
-                 echo "raspi3-firmware/buster" >>config/package-lists/raspi.list.chroot
-                 # standard linux kernel - for Pi3
-                 echo "linux-image-arm64/buster" >>config/package-lists/raspi.list.chroot
+ 		# firmware for basic raspi functions - required for boot on Pi3
+ 		echo "raspi3-firmware/buster" >>config/package-lists/raspi.list.chroot
+ 		# standard linux kernel - for Pi3
+ 		echo "linux-image-arm64/buster" >>config/package-lists/raspi.list.chroot
  
-         elif [ "$LBX2GO_ARCH_MODEL" = "Pi4" ] ; then
-                 # firmware for basic raspi functions - required for boot on Pi4
-                 echo "raspi3-firmware/buster-backports" >>config/package-lists/raspi.list.chroot
-                 echo "raspi-firmware/buster-backports" >>config/package-lists/raspi.list.chroot
- 
-                 # newer linux kernel - required for pi4/pi400
-                 echo "linux-image-arm64/buster-backports" >>config/package-lists/raspi.list.chroot
- 
-         else
-                 echo "WARNING: ARM Platform selected, but unknown model: '$LBX2GO_ARCH_MODEL'. Assuming no additional packages/patches are required."
-         fi
+ 	elif [ "$LBX2GO_ARCH_MODEL" = "Pi4" ] ; then
+ 		# bullseye and newer do not need this
+ 		if [ "${LBX2GO_DEBVERSION}" = "buster" ]; then
+ 			# firmware for basic raspi functions - required for boot on Pi4
+ 			echo "raspi3-firmware/buster-backports" >>config/package-lists/raspi.list.chroot
+ 			echo "raspi-firmware/buster-backports" >>config/package-lists/raspi.list.chroot
  
+ 			# newer linux kernel - required for pi4/pi400
+ 			echo "linux-image-arm64/buster-backports" >>config/package-lists/raspi.list.chroot
+ 		fi
+ 	else
+ 		echo "WARNING: ARM Platform selected, but unknown model: '$LBX2GO_ARCH_MODEL'. Assuming no additional packages/patches are required."
+ 	fi
      fi
- 
+  
  
      # This is for minidesktop builds only
      if [ -f config/package-lists/firefox-langpacks.list.chroot ]; then
              if [ -n "$LBX2GO_LANG" ]; then
@@ -402,114 +406,114 @@
          # Here, we should have reached a point where it is safe to point all proxy variables
          # at the apt-cacher-ng proxy.  If you're seeing errors during your build that hint
          # at files not being downloaded, disable these three entries.
          export https_proxy=$LB_APT_HTTP_PROXY
-         export http_proxy=$LB_APT_HTTP_PROXY
+ 	export http_proxy=$LB_APT_HTTP_PROXY
          export ftp_proxy=$LB_APT_FTP_PROXY
      fi
  
      # This is part of our experimental ARM support
      # It is used when building for the ARM architecture (on Intel/AMD hardware and on ARM).
-     # It makes some necessary changes, and also tries to speed up squashfs creation when it
+     # It makes some necessary changes, and also tries to speed up squashfs creation when it 
      # detects a crossbuild environment.
      if echo $LBX2GO_ARCH | grep -q 'arm'; then
  
          # This command removes all references to fuseext, freerdp-nightly, and x2gothinclient from the
          # package list files.  Currently needed as there are no ARM packages for any of these.
          echo "WARNING: Removing all references to fuseext,freerdp-nightly and x2gothinclient from the build."
          sed -e 's/^.*fuseext.*$//g' -e 's/^.*freerdp-nightly.*$//g' -e 's/^.*x2gothinclient.*$//g' -i ./config/package-lists/*
  
-         # This command removes the X2Go repository from the directory where additional
-         # archives are stored.  Currently needed as the X2Go repository offers no arm64
+ 	# This command removes the X2Go repository from the directory where additional
+         # archives are stored.  Currently needed as the X2Go repository offers no arm64 
          # packages, but Debian Buster does - so that's what we're falling back to.
          echo "WARNING: Removing all references to the X2Go repository from the build."
          rm ./config/archives/*x2go*
  
-         # The following is a hack to reduce squashfs creation time in a crossbuild environment.
-         # We're replacing mksquashfs in the changeroot with a wrapper script that drops the
-         # original mksquashfs call into a file.
+ 	# The following is a hack to reduce squashfs creation time in a crossbuild environment.
+ 	# We're replacing mksquashfs in the changeroot with a wrapper script that drops the 
+ 	# original mksquashfs call into a file.
  
-         if (uname -r | grep -q 'i.86' || uname -r | grep -q 'amd64') ; then
-                 # We need to do this as a background task, waiting for the mksquashfs executable to
-                 # appear in the changeroot; as the changeroot will only be created later on, once
-                 # lb build is called.
+ 	if (uname -r | grep -q 'i.86' || uname -r | grep -q 'amd64') ; then
+ 		# We need to do this as a background task, waiting for the mksquashfs executable to
+ 		# appear in the changeroot; as the changeroot will only be created later on, once
+ 		# lb build is called.
+ 			
+ 		# The other background task waits until the command file has been created, then
+ 		# it applies some necessary patches to it, and starts the mksquashfs command natively
+ 		# on the build host, rather than in the changeroot environment.
+ 		# This is because in the changeroot, we'd be running the ARM mksquashfs in a qemu
+ 		# software emulation of the ARM architecture, while on the host, we can use all the
+ 		# native, raw CPU power and cores available to us.
  
-                 # The other background task waits until the command file has been created, then
-                 # it applies some necessary patches to it, and starts the mksquashfs command natively
-                 # on the build host, rather than in the changeroot environment.
-                 # This is because in the changeroot, we'd be running the ARM mksquashfs in a qemu
-                 # software emulation of the ARM architecture, while on the host, we can use all the
-                 # native, raw CPU power and cores available to us.
+ 		# To make sure we don't have any lingering processes in the background, we're passing
+ 		# our own PID along to the background tasks, and tell them to terminate if our PID
+ 		# disappears while they're still in their waiting/looping state.
  
-                 # To make sure we don't have any lingering processes in the background, we're passing
-                 # our own PID along to the background tasks, and tell them to terminate if our PID
-                 # disappears while they're still in their waiting/looping state.
+ 		MASTERPID=$$
  
-                 MASTERPID=$$
+ 		# Replace mksquashfs in chroot with script
+ 		# (script will undo this upon completion)
+ 		(
+ 		    # wait until the chroot has been populated or until our parent process dies
+ 		    while ! [ -x ./chroot/usr/bin/mksquashfs ]; do
+ 			ps $MASTERPID >/dev/null || exit 1
+ 			sleep 1
+ 		    done
+ 		    # make sure we don't overwrite the real executable if it has already been
+ 		    # moved out of the way
+ 		    if ! [ -x ./chroot/usr/bin/mksquashfs.real ]; then
+ 			cp ./chroot/usr/bin/mksquashfs ./chroot/usr/bin/mksquashfs.real
+ 		    fi
+ 		   echo '#!/bin/bash' >./chroot/usr/bin/mksquashfs
+ 		   # log the name we've been called with and all parameters into this file
+ 		   echo 'echo "$0 $@" >/tmp/filesystem.squashfs.temp' >>./chroot/usr/bin/mksquashfs
+ 		   # once the native mksquashfs is complete, we will remove this file
+ 		   echo 'while [ -f /tmp/filesystem.squashfs.temp ]; do' >>./chroot/usr/bin/mksquashfs
+ 		   echo '        sleep 1' >>./chroot/usr/bin/mksquashfs
+ 		   echo 'done' >>./chroot/usr/bin/mksquashfs
+ 		   # so let's wait until it has been removed before deleting ourselves ...
+ 		   echo 'rm /usr/bin/mksquashfs' >>./chroot/usr/bin/mksquashfs
+ 		   # ... and moving the real executable back into its place
+ 		   echo 'mv /usr/bin/mksquashfs.real /usr/bin/mksquashfs' >>./chroot/usr/bin/mksquashfs
+ 		   chmod 755 ./chroot/usr/bin/mksquashfs
+ 		) &
  
-                 # Replace mksquashfs in chroot with script
-                 # (script will undo this upon completion)
-                 (
-                     # wait until the chroot has been populated or until our parent process dies
-                     while ! [ -x ./chroot/usr/bin/mksquashfs ]; do
-                         ps $MASTERPID >/dev/null || exit 1
-                         sleep 1
-                     done
-                     # make sure we don't overwrite the real executable if it has already been
-                     # moved out of the way
-                     if ! [ -x ./chroot/usr/bin/mksquashfs.real ]; then
-                         cp ./chroot/usr/bin/mksquashfs ./chroot/usr/bin/mksquashfs.real
-                     fi
-                    echo '#!/bin/bash' >./chroot/usr/bin/mksquashfs
-                    # log the name we've been called with and all parameters into this file
-                    echo 'echo "$0 $@" >/tmp/filesystem.squashfs.temp' >>./chroot/usr/bin/mksquashfs
-                    # once the native mksquashfs is complete, we will remove this file
-                    echo 'while [ -f /tmp/filesystem.squashfs.temp ]; do' >>./chroot/usr/bin/mksquashfs
-                    echo '        sleep 1' >>./chroot/usr/bin/mksquashfs
-                    echo 'done' >>./chroot/usr/bin/mksquashfs
-                    # so let's wait until it has been removed before deleting ourselves ...
-                    echo 'rm /usr/bin/mksquashfs' >>./chroot/usr/bin/mksquashfs
-                    # ... and moving the real executable back into its place
-                    echo 'mv /usr/bin/mksquashfs.real /usr/bin/mksquashfs' >>./chroot/usr/bin/mksquashfs
-                    chmod 755 ./chroot/usr/bin/mksquashfs
-                 ) &
+ 		# start the native mksquashfs after patching the parameters
+ 		(
+ 		    # wait until the trigger file has been created or until our parent process dies
+ 		    while ! [ -f ./chroot/tmp/filesystem.squashfs.temp ]; do
+ 			ps $MASTERPID >/dev/null || exit 1
+ 			sleep 1
+ 		    done
+ 		    # using any of the available filters (x86, arm, armthumb) for the 
+ 		    # -Xbcj command results in an unusable squashfs on arm, so we drop the 
+ 		    # parameter completely if it's there.
+ 		    # also, all absolute paths (detected by beginning with " /") need to be
+ 		    # prefixed with "./chroot" so the mksquashfs outside the chroot knows where
+ 		    # to look for the corresponding paths/files.
+ 		    sed -e 's/ -Xbcj x86/ /g' -e 's# /# ./chroot/#g' -i \
+ 			./chroot/tmp/filesystem.squashfs.temp
+ 		    #needs switch from e.g. /bin/mksquashfs to $(which mksquashfs)
+ 		    sed -e "s#^.*mksquashfs#$(which mksquashfs)#g" -i \
+ 			./chroot/tmp/filesystem.squashfs.temp
+ 		    # now let's make this executable
+ 		    chmod 755 ./chroot/tmp/filesystem.squashfs.temp
  
-                 # start the native mksquashfs after patching the parameters
-                 (
-                     # wait until the trigger file has been created or until our parent process dies
-                     while ! [ -f ./chroot/tmp/filesystem.squashfs.temp ]; do
-                         ps $MASTERPID >/dev/null || exit 1
-                         sleep 1
-                     done
-                     # using any of the available filters (x86, arm, armthumb) for the
-                     # -Xbcj command results in an unusable squashfs on arm, so we drop the
-                     # parameter completely if it's there.
-                     # also, all absolute paths (detected by beginning with " /") need to be
-                     # prefixed with "./chroot" so the mksquashfs outside the chroot knows where
-                     # to look for the corresponding paths/files.
-                     sed -e 's/ -Xbcj x86/ /g' -e 's# /# ./chroot/#g' -i \
-                         ./chroot/tmp/filesystem.squashfs.temp
-                     #needs switch from e.g. /bin/mksquashfs to $(which mksquashfs)
-                     sed -e "s#^.*mksquashfs#$(which mksquashfs)#g" -i \
-                         ./chroot/tmp/filesystem.squashfs.temp
-                     # now let's make this executable
-                     chmod 755 ./chroot/tmp/filesystem.squashfs.temp
- 
-                     # we also need to add some more excludes because they shouldn't end up
-                     # in the squashfs - no idea why we don't need them while inside the chroot ...
-                     echo 'proc/*' >>./chroot/excludes
-                     echo 'sys/*' >>./chroot/excludes
-                     echo 'dev/pts/*' >>/.chroot.excludes
-                     # now let's execute the script and, if it terminates without an error,
-                     # we'll move the newly created squashfs into the chroot where the chrooted
-                     # mksquashfs command would have created it; if that worked as well, we'll
-                     # remove the script file so our dummy mksquashfs inside the chroot knows
-                     # it's time to terminate itself.
-                     ./chroot/tmp/filesystem.squashfs.temp && \
-                     mv ./filesystem.squashfs ./chroot/ && \
-                     rm ./chroot/tmp/filesystem.squashfs.temp
-                 ) &
-         fi
+ 		    # we also need to add some more excludes because they shouldn't end up
+ 		    # in the squashfs - no idea why we don't need them while inside the chroot ...
+ 		    echo 'proc/*' >>./chroot/excludes
+ 		    echo 'sys/*' >>./chroot/excludes
+ 		    echo 'dev/pts/*' >>/.chroot.excludes
+ 		    # now let's execute the script and, if it terminates without an error,
+ 		    # we'll move the newly created squashfs into the chroot where the chrooted
+ 		    # mksquashfs command would have created it; if that worked as well, we'll
+ 		    # remove the script file so our dummy mksquashfs inside the chroot knows
+ 		    # it's time to terminate itself.
+ 		    ./chroot/tmp/filesystem.squashfs.temp && \
+ 		    mv ./filesystem.squashfs ./chroot/ && \
+ 		    rm ./chroot/tmp/filesystem.squashfs.temp
+ 		) &
+ 	fi
      fi
  
      if lb build ; then
          echo -e "Build is done: '$LBX2GO_TCEDIR'"
@@ -523,44 +527,44 @@
          fi
  
          # This is part of our experimental ARM support
          if [ "$LBX2GO_IMAGETYPE" = "hdd" ] && echo $LBX2GO_ARCH | grep -q "arm" ; then
-                 # after the build, let's determine the name of our image file ...
-                 IMAGEFILE="./x2go-tce-live-image-$(echo $LBX2GO_ARCH | awk '{print $2}').img"
+ 		# after the build, let's determine the name of our image file ...
+ 		IMAGEFILE="./x2go-tce-live-image-$(echo $LBX2GO_ARCH | awk '{print $2}').img"
  
-                 # ... and change the partition type to reflect the file system actually in use for partition 1
-                 # ("b" is FAT32)
-                 sfdisk --part-type $IMAGEFILE 1 b
+ 		# ... and change the partition type to reflect the file system actually in use for partition 1
+ 		# ("b" is FAT32)
+ 		sfdisk --part-type $IMAGEFILE 1 b
  
-                 # next, we need to patch two things inside the image, so we need to set up a loop device for it.
-                 FREELOOP=$(losetup -f) # note that this could become a TOCTOU issue if more than 1 process tries to use loop devices
+ 		# next, we need to patch two things inside the image, so we need to set up a loop device for it.
+ 		FREELOOP=$(losetup -f) # note that this could become a TOCTOU issue if more than 1 process tries to use loop devices
  
-                 # as the image is a full disk image containing a partition, we need to jump to the position where the first partition starts
-                 losetup -o 1048576 $FREELOOP $IMAGEFILE
+ 		# as the image is a full disk image containing a partition, we need to jump to the position where the first partition starts
+ 		losetup -o 1048576 $FREELOOP $IMAGEFILE
  
-                 # now let's mount it
-                 mkdir -p ./tempmount
-                 mount $FREELOOP ./tempmount
+ 		# now let's mount it
+ 		mkdir -p ./tempmount
+ 		mount $FREELOOP ./tempmount
  
-                 # purge this dir, so we have enough space; we'll return to fill it later
-                 rm ./tempmount/live/*
+ 		# purge this dir, so we have enough space; we'll return to fill it later
+ 		rm ./tempmount/live/*
  
-                 # first, we copy the contents of the boot/firmware/ folder to the root directory, because that is where these files are needed
-                 # see if inplace helps against out of space errors
-                 rsync -aP --inplace ./chroot/boot/firmware/* ./tempmount
+ 		# first, we copy the contents of the boot/firmware/ folder to the root directory, because that is where these files are needed
+ 		# see if inplace helps against out of space errors
+ 		rsync -aP --inplace ./chroot/boot/firmware/* ./tempmount
  
-                 mkdir -p ./tempmount/live/
-                 rsync -aP ./binary/live/*.squashfs ./tempmount/live/
+ 		mkdir -p ./tempmount/live/
+ 		rsync -aP ./binary/live/*.squashfs ./tempmount/live/
  
-                 # next, we replace the "root=" parameter with the parameters needed for live-booting
-                 sed -e 's#root=/dev/mmcblk0p2 #'"$LBX2GO_BOOTAPPEND_LIVE"' #' -i ./tempmount/cmdline.txt
+ 		# next, we replace the "root=" parameter with the parameters needed for live-booting
+ 		sed -e 's#root=/dev/mmcblk0p2 #'"$LBX2GO_BOOTAPPEND_LIVE"' #' -i ./tempmount/cmdline.txt
  
-                 # here comes the cleanup part
-                 sync
-                 umount $FREELOOP
-                 losetup -d $FREELOOP
-                 rmdir ./tempmount
-         fi
+ 		# here comes the cleanup part
+ 		sync
+ 		umount $FREELOOP
+ 		losetup -d $FREELOOP
+ 		rmdir ./tempmount
+ 	fi
  
          if [ "$LBX2GO_IMAGETYPE" = "netboot" ] ; then
              if [ "$LBX2GO_NOSQUASHFS" = "true" ] ; then
                  (cd binary; echo live$'\n'live/filesystem.squashfs |cpio -o -H newc | gzip --fast) >./x2go-tce-filesystem.cpio.gz


-- 
This mail was generated by DokuWiki at
https://wiki.x2go.org/


More information about the x2go-commits mailing list