jails Ubuntu 24.04 Noble Numbat Jail debootstrap systemd errors

I just tried creating a Ubuntu 24.04 Noble Numbat Jail with debootstrap
to install Davinci Resolve 19 in the jail

noble isnt one of debootstrap scripts so i copy an existing script and modified it to install noble
i have done this before with lunar and mantic without any issues

these are the steps im using that worked with lunar and mantic


however im getting these errors running debootstrap

Code:
W: Applying FreeBSD-specific workaround...
W: Failure trying to run: chroot "/usr/local/jails/linux/ubuntu" dpkg --configure systemd
W: See /usr/local/jails/linux/ubuntu/debootstrap/debootstrap.log for details (possibly the package package is at fault)
W: Failure trying to run: chroot "/usr/local/jails/linux/ubuntu" dpkg --force-overwrite --force-confold --skip-same-version --install
W: See /usr/local/jails/linux/ubuntu/debootstrap/debootstrap.log for details (possibly the package package is at fault)

copy Ubuntu noble script to debootstrap scripts

Code:
sudo cp noble /usr/local/share/debootstrap/scripts

debootstrap noble

Code:
sudo debootstrap --arch=amd64 --no-check-gpg noble /usr/local/jails/linux/ubuntu http://archive.ubuntu.com/ubuntu/

debootstrap gets to unpacking and then throws the errors above

my first thoughts are 2 possibilities

1 - debootstrap has an issue with Ubuntu 24.04 noble

2 - Ubuntu 24.04 noble now has systemd so deeply embeded that it wont work in a Freebsd Jail which doesnt have systemd

if the problem with debootstrap i guess that might be fixable
however if the problem is with Ubuntu and systemd then there isnt anything you can do

im guessing the systemd issue may also affect debian sid

the reason im using Ubuntu is because i need to manually install the Nvidia driver
so that it matches the same version as on the Freebsd host which is needed to run Davinci Resolve

also i use a script called makeresolvedeb
which creates a deb installer from the Davinci Resolve installer so you can easily install it on Ubuntu

also you cant use the Noveau driver because it doesnt work with Cuda
so trying to use something like artix linux wont work because it only works with the noveau driver

i had issues with ubuntu jammy which didnt work at all in a jail
because jammy sets file permissions that stopped things working in the jail

the file permission error doesnt happen with lunar and mantic

attached debootstrap.log as debootstrap.txt
because the forum doesnt allow you to attach files with a .log extension

also attached the noble debootstrap script as a zip file

the noble debootstrap script can be used with either a jail or the linuxulator
if anyone wants to test the noble debootstrap script to see if they can replicate the errors im getting

i tried creating a ubuntu noble jail twice using the script and get the same error
i havent tested the noble debootstrap script with the linuxulator

Ubuntu noble debootstrap script

Code:
case $ARCH in
  amd64|i386)
    case $SUITE in
      gutsy|hardy|intrepid|jaunty|karmic|lucid|lunar|mantic|maverick|natty|noble|oneiric|precise|quantal|raring|saucy|utopic|vivid|wily|yakkety|zesty)
    default_mirror http://old-releases.ubuntu.com/ubuntu
      ;;
      *)
    default_mirror http://archive.ubuntu.com/ubuntu
    ;;
    esac
    ;;
  sparc)
    case $SUITE in
      gutsy)
    default_mirror http://old-releases.ubuntu.com/ubuntu
    ;;
      *)
    default_mirror http://ports.ubuntu.com/ubuntu-ports
    ;;
    esac
    ;;
  *)
    default_mirror http://ports.ubuntu.com/ubuntu-ports
    ;;
esac
mirror_style release
download_style apt
finddebs_style from-indices
variants - buildd fakechroot minbase
keyring /usr/local/share/keyrings/ubuntu-archive-keyring.gpg

if doing_variant fakechroot; then
    test "$FAKECHROOT" = "true" || error 1 FAKECHROOTREQ "This variant requires fakechroot environment to be started"
fi

case $ARCH in
    alpha|ia64) LIBC="libc6.1" ;;
    kfreebsd-*) LIBC="libc0.1" ;;
    hurd-*)     LIBC="libc0.3" ;;
    *)          LIBC="libc6" ;;
esac

case $SUITE in
    gutsy|hardy|intrepid|jaunty|karmic|lucid|lunar|mantic|maverick|natty|noble|oneiric|precise|quantal|raring|saucy|trusty|utopic|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan|focal|groovy|hirsute) ;;
    *)
        # impish+ will use zstd compression, check if supported
        dpkg_zstd="$(dpkg-deb --help 2>/dev/null | grep ' zstd,' || :)"
        if [ -z "$EXTRACTOR_OVERRIDE" ] && [ -z "$dpkg_zstd" ]; then
            info CHOSENEXTRACTOR "%s uses zstd compression, setting --extractor=ar option" "$SUITE"
            export EXTRACTOR_OVERRIDE=ar
        fi
    ;;
esac

work_out_debs () {
    required="$(get_debs Priority: required)"

    if doing_variant - || doing_variant fakechroot; then
        #required="$required $(get_debs Priority: important)"
        #  ^^ should be getting debconf here somehow maybe
        base="$(get_debs Priority: important)"
    elif doing_variant buildd; then
        base="apt build-essential"
    elif doing_variant minbase; then
        base="apt"
    fi

    if doing_variant fakechroot; then
        # ldd.fake needs binutils
        required="$required binutils"
    fi

    case $MIRRORS in
        https://*)
        case "$CODENAME" in
            gutsy|hardy|intrepid|jaunty|karmic|lucid|lunar|mantic|maverick|natty|noble|oneiric|precise|quantal|raring|saucy|trusty|utopic|vivid|wily|xenial|yakkety|zesty)
            base="$base apt-transport-https ca-certificates"
            ;;
            *)
            base="$base ca-certificates"
            ;;
        esac
        ;;
    esac

    # do not install usrmerge in fresh bootstraps
    # but do print it for germinate to accept it into minimal
    if [ "$WHAT_TO_DO" = "finddebs printdebs kill_target" ]; then
        case "$CODENAME" in
            # "merged-usr" blacklist for past releases
            gutsy|hardy|intrepid|jaunty|karmic|lucid|lunar|mantic|maverick|natty|noble|oneiric|precise|quantal|raring|saucy|trusty|utopic|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic|disco|eoan|focal|groovy)
            ;;
            hirsute)
                # keep hirsute buildd chroots split-usr to allow for escape hatch
                if ! doing_variant buildd; then
                    if [ -z "$MERGED_USR" ] || [ "$MERGED_USR" = "yes" ]; then
                        base="$base usrmerge"
                    fi
                fi
                ;;
            *)
                # all future series post hirsute use merged-usr in buildd chroots too
                if [ -z "$MERGED_USR" ] || [ "$MERGED_USR" = "yes" ]; then
                    base="$base usrmerge"
                fi
                ;;
        esac
    fi
}

first_stage_install () {
    case "$CODENAME" in
        # "merged-usr" blacklist for past releases
        gutsy|hardy|intrepid|jaunty|karmic|lucid|lunar|mantic|maverick|natty|noble|oneiric|precise|quantal|raring|saucy|trusty|utopic|vivid|wily|xenial|yakkety|zesty|artful|bionic|cosmic)
            [ -z "$MERGED_USR" ] && MERGED_USR="no"
            ;;
        disco|eoan|focal|groovy)
            # see https://bugs.debian.org/838388
            EXTRACT_DEB_TAR_OPTIONS="$EXTRACT_DEB_TAR_OPTIONS -k"
            ;;
        hirsute)
            # keep hirsute buildd chroots split-usr to allow for escape hatch
            if [ -z "$MERGED_USR" ]; then
                if doing_variant buildd; then
                    MERGED_USR="no"
                else
                    MERGED_USR="yes"
                fi
            fi
            # see https://bugs.debian.org/838388
            EXTRACT_DEB_TAR_OPTIONS="$EXTRACT_DEB_TAR_OPTIONS -k"
            ;;
        *)
            # all future series post hirsute use merged-usr in buildd chroots too
            [ -z "$MERGED_USR" ] && MERGED_USR="yes"
            # see https://bugs.debian.org/838388
            EXTRACT_DEB_TAR_OPTIONS="$EXTRACT_DEB_TAR_OPTIONS -k"
            ;;
    esac

    setup_merged_usr
    extract $required

    mkdir -p "$TARGET/var/lib/dpkg"
    : >"$TARGET/var/lib/dpkg/status"
    : >"$TARGET/var/lib/dpkg/available"

    setup_etc
    if [ ! -e "$TARGET/etc/fstab" ]; then
        echo '# UNCONFIGURED FSTAB FOR BASE SYSTEM' > "$TARGET/etc/fstab"
        chown 0:0 "$TARGET/etc/fstab"; chmod 644 "$TARGET/etc/fstab"
    fi

    setup_devices

        if doing_variant fakechroot || [ "$CONTAINER" = "docker" ]; then
        setup_proc_symlink
    fi
}

second_stage_install () {
    in_target /bin/true

    setup_dynamic_devices

    x_feign_install () {
        local pkg="$1"
        local deb="$(debfor $pkg)"
        local ver="$(in_target dpkg-deb -f "$deb" Version)"

        mkdir -p "$TARGET/var/lib/dpkg/info"

        echo \
"Package: $pkg
Version: $ver
Maintainer: unknown
Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"

        touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
    }

    x_feign_install dpkg

    x_core_install () {
        smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
    }

    p () {
        baseprog="$(($baseprog + ${1:-1}))"
    }

    if ! doing_variant fakechroot; then
        setup_proc
        in_target /sbin/ldconfig
    fi

    DEBIAN_FRONTEND=noninteractive
    DEBCONF_NONINTERACTIVE_SEEN=true
    export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN

    baseprog=0
    bases=7

    p; progress $baseprog $bases INSTCORE "Installing core packages" #1
    info INSTCORE "Installing core packages..."

    p; progress $baseprog $bases INSTCORE "Installing core packages" #2
    ln -sf mawk "$TARGET/usr/bin/awk"
    x_core_install base-passwd
    x_core_install base-files
    p; progress $baseprog $bases INSTCORE "Installing core packages" #3
    x_core_install dpkg

    if [ ! -e "$TARGET/etc/localtime" ]; then
        ln -sf /usr/share/zoneinfo/UTC "$TARGET/etc/localtime"
    fi

    if doing_variant fakechroot; then
        install_fakechroot_tools
    fi

    p; progress $baseprog $bases INSTCORE "Installing core packages" #4
    x_core_install $LIBC

    p; progress $baseprog $bases INSTCORE "Installing core packages" #5
    x_core_install perl-base

    p; progress $baseprog $bases INSTCORE "Installing core packages" #6
    rm "$TARGET/usr/bin/awk"
    x_core_install mawk

    p; progress $baseprog $bases INSTCORE "Installing core packages" #7
    if doing_variant -; then
        x_core_install debconf
    fi

    baseprog=0
    bases=$(set -- $required; echo $#)

    info UNPACKREQ "Unpacking required packages..."

    exec 7>&1

    smallyes '' |
        (repeatn 5 in_target_failmsg UNPACK_REQ_FAIL_FIVE "Failure while unpacking required packages.  This will be attempted up to five times." "" \
        dpkg --status-fd 8 --force-depends --unpack $(debfor $required) 8>&1 1>&7 || echo EXITCODE $?) |
        dpkg_progress $baseprog $bases UNPACKREQ "Unpacking required packages" UNPACKING

    info CONFREQ "Configuring required packages..."

    if doing_variant fakechroot && [ -e "$TARGET/var/lib/dpkg/info/initscripts.postinst" ]
    then
        # fix initscripts postinst (no mounting possible, and wrong if condition)
        sed -i '/dpkg.*--compare-versions/ s/\<lt\>/lt-nl/' "$TARGET/var/lib/dpkg/info/initscripts.postinst"
    fi

    echo \
"#!/bin/sh
exit 101" > "$TARGET/usr/sbin/policy-rc.d"
    chmod 755 "$TARGET/usr/sbin/policy-rc.d"

    mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
    echo \
"#!/bin/sh
echo
echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
    chmod 755 "$TARGET/sbin/start-stop-daemon"

    if [ -x "$TARGET/sbin/initctl" ]; then
      mv "$TARGET/sbin/initctl" "$TARGET/sbin/initctl.REAL"
      echo \
"#!/bin/sh
if [ \"\$1\" = version ]; then exec /sbin/initctl.REAL \"\$@\"; fi
echo
echo \"Warning: Fake initctl called, doing nothing\"" > "$TARGET/sbin/initctl"
      chmod 755 "$TARGET/sbin/initctl"
    fi

    setup_dselect_method apt

    smallyes '' |
        (in_target_failmsg CONF_REQ_FAIL "Failure while configuring required packages." "" \
        dpkg --status-fd 8 --configure --pending --force-configure-any --force-depends 8>&1 1>&7 || echo EXITCODE $?) |
        dpkg_progress $baseprog $bases CONFREQ "Configuring required packages" CONFIGURING

    baseprog=0
    bases="$(set -- $base; echo $#)"

    info UNPACKBASE "Unpacking the base system..."

    setup_available $required $base
    done_predeps=
    while predep=$(get_next_predep); do
        # We have to resolve dependencies of pre-dependencies manually because
        # dpkg --predep-package doesn't handle this.
        predep=$(without "$(without "$(resolve_deps $predep)" "$required")" "$done_predeps")
        # XXX: progress is tricky due to how dpkg_progress works
        # -- cjwatson 2009-07-29
        # This step sometimes fails due to some missing functionality in Linuxulator.  Just ignore it.
        set +e
        p; smallyes '' |
        in_target dpkg --force-overwrite --force-confold --skip-same-version --install $(debfor $predep)
        rc=$?
        base=$(without "$base" "$predep")
        done_predeps="$done_predeps $predep"

        if [ $rc != 0 ]; then
            warning FREEBSD_00 "Applying FreeBSD-specific workaround..."
            # ... for "Failed to mount /etc/machine-id: Bad address" with Focal.
            in_target truncate -s0 /var/lib/dpkg/info/systemd.postinst
            in_target dpkg --configure systemd
        fi
        set -e
    done

    if [ -n "$base" ]; then
        smallyes '' |
            (repeatn 5 in_target_failmsg INST_BASE_FAIL_FIVE "Failure while installing base packages.  This will be re-attempted up to five times." "" \
            dpkg --status-fd 8 --force-overwrite --force-confold --skip-same-version --unpack $(debfor $base) 8>&1 1>&7 || echo EXITCODE $?) |
            dpkg_progress $baseprog $bases UNPACKBASE "Unpacking base system" UNPACKING

        info CONFBASE "Configuring the base system..."

        # This step sometimes fails due to some missing functionality in Linuxulator.  Just ignore it.
        set +e
        smallyes '' |
            (repeatn 5 in_target_failmsg CONF_BASE_FAIL_FIVE "Failure while configuring base packages.  This will be re-attempted up to five times." "" \
            dpkg --status-fd 8 --force-confold --skip-same-version --configure -a 8>&1 1>&7 || echo EXITCODE $?) |
            dpkg_progress $baseprog $bases CONFBASE "Configuring base system" CONFIGURING
        set -e
    fi

    if [ -x "$TARGET/sbin/initctl.REAL" ]; then
        mv "$TARGET/sbin/initctl.REAL" "$TARGET/sbin/initctl"
    fi
    mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon"
    rm -f "$TARGET/usr/sbin/policy-rc.d"

    echo \
"# Workaround for Linuxulator missing mremap(2) support; without it,
# apt(8) fails like this:
# E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Start.
APT::Cache-Start 251658240;" >> "$TARGET/etc/apt/apt.conf.d/00freebsd"

    progress $bases $bases CONFBASE "Configuring base system"
    info BASESUCCESS "Base system installed successfully."
}
 

Attachments

I wonder what happens when you run debootstrap for Ubuntu on a Debian (with systemd) base.
do you mean testing debootstrap noble on a debian install
to see if it works on linux

debootstrap can be used to install ubuntu or debian in a jail

its also possible to install arch linux in a jail

using archlinux-keyring and archlinux-pacman
however the arch packages failed to build in the last build so the package isnt in quarterly at the moment

( but i never got it working due to arch package gpg errors )

so arch doesnt look like it would be useable

to install a linux distro in a jail without debootstrap
you need a mini root fs that can be extracted into the jail

artix linux cant be used be it only supports the noveau driver
so cuda wont work with artix and resolve needs cuda

so at present if you want to enable Cuda in a jail
you have to use Ubuntu lunar or Mantic

but then the issue is will Lunar and Mantic be up to date enough to run Resolve
and if you upgrade them will you get hit by the same issue that Noble Numbat has

or try using debian sid because bookworm may not be up to date enough

however the problem using debian sid is that you will get loads of update which may break things
and you really want a stable release so your not constantly trying to fix problems after an update
 
any updates on this front for FreeBSD? I am running on the latest version of FreeBSD -14.2. Currently attempting to run a minimal Ubuntu distro jammy 22.04 LTS via deboostrap
 
hi mate

you can install Ubuntu without using debootstrap
by using the ubuntu-base tar.gz

the debootsptrap scripts dont include the latest versions of Ubuntu

heres a guide on using the ubuntu base tar.gz instead of debootstrap
the guide is to install Davinci Resolve in an Ubuntu jail ( you can skip the bit about installing resolve )


and a video tutorial


there is an issue that crops up sometime with ubuntu when running apt


heres the fix

Code:
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_silent
sudo mkdir /var/lib/dpkg/info
sudo apt-get update
sudo apt-get -f install
sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_silent
sudo rm -rf /var/lib/dpkg/info
sudo mv /var/lib/dpkg/info_silent /var/lib/dpkg/info
sudo apt-get update
sudo apt-get upgrade
 
Back
Top