From b6948fd3506869969ca90250267a68c09364aeea Mon Sep 17 00:00:00 2001 From: Kron4ek Date: Fri, 7 Apr 2023 15:50:36 +0500 Subject: [PATCH] By default use mksquashfs/mkdwarfs provided by the project No reason not use them, this will allow people to build Conty even on systems that do not have mksquashfs or mkdwarfs. For those who prefer to use their system-wide programs, there is USE_SYS_UTILS variable. --- create-conty.sh | 63 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/create-conty.sh b/create-conty.sh index d8502a0..bb831a6 100755 --- a/create-conty.sh +++ b/create-conty.sh @@ -4,17 +4,23 @@ script_dir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" +# Enable this variable to use the system-wide mksquashfs/mkdwarfs instead +# of those provided by the Conty project +USE_SYS_UTILS=0 + # Supported compression algorithms: lz4, zstd, gzip, xz, lzo # These are the algorithms supported by the integrated squashfuse # However, your squashfs-tools (mksquashfs) may not support some of them -squashfs_compressor="lz4" -squashfs_compressor_arguments=(-b 256K -comp "${squashfs_compressor}" -Xhc) +squashfs_compressor="zstd" +squashfs_compressor_arguments=(-b 1M -comp ${squashfs_compressor} -Xcompression-level 19) -# Uncomment these two lines if you want better compression and your mksquashfs supports zstd -#squashfs_compressor="zstd" -#squashfs_compressor_arguments=(-b 1M -comp ${squashfs_compressor} -Xcompression-level 19) +# Uncomment these variables if your mksquashfs does not support zstd or +# if you want faster compression/decompression (at the cost of compression ratio) +#squashfs_compressor="lz4" +#squashfs_compressor_arguments=(-b 256K -comp "${squashfs_compressor}" -Xhc) -# Use dwarfs instead of squashfs +# Use DwarFS instead of SquashFS +# If you enable this, don't forget to change utils_size in conty-start.sh dwarfs="false" dwarfs_compressor_arguments=(-l7 -C zstd:level=19 --metadata-compression null \ -S 22 -B 2 --order nilsimsa:255:60000:60000 \ @@ -28,12 +34,27 @@ image_path="${script_dir}"/image bootstrap="${script_dir}"/root.x86_64 +launch_wrapper () { + if [ "${USE_SYS_UTILS}" != 0 ]; then + if ! command -v "${1}" 1>/dev/null; then + echo "Please install $(echo "${1}" | tail -c +3) and run the script again" + exit 1 + fi + + "$@" + else + "${script_dir}"/utils/ld-linux-x86-64.so.2 --library-path "${script_dir}"/utils "${script_dir}"/utils/"$@" + fi +} + cd "${script_dir}" || exit 1 if [ "${dwarfs}" = "true" ]; then utils="utils_dwarfs.tar.gz" + compressor_command=(mkdwarfs -i "${bootstrap}" -o "${image_path}" "${dwarfs_compressor_arguments[@]}") else utils="utils.tar.gz" + compressor_command=(mksquashfs "${bootstrap}" "${image_path}" "${squashfs_compressor_arguments[@]}") fi if [ ! -f "${utils}" ] || [ "$(wc -c < "${utils}")" -lt 1000 ]; then @@ -46,8 +67,20 @@ if [ ! -f conty-start.sh ]; then exit 1 fi +rm -rf utils +tar -zxf "${utils}" + +if [ $? != 0 ]; then + echo "Something is wrong with ${utils}" + exit 1 +fi + +if [ "${USE_SYS_UTILS}" != 0 ]; then + rm -rf utils +fi + # Check if selected compression algorithm is supported by mksquashfs -if [ "${dwarfs}" != "true" ] && command -v grep 1>/dev/null; then +if [ "${USE_SYS_UTILS}" != 0 ] && [ "${dwarfs}" != "true" ] && command -v grep 1>/dev/null; then # mksquashfs writes its output to stderr instead of stdout mksquashfs &>mksquashfs_out.txt @@ -76,21 +109,7 @@ if [ ! -f "${image_path}" ] || [ "${use_existing_image}" != "true" ]; then fi rm -f "${image_path}" - if [ "${dwarfs}" = "true" ]; then - if ! command -v mkdwarfs 1>/dev/null; then - echo "Please install dwarfs and run the script again" - exit 1 - fi - - mkdwarfs -i "${bootstrap}" -o "${image_path}" "${dwarfs_compressor_arguments[@]}" - else - if ! command -v mksquashfs 1>/dev/null; then - echo "Please install squashfs-tools and run the script again" - exit 1 - fi - - mksquashfs "${bootstrap}" "${image_path}" "${squashfs_compressor_arguments[@]}" - fi + launch_wrapper "${compressor_command[@]}" fi # Combine the files into a single executable using cat