Bug#652946: busybox tar fails to copy filesystem.squashfs
Today I've gave another try and this is still happening with today's sid
build.
Following your hint that this is busybox related I've tried to find how
far back this issue was happening using a patched live-build to use
snapshots.debian.org. From the available daily installers this bug is
present in all installers in http://d-i.debian.org/daily-images/i386.
The only date I didn't confirm this bug was 20110509 because the
installer stopped in the keyboard step. So I can assume this bug is
present at least since 20110930.
I've tried to enable/disable config options in busybox udeb that were
enabled since 20110930 (the last build I could reproduce this).
Looking at
http://anonscm.debian.org/gitweb/?p=d-i/busybox.git;a=history;f=debian/config/pkg;hb=HEAD
I've tried to disable in busybox udeb CONFIG_MKTEMP and
CONFIG_SWITCH_ROOT, just because their names are suspicious. Didn't
work. The installer stopped in the keyboard step without any of them.
I can't check all the busybox udeb changes to trace this, it takes too
much time to do it without knowing why the changes were made.
Another factor is busybox upstream version change since squeeze. It went
from 1.17 to actual 1.20. So, this can also be an upstream problem or
something that changed upstream. I don't know busybox enough to trace
this in upstream versions in debian-installer.
But, while I was messing with busybox udeb, I've tried to enable
CONFIG_FEATURE_TAR_FROM and tried to exclude var/lock and var/run in
busybox tar (not the target's tar as in my previous patches) and all
worked ok.
In busybox:
@@ -152,7 +152,7 @@ CONFIG_GZIP_FAST=0
CONFIG_TAR=y
CONFIG_FEATURE_TAR_CREATE=y
# CONFIG_FEATURE_TAR_AUTODETECT is not set
-# CONFIG_FEATURE_TAR_FROM is not set
+CONFIG_FEATURE_TAR_FROM=y
# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
In live-installer:
@@ -42,9 +42,13 @@ install_live_system () {
COUNT=0
OLD_IFS=$IFS
+
+ echo 'var/lock' > /tmp/excludes
+ echo 'var/run' >> /tmp/excludes
+
mkdir -p /target
exec 4>&0
- tar c . | \
+ tar c . -X /tmp/excludes | \
(chdir /target && tar xv) | \
(
while read line; do
@@ -60,6 +64,8 @@ install_live_system () {
exec 0>&4
IFS=$OLD_IFS
+ rm /tmp/excludes
+
chdir /
eval ${SUPPORT}_teardown
done
It worked, without using target tar and without chroot.
busybox udeb must be changed or the tar command will fail during the
install.
Reply to: