add README
This commit is contained in:
parent
21c949870d
commit
a9d2be0b30
1 changed files with 80 additions and 0 deletions
80
README
Normal file
80
README
Normal file
|
@ -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.
|
Loading…
Reference in a new issue