beta release. still some missing features (ipxe, http/tftp and remote syncing, etc.)

This commit is contained in:
brent s. 2016-12-04 02:43:49 -05:00
parent dbeee4789d
commit df172d73eb
9 changed files with 443 additions and 78 deletions

View File

@ -3,6 +3,9 @@ import sys
import psutil import psutil
import subprocess import subprocess
import datetime import datetime
import tarfile
import humanize
import shutil




def chroot(chrootdir, chroot_hostname, cmd = '/root/pre-build.sh'): def chroot(chrootdir, chroot_hostname, cmd = '/root/pre-build.sh'):
@ -11,43 +14,91 @@ def chroot(chrootdir, chroot_hostname, cmd = '/root/pre-build.sh'):
mounts = [] mounts = []
for m in mountpoints: for m in mountpoints:
mounts.append(m.mountpoint) mounts.append(m.mountpoint)
# mount the chrootdir... onto itself. as a bind mount. it's so stupid, i know. see https://bugs.archlinux.org/task/46169 cmounts = {}
for m in ('chroot', 'resolv', 'proc', 'sys', 'efi', 'dev', 'pts', 'shm', 'run', 'tmp'):
cmounts[m] = None
# chroot (bind mount... onto itself. it's so stupid, i know. see https://bugs.archlinux.org/task/46169)
if chrootdir not in mounts: if chrootdir not in mounts:
subprocess.call(['/bin/mount', '--bind', chrootdir, chrootdir]) cmounts['chroot'] = ['/bin/mount',
### The following mountpoints don't seem to mount properly with pychroot. save it for v3.n+1. TODO. ### '--bind',
# bind-mount so we can resolve things inside chrootdir,
chrootdir]
# resolv
if (chrootdir + '/etc/resolv.conf') not in mounts: if (chrootdir + '/etc/resolv.conf') not in mounts:
subprocess.call(['/bin/mount', '--bind', '-o', 'ro', '/etc/resolv.conf', chrootdir + '/etc/resolv.conf']) cmounts['resolv'] = ['/bin/mount',
# mount -t proc to chrootdir + '/proc' here '--bind',
'-o', 'ro',
'/etc/resolv.conf',
chrootdir + '/etc/resolv.conf']
# proc
if (chrootdir + '/proc') not in mounts: if (chrootdir + '/proc') not in mounts:
subprocess.call(['/bin/mount', '-t', 'proc', '-o', 'nosuid,noexec,nodev', 'proc', chrootdir + '/proc']) cmounts['proc'] = ['/bin/mount',
# rbind mount /sys to chrootdir + '/sys' here '-t', 'proc',
'-o', 'nosuid,noexec,nodev',
'proc',
chrootdir + '/proc']
# sys
if (chrootdir + '/sys') not in mounts: if (chrootdir + '/sys') not in mounts:
subprocess.call(['/bin/mount', '-t', 'sysfs', '-o', 'nosuid,noexec,nodev,ro', 'sys', chrootdir + '/sys']) cmounts['sys'] = ['/bin/mount',
# mount the efivars in the chroot if it exists on the host. i mean, why not? '-t', 'sysfs',
'-o', 'nosuid,noexec,nodev,ro',
'sys',
chrootdir + '/sys']
# efi (if it exists on the host)
if '/sys/firmware/efi/efivars' in mounts: if '/sys/firmware/efi/efivars' in mounts:
if (chrootdir + '/sys/firmware/efi/efivars') not in mounts: if (chrootdir + '/sys/firmware/efi/efivars') not in mounts:
subprocess.call(['/bin/mount', '-t', 'efivarfs', '-o', 'nosuid,noexec,nodev', 'efivarfs', chrootdir + '/sys/firmware/efi/efivars']) cmounts['efi'] = ['/bin/mount',
# rbind mount /dev to chrootdir + '/dev' here '-t', 'efivarfs',
'-o', 'nosuid,noexec,nodev',
'efivarfs',
chrootdir + '/sys/firmware/efi/efivars']
# dev
if (chrootdir + '/dev') not in mounts: if (chrootdir + '/dev') not in mounts:
subprocess.call(['/bin/mount', '-t', 'devtmpfs', '-o', 'mode=0755,nosuid', 'udev', chrootdir + '/dev']) cmounts['dev'] = ['/bin/mount',
'-t', 'devtmpfs',
'-o', 'mode=0755,nosuid',
'udev',
chrootdir + '/dev']
# pts
if (chrootdir + '/dev/pts') not in mounts: if (chrootdir + '/dev/pts') not in mounts:
subprocess.call(['/bin/mount', '-t', 'devpts', '-o', 'mode=0620,gid=5,nosuid,noexec', 'devpts', chrootdir + '/dev/pts']) cmounts['pts'] = ['/bin/mount',
'-t', 'devpts',
'-o', 'mode=0620,gid=5,nosuid,noexec',
'devpts',
chrootdir + '/dev/pts']
# shm (if it exists on the host)
if '/dev/shm' in mounts: if '/dev/shm' in mounts:
if (chrootdir + '/dev/shm') not in mounts: if (chrootdir + '/dev/shm') not in mounts:
subprocess.call(['/bin/mount', '-t', 'tmpfs', '-o', 'mode=1777,nosuid,nodev', 'shm', chrootdir + '/dev/shm']) cmounts['shm'] = ['/bin/mount',
'-t', 'tmpfs',
'-o', 'mode=1777,nosuid,nodev',
'shm',
chrootdir + '/dev/shm']
# run (if it exists on the host)
if '/run' in mounts: if '/run' in mounts:
if (chrootdir + '/run') not in mounts: if (chrootdir + '/run') not in mounts:
subprocess.call(['/bin/mount', '-t', 'tmpfs', '-o', 'nosuid,nodev,mode=0755', 'run', chrootdir + '/run']) cmounts['run'] = ['/bin/mount',
'-t', 'tmpfs',
'-o', 'nosuid,nodev,mode=0755',
'run',
chrootdir + '/run']
# tmp (if it exists on the host)
if '/tmp' in mounts: if '/tmp' in mounts:
if (chrootdir + '/tmp') not in mounts: if (chrootdir + '/tmp') not in mounts:
subprocess.call(['/bin/mount', '-t', 'tmpfs', '-o', 'mode=1777,strictatime,nodev,nosuid', 'tmp', chrootdir + '/tmp']) cmounts['tmp'] = ['/bin/mount',

'-t', 'tmpfs',
'-o', 'mode=1777,strictatime,nodev,nosuid',
'tmp',
chrootdir + '/tmp']
# the order we mount here is VERY IMPORTANT. Sure, we could do "for m in cmounts:", but dicts aren't ordered until python 3.6
# and this is SO important it's best that we be explicit as possible while we're still in alpha/beta stage. TODO?
for m in ('chroot', 'resolv', 'proc', 'sys', 'efi', 'dev', 'pts', 'shm', 'run', 'tmp'):
if cmounts[m]:
subprocess.call(cmounts[m])
print("{0}: Performing '{1}' in chroot for {2}...".format(datetime.datetime.now(), cmd, chrootdir)) print("{0}: Performing '{1}' in chroot for {2}...".format(datetime.datetime.now(), cmd, chrootdir))
print("\t\t\t You can view the progress via:\n\n\t\ttail -f {0}/var/log/chroot_install.log\n".format(chrootdir)) print("\t\t\t You can view the progress via:\n\t\t\t tail -f {0}/var/log/chroot_install.log".format(chrootdir))
real_root = os.open("/", os.O_RDONLY) real_root = os.open("/", os.O_RDONLY)
os.chroot(chrootdir) os.chroot(chrootdir)
os.system('locale-gen > /dev/null 2>&1')
os.system('/root/pre-build.sh') os.system('/root/pre-build.sh')
os.fchdir(real_root) os.fchdir(real_root)
os.chroot('.') os.chroot('.')
@ -56,3 +107,42 @@ def chroot(chrootdir, chroot_hostname, cmd = '/root/pre-build.sh'):


def chrootUnmount(chrootdir): def chrootUnmount(chrootdir):
subprocess.call(['umount', '-lR', chrootdir]) subprocess.call(['umount', '-lR', chrootdir])

def chrootTrim(build):
chrootdir = build['chrootdir']
arch = build['arch']
for a in arch:
# Compress the pacman and apacman caches.
for i in ('pacman', 'apacman'):
shutil.rmtree('{0}/root.{1}/var/cache/{2}'.format(chrootdir, a, i))
os.makedirs('{0}/root.{1}/usr/local/{2}'.format(chrootdir, a, i), exist_ok = True)
tarball = '{0}/root.{1}/usr/local/{2}/{2}.db.tar.xz'.format(chrootdir, a, i)
dbdir = '{0}/root.{1}/var/lib/{2}/local'.format(chrootdir, a, i)
if os.path.isdir(dbdir):
print("{0}: Now compressing the {1} cache ({2}). Please wait...".format(
datetime.datetime.now(),
chrootdir,
a))
if os.path.isfile(tarball):
os.remove(tarball)
with tarfile.open(name = tarball, mode = 'w:xz') as tar: # if this complains, use x:xz instead
tar.add(dbdir, arcname = os.path.basename(dbdir))
shutil.rmtree(dbdir, ignore_errors = True)
print("{0}: Done creating {1} ({2}).\n\t\t\t {3} cleared.".format(
datetime.datetime.now(),
tarball,
humanize.naturalsize(
os.path.getsize(tarball)),
dbdir))
# TODO: move the self-cleanup in pre-build.sh to here.
delme = ['/root/.gnupg',
'/root/.bash_history',
#'/var/log/chroot_install.log', # disable for now. maybe always disable if debug is enabled? TODO.
'/.git',
'/root/.viminfo']
for i in delme:
fullpath = '{0}/root.{1}{2}'.format(chrootdir, a, i)
if os.path.isfile(fullpath):
os.remove(fullpath)
elif os.path.isdir(fullpath):
shutil.rmtree(fullpath, ignore_errors = True)

View File

@ -6,11 +6,9 @@ import build
import datetime import datetime


# we need to: # we need to:
# 9.) build.genImg (TODO)- build the squashed image, etc. see will_it_blend in old bdisk
# 9.5) copy the files also in the same script. after the commented-out mtree-generation
#
# we also need to figure out how to implement "mentos" (old bdisk) like functionality, letting us reuse an existing chroot install if possible to save time for future builds. # we also need to figure out how to implement "mentos" (old bdisk) like functionality, letting us reuse an existing chroot install if possible to save time for future builds.
# if not, though, it's no big deal. # if not, though, it's no big deal.
# still on the todo: iPXE
if __name__ == '__main__': if __name__ == '__main__':
print('{0}: Starting.'.format(datetime.datetime.now())) print('{0}: Starting.'.format(datetime.datetime.now()))
conf = host.parseConfig(host.getConfig())[1] conf = host.parseConfig(host.getConfig())[1]
@ -22,6 +20,7 @@ if __name__ == '__main__':
bchroot.chroot(conf['build']['chrootdir'] + '/root.' + a, 'bdisk.square-r00t.net') bchroot.chroot(conf['build']['chrootdir'] + '/root.' + a, 'bdisk.square-r00t.net')
bchroot.chrootUnmount(conf['build']['chrootdir'] + '/root.' + a) bchroot.chrootUnmount(conf['build']['chrootdir'] + '/root.' + a)
prep.postChroot(conf['build']) prep.postChroot(conf['build'])
bchroot.chrootTrim(conf['build'])
build.genImg(conf['build'], conf['bdisk']) build.genImg(conf['build'], conf['bdisk'])
build.genUEFI(conf['build'], conf['bdisk']) build.genUEFI(conf['build'], conf['bdisk'])
fulliso = build.genISO(conf) fulliso = build.genISO(conf)

View File

@ -363,12 +363,6 @@ def genISO(conf):
tempdir] tempdir]
DEVNULL = open(os.devnull, 'w') DEVNULL = open(os.devnull, 'w')
subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT)
#proc = subprocess.Popen(cmd, stdout = subprocess.PIPE, bufsize = 1)
#for line in iter(proc.stdout.readline, b''):
#for line in iter(proc.stdout.readline, ''):
# print(line)
#p.stdout.close()
#p.wait()
# Get size of ISO # Get size of ISO
iso = {} iso = {}
iso['sha'] = hashlib.sha256() iso['sha'] = hashlib.sha256()
@ -386,11 +380,10 @@ def genISO(conf):
return(iso) return(iso)


def displayStats(iso): def displayStats(iso):
print('== {0} {1} =='.format(iso['type'], iso['fmt'])) print("{0}:\n== {1} {2} ==".format(datetime.datetime.now(), iso['type'], iso['fmt']))
print('Size: {0}'.format(iso['size'])) print('Size: {0}'.format(iso['size']))
print('SHA256: {0}'.format(iso['sha'])) print('SHA256: {0}'.format(iso['sha']))
print('Location: {0}'.format(iso['file'])) print('Location: {0}\n'.format(iso['file']))
print()


def cleanUp(): def cleanUp():
# TODO: clear out all of tempdir? # TODO: clear out all of tempdir?

View File

@ -48,8 +48,8 @@ def downloadTarball(build):
print("\n{0}: Generating a GPG key. Please wait...".format(datetime.datetime.now())) print("\n{0}: Generating a GPG key. Please wait...".format(datetime.datetime.now()))
# python-gnupg 0.3.9 spits this error in Arch. it's harmless, but ugly af. # python-gnupg 0.3.9 spits this error in Arch. it's harmless, but ugly af.
# TODO: remove this when the error doesn't happen anymore. # TODO: remove this when the error doesn't happen anymore.
print("\tIf you see a \"ValueError: Unknown status message: 'KEY_CONSIDERED'\" error, it can be safely ignored.") print("\t\t\t If you see a \"ValueError: Unknown status message: 'KEY_CONSIDERED'\" error,\n\t\t\t it can be safely ignored.")
print("\tIf this is taking a VERY LONG time, try installing haveged and starting it. This can be " + print("\t\t\t If this is taking a VERY LONG time, try installing haveged and starting it.\n\t\t\t This can be" +
"done safely in parallel with the build process.\n") "done safely in parallel with the build process.\n")
input_data = gpg.gen_key_input(name_email = 'tempuser@nodomain.tld', passphrase = 'placeholder_passphrase') input_data = gpg.gen_key_input(name_email = 'tempuser@nodomain.tld', passphrase = 'placeholder_passphrase')
key = gpg.gen_key(input_data) key = gpg.gen_key(input_data)
@ -76,7 +76,7 @@ def downloadTarball(build):
tarball_path[a], tarball_path[a],
humanize.naturalsize( humanize.naturalsize(
os.path.getsize(tarball_path[a])))) os.path.getsize(tarball_path[a]))))
print("{0}: Checking that the hash checksum for {1} matches {2}, please wait...".format( print("{0}: Checking that the hash checksum for {1}\n\t\t\t matches {2}, please wait...".format(
datetime.datetime.now(), datetime.datetime.now(),
tarball_path[a], tarball_path[a],
sha1)) sha1))
@ -166,14 +166,14 @@ def buildChroot(build, keep = False):
# and copy over the files. again, chown to root. # and copy over the files. again, chown to root.
for file in prebuild_overlay['files']: for file in prebuild_overlay['files']:
shutil.copy2(extradir + '/pre-build.d/' + file, chrootdir + '/root.' + a + '/' + file, follow_symlinks = False) shutil.copy2(extradir + '/pre-build.d/' + file, chrootdir + '/root.' + a + '/' + file, follow_symlinks = False)
os.chown(chrootdir + '/root.' + a + '/' + file, 0, 0) os.chown(chrootdir + '/root.' + a + '/' + file, 0, 0, follow_symlinks = False)
# do the same for arch-specific stuff. # do the same for arch-specific stuff.
for dir in prebuild_arch_overlay[a]['dirs']: for dir in prebuild_arch_overlay[a]['dirs']:
os.makedirs(chrootdir + '/root.' + a + '/' + dir, exist_ok = True) os.makedirs(chrootdir + '/root.' + a + '/' + dir, exist_ok = True)
os.chown(chrootdir + '/root.' + a + '/' + dir, 0, 0) os.chown(chrootdir + '/root.' + a + '/' + dir, 0, 0)
for file in prebuild_arch_overlay[a]['files']: for file in prebuild_arch_overlay[a]['files']:
shutil.copy2(extradir + '/pre-build.d/' + a + '/' + file, chrootdir + '/root.' + a + '/' + file, follow_symlinks = False) shutil.copy2(extradir + '/pre-build.d/' + a + '/' + file, chrootdir + '/root.' + a + '/' + file, follow_symlinks = False)
os.chown(chrootdir + '/root.' + a + '/' + file, 0, 0) os.chown(chrootdir + '/root.' + a + '/' + file, 0, 0, follow_symlinks = False)


def prepChroot(build, bdisk, user): def prepChroot(build, bdisk, user):
chrootdir = build['chrootdir'] chrootdir = build['chrootdir']

View File

@ -1,24 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>


<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
<office:meta><meta:creation-date>2016-12-01T11:27:37.665510821</meta:creation-date><dc:date>2016-12-01T12:45:33.017762399</dc:date><meta:editing-duration>PT1H7M45S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="5" meta:word-count="7" meta:character-count="54" meta:non-whitespace-character-count="52"/><meta:generator>LibreOffice/5.2.3.3$Linux_X86_64 LibreOffice_project/20m0$Build-3</meta:generator></office:meta> <office:meta><meta:creation-date>2016-12-01T11:27:37.665510821</meta:creation-date><dc:date>2016-12-03T23:47:18.021215054</dc:date><meta:editing-duration>PT11H14M18S</meta:editing-duration><meta:editing-cycles>19</meta:editing-cycles><meta:generator>LibreOffice/5.2.3.3$Linux_X86_64 LibreOffice_project/20m0$Build-3</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="3" meta:paragraph-count="27" meta:word-count="301" meta:character-count="1773" meta:non-whitespace-character-count="1483"/></office:meta>
<office:settings> <office:settings>
<config:config-item-set config:name="ooo:view-settings"> <config:config-item-set config:name="ooo:view-settings">
<config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item> <config:config-item config:name="ViewAreaTop" config:type="long">59055</config:config-item>
<config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item> <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
<config:config-item config:name="ViewAreaWidth" config:type="long">40748</config:config-item> <config:config-item config:name="ViewAreaWidth" config:type="long">40748</config:config-item>
<config:config-item config:name="ViewAreaHeight" config:type="long">22782</config:config-item> <config:config-item config:name="ViewAreaHeight" config:type="long">21751</config:config-item>
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item> <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
<config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item> <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
<config:config-item-map-indexed config:name="Views"> <config:config-item-map-indexed config:name="Views">
<config:config-item-map-entry> <config:config-item-map-entry>
<config:config-item config:name="ViewId" config:type="string">view2</config:config-item> <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
<config:config-item config:name="ViewLeft" config:type="long">11578</config:config-item> <config:config-item config:name="ViewLeft" config:type="long">14079</config:config-item>
<config:config-item config:name="ViewTop" config:type="long">3494</config:config-item> <config:config-item config:name="ViewTop" config:type="long">77479</config:config-item>
<config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item> <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
<config:config-item config:name="VisibleTop" config:type="long">0</config:config-item> <config:config-item config:name="VisibleTop" config:type="long">59055</config:config-item>
<config:config-item config:name="VisibleRight" config:type="long">40746</config:config-item> <config:config-item config:name="VisibleRight" config:type="long">40746</config:config-item>
<config:config-item config:name="VisibleBottom" config:type="long">22781</config:config-item> <config:config-item config:name="VisibleBottom" config:type="long">80804</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item> <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item> <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item> <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
@ -69,7 +69,7 @@
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item> <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item> <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item> <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
<config:config-item config:name="Rsid" config:type="int">91633</config:config-item> <config:config-item config:name="Rsid" config:type="int">396750</config:config-item>
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item> <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item> <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
<config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item> <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
@ -182,24 +182,81 @@
</style:tab-stops> </style:tab-stops>
</style:paragraph-properties> </style:paragraph-properties>
</style:style> </style:style>
<style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text"> <style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
<style:text-properties fo:color="#000080" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/> <style:paragraph-properties text:number-lines="false" text:line-number="0">
<style:tab-stops>
<style:tab-stop style:position="3.4626in" style:type="center"/>
<style:tab-stop style:position="6.9252in" style:type="right"/>
</style:tab-stops>
</style:paragraph-properties>
</style:style> </style:style>
<style:style style:name="Contents_20_Heading" style:display-name="Contents Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
<style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="16pt" style:font-weight-asian="bold" style:font-size-complex="16pt" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="2" style:class="text">
<style:paragraph-properties fo:margin-top="0.139in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
<style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="1" style:class="text">
<style:paragraph-properties fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
<style:text-properties fo:font-size="130%" fo:font-weight="bold" style:font-size-asian="130%" style:font-weight-asian="bold" style:font-size-complex="130%" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Contents_20_1" style:display-name="Contents 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false">
<style:tab-stops>
<style:tab-stop style:position="6.9252in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="3" style:class="text">
<style:paragraph-properties fo:margin-top="0.0972in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false"/>
<style:text-properties fo:font-size="101%" fo:font-weight="bold" style:font-size-asian="101%" style:font-weight-asian="bold" style:font-size-complex="101%" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Contents_20_2" style:display-name="Contents 2" style:family="paragraph" style:parent-style-name="Index" style:class="index">
<style:paragraph-properties fo:margin-left="0.1965in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false">
<style:tab-stops>
<style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="Heading_20_8" style:display-name="Heading 8" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="text">
<style:paragraph-properties fo:margin-top="0.0417in" fo:margin-bottom="0.0417in" loext:contextual-spacing="false"/>
<style:text-properties fo:font-size="80%" fo:font-style="italic" fo:font-weight="bold" style:font-size-asian="80%" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-size-complex="80%" style:font-style-complex="italic" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="Contents_20_3" style:display-name="Contents 3" style:family="paragraph" style:parent-style-name="Index" style:class="index">
<style:paragraph-properties fo:margin-left="0.3929in" fo:margin-right="0in" fo:text-indent="0in" style:auto-text-indent="false">
<style:tab-stops>
<style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="First_20_line_20_indent" style:display-name="First line indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text">
<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:text-indent="0.1965in" style:auto-text-indent="false"/>
</style:style>
<style:style style:name="Horizontal_20_Line" style:display-name="Horizontal Line" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="html">
<style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.1965in" loext:contextual-spacing="false" style:border-line-width-bottom="0in 0.0016in 0.0008in" fo:padding="0in" fo:border-left="none" fo:border-right="none" fo:border-top="none" fo:border-bottom="0.06pt double #808080" text:number-lines="false" text:line-number="0" style:join-border="false"/>
<style:text-properties fo:font-size="6pt" style:font-size-asian="6pt" style:font-size-complex="6pt"/>
</style:style>
<style:style style:name="Internet_20_link" style:display-name="Internet link" style:family="text">
<style:text-properties fo:color="#000000" fo:language="zxx" fo:country="none" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold" style:font-size-asian="10.5pt" style:language-asian="zxx" style:country-asian="none" style:language-complex="zxx" style:country-complex="none"/>
</style:style>
<style:style style:name="Index_20_Link" style:display-name="Index Link" style:family="text"/>
<style:style style:name="Frame" style:family="graphic"> <style:style style:name="Frame" style:family="graphic">
<style:graphic-properties text:anchor-type="paragraph" svg:x="0in" svg:y="0in" fo:margin-left="0.0791in" fo:margin-right="0.0791in" fo:margin-top="0.0791in" fo:margin-bottom="0.0791in" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:padding="0.0591in" fo:border="0.06pt solid #000000"/> <style:graphic-properties text:anchor-type="paragraph" svg:x="0in" svg:y="0in" fo:margin-left="0.0791in" fo:margin-right="0.0791in" fo:margin-top="0.0791in" fo:margin-bottom="0.0791in" style:wrap="parallel" style:number-wrapped-paragraphs="no-limit" style:wrap-contour="false" style:vertical-pos="top" style:vertical-rel="paragraph-content" style:horizontal-pos="center" style:horizontal-rel="paragraph-content" fo:padding="0.0591in" fo:border="0.06pt solid #000000"/>
</style:style> </style:style>
<text:outline-style style:name="Outline"> <text:outline-style style:name="Outline">
<text:outline-level-style text:level="1" style:num-format=""> <text:outline-level-style text:level="1" style:num-prefix="Chapter " style:num-suffix=": " style:num-format="I">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab"/> <style:list-level-label-alignment text:label-followed-by="listtab"/>
</style:list-level-properties> </style:list-level-properties>
</text:outline-level-style> </text:outline-level-style>
<text:outline-level-style text:level="2" style:num-format=""> <text:outline-level-style text:level="2" style:num-prefix=" Section " style:num-suffix=": " style:num-format="1" text:display-levels="2">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab"/> <style:list-level-label-alignment text:label-followed-by="listtab"/>
</style:list-level-properties> </style:list-level-properties>
</text:outline-level-style> </text:outline-level-style>
<text:outline-level-style text:level="3" style:num-format=""> <text:outline-level-style text:level="3" style:num-suffix=": " style:num-format="i" text:display-levels="3">
<style:list-level-properties text:list-level-position-and-space-mode="label-alignment"> <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
<style:list-level-label-alignment text:label-followed-by="listtab"/> <style:list-level-label-alignment text:label-followed-by="listtab"/>
</style:list-level-properties> </style:list-level-properties>
@ -245,65 +302,166 @@
<text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/> <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
</office:styles> </office:styles>
<office:automatic-styles> <office:automatic-styles>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Header"> <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Footer">
<style:text-properties officeooo:rsid="0001be38" officeooo:paragraph-rsid="0001be38"/>
</style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Header">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/> <style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
</style:style> </style:style>
<style:style style:name="P2" style:family="paragraph" style:parent-style-name="Text_20_body"> <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Footer">
<style:text-properties officeooo:rsid="0001be38" officeooo:paragraph-rsid="0001be38"/>
</style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Header">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/>
</style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
<style:text-properties officeooo:rsid="000165f1" officeooo:paragraph-rsid="000165f1"/> <style:text-properties officeooo:rsid="000165f1" officeooo:paragraph-rsid="000165f1"/>
</style:style> </style:style>
<style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="First_20_Page"> <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:paragraph-properties style:page-number="auto"/> <style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
</style:style> </style:style>
<style:style style:name="P4" style:family="paragraph" style:parent-style-name="Title" style:master-page-name=""> <style:style style:name="P7" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:text-properties officeooo:paragraph-rsid="0002592b"/>
</style:style>
<style:style style:name="P8" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:text-properties officeooo:paragraph-rsid="0003d8d6"/>
</style:style>
<style:style style:name="P9" style:family="paragraph" style:parent-style-name="Title" style:master-page-name="">
<loext:graphic-properties draw:fill="none"/> <loext:graphic-properties draw:fill="none"/>
<style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false" fo:text-indent="0in" style:auto-text-indent="false" style:page-number="auto" fo:background-color="transparent" fo:keep-with-next="always"/> <style:paragraph-properties fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false" fo:text-indent="0in" style:auto-text-indent="false" style:page-number="auto" fo:background-color="transparent" fo:keep-with-next="always"/>
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/> <style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
</style:style> </style:style>
<style:style style:name="P5" style:family="paragraph" style:parent-style-name="Subtitle"> <style:style style:name="P10" style:family="paragraph" style:parent-style-name="Subtitle">
<style:text-properties officeooo:rsid="000165f1" officeooo:paragraph-rsid="000165f1"/> <style:text-properties officeooo:rsid="000165f1" officeooo:paragraph-rsid="000165f1"/>
</style:style> </style:style>
<style:style style:name="P6" style:family="paragraph" style:parent-style-name="Header"> <style:style style:name="P11" style:family="paragraph" style:parent-style-name="Standard">
<style:paragraph-properties fo:text-align="end" style:justify-single-word="false"/> <style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
</style:style>
<style:style style:name="P12" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="First_20_Page">
<style:paragraph-properties style:page-number="auto"/>
<style:text-properties officeooo:rsid="0000966e" officeooo:paragraph-rsid="0000966e"/>
</style:style>
<style:style style:name="P13" style:family="paragraph" style:parent-style-name="Text_20_body">
<style:text-properties officeooo:paragraph-rsid="0004d562"/>
</style:style>
<style:style style:name="P14" style:family="paragraph" style:parent-style-name="Contents_20_Heading">
<style:paragraph-properties fo:break-before="page"/>
</style:style>
<style:style style:name="P15" style:family="paragraph" style:parent-style-name="Heading_20_1">
<style:paragraph-properties fo:break-before="page"/>
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
</style:style>
<style:style style:name="P16" style:family="paragraph" style:parent-style-name="Heading_20_2">
<style:text-properties officeooo:rsid="0002592b" officeooo:paragraph-rsid="0002592b"/>
</style:style>
<style:style style:name="P17" style:family="paragraph" style:parent-style-name="Heading_20_2">
<style:text-properties officeooo:paragraph-rsid="0002592b"/>
</style:style>
<style:style style:name="P18" style:family="paragraph" style:parent-style-name="Contents_20_1">
<style:paragraph-properties>
<style:tab-stops>
<style:tab-stop style:position="6.9252in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="P19" style:family="paragraph" style:parent-style-name="Heading_20_3">
<style:text-properties officeooo:rsid="0004d562" officeooo:paragraph-rsid="0004d562"/>
</style:style>
<style:style style:name="P20" style:family="paragraph" style:parent-style-name="Contents_20_2">
<style:paragraph-properties>
<style:tab-stops>
<style:tab-stop style:position="6.7283in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="P21" style:family="paragraph" style:parent-style-name="Contents_20_3">
<style:paragraph-properties>
<style:tab-stops>
<style:tab-stop style:position="6.5319in" style:type="right" style:leader-style="dotted" style:leader-text="."/>
</style:tab-stops>
</style:paragraph-properties>
</style:style>
<style:style style:name="T1" style:family="text">
<style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
</style:style>
<style:style style:name="T2" style:family="text">
<style:text-properties fo:font-weight="normal" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
</style:style>
<style:style style:name="T3" style:family="text">
<style:text-properties fo:font-weight="normal" officeooo:rsid="0003d8d6" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
</style:style>
<style:style style:name="T4" style:family="text">
<style:text-properties fo:font-weight="normal" officeooo:rsid="0004d562" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
</style:style>
<style:style style:name="T5" style:family="text">
<style:text-properties fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/>
</style:style>
<style:style style:name="T6" style:family="text">
<style:text-properties fo:font-style="italic" officeooo:rsid="0003d8d6" style:font-style-asian="italic" style:font-style-complex="italic"/>
</style:style>
<style:style style:name="T7" style:family="text">
<style:text-properties fo:font-style="normal" style:font-style-asian="normal" style:font-style-complex="normal"/>
</style:style>
<style:style style:name="T8" style:family="text">
<style:text-properties fo:font-style="normal" officeooo:rsid="0003d8d6" style:font-style-asian="normal" style:font-style-complex="normal"/>
</style:style>
<style:style style:name="T9" style:family="text">
<style:text-properties officeooo:rsid="0002592b"/>
</style:style>
<style:style style:name="T10" style:family="text">
<style:text-properties officeooo:rsid="0004d562"/>
</style:style> </style:style>
<style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame"> <style:style style:name="fr1" style:family="graphic" style:parent-style-name="Frame">
<style:graphic-properties style:vertical-pos="middle" style:vertical-rel="page-content" style:horizontal-pos="from-left" style:horizontal-rel="page" fo:padding="0in" fo:border="none" style:shadow="none" draw:shadow-opacity="100%"/> <style:graphic-properties style:vertical-pos="middle" style:vertical-rel="page-content" style:horizontal-pos="from-left" style:horizontal-rel="page" fo:padding="0in" fo:border="none" style:shadow="none" draw:shadow-opacity="100%"/>
</style:style> </style:style>
<style:style style:name="Sect1" style:family="section">
<style:section-properties style:editable="false">
<style:columns fo:column-count="1" fo:column-gap="0in"/>
</style:section-properties>
</style:style>
<style:page-layout style:name="pm1"> <style:page-layout style:name="pm1">
<style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in"> <style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
<style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
</style:page-layout-properties> </style:page-layout-properties>
<style:header-style/> <style:header-style/>
<style:footer-style/> <style:footer-style>
<style:header-footer-properties fo:min-height="0in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-top="0.1965in"/>
</style:footer-style>
</style:page-layout> </style:page-layout>
<style:page-layout style:name="pm2"> <style:page-layout style:name="pm2">
<style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in"> <style:page-layout-properties fo:page-width="8.5in" fo:page-height="11in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
<style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/> <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
</style:page-layout-properties> </style:page-layout-properties>
<style:header-style> <style:header-style>
<style:header-footer-properties fo:min-height="0in" fo:margin-bottom="0.1965in"/> <style:header-footer-properties fo:min-height="0in" fo:margin-left="0in" fo:margin-right="0in" fo:margin-bottom="0.1965in"/>
</style:header-style> </style:header-style>
<style:footer-style/> <style:footer-style/>
</style:page-layout> </style:page-layout>
<number:date-style style:name="N37" number:automatic-order="true"> <number:date-style style:name="N79" number:automatic-order="true">
<number:month number:style="long"/> <number:day-of-week number:style="long"/>
<number:text>/</number:text> <number:text>, </number:text>
<number:day number:style="long"/> <number:month number:style="long" number:textual="true"/>
<number:text>/</number:text> <number:text> </number:text>
<number:year/> <number:day/>
<number:text>, </number:text>
<number:year number:style="long"/>
</number:date-style> </number:date-style>
</office:automatic-styles> </office:automatic-styles>
<office:master-styles> <office:master-styles>
<style:master-page style:name="Standard" style:page-layout-name="pm1"/> <style:master-page style:name="Standard" style:page-layout-name="pm1">
<style:footer>
<text:p text:style-name="P1">BDisk Manual<text:tab/><text:tab/>Page <text:page-number text:select-page="current">2</text:page-number> of <text:page-count>3</text:page-count></text:p>
</style:footer>
</style:master-page>
<style:master-page style:name="First_20_Page" style:display-name="First Page" style:page-layout-name="pm2" style:next-style-name="Standard"> <style:master-page style:name="First_20_Page" style:display-name="First Page" style:page-layout-name="pm2" style:next-style-name="Standard">
<style:header> <style:header>
<text:p text:style-name="P1"><text:date style:data-style-name="N37" text:date-value="2016-12-01T12:43:11.380222910" text:fixed="true">12/01/16</text:date></text:p> <text:p text:style-name="P2"><text:modification-date style:data-style-name="N79">Saturday, December 3, 2016</text:modification-date></text:p>
</style:header> </style:header>
</style:master-page> </style:master-page>
</office:master-styles> </office:master-styles>
<office:body> <office:body>
<office:text> <office:text text:use-soft-page-breaks="true">
<office:forms form:automatic-focus="false" form:apply-design-mode="false"/> <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
<text:sequence-decls> <text:sequence-decls>
<text:sequence-decl text:display-outline-level="0" text:name="Illustration"/> <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
@ -312,13 +470,125 @@
<text:sequence-decl text:display-outline-level="0" text:name="Drawing"/> <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
</text:sequence-decls><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="page" text:anchor-page-number="1" svg:x="1in" svg:width="6.4374in" draw:z-index="0"> </text:sequence-decls><draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="page" text:anchor-page-number="1" svg:x="1in" svg:width="6.4374in" draw:z-index="0">
<draw:text-box fo:min-height="0.2in"> <draw:text-box fo:min-height="0.2in">
<text:p text:style-name="P4">BDISK</text:p> <text:p text:style-name="P9">BDISK</text:p>
<text:p text:style-name="P5">Manual v1.0</text:p> <text:p text:style-name="P10">Manual v1.0</text:p>
<text:p text:style-name="P2">Brent Saner</text:p> <text:p text:style-name="P5">Brent Saner</text:p>
<text:p text:style-name="P2"><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=BDisk Manual" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">bts@square-r00t.net</text:a></text:p> <text:p text:style-name="P5"><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=BDisk%20Manual" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">bts@square-r00t.net</text:a></text:p>
</draw:text-box> </draw:text-box>
</draw:frame> </draw:frame>
<text:p text:style-name="P3"/> <text:p text:style-name="P12"/>
<text:table-of-content text:style-name="Sect1" text:protected="true" text:name="Table of Contents1">
<text:table-of-content-source text:outline-level="10">
<text:index-title-template text:style-name="Contents_20_Heading">Table of Contents</text:index-title-template>
<text:table-of-content-entry-template text:outline-level="1" text:style-name="Contents_20_1">
<text:index-entry-link-start text:style-name="Default_20_Style"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="2" text:style-name="Contents_20_2">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="3" text:style-name="Contents_20_3">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="4" text:style-name="Contents_20_4">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="5" text:style-name="Contents_20_5">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="6" text:style-name="Contents_20_6">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="7" text:style-name="Contents_20_7">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="8" text:style-name="Contents_20_8">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="9" text:style-name="Contents_20_9">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
<text:table-of-content-entry-template text:outline-level="10" text:style-name="Contents_20_10">
<text:index-entry-link-start text:style-name="Index_20_Link"/>
<text:index-entry-chapter/>
<text:index-entry-text/>
<text:index-entry-tab-stop style:type="right" style:leader-char="."/>
<text:index-entry-page-number/>
<text:index-entry-link-end/>
</text:table-of-content-entry-template>
</text:table-of-content-source>
<text:index-body>
<text:index-title text:style-name="Sect1" text:name="Table of Contents1_Head">
<text:p text:style-name="P14">Table of Contents</text:p>
</text:index-title>
<text:p text:style-name="P18"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc237_1260022884" text:style-name="Default_20_Style" text:visited-style-name="Default_20_Style">Chapter I: Introduction<text:tab/>3</text:a></text:p>
<text:p text:style-name="P20"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc254_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.1: What is BDisk?<text:tab/>3</text:a></text:p>
<text:p text:style-name="P20"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc379_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.2: Who wrote it?<text:tab/>3</text:a></text:p>
<text:p text:style-name="P20"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc256_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.3: What is this document?<text:tab/>3</text:a></text:p>
<text:p text:style-name="P20"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc173_449581326" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.4: Conventions used in this document<text:tab/>3</text:a></text:p>
<text:p text:style-name="P20"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc258_1260022884" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link"><text:s/>Section I.5: Further information/resources<text:tab/>3</text:a></text:p>
<text:p text:style-name="P21"><text:a xlink:type="simple" xlink:href="#__RefHeading___Toc175_449581326" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">I.5.i: For Developers<text:tab/>3</text:a></text:p>
</text:index-body>
</text:table-of-content>
<text:p text:style-name="P11"/>
<text:h text:style-name="P15" text:outline-level="1"><text:bookmark-start text:name="__RefHeading___Toc237_1260022884"/>Introduction<text:bookmark-end text:name="__RefHeading___Toc237_1260022884"/></text:h>
<text:h text:style-name="P16" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc254_1260022884"/>What is BDisk?<text:bookmark-end text:name="__RefHeading___Toc254_1260022884"/></text:h>
<text:p text:style-name="P6"><text:tab/>BDisk refers to both a live distribution I use in my own uses (for rescue situations, recovery, etc.) but foremost and most importantly, it refers to the tool I use for <text:span text:style-name="T1">building</text:span><text:span text:style-name="T2"> that distribution. This is what this project and documentation refer to when the word “BDisk” is used.</text:span></text:p>
<text:p text:style-name="First_20_line_20_indent"><text:tab/>BDisk is <text:a xlink:type="simple" xlink:href="https://www.gnu.org/licenses/gpl-3.0.en.html" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">GPLv3</text:a>-licensed. This means that you can use it for business reasons, personal reasons, modify it, etc. There are a few restrictions I retain, however, on this (dont worry; theyre all in line with the GPLv3). You can find the full license in <text:span text:style-name="T1">docs/LICENSE</text:span>.</text:p>
<text:h text:style-name="P16" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc379_1260022884"/>Who wrote it?<text:bookmark-end text:name="__RefHeading___Toc379_1260022884"/></text:h>
<text:p text:style-name="P6"><text:tab/>I (Brent Saner) am a GNU/Linux Systems/Network Administrator/Engineer- I wear a lot of hats. I have a lot of side projects to keep me busy when Im not working at <text:span text:style-name="T5">${dayjob}</text:span><text:span text:style-name="T7">, </text:span><text:span text:style-name="T8">mostly to assist in </text:span><text:span text:style-name="T6">other</text:span><text:span text:style-name="T8"> side projects and become more efficient and proficient.</text:span></text:p>
<text:h text:style-name="P17" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc256_1260022884"/><text:span text:style-name="T9">What is this document?</text:span><text:bookmark-end text:name="__RefHeading___Toc256_1260022884"/></text:h>
<text:h text:style-name="P16" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc173_449581326"/>Conventions used in this document<text:bookmark-end text:name="__RefHeading___Toc173_449581326"/></text:h>
<text:h text:style-name="P16" text:outline-level="2"><text:bookmark-start text:name="__RefHeading___Toc258_1260022884"/>Further information/resources<text:bookmark-end text:name="__RefHeading___Toc258_1260022884"/></text:h>
<text:h text:style-name="P19" text:outline-level="3">For Users</text:h>
<text:p text:style-name="P13"><text:tab/><text:span text:style-name="T10">If you encounter any bugs (or have any suggestions on how to improve BDisk!), please file a bug report in my </text:span><text:a xlink:type="simple" xlink:href="https://bugs.square-r00t.net/index.php?project=2" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link"><text:span text:style-name="T10">bug tracker</text:span></text:a><text:span text:style-name="T10">.</text:span></text:p>
<text:h text:style-name="P19" text:outline-level="3"><text:bookmark-start text:name="__RefHeading___Toc175_449581326"/>For Developers<text:bookmark-end text:name="__RefHeading___Toc175_449581326"/></text:h>
<text:p text:style-name="P8"><text:span text:style-name="T3"><text:tab/>The source is available to browse </text:span><text:a xlink:type="simple" xlink:href="https://git.square-r00t.net/BDisk/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">online</text:a><text:span text:style-name="T3"> or can be checked out via </text:span><text:a xlink:type="simple" xlink:href="https://git-scm.com/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">git</text:a><text:span text:style-name="T3"> (via the </text:span><text:a xlink:type="simple" xlink:href="git://git.square-r00t.net/bdisk.git" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">git protocol</text:a><text:span text:style-name="T3"> or </text:span><text:a xlink:type="simple" xlink:href="https://git.square-r00t.net/BDisk" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">http protocol</text:a><text:span text:style-name="T3">). It is also available via Arch Linuxs </text:span><text:a xlink:type="simple" xlink:href="https://aur.archlinux.org/packages/bdisk/" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">AUR</text:a><text:span text:style-name="T3">. If you are interested in packaging </text:span><text:span text:style-name="T4">BDisk for other distributions, please feel free to </text:span><text:a xlink:type="simple" xlink:href="mailto:bts@square-r00t.net?subject=[BDISK] Packaging" text:style-name="Internet_20_link" text:visited-style-name="Visited_20_Internet_20_Link">contact me</text:a><text:span text:style-name="T4">.</text:span></text:p>
<text:p text:style-name="P7"/>
</office:text> </office:text>
</office:body> </office:body>
</office:document> </office:document>

View File

@ -0,0 +1,9 @@
#!/bin/bash

for i in pacman apacman;
do
if [ -f /usr/local/${i}.db.tar.xz ];
then
/usr/bin/tar -Jxf /usr/local/${i}.db.tar.xz -C /var/lib/${i}/
fi
done

View File

@ -3,7 +3,8 @@ Description=Restoring Installed Packages DB


[Service] [Service]
Type=oneshot Type=oneshot
ExecStart=/usr/bin/tar -Jxf /usr/local/pacman.db.tar.xz -C /var/lib/pacman/ #ExecStart=/usr/bin/tar -Jxf /usr/local/pacman.db.tar.xz -C /var/lib/pacman/
ExecStart=/etc/systemd/system/scripts/pacmandb.sh
RemainAfterExit=yes RemainAfterExit=yes


[Install] [Install]

View File

@ -12,7 +12,6 @@ exec 1>/var/log/chroot_install.log 2>&1


# we need this fix before anything. # we need this fix before anything.
dirmngr </dev/null > /dev/null 2>&1 dirmngr </dev/null > /dev/null 2>&1
locale-gen


cleanPacorigs() cleanPacorigs()
{ {
@ -45,7 +44,9 @@ pacman -Syy
# Just in case. # Just in case.
cleanPacorigs cleanPacorigs
# Install some prereqs # Install some prereqs
pacman -S --noconfirm --needed base syslinux wget rsync unzip jshon sed sudo abs xmlto bc docbook-xsl git pacman -S sed
pacman -S --noconfirm --needed base syslinux wget rsync unzip jshon sudo abs xmlto bc docbook-xsl git
locale-gen
# And get rid of files it wants to replace # And get rid of files it wants to replace
cleanPacorigs cleanPacorigs
# Force update all currently installed packages in case the tarball's out of date # Force update all currently installed packages in case the tarball's out of date
@ -175,6 +176,8 @@ fi
paccache -rk0 paccache -rk0
localepurge-config localepurge-config
localepurge localepurge
localepurge-config
localepurge
rm -f /root/.bash_history rm -f /root/.bash_history
rm -f /root/.viminfo rm -f /root/.viminfo
rm -f /root/apacman-*.pkg.tar.xz rm -f /root/apacman-*.pkg.tar.xz