From a9d2be0b30c248ad41e48fde20554d4d9d267397 Mon Sep 17 00:00:00 2001 From: josch Date: Wed, 22 Jun 2011 10:47:23 +0200 Subject: [PATCH] add README --- README | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 README diff --git a/README b/README new file mode 100644 index 0000000..65434d2 --- /dev/null +++ b/README @@ -0,0 +1,80 @@ +Polystrap is a tool to create a foreign architecture rootfs without needing +superuser privileges by using multistrap, fakeroot, fakechroot and qemu user +mode emulation. + +While I wanted to build without superuser privileges, multistrap would never +offer mechanisms that would allow me to do so. Hence I wrote this script which +wraps multistrap. Since I wanted to keep it as simple as possible, a fully +functional polystrap will need nothing more than a multistrap.conf, a hooks +directory and a rootfs tree skeleton. Stuff like packages directory, and config +file are optional and can be replaced by editing multistrap.conf and passing +commandline options. Without comments the scripts is currently around 120 lines +and I have no intention to make it much more complex. + +Polystrap is invoked as such: + + ./polystrap.sh PLATFORM + +PLATFORM is a directory that at least contains a multistrap.conf. The +multistrap.conf may contain variables from polystrap.sh. + +In the normal case PLATFORM will contain some additional bits. + + PLATFORM/config - A file that is sourced by ./polystrap.sh and + contains variable declarations like: + SUITE - stable, testing, unstable + ARCH - armel, armhf, amd64, i386 + ROOTDIR - where the rootfs is created + MIRROR - debian mirror to use for packages + The file is not strictly needed because the options + can also be set by commandline arguments and the + script will fall back to ./default/config. + PLATFORM/debconfseed.txt - as the name suggests + PLATFORM/hooks - A directory that contains files that are sourced by + polystrap after packages are installed. + PLATFORM/packages - Contains files with one debian package per line. + Grouping packages by that allows easier selection. + PLATFORM/root - Contains a rootfs tree that is copied to the target + directory after packages are unpacked by multistrap. + +Reasonable examples of how those pieces look like can be found in the defaults +directory. + +Everything from the PLATFORM/config file can be overwritten by commandline +options: + + -s suite + -a arch + -d rootdir + -m mirror + +Additionally the following option allows to specify a list of packages that is +then used instead of the contents of the PLATFORM/packages directory: + + -p packages + +How the script works: + + *) re-execute itself in fakeroot + *) source default/config + *) source PLATFORM/config + *) determine package selection by PLATFORM/packages or commandline argument + *) create multistrap.conf in /tmp from PLATFORM/multistrap.conf + *) run multistrap + *) copy contents of PLATFORM/root + *) copy qemu usermode binary + *) set debconf selections + *) run preinst scripts + *) configure packages + *) source PLATFORM/hooks + *) cleanup + *) generate tarball + +When creating a directory for a new target one can either just copy the defaut +directory or use the ./newtarget.sh script which will use symlinks where it +makes sense, will not copy the whole package selection and will set hostname +according to the target name. + +Example config and multistrap.conf for usage of armhf is given in the default +directory as config.armhf and multistrap.conf.armhf. Some fakechroot bugs +(#611156) is unfortunately blocking this functionality right now.