Better documentation for febootstrap-run.
# Create the /init which will scan for and enable all LVM volume groups.
-( cd guestfs && cat > init <<'__EOF__'
+create_init ()
+{
+ cat > /init <<'__EOF__'
#!/bin/sh
PATH=/sbin:/usr/sbin:$PATH
MAKEDEV mem null port zero core full ram tty console fd \
lvm vgchange -ay --ignorelockingfailure
/bin/bash -i
__EOF__
-chmod +x init
-)
+ chmod +x init
+}
+export -f create_init
+../febootstrap-run ./guestfs -- bash -c create_init
# Convert the filesystem to an initrd image.
# Create the /init which is just a simple script to give users an
# interactive shell.
-( cd minimal && cat > init <<'__EOF__'
+create_init ()
+{
+ cat > /init <<'__EOF__'
#!/bin/sh
echo; echo; echo
echo "Welcome to the minimal filesystem example"
echo; echo; echo
/bin/bash -i
__EOF__
-chmod +x init
-)
+ chmod +x /init
+}
+export -f create_init
+../febootstrap-run ./minimal -- bash -c create_init
# Convert the filesystem to an initrd image.
=back
+=head1 EXAMPLES
+
+One way to create a new file with specific ownership and permissions
+from a script is to create new content for a file as C<root/file.new>:
+
+ #!/bin/bash
+
+ echo blah > root/file.new
+
+then "install" it with the correct ownership and permissions.
+
+ febootstrap-run root -- install -m 0644 -o root -g root /file.new /file
+ rm root/file.new
+
+(This requires that the C</usr/bin/install> command from coreutils
+exists inside the root.)
+
+Another way to do complex operations from a script is to export a
+function:
+
+ #!/bin/bash
+
+ do_stuff ()
+ {
+ # complex operations inside the root
+ }
+ export -f do_stuff
+ febootstrap-run root -- bash -c do_stuff
+
=head1 ENVIRONMENT VARIABLES
Some L<fakechroot(1)> environment variables are applicable. In