[Bug 1978862] Re: deboostrap of debian guest shows recursive symlnks according to lsof ouput which interferes with unmounting chroot

Steven Anderson 1978862 at bugs.launchpad.net
Thu Jun 16 13:11:03 UTC 2022


** Summary changed:

- deboostrap of debian guest shows recursive symlnks according to lsof ouput which interfears with unmounting chroot
+ deboostrap of debian guest shows recursive symlnks according to lsof ouput which interferes with unmounting chroot

** Description changed:

  This paste expires on 2022-06-22 17:43:10.762812. Remove now. Repaste,
  or download this paste. Toggle word wrap. Pasted through web.
  
  NOTE: the temporary exit of this script at the line:
  
  ' echo "temporary exit to make sure nothing else is screwing it up" &&
  exit '
  
- 
  produces this error:
  
  command:  sudo lsof -x  +D /root/uml-834523023462431000
- 
  
  lsof: WARNING: can't stat(/root/uml-834523023462431000/root_fs/var/run/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher) symbolc link: Too many levels of symbolic links
  lsof: WARNING: can't stat(/root/uml-834523023462431000/root_fs/var/run/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/log) symbolc link: Too many levels of symbolic links
  
  
+ Which in turn causes chroots not to fully dismount, leaving proc and sys vulnerable to corruption on deleting the build directory.
+ 
  
  #!/bin/bash -x
  
  function aptUpdate_Inner {
  DEBIAN_FRONTEND=noninteractive \
-   apt-get update \
-   -o Dpkg::Options::=--force-confold \
-   -y --allow-downgrades --allow-remove-essential --allow-change-held-packages
+   apt-get update \
+   -o Dpkg::Options::=--force-confold \
+   -y --allow-downgrades --allow-remove-essential --allow-change-held-packages
  }
  
  aptUpdate_Inner
  
  #  https://askubuntu.com/questions/401454/how-to-get-sudo-access-to-
  shares-mounted-by-gigolo
  
- 
  logfile=dies_Inner-11.log
  [ -e ~/"$logfile" ] || rm -rf "$logfile"
  
  exec > >(tee -a "$logfile") 2> >(tee -a "$logfile" >&2)
  
- 
  basedir=uml-834523023462431000
  
  thePrefix=~/"$basedir"/root_fs_img
  
  function finish_Inner_Func {
-   pushd ~ 
-   lsof ~/"$basedir"/root_fs_img
-   echo ~/"$basedir"/root_fs
-   lsof ~/"$basedir"/root_fs
-   lsof ~/"$basedir"/buster_uml
-   read -r "Press any key to resume ..."
-   read -r "Press any key to resume ..."
-   read -r "Press any key to resume ..."
-   echo "Trying to clean up Chroots that are left hanging..."
-   umount ~/"$basedir"/root_fs_img/sys  || echo "can't unmount sys"
-   umount ~/"$basedir"/proc/sys/fs/binfmt_misc
-   umount ~/"$basedir"/root_fs_img/proc  || echo "can't unmount proc"
-   umount ~/"$basedir"/root_fs_img/dev/pts  || echo "can't unmount dev pts"
-   umount ~/"$basedir"/root_fs_img/dev  || echo "can't unmount dev"
-   umount --recursive /root/"$basedir"/root_fs_img
-   umount --recursive /root/"$basedir"/root_fs
-   umount --recursive /root/"$basedir"  
-   umount ~/"$basedir"/root_fs_img || echo "can't unmountroot_fs_img" || exit
-   pushd ~ || exit
-   umount ~/"$basedir"/root_fs
-   echo ~/"basedir"/root_fs_img
-   lsof ~/"$basedir"/root_fs_img
-   echo ~/"$basedir"/root_fs
-   lsof ~/"$basedir"/root_fs
+   pushd ~
+   lsof ~/"$basedir"/root_fs_img
+   echo ~/"$basedir"/root_fs
+   lsof ~/"$basedir"/root_fs
+   lsof ~/"$basedir"/buster_uml
+   read -r "Press any key to resume ..."
+   read -r "Press any key to resume ..."
+   read -r "Press any key to resume ..."
+   echo "Trying to clean up Chroots that are left hanging..."
+   umount ~/"$basedir"/root_fs_img/sys  || echo "can't unmount sys"
+   umount ~/"$basedir"/proc/sys/fs/binfmt_misc
+   umount ~/"$basedir"/root_fs_img/proc  || echo "can't unmount proc"
+   umount ~/"$basedir"/root_fs_img/dev/pts  || echo "can't unmount dev pts"
+   umount ~/"$basedir"/root_fs_img/dev  || echo "can't unmount dev"
+   umount --recursive /root/"$basedir"/root_fs_img
+   umount --recursive /root/"$basedir"/root_fs
+   umount --recursive /root/"$basedir"
+   umount ~/"$basedir"/root_fs_img || echo "can't unmountroot_fs_img" || exit
+   pushd ~ || exit
+   umount ~/"$basedir"/root_fs
+   echo ~/"basedir"/root_fs_img
+   lsof ~/"$basedir"/root_fs_img
+   echo ~/"$basedir"/root_fs
+   lsof ~/"$basedir"/root_fs
  }
  
  #trap finish_Inner_Func EXIT
  
  function old_kill_proc {
  
  thePrefix=~/"$basedir"
  whatsFound=0
  for root_file_Systems in /proc/*/root; do
-     theLinks=$(readlink "$root_file_Systems")
-     if [ "$theLinks" != "x" ]; then
-         if [ "${theLinks:0:${#the_Prefix}}" = "$thePrefix" ]; then
-             # this process is in the chroot...
-             thePID="$(basename "$(dirname "$root_file_Systems")")"
-             kill -9 "$thePID"
-             whatsFound=1
-         fi
-     fi
+     theLinks=$(readlink "$root_file_Systems")
+     if [ "$theLinks" != "x" ]; then
+         if [ "${theLinks:0:${#the_Prefix}}" = "$thePrefix" ]; then
+             # this process is in the chroot...
+             thePID="$(basename "$(dirname "$root_file_Systems")")"
+             kill -9 "$thePID"
+             whatsFound=1
+         fi
+     fi
  done
  
  if [ "$whatsFound" = "x1" ]; then
  
  while grep -q "$thePrefix" /proc/mounts; do
-     counters=$counters+1
-     if [ "$counters" -ge 20 ]; then
-         echo "failed to umount $thePrefix"
-         if [ -x /usr/bin/lsof ]; then
-             /usr/bin/lsof "$thePrefix"
-         fi
-     fi
-     grep "$thePrefix" /proc/mounts | \
-         cut -d\  -f2 | LANG=C sort -r | xargs -r -n 1 umount || sleep 1
+     counters=$counters+1
+     if [ "$counters" -ge 20 ]; then
+         echo "failed to umount $thePrefix"
+         if [ -x /usr/bin/lsof ]; then
+             /usr/bin/lsof "$thePrefix"
+         fi
+     fi
+     grep "$thePrefix" /proc/mounts | \
+         cut -d\  -f2 | LANG=C sort -r | xargs -r -n 1 umount || sleep 1
  done    # repeat the above, the script I'm cargo-culting this from just re-execs itself
- fi	
- 
- }
- 
- 
+ fi
+ 
+ }
  
  #  -o Dpkg::Options::=--force-confdef \
  
  function chroot_Function {
  success_chroot=0
  echo "made it to build root?"
- mount --rbind /dev ~/"$basedir"/root_fs/dev && echo "mounted dev" && success_chroot=1 
- mount devpts -t devpts --rbind /dev/pts ~/"$basedir"/root_fs/dev/pts && echo "mounted pts" && success_chroot=1  
+ mount --rbind /dev ~/"$basedir"/root_fs/dev && echo "mounted dev" && success_chroot=1
+ mount devpts -t devpts --rbind /dev/pts ~/"$basedir"/root_fs/dev/pts && echo "mounted pts" && success_chroot=1
  mount --rbind /proc -t proc ~/"$basedir"/root_fs/proc && echo "mounted proc" && success_chroot=1
  mount --rbind /sys ~/"$basedir"/root_fs/sys && echo "mounted sys" && success_chroot=1
  
  if ((! success_chroot==4)); then
- 	printf 'setting up bindings for the chrooot was unsuccessful\n' 1>&2
- 	exit 1
+  printf 'setting up bindings for the chrooot was unsuccessful\n' 1>&2
+  exit 1
  fi
  
  }
  
  if [[ -d ~/"$basedir" ]]
  then
-     printf '%s exists on your filesystem ... removing:\n ' "$basedir"  && finish_Inner_Func && mkdir ~/"$basedir"
+     printf '%s exists on your filesystem ... removing:\n ' "$basedir"  && finish_Inner_Func && mkdir ~/"$basedir"
  else
-     printf 'basedir: does not exist so I will create root %s\n ' "$basedir" && mkdir ~/"$basedir"
+     printf 'basedir: does not exist so I will create root %s\n ' "$basedir" && mkdir ~/"$basedir"
  
  fi
  
  #chown -R "$USER:$USER" buster-uml
  #chmod a+rwx buster-uml
  
- 
  fallocate -l 2G ~/"$basedir"/root_fs_img
  
  mkfs -t ext4 ~/"$basedir"/root_fs_img
  
- 
  mkdir ~/"$basedir"/root_fs
- mount -t ext4 ~/"$basedir"/root_fs_img ~/"$basedir"/root_fs 
+ mount -t ext4 ~/"$basedir"/root_fs_img ~/"$basedir"/root_fs
  mount -o remount, rw ~/"$basedir"/root_fs
  
  pushd ~/"$basedir"  || printf 'failed to change  the directory: /root/ %s \n' ~/"$basedir"
  /usr/sbin/debootstrap --arch amd64 --variant minbase buster ~/"$basedir"/root_fs/ http://deb.debian.org/debian
  
  echo "temporary exit to make sure nothing else is screwing it up" && exit
  #rsync --verbose --archive --one-file-system --xattrs --hard-links --numeric-ids --sparse --acls buster-uml/ root_fs/
  
- 
- echo '/dev/ubd0   ext4    discard,errors=remount-ro  0 ' >> ~/"$basedir"/root_fs/etc/fstab
+ echo '/dev/ubd0   ext4    discard,errors=remount-ro  0 ' >>
+ ~/"$basedir"/root_fs/etc/fstab
  
  #if ! chroot ~/"$basedir"/root_fs_img /usr/bin/passwd; then
  #	printf 'failed to successfully execute the chroot\n' 1>&2
  #	exit 1
  #fi
  
  #if ! source /etc/environment; then
  #	printf 'failed to source environment\n' 1>&2
  #	exit 1
  #fi
  
  chroot_Function
  
- if ! DEBIAN_FRONTEND=noninteractive apt update -y; then 
-         printf 'unable to install apt updates' 1>&2
-         exit 1
+ if ! DEBIAN_FRONTEND=noninteractive apt update -y; then
+         printf 'unable to install apt updates' 1>&2
+         exit 1
  fi
  
  if ! DEBIAN_FRONTEND=noninteractive apt install ifupdown -y -q; then
-         printf 'unable to install networking properly\n' 1>&2
- 	exit 1
+         printf 'unable to install networking properly\n' 1>&2
+  exit 1
  fi
  
  random_file="UML-$(shuf -i 2000000-7000000 -n 1))"
  random_hostname="$random_file"
  
  if ! echo "$random_hostname" > ~/"$basedir"/root_fs/etc/hostname; then
- 	printf 'failed to install random hostname\n' 1>&2
- 	exit 1
+  printf 'failed to install random hostname\n' 1>&2
+  exit 1
  fi
  
  ~/"$basedir"/root_fs/etc/network/interfaces <<'interfaces_EOF'
  
  # legacy UML network devices
  auto eth0
  iface eth0 inet dhcp
  
  # vector UML network devices
  auto vec0
  iface vec0 inet dhcp
  interfaces_EOF
  
  if ! mkdir -p ~/"$basedir"/root_fs/usr/lib/modules/; then
- 	printf 'failed to create lib modules directory\n' 1>&2
- 	exit 1
- fi
- 	
+  printf 'failed to create lib modules directory\n' 1>&2
+  exit 1
+ fi
+ 
  #if ! rsync -raHAXS /lib/modules/ ~/"$basedir"/root_fs/usr/lib/modules/; then
  #	printf 'rsync was not succesful files not propelry copied to the image file\n' 1>&2
  #	exit 1
  #fi
  
  echo 'End of SCRIPT_Inner...'
  
  finish_Inner_Func
- 
- 
- 
- produces this lsof output :
- Filename: None. Size: 8kb. View raw, copy, hex, or download this file.
- View source code, the removal or expiry stories, or read the about page.
- 
- This website does not claim ownership of, copyright on, and assumes no
- liability for provided content. Toggle color scheme.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to debootstrap in Ubuntu.
https://bugs.launchpad.net/bugs/1978862

Title:
  deboostrap of debian guest shows recursive symlnks according to lsof
  ouput which interferes with unmounting chroot

Status in debootstrap package in Ubuntu:
  New

Bug description:
  This paste expires on 2022-06-22 17:43:10.762812. Remove now. Repaste,
  or download this paste. Toggle word wrap. Pasted through web.

  NOTE: the temporary exit of this script at the line:

  ' echo "temporary exit to make sure nothing else is screwing it up" &&
  exit '

  produces this error:

  command:  sudo lsof -x  +D /root/uml-834523023462431000

  lsof: WARNING: can't stat(/root/uml-834523023462431000/root_fs/var/run/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher) symbolc link: Too many levels of symbolic links
  lsof: WARNING: can't stat(/root/uml-834523023462431000/root_fs/var/run/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/.speech-dispatcher/.speech-dispatcher/.cache/speech-dispatcher/log) symbolc link: Too many levels of symbolic links

  
  Which in turn causes chroots not to fully dismount, leaving proc and sys vulnerable to corruption on deleting the build directory.

  
  #!/bin/bash -x

  function aptUpdate_Inner {
  DEBIAN_FRONTEND=noninteractive \
    apt-get update \
    -o Dpkg::Options::=--force-confold \
    -y --allow-downgrades --allow-remove-essential --allow-change-held-packages
  }

  aptUpdate_Inner

  #  https://askubuntu.com/questions/401454/how-to-get-sudo-access-to-
  shares-mounted-by-gigolo

  logfile=dies_Inner-11.log
  [ -e ~/"$logfile" ] || rm -rf "$logfile"

  exec > >(tee -a "$logfile") 2> >(tee -a "$logfile" >&2)

  basedir=uml-834523023462431000

  thePrefix=~/"$basedir"/root_fs_img

  function finish_Inner_Func {
    pushd ~
    lsof ~/"$basedir"/root_fs_img
    echo ~/"$basedir"/root_fs
    lsof ~/"$basedir"/root_fs
    lsof ~/"$basedir"/buster_uml
    read -r "Press any key to resume ..."
    read -r "Press any key to resume ..."
    read -r "Press any key to resume ..."
    echo "Trying to clean up Chroots that are left hanging..."
    umount ~/"$basedir"/root_fs_img/sys  || echo "can't unmount sys"
    umount ~/"$basedir"/proc/sys/fs/binfmt_misc
    umount ~/"$basedir"/root_fs_img/proc  || echo "can't unmount proc"
    umount ~/"$basedir"/root_fs_img/dev/pts  || echo "can't unmount dev pts"
    umount ~/"$basedir"/root_fs_img/dev  || echo "can't unmount dev"
    umount --recursive /root/"$basedir"/root_fs_img
    umount --recursive /root/"$basedir"/root_fs
    umount --recursive /root/"$basedir"
    umount ~/"$basedir"/root_fs_img || echo "can't unmountroot_fs_img" || exit
    pushd ~ || exit
    umount ~/"$basedir"/root_fs
    echo ~/"basedir"/root_fs_img
    lsof ~/"$basedir"/root_fs_img
    echo ~/"$basedir"/root_fs
    lsof ~/"$basedir"/root_fs
  }

  #trap finish_Inner_Func EXIT

  function old_kill_proc {

  thePrefix=~/"$basedir"
  whatsFound=0
  for root_file_Systems in /proc/*/root; do
      theLinks=$(readlink "$root_file_Systems")
      if [ "$theLinks" != "x" ]; then
          if [ "${theLinks:0:${#the_Prefix}}" = "$thePrefix" ]; then
              # this process is in the chroot...
              thePID="$(basename "$(dirname "$root_file_Systems")")"
              kill -9 "$thePID"
              whatsFound=1
          fi
      fi
  done

  if [ "$whatsFound" = "x1" ]; then

  while grep -q "$thePrefix" /proc/mounts; do
      counters=$counters+1
      if [ "$counters" -ge 20 ]; then
          echo "failed to umount $thePrefix"
          if [ -x /usr/bin/lsof ]; then
              /usr/bin/lsof "$thePrefix"
          fi
      fi
      grep "$thePrefix" /proc/mounts | \
          cut -d\  -f2 | LANG=C sort -r | xargs -r -n 1 umount || sleep 1
  done    # repeat the above, the script I'm cargo-culting this from just re-execs itself
  fi

  }

  #  -o Dpkg::Options::=--force-confdef \

  function chroot_Function {
  success_chroot=0
  echo "made it to build root?"
  mount --rbind /dev ~/"$basedir"/root_fs/dev && echo "mounted dev" && success_chroot=1
  mount devpts -t devpts --rbind /dev/pts ~/"$basedir"/root_fs/dev/pts && echo "mounted pts" && success_chroot=1
  mount --rbind /proc -t proc ~/"$basedir"/root_fs/proc && echo "mounted proc" && success_chroot=1
  mount --rbind /sys ~/"$basedir"/root_fs/sys && echo "mounted sys" && success_chroot=1

  if ((! success_chroot==4)); then
   printf 'setting up bindings for the chrooot was unsuccessful\n' 1>&2
   exit 1
  fi

  }

  if [[ -d ~/"$basedir" ]]
  then
      printf '%s exists on your filesystem ... removing:\n ' "$basedir"  && finish_Inner_Func && mkdir ~/"$basedir"
  else
      printf 'basedir: does not exist so I will create root %s\n ' "$basedir" && mkdir ~/"$basedir"

  fi

  #chown -R "$USER:$USER" buster-uml
  #chmod a+rwx buster-uml

  fallocate -l 2G ~/"$basedir"/root_fs_img

  mkfs -t ext4 ~/"$basedir"/root_fs_img

  mkdir ~/"$basedir"/root_fs
  mount -t ext4 ~/"$basedir"/root_fs_img ~/"$basedir"/root_fs
  mount -o remount, rw ~/"$basedir"/root_fs

  pushd ~/"$basedir"  || printf 'failed to change  the directory: /root/ %s \n' ~/"$basedir"
  /usr/sbin/debootstrap --arch amd64 --variant minbase buster ~/"$basedir"/root_fs/ http://deb.debian.org/debian

  echo "temporary exit to make sure nothing else is screwing it up" && exit
  #rsync --verbose --archive --one-file-system --xattrs --hard-links --numeric-ids --sparse --acls buster-uml/ root_fs/

  echo '/dev/ubd0   ext4    discard,errors=remount-ro  0 ' >>
  ~/"$basedir"/root_fs/etc/fstab

  #if ! chroot ~/"$basedir"/root_fs_img /usr/bin/passwd; then
  #	printf 'failed to successfully execute the chroot\n' 1>&2
  #	exit 1
  #fi

  #if ! source /etc/environment; then
  #	printf 'failed to source environment\n' 1>&2
  #	exit 1
  #fi

  chroot_Function

  if ! DEBIAN_FRONTEND=noninteractive apt update -y; then
          printf 'unable to install apt updates' 1>&2
          exit 1
  fi

  if ! DEBIAN_FRONTEND=noninteractive apt install ifupdown -y -q; then
          printf 'unable to install networking properly\n' 1>&2
   exit 1
  fi

  random_file="UML-$(shuf -i 2000000-7000000 -n 1))"
  random_hostname="$random_file"

  if ! echo "$random_hostname" > ~/"$basedir"/root_fs/etc/hostname; then
   printf 'failed to install random hostname\n' 1>&2
   exit 1
  fi

  ~/"$basedir"/root_fs/etc/network/interfaces <<'interfaces_EOF'

  # legacy UML network devices
  auto eth0
  iface eth0 inet dhcp

  # vector UML network devices
  auto vec0
  iface vec0 inet dhcp
  interfaces_EOF

  if ! mkdir -p ~/"$basedir"/root_fs/usr/lib/modules/; then
   printf 'failed to create lib modules directory\n' 1>&2
   exit 1
  fi

  #if ! rsync -raHAXS /lib/modules/ ~/"$basedir"/root_fs/usr/lib/modules/; then
  #	printf 'rsync was not succesful files not propelry copied to the image file\n' 1>&2
  #	exit 1
  #fi

  echo 'End of SCRIPT_Inner...'

  finish_Inner_Func

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/debootstrap/+bug/1978862/+subscriptions




More information about the foundations-bugs mailing list