From: Tim W. <ps...@wo...> - 2006-03-30 19:24:53
|
(There is no point people cc me as any mail sent to this address that doesn't have the headers added by the mailing list is automatically moved to my "psion-spam" folder - but there's no harm if you want to carry on. If you do want to email me off the list then any sensible.username.at.woodall.me.uk will get to me eventually. (Just don't pick silly usernames like devnull@, google@) ) On Thu, 30 Mar 2006, Jeremy Wilkins wrote: > How did you do the debootstrap? When I run debootstrap from my desktop > I get chroot errors since it tries to run the arm binaries? I'm trying > the following > > debootstrap --arch arm sarge psion http://ftp.uk.debian.org/debian/ > The weekend before last I did all the downloading and extraction on my laptop. Then copied it all to the psion disk to do the installation. This time I just did the download on my laptop, then copied the sarge directory to the psion and run the rest of the debootstrap there. The first method requires a big hack to debootstrap. But I couldn't get the second stage install to work due to needing to run the install scripts from the packages. (patch at end of mail) The second method doesn't require any hacks to debootstrap but I did make the following changes in order to speed things up. (note that the extract() change is to make it easy to insert a return if the extract has been done on another machine.) diff -ur /usr/lib/debootstrap/functions ./functions --- /usr/lib/debootstrap/functions 2005-02-26 06:47:09.000000000 +0000 +++ ./functions 2006-03-28 00:39:26.000000000 +0100 @@ -1,3 +1,4 @@ +set -x ############################################################### smallutils @@ -162,6 +163,8 @@ } get () { + return 0 + # args: from dest [md5sum size] [alt {md5sum size type}] filename="$(echo "$2" | sed 's,^.*/,,')" if echo "$filename" | grep -q '\.deb$'; then @@ -386,6 +389,7 @@ } download_release () { + return download_release_indices local m1=${MIRRORS%% *} @@ -497,7 +501,8 @@ ################################################################ extraction -extract () { ( +extract () { + ( cd "$TARGET" local p=0 for pkg in $(debfor "$@"); do Tim. Big patch to enable the extract to be done on a different architecture (I think this is everything but there are some changes to try and get stage2 working in some other files that I think aren't required here) --- /usr/lib/debootstrap/functions 2005-02-26 06:47:09.000000000 +0000 +++ functions 2006-03-18 15:53:03.000000000 +0000 @@ -1,4 +1,6 @@ +REQUIRED_PROGS="mount dpkg /sbin/ldconfig dpkg-split dpkg-deb tar rm" + ############################################################### smallutils smallyes() { @@ -509,10 +511,48 @@ done ); } +bin_to_target () { + if [ ! -d "${TARGET}/i386" ]; then + mkdir "${TARGET}/i386" + mkdir "${TARGET}/i386/lib" + mkdir "${TARGET}/HST" + cp -p /lib/ld-linux.so.2 "${TARGET}/HST/ld-linux.so.2" + fi + + local src_bin=$( which "$1" ) + if [ "$src_bin" = "" ]; then + echo "Can't find $1" + return 1 + fi + + if [ -x "${TARGET}/i386/$1" ]; then + return 0 + fi + + if [ "$1" != "${1%/*}" ]; then + mkdir -p "${TARGET}/i386/${1%/*}" + fi + +#This is very crude and should be fixed properly + sed "s/\/lib\/ld-linux.so.2/\/HST\/ld-linux.so.2/" <"$src_bin" >"${TARGET}/i386/$1" + chmod +x "${TARGET}/i386/$1" + + local i + + for i in `ldd "$src_bin" | grep "=>" | awk '{print $3}' | sort -u`; do + cp -p $i "${TARGET}/i386/lib/${i##*/}" + done + + return 0 +} + in_target_nofail () { - if ! eval chroot "$TARGET" "$@" 2>/dev/null; then + bin_to_target "$@" + + if ! eval PATH=/i386:$PATH LD_LIBRARY_PATH=/i386/lib chroot "$TARGET" "/i386/$@" 2>/dev/null; then true fi + return 0 } @@ -521,7 +561,8 @@ local msg="$2" local arg="$3" shift; shift; shift - if ! eval chroot "$TARGET" "$@"; then + bin_to_target "$@" + if ! eval PATH=/i386:$PATH LD_LIBRARY_PATH=/i386/lib chroot "$TARGET" "/i386/$@"; then warning "$code" "$msg" "$arg" return 1 fi @@ -529,6 +570,11 @@ } in_target () { + local i + for i in ${REQUIRED_PROGS}; do + bin_to_target $i + done + in_target_failmsg IN_TARGET_FAIL "Failure trying to run: %s" "chroot $TARGET $*" "$@" } -- God said, "div D = rho, div B = 0, curl E = - @B/@t, curl H = J + @D/@t," and there was light. http://tjw.hn.org/ http://www.locofungus.btinternet.co.uk/ |