openwrt / openwrt

This repository is a mirror of https://git.openwrt.org/openwrt/openwrt.git It is for reference only and is not active for check-ins. We will continue to accept Pull Requests here. They will be merged via staging trees then into openwrt.git.
Other
20.32k stars 10.51k forks source link

FS#2068 - tar not working properly with OverlayFS #8423

Closed openwrt-bot closed 3 years ago

openwrt-bot commented 5 years ago

Giraffe1966:

I've configured extroot as recommended on the wiki, and I'm trying to create a Debian LXC container on my Netgear R8000. I've installed lxc-create, tar, getopt, and gnupg-utils, and tried installing the container with 'lxc-create -t download -n debian'. But it failed with the following errors: Downloading the image index Downloading the rootfs Downloading the metadata The image cache is now ready Unpacking the rootfs tar: ./usr/share/vim/addons/plugin: Directory renamed before its status could be extracted tar: ./usr/share/vim/addons: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Canada: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Mexico: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/US: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Etc: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Indian: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Chile: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Pacific: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Antarctica: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Asia: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Atlantic: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Brazil: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Canada: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Europe: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/SystemV: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Mexico: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/US: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Indian: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Australia: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/America/Indiana: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/America/North_Dakota: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/America/Kentucky: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/America/Argentina: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/America: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Africa: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Etc: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix/Arctic: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/posix: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Brazil: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/America/Argentina: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/America/Kentucky: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/America/Indiana: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Chile: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/SystemV: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Antarctica: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Etc: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Indian: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/US: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Canada: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/right/Mexico: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Antarctica: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Chile: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/SystemV: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/Brazil: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/America/Indiana: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/America/Kentucky: Directory renamed before its status could be extracted tar: ./usr/share/zoneinfo/America/Argentina: Directory renamed before its status could be extracted tar: ./usr/share/man/man1: Directory renamed before its status could be extracted tar: ./usr/share/man/fr/man1: Directory renamed before its status could be extracted tar: ./usr/share/man/fr: Directory renamed before its status could be extracted tar: ./usr/share/man/man8: Directory renamed before its status could be extracted tar: ./usr/share/man/pl/man1: Directory renamed before its status could be extracted tar: ./usr/share/man/pl: Directory renamed before its status could be extracted tar: ./usr/share/man/it/man1: Directory renamed before its status could be extracted tar: ./usr/share/man/it: Directory renamed before its status could be extracted tar: ./usr/share/man/man7: Directory renamed before its status could be extracted tar: ./usr/share/man/ja/man1: Directory renamed before its status could be extracted tar: ./usr/share/man/ja: Directory renamed before its status could be extracted tar: ./usr/share/man/ru/man1: Directory renamed before its status could be extracted tar: ./usr/share/man/ru: Directory renamed before its status could be extracted tar: ./usr/share/man: Directory renamed before its status could be extracted tar: ./usr/share/locale: Directory renamed before its status could be extracted tar: ./usr/lib/apt/planners: Directory renamed before its status could be extracted tar: ./usr/lib/apt: Directory renamed before its status could be extracted tar: ./usr/lib/systemd/user/graphical-session-pre.target.wants: Directory renamed before its status could be extracted tar: ./usr/lib/systemd/user: Directory renamed before its status could be extracted tar: ./usr/lib/systemd: Directory renamed before its status could be extracted tar: ./usr/lib: Directory renamed before its status could be extracted tar: ./usr/sbin: Directory renamed before its status could be extracted tar: ./bin: Directory renamed before its status could be extracted tar: ./lib/systemd/system/getty.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/rescue.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/timers.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/sockets.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/multi-user.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/sysinit.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/local-fs.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system/graphical.target.wants: Directory renamed before its status could be extracted tar: ./lib/systemd/system: Directory renamed before its status could be extracted tar: ./lib/systemd: Directory renamed before its status could be extracted tar: ./lib: Directory renamed before its status could be extracted tar: ./sbin: Directory renamed before its status could be extracted tar: Exiting with failure status due to previous errors lxc-create: debian: lxccontainer.c: create_run_template: 1473 container creation template for debian failed lxc-create: debian: tools/lxc_create.c: main: 329 Error creating container debian I'm pretty sure this is fixed in a more recent kernel (output of uname -a: Linux OpenWrt 4.14.63 #0 SMP Thu Aug 16 07:51:15 2018 armv7l GNU/Linux), and I believe it has to do with constant indoe numbers (https://github.com/amir73il/overlayfs/wiki/Overlayfs-non-standard-behavior#constant-inode-numbers). This issue appears to be related: https://github.com/docker/hub-feedback/issues/727.

openwrt-bot commented 5 years ago

Mikei386:

Exactly the same problem with my WRT1200AC Downloading the image index Downloading the rootfs Downloading the metadata The image cache is now ready Unpacking the rootfs tar: ./usr/lib/python2.7/dist-packages: Directory renamed before its status could be extracted and so on...

uname -a: Linux OpenWrt 4.14.98 #0 SMP Wed Feb 13 09:37:36 2019 armv7l GNU/Linux

openwrt-bot commented 4 years ago

andydontcare:

Had this same issue and found a workaround passing the paths prefixed with /overlay/upper/ to lxc-download template despite the usage saying not to pass those args.

lxc-create -nfocal -t /usr/share/lxc/templates/lxc-download -- path=/overlay/upper/srv/lxc/focal rootfs=/overlay/upper/srv/lxc/focal/rootfs --dist=ubuntu --release=focal --arch=armhf