From e5226ac41f345f301169bab65d44e8b786cf77ce Mon Sep 17 00:00:00 2001 From: Alan Date: Sun, 22 Aug 2010 19:34:43 -0700 Subject: [PATCH] Easy Chroot 0.3.1 --- .../easy-chroot/debian/changelog | 15 -- .../.py2deb_build_folder/easy-chroot/debian/compat | 1 - .../easy-chroot/debian/control | 57 ------ .../easy-chroot/debian/copyright | 35 ---- .../.py2deb_build_folder/easy-chroot/debian/dirs | 3 - .../.py2deb_build_folder/easy-chroot/debian/optify | 1 - .../easy-chroot/debian/postinst | 15 -- .../.py2deb_build_folder/easy-chroot/debian/postrm | 9 - .../.py2deb_build_folder/easy-chroot/debian/rules | 110 ----------- .../easy-chroot/src/etc/sudoers.d/chroot.sudoers | 2 - .../easy-chroot/src/sbin/closechroot | 87 --------- .../easy-chroot/src/sbin/cpu-ondemand | 6 - .../easy-chroot/src/sbin/cpu-perform | 8 - .../easy-chroot/src/sbin/qchroot | 163 ---------------- .../easy-chroot/src/sbin/qmount | 205 -------------------- .../easy-chroot/src/sbin/qumount | 70 ------- .../easy-chroot/src/sbin/synchroot | 42 ---- .../easy-chroot/src/usr/bin/gxmessage | Bin 20956 -> 0 bytes .../easy-chroot/src/usr/bin/hostwin | Bin 15774 -> 0 bytes .../easy-chroot/src/usr/bin/quserchroot | 38 ---- 20 files changed, 867 deletions(-) delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules delete mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/gxmessage delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/hostwin delete mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/quserchroot diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog deleted file mode 100644 index b7ab80a..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog +++ /dev/null @@ -1,15 +0,0 @@ -easy-chroot (0.3.1-1fremantle1) stable; urgency=low - - 0.2.1: First version for Fremantle, fifth package. Trying a new version of py2deb. - 0.2.2: Added thp's patches, some other fixes. - 0.2.3: First version in Extras! - 0.2.4: Fixed some small bugs and added a bugtracker field. - 0.2.5: Unmount /dev/shm in the closechroot script - 0.2.6: Include Debian's fuser as a workaround for broken busybox - 0.2.7: Remove the closechroot .desktop file, move to Easy Debian - 0.2.8: Support dmsetup + kernel-module-dmloop packages, if installed - 0.2.9: Use the 'cd /proc' workaround for broken fuser bug, add 'nodiratime,nobh' to mount options - 0.3.0: Require dmlosetup to be present before attempting dm-loop. - 0.3.1: Strip trailing slash on mountpoint in all scripts, fixed problems in multi-loop handling. - - -- Alan Bruce (qole) Sun, 22 Aug 2010 15:11:03 +0000 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat deleted file mode 100644 index 7ed6ff8..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control deleted file mode 100644 index 6bbdb6b..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control +++ /dev/null @@ -1,57 +0,0 @@ -Source: easy-chroot -Section: user/system -Priority: extra -Maintainer: Alan Bruce (qole) -Build-Depends: debhelper (>= 5) -Standards-Version: 3.7.2 - -Package: easy-chroot -Architecture: armel -Depends: libblkid1 -XSBC-Maemo-Display-Name: Easy Chroot -Description: Scripts to mount and chroot into images/partitions, Fremantle version. - --- - This package provides the infrastructure for Easy Debian, - but it can be used for other purposes, like mounting a CD-ROM image - or setting up an on-device SDK for app development. - Install dmsetup and kernel-module-dmloop to use the (possibly faster) dm-loop. - --- - (If that didn't make any sense to you, don't install this) -XSBC-Bugtracker: https://garage.maemo.org/tracker/?atid=3577&group_id=953&func=browse -XB-Maemo-Icon-26: - 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 \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright deleted file mode 100644 index 34b6076..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright +++ /dev/null @@ -1,35 +0,0 @@ -This package was py2debianized(0.5.3) by Alan Bruce (qole) on -Sun, 22 Aug 2010 15:11:03 +0000. - -It was downloaded from - -Upstream Author: Alan Bruce (qole) - -Copyright: 2010 by Alan Bruce (qole) - -License: - - - This package is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL'. - - -The Debian packaging is (C) 2010, Alan Bruce (qole) and -is licensed under the GPL, see above. - -# Please also look if there are files or directories which have a -# different copyright/license attached and list them here. diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs deleted file mode 100644 index 3fa2141..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs +++ /dev/null @@ -1,3 +0,0 @@ -etc/sudoers.d/ -sbin/ -usr/bin/ \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify deleted file mode 100644 index c86c3f3..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify +++ /dev/null @@ -1 +0,0 @@ -none \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst deleted file mode 100644 index ed8534e..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -set -e - -if [ ! -e "/sbin/ezchroot" ] ; then - ln -s /sbin/qchroot /sbin/ezchroot -fi - -# yet another kludge; detect an upgrade (forced OFF) -UPGRD='no' - -# this takes a while; that's why it's at the end... -update-sudoers - -exit 0 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm deleted file mode 100644 index 21b6405..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -if [ ! -e "/sbin/ezchroot" ] ; then - rm /sbin/ezchroot -fi - -update-sudoers - -exit 0 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules deleted file mode 100755 index 6f269cd..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/make -f -# -*- makefile -*- -# Sample debian/rules that uses debhelper. -# This file was originally written by Joey Hess and Craig Small. -# As a special exception, when this file is copied by dh-make into a -# dh-make output file, you may use that output file without restriction. -# This special exception was added by Craig Small in version 0.37 of dh-make. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -CFLAGS = -Wall -g - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif - -configure: configure-stamp -configure-stamp: - dh_testdir - # Add here commands to configure the package. - - touch configure-stamp - -build: build-stamp - -build-stamp: configure-stamp - dh_testdir - touch build-stamp - -clean: - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - # ====================================================== - #$(MAKE) DESTDIR="$(CURDIR)/debian/easy-chroot" install - mkdir -p "$(CURDIR)/debian/easy-chroot" - -# mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/closechroot" "$(CURDIR)/debian/easy-chroot/sbin/closechroot" - mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/cpu-ondemand" "$(CURDIR)/debian/easy-chroot/sbin/cpu-ondemand" - mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/cpu-perform" "$(CURDIR)/debian/easy-chroot/sbin/cpu-perform" - mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/qchroot" "$(CURDIR)/debian/easy-chroot/sbin/qchroot" - mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/qmount" "$(CURDIR)/debian/easy-chroot/sbin/qmount" - mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/qumount" "$(CURDIR)/debian/easy-chroot/sbin/qumount" - mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" - cp -a "src/sbin/synchroot" "$(CURDIR)/debian/easy-chroot/sbin/synchroot" - mkdir -p "$(CURDIR)/debian/easy-chroot/usr/bin/" - cp -a "src/usr/bin/gxmessage" "$(CURDIR)/debian/easy-chroot/usr/bin/gxmessage" - mkdir -p "$(CURDIR)/debian/easy-chroot/usr/bin/" - cp -a "src/usr/bin/hostwin" "$(CURDIR)/debian/easy-chroot/usr/bin/hostwin" - mkdir -p "$(CURDIR)/debian/easy-chroot/usr/bin/" - cp -a "src/usr/bin/quserchroot" "$(CURDIR)/debian/easy-chroot/usr/bin/quserchroot" - mkdir -p "$(CURDIR)/debian/easy-chroot/etc/sudoers.d/" - cp -a "src/etc/sudoers.d/chroot.sudoers" "$(CURDIR)/debian/easy-chroot/etc/sudoers.d/chroot.sudoers" - - # ====================================================== - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installchangelogs debian/changelog - dh_installdocs - dh_installexamples -# dh_install -# dh_installmenu -# dh_installdebconf -# dh_installlogrotate -# dh_installemacsen -# dh_installpam -# dh_installmime -# dh_python -# dh_installinit -# dh_installcron -# dh_installinfo - dh_installman - dh_link - dh_strip - dh_compress - dh_fixperms -# dh_perl -# dh_makeshlibs - dh_installdeb -# dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers deleted file mode 100644 index defeda1..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers +++ /dev/null @@ -1,2 +0,0 @@ -Defaults env_keep+=GTK_MODULES -user ALL = NOPASSWD: ALL \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot deleted file mode 100755 index cdb2c89..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/sh -#Close a mounted chroot; this means killing all the chroot apps and unmounting the bound directories. - -# By Alan M Bruce (qole) -# -# GPL licensed; keep code free! - -if [ "`whoami`" != "root" ] ; then - echo "please run me as root!" - exit 9 -fi - -#Try to get the chroot location from the first parameter -CHROOT=$1 - -#Try to get the chroot location from the config file... -if [ "x$CHROOT" = x ] ; then - #Pull in the config, if possible... - [ -f /home/user/.chroot ] && . /home/user/.chroot - #Still not set? Set to default - [ "x$CHROOT" != x ] || CHROOT=/debian -fi - -# Strip off a trailing slash -LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}` -if [ "$LASTCHAR" = "/" ] ; then - echo "..stripping trailing slash..." >/dev/stderr - CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))` -fi - -#Abort if chroot not mounted. -if [ ! -f "$CHROOT/var/lock/qmount-complete" ] ; then - echo "Nothing to do; chroot not mounted!" - exit 1 -fi - -echo "Closing the chroot..." - -# Fremantle's fuser command is broken. -# We can either use Debian's one instead (as gfuser), -# or we can use the workaround: "cd /proc" first. - -echo "...closing chroot apps..." - -TEST1=`mount | grep " $CHROOT "` -if [ "x$TEST1" != "x" ] ; then - if [ -f "/bin/gfuser" ] ; then - gfuser -m "$CHROOT" -k - else - cd /proc - fuser -m "$CHROOT" -k - fi -else - if [ -f "/bin/gfuser" ] ; then - gfuser "$CHROOT" -k - else - cd /proc - fuser "$CHROOT" -k - fi -fi - -echo "..Unmounting bound dirs..." - -#Any external mounts - -umount -fl $CHROOT/home/user/MyDocs -umount -fl $CHROOT/dev/pts -umount -fl $CHROOT/dev/shm - -MNTD=`cat /proc/mounts | grep " $CHROOT/" | awk '{print $2}'` -for MDRV in $MNTD ; do - echo "unmounting $MDRV" - umount -l "$MDRV" -done - -if [ -f "$CHROOT/var/lock/qmount-complete" ] ; then - rm "$CHROOT/var/lock/qmount-complete" -fi - -if [ -f "$CHROOT/var/lock/chroot-complete" ] ; then - rm "$CHROOT/var/lock/chroot-complete" -fi - -/sbin/qumount $CHROOT - -echo "chroot closed." -exit 0 \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand deleted file mode 100755 index 3c394fa..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -# set cpu governor to on-demand mode -# (based on lcuk's liqbase script) - -echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform deleted file mode 100755 index a3ad3b3..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -# set cpu governor to on-demand mode -# (based on lcuk's liqbase script) - -echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor -sleep 1 -echo '' >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot deleted file mode 100755 index 8955351..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot +++ /dev/null @@ -1,163 +0,0 @@ -#!/bin/sh -# Sets up (if necessary) and chroots into a different environment. -# Expects root privileges, does not drop them. - -# By Alan M Bruce (qole) with help from Benson Mitchell and Thomas Perl -# -# GPL licensed; keep code free! - -# This script should have a wrapper to set up extra variables, -# OR, it can be run as a command: -# ezchroot - -if [ "`whoami`" != "root" ] ; then - echo "please run me as root!" - exit 9 -fi - -IMGFILE=$1 -shift 1 - -CHROOT=$1 -shift 1 - -# echo ezchroot $IMGFILE $CHROOT $* - -# Strip off a trailing slash -LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}` -if [ "$LASTCHAR" = "/" ] ; then - echo "..stripping trailing slash..." >/dev/stderr - CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))` -fi - -qmount $IMGFILE $CHROOT -MOUNTSUCCESS=$? - -if [ "$MOUNTSUCCESS" != "1" ] && [ "$MOUNTSUCCESS" != "0" ] ; then - echo Cancelling chroot... - exit $MOUNTSUCCESS -fi - -if [ "$MOUNTSUCCESS" = "0" ] ; then - #Make the tablet's devices available to the chroot - echo . >/dev/stderr - mount -o bind /dev "$CHROOT/dev" - mount -o bind /proc "$CHROOT/proc" - - #Gentoo wiki says this will make X work - echo .. >/dev/stderr - mount -t devpts none "$CHROOT/dev/pts" - mount -o bind /tmp "$CHROOT/tmp" - - #Open e-mail attachments, etc - mount -o bind /var/tmp "$CHROOT/var/tmp" - - #ArchLinux suggestions - mount -o bind /dev/shm "$CHROOT/dev/shm" - mount -o bind /sys "$CHROOT/sys" - - #Any external devices - echo ... >/dev/stderr - MNTD=`cat /proc/mounts | grep ' /media/' | awk '{print $2}'` - - for MDRV in $MNTD ; do - if [ ! -d "$CHROOT$MDRV" ] ; then - mkdir -p "$CHROOT$MDRV" - fi - mount -o bind "$MDRV" "$CHROOT$MDRV" - done - - #Mount the user's home dir - echo .... >/dev/stderr - #mount -o bind /home/user "$CHROOT/home/user" - - # Do it the Fremantle way. - mount /dev/mmcblk0p2 "$CHROOT/home" - mount /dev/mmcblk0p1 "$CHROOT/home/user/MyDocs" - - #Make DBus work - mount -o bind /var/run/dbus "$CHROOT/var/run/dbus" - mount -o bind /var/lib/dbus "$CHROOT/var/lib/dbus" - - #Make pulseaudio work - mount -o bind /var/run/pulse "$CHROOT/var/run/pulse" - - #Speed hacks: lower the priority of processes - #renice 0 `pidof mmcqd` - #renice 20 `pidof trackerd` - - # Sync the chroot if requested... - if [ -f /home/user/.synchroot ] ; then - /sbin/synchroot $CHROOT - rm /home/user/.synchroot - fi - - # Place any commands you wish to run the first time you chroot - # into the /var/run/onfirstchroot-ext.rc file (inside your rootfs) - - if [ -f "$CHROOT/var/run/onfirstchroot-ext.rc" ] ; then - . "$CHROOT/var/run/onfirstchroot-ext.rc" - fi - - # Place any commands you wish to run from inside the chroot - # the first time you chroot into the /var/run/onfirstchroot.rc - # file (inside your rootfs) - - if [ -f "$CHROOT/var/run/onfirstchroot.rc" ] ; then - chroot $CHROOT "/var/run/onfirstchroot.rc" - fi - -fi - -# Place any commands you wish to run every time you chroot -# into the /var/run/onchroot-ext.rc file (inside your rootfs) - -if [ -f "$CHROOT/var/run/onchroot-ext.rc" ] ; then - . "$CHROOT/var/run/onchroot-ext.rc" -fi - -# Place any commands you wish to run from inside the chroot -# every time you chroot into the /var/run/onchroot.rc -# file (inside your rootfs) - -if [ -f "$CHROOT/var/run/onchroot.rc" ] ; then - chroot $CHROOT "/var/run/onchroot.rc" -fi - -#All set up. Set flag for next time... - -if [ ! -d "$CHROOT/var/lock" ] ; then - mkdir -p "$CHROOT/var/lock" -fi - -trap "rm -f $CHROOT/var/lock/chroot-complete ; echo -ne '\033]0;osso_xterm\007' ; exit" INT TERM EXIT -echo $IMGFILE $@ > "$CHROOT/var/lock/chroot-complete" - -#Custom prompt and xterm title. Reduces confusion. -CHRLABEL=`blkid -s LABEL $IMGFILE | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` - -#If the file is mounted on loop, use that label. -if [ "x$CHRLABEL" = "x" ] ; then - - # first find the loop - LOOPNO=`mount | grep loop | grep $CHROOT | awk '{print $1}'` - - if [ "x$LOOPNO" != "x" ] ; then - CHRLABEL=`blkid -s LABEL $LOOPNO | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` - fi -fi - -if [ "x$CHRLABEL" = "x" ] ; then - CHRLABEL=chroot -fi - -echo -ne "\033]0;$CHRLABEL\007" >/dev/stderr -export PS1="[\u@$CHRLABEL: \w]" - -#Actually chroot -echo "Everything set up, running chroot..." >/dev/stderr -chroot $CHROOT "$@" - -#All done, reset. -exit 0 - diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount deleted file mode 100755 index 12c808f..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount +++ /dev/null @@ -1,205 +0,0 @@ -#!/bin/sh -# Sets up (if necessary) and chroots into a different environment. -# Expects root privileges, does not drop them. - -# By Alan M Bruce (qole) with help from Benson Mitchell and Thomas Perl -# -# GPL licensed; keep code free! - -# Hacked roughly to work with Fremantle. Help always appreciated. I can be found on talk.maemo.org. - -# This script should have a wrapper to set up extra variables, -# OR, it can be run as a command: -# qmount - -if [ "`whoami`" != "root" ] ; then - echo "please run me as root!" - exit 9 -fi - -IMGFILE=$1 -MNTPT=$2 - -# echo qmount $IMGFILE $MNTPT - -#Ensure that we have an image or partition to mount - -if [ ! -f "$IMGFILE" ] && [ ! -b "$IMGFILE" ] ; then - MSG1=`printf "ERROR!\n\nThe image specified ($IMGFILE) does not exist or is neither\na regular nor a block special file.\n\nFirst parameter must be an image file or partition"` - if [ ! -f "/usr/bin/gxmessage" ] ; then - echo $MSG1 >/dev/stderr - else - gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" - fi - exit 9 -fi - -#Ensure that we have a chroot directory to mount the image or partition on - -if [ "x$MNTPT" = "x" ] || [ "x`echo $MNTPT | grep '/'`" = "x" ] ; then - MSG1=`printf "ERROR!\n\nNo chroot directory specified!\n\nSecond parameter must be chroot dir (eg. /debian)"` - if [ ! -f "/usr/bin/gxmessage" ] ; then - echo $MSG1 >/dev/stderr - else - gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" - fi - exit 9 -fi - -# Strip off a trailing slash -LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` -if [ "$LASTCHAR" = "/" ] ; then - echo "..stripping trailing slash..." >/dev/stderr - MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` -fi - -#Check to see if already mounted -if [ -f "$MNTPT/var/lock/qmount-complete" ] ; then - echo "$MNTPT has a qmount already!" >/dev/stderr - MTDIMGFILE=`cat $MNTPT/var/lock/qmount-complete` - if [ "$IMGFILE" != "$MTDIMGFILE" ] ; then - echo $MTDIMGFILE already mounted here! >/dev/stderr - MSG1=`printf "Mount problem!\n\n$MTDIMGFILE already mounted on $MNTPT"` - if [ ! -f "/usr/bin/gxmessage" ] ; then - echo $MSG1 >/dev/stderr - else - gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" - fi - exit 9 - # Instead of failing, we could unmount instead... - # echo Unmounting... - # closechroot $MNTPT - else - echo $MTDIMGFILE already mounted on $MNTPT... >/dev/stderr - exit 1 - fi -fi - -if [ ! -f "$MNTPT/var/lock/qmount-complete" ] ; then - echo "Mounting..." - if [ "$IMGFILE" != "none" ] ; then - - if [ -f "$IMGFILE" ] ; then - LOOP=loop, - echo "using image file: $IMGFILE" >/dev/stderr - if [ "x$IMGFS" = x ] ; then - IMGFS=`echo $IMGFILE | awk -F '.' '{print $NF}'` - echo "fs type is $IMGFS" >/dev/stderr - fi - else - LOOP= - echo "using device: $IMGFILE" >/dev/stderr - PARTINFO="`blkid -s TYPE $IMGFILE`" - if [ "x$IMGFS" = x ] ; then - IMGFS=`echo $PARTINFO | awk '{print $NF}' | awk -F '=' '{print $NF}' | sed s/\"//g` - fi - fi - - # missing in Fremantle... - # modprobe mbcache - - if [ "$IMGFS" != "ext3" ] && [ "$IMGFS" != "ext2" ] ; then - echo "Don't know $IMGFS: Using ext2 file system" >/dev/stderr - IMGFS=ext2 - fi - - echo "Using $IMGFS file system" - if [ "$IMGFS" = ext3 ] ; then - #insmod "$MODULEPATH/jbd.ko" 2>/dev/null - modprobe jbd - fi - - #insmod "$MODULEPATH/$IMGFS.ko" 2>/dev/null - modprobe $IMGFS - - if [ -d "/lib/modules/`uname -r`" ] ; then - MODULEPATH="/lib/modules/`uname -r`" - else - MODULEPATH=/lib/modules/2.6.28-omap1 - fi - - if [ "$LOOP" = "loop," ] ; then - - # Check for dm-loop kernel module and dmlosetup command. - # If found, then use dm-loop instead of regular loop. - - if [ -f "$MODULEPATH/dm-loop.ko" ] && [ -f "/sbin/dmlosetup" ]; then - - # use dm-loop - - echo "mounting $IMGFILE on the turbo-loop ;)" - #insmod $MODULEPATH/dm-mod.ko 2>/dev/null - modprobe dm-mod - #insmod $MODULEPATH/dm-loop.ko 2>/dev/null - modprobe dm-loop - - NEXTLOOP=`ls -l /dev/dm-* 2>/dev/null | tail -1 | awk '{print $NF}' | awk -F '-' '{print $NF+1}'` - if [ "x$NEXTLOOP" = "x" ] ; then - NEXTLOOP=0 - fi - - DMLOMSG=`dmlosetup loop$NEXTLOOP "$IMGFILE" 2>&1` - MNTMSG=`mount -t "$IMGFS" /dev/dm-$NEXTLOOP "$MNTPT" -o noatime,nobh,nodiratime 2>&1` - - else - - # use "regular" loop - - echo "mounting $IMGFILE on loop" >/dev/stderr - NEXTLOOP=`mount | grep loop | tail -1 | awk '{print $1}' | awk -F "/" '{print $3}' | cut -c 5-6 | awk '{print $0+1}'` - if [ "x$NEXTLOOP" = "x" ] ; then - NEXTLOOP=0 - fi - - DMLOMSG="" - MNTMSG=`mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o loop,noatime,nobh,nodiratime 2>&1` - - fi - - if [ "$?" != 0 ] ; then - MSG1=`printf "Mount failure!\n\n$IMGFILE failed to mount on loop$NEXTLOOP\n\n$DMLOMSG\n$MNTMSG"` - if [ ! -f "/usr/bin/gxmessage" ] ; then - echo $MSG1 >/dev/stderr - else - gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" - fi - exit 2 - fi - echo ...$IMGFILE mounted on loop$NEXTLOOP >/dev/stderr - else - echo "mounting device: $IMGFILE" >/dev/stderr - if ! mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o ${LOOP}noatime,nobh,nodiratime ; then - MSG1=`printf "Mount failure!\n\n$IMGFILE failed to mount on $MNTPT"` - if [ ! -f "/usr/bin/gxmessage" ] ; then - echo $MSG1 >/dev/stderr - else - gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" - fi - exit 3 - fi - - fi - - else - echo "Not mounting any filesystem, chroot is $MNTPT" >/dev/stderr - fi - -#All set up. Set flag for next time... - - if [ ! -d "$MNTPT/var/lock" ] ; then - mkdir -p "$MNTPT/var/lock" - fi - - # Place any commands you wish to run the first time you mount - # into the $MNTPT/var/run/onmount.rc file - - if [ -f "$MNTPT/var/run/onmount.rc" ] ; then - . "$MNTPT/var/run/onmount.rc" - fi - - echo $IMGFILE > "$MNTPT/var/lock/qmount-complete" - exit 0 - -fi - -exit 1 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount deleted file mode 100755 index db98974..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -#Unmount a mounted MNTPT. -# By Alan M Bruce (qole) -# -# GPL licensed; keep code free! - -if [ "`whoami`" != "root" ] ; then - echo "please run me as root!" - exit 9 -fi - -#Try to get the MNTPT location from the first parameter -MNTPT=$1 - -#Try to get the MNTPT location from the config file... -if [ "x$MNTPT" = x ] ; then - #Pull in the config, if possible... - [ -f /home/user/.chroot ] && . /home/user/.chroot - MNTPT=$CHROOT - #Still not set? FAIL - if [ "x$MNTPT" != x ] ; then - echo "No mountpoint to unmount!" >/dev/stderr - exit 8 - fi -fi - -# Strip off a trailing slash -LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` -if [ "$LASTCHAR" = "/" ] ; then - echo "..stripping trailing slash..." >/dev/stderr - MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` -fi - -TEST1=`mount | grep " $MNTPT "` - -if [ "x$TEST1" != "x" ] ; then - echo "..Unmounting $MNTPT..." >/dev/stderr - umount -ld "$MNTPT" - - TEST2=`mount | grep " $MNTPT "` - - if [ "x$TEST2" != "x" ] ; then - echo "...$MNTPT didn't unmount!" >/dev/stderr - exit 8 - fi -else - echo "$MNTPT is not mounted; Check for trailing slashes." >/dev/stderr -fi - -if [ ! "x`grep device-mapper /proc/misc`" = "x" ] ; then - LOOPDEV=`echo $TEST1 | cut -f1 -d' '` - while [ "x`echo $LOOPDEV | grep dm-`" != "x" ] ; do - LOOPNO=`echo $LOOPDEV | awk -F '-' '{print $NF}'` - echo "..Unmounting turbo loop ($LOOPNO)..." >/dev/stderr - dmlosetup -d /dev/loop$LOOPNO - if [ "$?" != 0 ] || [ "x`dmsetup status | grep loop$LOOPNO`" != "x" ] ; then - echo "Waiting for apps to terminate, will try again." >/dev/stderr - sleep 5 - dmlosetup -d /dev/loop$LOOPNO - if [ "$?" != 0 ] ; then - echo "Can't unmount turbo-loop! Try dmlosetup -d /dev/loop$LOOPNO manually." >/dev/stderr - exit 9 - fi - fi - LOOPDEV=`mount | grep " $MNTPT " | cut -f1 -d' '` - done -fi - -echo "successful unmount..." >/dev/stderr -exit 0 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot deleted file mode 100755 index c8dbe71..0000000 --- a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/sh -#Synch a mounted chroot; this means copying some important files to the chroot. - -#Try to get the chroot location from the config file... -if [ "x$CHROOT" = x ] ; then - #Pull in the config, if possible... - [ -f /home/user/.chroot ] && . /home/user/.chroot - #Still not set? Set to default - [ "x$CHROOT" != x ] || CHROOT=/debian -fi - -#Abort if chroot not mounted. -if [ ! -d "$CHROOT/etc/" ] ; then - echo "cannot sync; chroot not mounted!" - exit 99 -fi - -echo "synching the chroot..." - -#Just a somewhat-readable uniquifier so backups don't overwrite other backups. -BOB=`date | awk '{print $1$2$3}'` - -#Make the Internet work. - -mv "$CHROOT/etc/resolv.conf" "$CHROOT/etc/resolv.conf.$BOB" -cp /etc/resolv.conf "$CHROOT/etc/resolv.conf" -mv "$CHROOT/etc/hosts" "$CHROOT/etc/hosts.$BOB" -cp /etc/hosts "$CHROOT/etc/hosts" - -#Make permissions work. -mv "$CHROOT/etc/group" "$CHROOT/etc/group.$BOB" -cp /etc/group "$CHROOT/etc/group" -mv "$CHROOT/etc/passwd" "$CHROOT/etc/passwd.$BOB" -cp /etc/passwd "$CHROOT/etc/passwd" - -#Set the correct time. -mv "$CHROOT/etc/localtime" "$CHROOT/etc/localtime.$BOB" -cp -a /etc/localtime "$CHROOT/etc/localtime" - -#Help make N810 F-keys work -mv "$CHROOT/usr/share/X11/xkb" "$CHROOT/usr/share/X11/xkb.$BOB" -cp -r /usr/share/X11/xkb "$CHROOT/usr/share/X11" \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/gxmessage b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/gxmessage deleted file mode 100755 index ddcd9c44ed65db85b13a99e5449685ecc64ab7ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20956 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