From c6a837d1fe550a8aa331a739e6341981ab7e4fe2 Mon Sep 17 00:00:00 2001 From: r00t Date: Tue, 8 May 2018 22:26:17 -0400 Subject: [PATCH] stubbing out 4.x --- .../overlay/i686/.keepme.j2 => bdisk/BIOS.py | 0 .../overlay/x86_64/.keepme.j2 => bdisk/GPG.py | 0 .../i686/.keepme.j2 => bdisk/SSL.py | 0 .../x86_64/.keepme.j2 => bdisk/UEFI.py | 0 overlay/i686/.keepme => bdisk/__init__.py | 0 bdisk/bGPG.py | 228 ------ bdisk/bSSL.py | 196 ----- bdisk/bchroot.py | 156 ---- bdisk/bdisk.py | 71 -- bdisk/bsync.py | 187 ----- bdisk/build.py | 416 ----------- overlay/x86_64/.keepme => bdisk/chroot.py | 0 bdisk/confparse.py | 0 bdisk/env_prep.py | 0 bdisk/git.py | 0 bdisk/host.py | 194 ----- bdisk/iPXE.py | 0 bdisk/ipxe.py | 304 -------- bdisk/main.py | 0 bdisk/prep.py | 375 ---------- bdisk/sync.py | 0 bdisk/version.py | 1 + docs/COPYING | 674 ------------------ docs/CREDITS | 12 - docs/FAQ | 33 - docs/LICENSE | 1 - docs/README | 8 - docs/THANKS | 1 - docs/TODO | 60 -- docs/manual/BODY.adoc | 6 - docs/manual/BOOT.adoc | 8 - docs/manual/DEV.adoc | 8 - docs/manual/FAQ.adoc | 8 - docs/manual/FOOT.adoc | 8 - docs/manual/FURTHER.adoc | 11 - docs/manual/HEAD.adoc | 48 -- docs/manual/USER.adoc | 26 - docs/manual/dev/FUNCTIONS.adoc | 24 - docs/manual/dev/functions/BCHROOT.adoc | 29 - docs/manual/dev/functions/BGPG.adoc | 41 -- docs/manual/dev/functions/BSSL.adoc | 64 -- docs/manual/dev/functions/BSYNC.adoc | 26 - docs/manual/dev/functions/BUILD.adoc | 43 -- docs/manual/dev/functions/HOST.adoc | 42 -- docs/manual/dev/functions/IPXE.adoc | 22 - docs/manual/dev/functions/PREP.adoc | 52 -- docs/manual/faq/ALTERNATIVES.adoc | 83 --- docs/manual/faq/GETVERSION.adoc | 3 - docs/manual/faq/INDEX.adoc | 5 - docs/manual/faq/ISOBIG.adoc | 5 - docs/manual/faq/LONGTIME.adoc | 94 --- docs/manual/faq/WHYARCH.adoc | 5 - docs/manual/further/BUGS.adoc | 18 - docs/manual/further/CONTACT.adoc | 10 - docs/manual/further/PASSWORDS.adoc | 95 --- docs/manual/images/fig1.1.png | Bin 259654 -> 0 bytes docs/manual/netboot/HOWTO.adoc | 128 ---- docs/manual/user/ADVANCED.adoc | 14 - docs/manual/user/BUILDING.adoc | 15 - docs/manual/user/BUILDINI.adoc | 669 ----------------- docs/manual/user/GETTING_STARTED.adoc | 80 --- docs/manual/user/IMPORTANT_CONCEPTS.adoc | 51 -- docs/manual/user/PROJECT_LAYOUT.adoc | 81 --- docs/manual/user/advanced/AUTOLOGIN.adoc | 10 - docs/manual/user/advanced/BUILDING.adoc | 3 - docs/manual/user/advanced/DESKTOP.adoc | 30 - docs/manual/user/advanced/SOFTWARE.adoc | 20 - docs/manual/user/advanced/SSH.adoc | 74 -- docs/manual/user/advanced/VPN.adoc | 13 - docs/manual/user/fslayout/BDISK.adoc | 13 - docs/manual/user/fslayout/DOCS.adoc | 15 - docs/manual/user/fslayout/EXAMPLES.adoc | 3 - docs/manual/user/fslayout/EXTRA.adoc | 21 - docs/manual/user/fslayout/OVERLAY.adoc | 13 - docs/manual/user/fslayout/PREBUILD.adoc | 13 - docs/manual/user/fslayout/TEMPLATES.adoc | 48 -- examples/HTTP/boot.php | 9 - examples/HTTP/example.32.img | 1 - examples/HTTP/example.32.kern | 1 - examples/HTTP/example.64.img | 1 - examples/HTTP/example.64.kern | 1 - .../to/squashes/EXAMPLE/i686/airootfs.md5 | 1 - .../to/squashes/EXAMPLE/i686/airootfs.sfs | 1 - .../to/squashes/EXAMPLE/i686/airootfs.sha256 | 1 - .../to/squashes/EXAMPLE/x86_64/airootfs.md5 | 1 - .../to/squashes/EXAMPLE/x86_64/airootfs.sfs | 1 - .../squashes/EXAMPLE/x86_64/airootfs.sha256 | 1 - extra/aif.png | Bin 152 -> 0 bytes extra/bdisk.png | Bin 1154437 -> 0 bytes extra/bdisk.png.xcf | Bin 219311 -> 0 bytes extra/bin/hashgen.py | 8 - extra/dist.build.ini | 103 --- extra/external/SMC_DumpKey/README | 3 - extra/external/SMC_DumpKey/SmcDumpKey.c | 193 ----- extra/modules/distro/TEMPLATE | 48 -- extra/modules/distro/arch.py | 11 - extra/modules/distro/centos.py | 11 - extra/modules/distro/debian.py | 12 - extra/modules/distro/fedora.py | 11 - extra/modules/distro/rhel.py | 11 - extra/modules/distro/sles.py | 11 - extra/modules/distro/ubuntu.py | 12 - extra/pkg.build.ini | 102 --- extra/pre-build.d/etc/apacman.conf | 62 -- extra/pre-build.d/etc/customizepkg.d/autopsy | 4 - extra/pre-build.d/etc/customizepkg.d/dd_rhelp | 3 - .../pre-build.d/etc/customizepkg.d/etc-update | 3 - extra/pre-build.d/etc/customizepkg.d/fang | 3 - extra/pre-build.d/etc/customizepkg.d/libnfc | 3 - extra/pre-build.d/etc/customizepkg.d/lsiutil | 3 - extra/pre-build.d/etc/customizepkg.d/ms-sys | 4 - extra/pre-build.d/etc/customizepkg.d/whdd | 7 - .../customizepkg.d/wifite-mod-pixiewps-git | 3 - extra/pre-build.d/etc/initcpio/hooks/livecd | 7 - extra/pre-build.d/etc/initcpio/install/livecd | 38 - extra/pre-build.d/etc/locale.conf | 14 - extra/pre-build.d/etc/locale.gen | 489 ------------- extra/pre-build.d/etc/locale.nopurge | 56 -- extra/pre-build.d/etc/mkinitcpio.conf | 69 -- .../pre-build.d/etc/mkinitcpio.d/linux.preset | 15 - extra/pre-build.d/etc/motd | 1 - extra/pre-build.d/etc/os-release | 7 - .../etc/pacman.d/hooks/archiso.hook | 10 - extra/pre-build.d/etc/pacman.d/mirrorlist | 6 - extra/pre-build.d/etc/resolvconf.conf | 17 - .../etc/systemd/scripts/livecd.fix.sh | 72 -- .../etc/systemd/scripts/pacmandb.sh | 9 - .../etc/systemd/system/livecdfix.service | 11 - .../NetworkManager-dispatcher.service | 1 - .../NetworkManager.service | 1 - .../multi-user.target.wants/livecdfix.service | 1 - .../multi-user.target.wants/pacmandb.service | 1 - .../etc/systemd/system/pacmandb.service | 11 - extra/pre-build.d/i686/etc/pacman.conf | 92 --- extra/pre-build.d/i686/root/iso.pkgs.arch | 2 - extra/pre-build.d/i686/root/packages.arch | 2 - extra/pre-build.d/i686/root/pre-build.arch.sh | 2 - .../root/apacman-3.1-1-any.pkg.tar.xz | Bin 55592 -> 0 bytes extra/pre-build.d/root/iso.pkgs.both | 46 -- extra/pre-build.d/root/packages.both | 350 --------- extra/pre-build.d/root/packages.both.FULL | 350 --------- extra/pre-build.d/root/packages.both.SMALL | 4 - extra/pre-build.d/root/pre-build.sh | 212 ------ extra/pre-build.d/x86_64/etc/pacman.conf | 101 --- extra/pre-build.d/x86_64/root/iso.pkgs.arch | 3 - extra/pre-build.d/x86_64/root/packages.arch | 2 - .../pre-build.d/x86_64/root/pre-build.arch.sh | 2 - extra/templates/BIOS/isolinux.cfg.arch.j2 | 74 -- extra/templates/BIOS/isolinux.cfg.multi.j2 | 111 --- extra/templates/EFI/base.conf.j2 | 5 - extra/templates/EFI/loader.conf.j2 | 3 - extra/templates/EFI/ram.conf.j2 | 5 - extra/templates/EFI/uefi1.conf.j2 | 3 - extra/templates/EFI/uefi2.conf.j2 | 3 - extra/templates/GPG.j2 | 14 - extra/templates/VERSION_INFO.txt.j2 | 6 - extra/templates/iPXE/BIOS/isolinux.cfg.j2 | 7 - extra/templates/iPXE/EFI/base.conf.j2 | 3 - extra/templates/iPXE/EFI/loader.conf.j2 | 2 - extra/templates/iPXE/EMBED.j2 | 10 - .../iPXE/patches/01.git-version.patch.j2 | 32 - .../templates/iPXE/patches/02.banner.patch.j2 | 41 -- extra/templates/iPXE/ssl/openssl.cnf | 34 - extra/templates/pre-build.d/etc/hostname.j2 | 1 - extra/templates/pre-build.d/root/VARS.txt.j2 | 12 - setup.py | 28 + version.py | 1 + 167 files changed, 30 insertions(+), 8034 deletions(-) rename extra/templates/overlay/i686/.keepme.j2 => bdisk/BIOS.py (100%) rename extra/templates/overlay/x86_64/.keepme.j2 => bdisk/GPG.py (100%) rename extra/templates/pre-build.d/i686/.keepme.j2 => bdisk/SSL.py (100%) rename extra/templates/pre-build.d/x86_64/.keepme.j2 => bdisk/UEFI.py (100%) rename overlay/i686/.keepme => bdisk/__init__.py (100%) delete mode 100755 bdisk/bGPG.py delete mode 100755 bdisk/bSSL.py delete mode 100755 bdisk/bchroot.py delete mode 100755 bdisk/bdisk.py delete mode 100755 bdisk/bsync.py delete mode 100755 bdisk/build.py rename overlay/x86_64/.keepme => bdisk/chroot.py (100%) create mode 100644 bdisk/confparse.py create mode 100644 bdisk/env_prep.py create mode 100644 bdisk/git.py delete mode 100755 bdisk/host.py create mode 100644 bdisk/iPXE.py delete mode 100755 bdisk/ipxe.py create mode 100644 bdisk/main.py delete mode 100755 bdisk/prep.py create mode 100644 bdisk/sync.py create mode 100644 bdisk/version.py delete mode 100644 docs/COPYING delete mode 100644 docs/CREDITS delete mode 100644 docs/FAQ delete mode 120000 docs/LICENSE delete mode 100644 docs/README delete mode 120000 docs/THANKS delete mode 100644 docs/TODO delete mode 100644 docs/manual/BODY.adoc delete mode 100644 docs/manual/BOOT.adoc delete mode 100644 docs/manual/DEV.adoc delete mode 100644 docs/manual/FAQ.adoc delete mode 100644 docs/manual/FOOT.adoc delete mode 100644 docs/manual/FURTHER.adoc delete mode 100644 docs/manual/HEAD.adoc delete mode 100644 docs/manual/USER.adoc delete mode 100644 docs/manual/dev/FUNCTIONS.adoc delete mode 100644 docs/manual/dev/functions/BCHROOT.adoc delete mode 100644 docs/manual/dev/functions/BGPG.adoc delete mode 100644 docs/manual/dev/functions/BSSL.adoc delete mode 100644 docs/manual/dev/functions/BSYNC.adoc delete mode 100644 docs/manual/dev/functions/BUILD.adoc delete mode 100644 docs/manual/dev/functions/HOST.adoc delete mode 100644 docs/manual/dev/functions/IPXE.adoc delete mode 100644 docs/manual/dev/functions/PREP.adoc delete mode 100644 docs/manual/faq/ALTERNATIVES.adoc delete mode 100644 docs/manual/faq/GETVERSION.adoc delete mode 100644 docs/manual/faq/INDEX.adoc delete mode 100644 docs/manual/faq/ISOBIG.adoc delete mode 100644 docs/manual/faq/LONGTIME.adoc delete mode 100644 docs/manual/faq/WHYARCH.adoc delete mode 100644 docs/manual/further/BUGS.adoc delete mode 100644 docs/manual/further/CONTACT.adoc delete mode 100644 docs/manual/further/PASSWORDS.adoc delete mode 100644 docs/manual/images/fig1.1.png delete mode 100644 docs/manual/netboot/HOWTO.adoc delete mode 100644 docs/manual/user/ADVANCED.adoc delete mode 100644 docs/manual/user/BUILDING.adoc delete mode 100644 docs/manual/user/BUILDINI.adoc delete mode 100644 docs/manual/user/GETTING_STARTED.adoc delete mode 100644 docs/manual/user/IMPORTANT_CONCEPTS.adoc delete mode 100644 docs/manual/user/PROJECT_LAYOUT.adoc delete mode 100644 docs/manual/user/advanced/AUTOLOGIN.adoc delete mode 100644 docs/manual/user/advanced/BUILDING.adoc delete mode 100644 docs/manual/user/advanced/DESKTOP.adoc delete mode 100644 docs/manual/user/advanced/SOFTWARE.adoc delete mode 100644 docs/manual/user/advanced/SSH.adoc delete mode 100644 docs/manual/user/advanced/VPN.adoc delete mode 100644 docs/manual/user/fslayout/BDISK.adoc delete mode 100644 docs/manual/user/fslayout/DOCS.adoc delete mode 100644 docs/manual/user/fslayout/EXAMPLES.adoc delete mode 100644 docs/manual/user/fslayout/EXTRA.adoc delete mode 100644 docs/manual/user/fslayout/OVERLAY.adoc delete mode 100644 docs/manual/user/fslayout/PREBUILD.adoc delete mode 100644 docs/manual/user/fslayout/TEMPLATES.adoc delete mode 100644 examples/HTTP/boot.php delete mode 100644 examples/HTTP/example.32.img delete mode 100644 examples/HTTP/example.32.kern delete mode 100644 examples/HTTP/example.64.img delete mode 100644 examples/HTTP/example.64.kern delete mode 100644 examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.md5 delete mode 100644 examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sfs delete mode 100644 examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sha256 delete mode 100644 examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.md5 delete mode 100644 examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sfs delete mode 100644 examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sha256 delete mode 100644 extra/aif.png delete mode 100644 extra/bdisk.png delete mode 100644 extra/bdisk.png.xcf delete mode 100755 extra/bin/hashgen.py delete mode 100644 extra/dist.build.ini delete mode 100644 extra/external/SMC_DumpKey/README delete mode 100644 extra/external/SMC_DumpKey/SmcDumpKey.c delete mode 100644 extra/modules/distro/TEMPLATE delete mode 100644 extra/modules/distro/arch.py delete mode 100644 extra/modules/distro/centos.py delete mode 100644 extra/modules/distro/debian.py delete mode 100644 extra/modules/distro/fedora.py delete mode 100644 extra/modules/distro/rhel.py delete mode 100644 extra/modules/distro/sles.py delete mode 100644 extra/modules/distro/ubuntu.py delete mode 100644 extra/pkg.build.ini delete mode 100644 extra/pre-build.d/etc/apacman.conf delete mode 100755 extra/pre-build.d/etc/customizepkg.d/autopsy delete mode 100755 extra/pre-build.d/etc/customizepkg.d/dd_rhelp delete mode 100755 extra/pre-build.d/etc/customizepkg.d/etc-update delete mode 100755 extra/pre-build.d/etc/customizepkg.d/fang delete mode 100755 extra/pre-build.d/etc/customizepkg.d/libnfc delete mode 100755 extra/pre-build.d/etc/customizepkg.d/lsiutil delete mode 100755 extra/pre-build.d/etc/customizepkg.d/ms-sys delete mode 100755 extra/pre-build.d/etc/customizepkg.d/whdd delete mode 100755 extra/pre-build.d/etc/customizepkg.d/wifite-mod-pixiewps-git delete mode 100644 extra/pre-build.d/etc/initcpio/hooks/livecd delete mode 100644 extra/pre-build.d/etc/initcpio/install/livecd delete mode 100644 extra/pre-build.d/etc/locale.conf delete mode 100644 extra/pre-build.d/etc/locale.gen delete mode 100644 extra/pre-build.d/etc/locale.nopurge delete mode 100644 extra/pre-build.d/etc/mkinitcpio.conf delete mode 100644 extra/pre-build.d/etc/mkinitcpio.d/linux.preset delete mode 100644 extra/pre-build.d/etc/motd delete mode 100644 extra/pre-build.d/etc/os-release delete mode 100644 extra/pre-build.d/etc/pacman.d/hooks/archiso.hook delete mode 100644 extra/pre-build.d/etc/pacman.d/mirrorlist delete mode 100644 extra/pre-build.d/etc/resolvconf.conf delete mode 100755 extra/pre-build.d/etc/systemd/scripts/livecd.fix.sh delete mode 100755 extra/pre-build.d/etc/systemd/scripts/pacmandb.sh delete mode 100644 extra/pre-build.d/etc/systemd/system/livecdfix.service delete mode 120000 extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager-dispatcher.service delete mode 120000 extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager.service delete mode 120000 extra/pre-build.d/etc/systemd/system/multi-user.target.wants/livecdfix.service delete mode 120000 extra/pre-build.d/etc/systemd/system/multi-user.target.wants/pacmandb.service delete mode 100644 extra/pre-build.d/etc/systemd/system/pacmandb.service delete mode 100644 extra/pre-build.d/i686/etc/pacman.conf delete mode 100644 extra/pre-build.d/i686/root/iso.pkgs.arch delete mode 100644 extra/pre-build.d/i686/root/packages.arch delete mode 100755 extra/pre-build.d/i686/root/pre-build.arch.sh delete mode 100644 extra/pre-build.d/root/apacman-3.1-1-any.pkg.tar.xz delete mode 100644 extra/pre-build.d/root/iso.pkgs.both delete mode 100644 extra/pre-build.d/root/packages.both delete mode 100644 extra/pre-build.d/root/packages.both.FULL delete mode 100644 extra/pre-build.d/root/packages.both.SMALL delete mode 100755 extra/pre-build.d/root/pre-build.sh delete mode 100644 extra/pre-build.d/x86_64/etc/pacman.conf delete mode 100644 extra/pre-build.d/x86_64/root/iso.pkgs.arch delete mode 100644 extra/pre-build.d/x86_64/root/packages.arch delete mode 100755 extra/pre-build.d/x86_64/root/pre-build.arch.sh delete mode 100644 extra/templates/BIOS/isolinux.cfg.arch.j2 delete mode 100644 extra/templates/BIOS/isolinux.cfg.multi.j2 delete mode 100644 extra/templates/EFI/base.conf.j2 delete mode 100644 extra/templates/EFI/loader.conf.j2 delete mode 100644 extra/templates/EFI/ram.conf.j2 delete mode 100644 extra/templates/EFI/uefi1.conf.j2 delete mode 100644 extra/templates/EFI/uefi2.conf.j2 delete mode 100644 extra/templates/GPG.j2 delete mode 100644 extra/templates/VERSION_INFO.txt.j2 delete mode 100644 extra/templates/iPXE/BIOS/isolinux.cfg.j2 delete mode 100644 extra/templates/iPXE/EFI/base.conf.j2 delete mode 100644 extra/templates/iPXE/EFI/loader.conf.j2 delete mode 100644 extra/templates/iPXE/EMBED.j2 delete mode 100644 extra/templates/iPXE/patches/01.git-version.patch.j2 delete mode 100644 extra/templates/iPXE/patches/02.banner.patch.j2 delete mode 100644 extra/templates/iPXE/ssl/openssl.cnf delete mode 100644 extra/templates/pre-build.d/etc/hostname.j2 delete mode 100644 extra/templates/pre-build.d/root/VARS.txt.j2 create mode 100644 setup.py create mode 120000 version.py diff --git a/extra/templates/overlay/i686/.keepme.j2 b/bdisk/BIOS.py similarity index 100% rename from extra/templates/overlay/i686/.keepme.j2 rename to bdisk/BIOS.py diff --git a/extra/templates/overlay/x86_64/.keepme.j2 b/bdisk/GPG.py similarity index 100% rename from extra/templates/overlay/x86_64/.keepme.j2 rename to bdisk/GPG.py diff --git a/extra/templates/pre-build.d/i686/.keepme.j2 b/bdisk/SSL.py similarity index 100% rename from extra/templates/pre-build.d/i686/.keepme.j2 rename to bdisk/SSL.py diff --git a/extra/templates/pre-build.d/x86_64/.keepme.j2 b/bdisk/UEFI.py similarity index 100% rename from extra/templates/pre-build.d/x86_64/.keepme.j2 rename to bdisk/UEFI.py diff --git a/overlay/i686/.keepme b/bdisk/__init__.py similarity index 100% rename from overlay/i686/.keepme rename to bdisk/__init__.py diff --git a/bdisk/bGPG.py b/bdisk/bGPG.py deleted file mode 100755 index aa6f2b4..0000000 --- a/bdisk/bGPG.py +++ /dev/null @@ -1,228 +0,0 @@ -import os -from io import BytesIO -import subprocess -import datetime -import jinja2 -import gpgme -import psutil - -def genGPG(conf): - # https://media.readthedocs.org/pdf/pygpgme/latest/pygpgme.pdf - build = conf['build'] - dlpath = build['dlpath'] - bdisk = conf['bdisk'] - gpghome = conf['gpg']['mygpghome'] - distkeys = [] - gpgkeyserver = [] - for a in conf['build']['arch']: - keysrv = conf['src'][a]['gpgkeyserver'] - distkey = conf['src'][a]['gpgkey'] - if keysrv and (keysrv not in gpgkeyserver): - gpgkeyserver.append(keysrv) - if distkey and(distkey not in distkeys): - distkeys.append(distkey) - templates_dir = '{0}/extra/templates'.format(build['basedir']) - mykey = False - pkeys = [] - killStaleAgent(conf) - if conf['gpg']['mygpgkey'] != '': - mykey = conf['gpg']['mygpgkey'] - if gpghome == '': - # Let's try the default. - gpghome = '{0}/.gnupg'.format(os.path.expanduser("~")) - else: - # No key ID was specified. - if gpghome == '': - # We'll generate a key if we can't find one here. - gpghome = build['dlpath'] + '/.gnupg' - killStaleAgent(conf) - os.environ['GNUPGHOME'] = gpghome - gpg = gpgme.Context() - # do we need to add a keyserver? - if len(gpgkeyserver) != 0: - dirmgr = '{0}/dirmngr.conf'.format(gpghome) - for s in gpgkeyserver: - if os.path.isfile(dirmgr): - with open(dirmgr, 'r+') as f: - findme = any(s in line for line in f) - if not findme: - f.seek(0, os.SEEK_END) - f.write("\n# Added by {0}.\nkeyserver {1}\n".format( - bdisk['pname'], - s)) - if mykey: - try: - pkeys.append(gpg.get_key(mykey, True)) - except: - exit('{0}: ERROR: You specified using {1} but we have no secret key for that ID!'.format( - datetime.datetime.now(), - mykey)) - else: - for key in gpg.keylist(None, True): - if key.can_sign: - pkeys.append(key) - break - if len(pkeys) == 0: - print("{0}: [GPG] Generating a GPG key...".format(datetime.datetime.now())) - loader = jinja2.FileSystemLoader(templates_dir) - env = jinja2.Environment(loader = loader) - tpl = env.get_template('GPG.j2') - tpl_out = tpl.render(build = build, bdisk = bdisk) - privkey = gpg.get_key(gpg.genkey(tpl_out).fpr, True) - pkeys.append(privkey) - # do we need to add a keyserver? this is for the freshly-generated GNUPGHOME - if len(gpgkeyserver) != 0: - dirmgr = '{0}/dirmngr.conf'.format(gpghome) - for s in gpgkeyserver: - with open(dirmgr, 'r+') as f: - findme = any(s in line for line in f) - if not findme: - f.seek(0, os.SEEK_END) - f.write("\n# Added by {0}.\nkeyserver {1}\n".format( - bdisk['pname'], - s)) - gpg.signers = pkeys - # Now we try to find and add the key for the base image. - gpg.keylist_mode = gpgme.KEYLIST_MODE_EXTERN # remote (keyserver) - if len(distkeys) > 0: # testing - for k in distkeys: - key = gpg.get_key(k) - importkey = key.subkeys[0].fpr - gpg.keylist_mode = gpgme.KEYLIST_MODE_LOCAL # local keyring (default) - DEVNULL = open(os.devnull, 'w') - print('{0}: [GPG] Importing {1} and signing it for verification purposes...'.format( - datetime.datetime.now(), - distkey)) - cmd = ['/usr/bin/gpg', - '--recv-keys', - '--batch', - '--yes', - '0x{0}'.format(importkey)] - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - sigkeys = [] - for i in gpg.get_key(importkey).subkeys: - sigkeys.append(i.fpr) - cmd = ['/usr/bin/gpg', - '--batch', - '--yes', - '--lsign-key', - '0x{0}'.format(importkey)] - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - # We need to expose this key to the chroots, too, so we need to export it. - with open('{0}/gpgkey.pub'.format(dlpath), 'wb') as f: - gpg.export(pkeys[0].subkeys[0].keyid, f) - return(gpg) - -def killStaleAgent(conf): - # Kill off any stale GPG agents running. - # Probably not even needed, but good to have. - chrootdir = conf['build']['chrootdir'] - gpgpath = conf['gpg']['mygpghome'] - procs = psutil.process_iter() - plst = [] - for p in procs: - if (p.name() in ('gpg-agent', 'dirmngr') and p.uids()[0] == os.getuid()): - pd = psutil.Process(p.pid).as_dict() - for d in (chrootdir, gpgpath): - if pd['cwd'].startswith('{0}'.format(d)): - plst.append(p.pid) - if len(plst) >= 1: - for p in plst: - psutil.Process(p).terminate() - -def signIMG(path, conf): - if conf['build']['sign']: - # Do we want to kill off any stale gpg-agents? (So we spawn a new one) - # Requires further testing. - #killStaleAgent() - gpg = conf['gpgobj'] - print('{0}: [GPG] Signing {1}...'.format( - datetime.datetime.now(), - path)) - # May not be necessary; further testing necessary - #if os.getenv('GPG_AGENT_INFO'): - # del os.environ['GPG_AGENT_INFO'] - gpg = conf['gpgobj'] - # ASCII-armor (.asc) - gpg.armor = True - data_in = open(path, 'rb') - sigbuf = BytesIO() - sig = gpg.sign(data_in, sigbuf, gpgme.SIG_MODE_DETACH) - _ = sigbuf.seek(0) - _ = data_in.seek(0) - data_in.close() - with open('{0}.asc'.format(path), 'wb') as f: - f.write(sigbuf.read()) - print('{0}: [GPG] Wrote {1}.asc (ASCII-armored signature).'.format( - datetime.datetime.now(), - path)) - # Binary signature (.sig) - gpg.armor = False - data_in = open(path, 'rb') - sigbuf = BytesIO() - sig = gpg.sign(data_in, sigbuf, gpgme.SIG_MODE_DETACH) - _ = sigbuf.seek(0) - _ = data_in.seek(0) - data_in.close() - with open('{0}.sig'.format(path), 'wb') as f: - f.write(sigbuf.read()) - print('{0}: [GPG] Wrote {1}.sig (binary signature).'.format( - datetime.datetime.now(), - path)) - -def gpgVerify(sigfile, datafile, conf): - gpg = conf['gpgobj'] - fullkeys = [] - print('{0}: [GPG] Verifying {1} with {2}...'.format( - datetime.datetime.now(), - datafile, - sigfile)) - keylst = gpg.keylist() - for k in keylst: - fullkeys.append(k.subkeys[0].fpr) - with open(sigfile,'rb') as s: - with open(datafile, 'rb') as f: - sig = gpg.verify(s, f, None) - for x in sig: - if x.validity <= 1: - if not x.validity_reason: - reason = 'we require a signature trust of 2 or higher' - else: - reason = x.validity_reason - print('{0}: [GPG] Key {1} failed to verify: {2}'.format( - datetime.datetime.now(), - x.fpr, - reason)) - verified = False - skeys = [] - for k in sig: - skeys.append(k.fpr) - if k.fpr in fullkeys: - verified = True - break - else: - pass - if verified: - print('{0}: [GPG] {1} verified (success).'.format( - datetime.datetime.now(), - datafile)) - else: - print('{0}: [GPG] {1} failed verification!'.format( - datetime.datetime.now(), - datafile)) - return(verified) - -def delTempKeys(conf): - # Create a config option to delete these. - # It's handy to keep these keys, but I'd understand if - # people didn't want to use them. - gpg = conf['gpgobj'] - if conf['gpg']: - keys = [] - if conf['gpgkey'] != '': - keys.append(gpg.get_key(conf['gpgkey'])) - if conf['mygpghome'] == '': - keys.append(gpg.get_key(None, True)) # this is safe; we generated our own - for k in keys: - gpg.delete(k) - killStaleAgent(conf) diff --git a/bdisk/bSSL.py b/bdisk/bSSL.py deleted file mode 100755 index 3334b62..0000000 --- a/bdisk/bSSL.py +++ /dev/null @@ -1,196 +0,0 @@ -import OpenSSL -import os -import shutil -import datetime -import re - -def verifyCert(cert, key, CA = None): - # Verify a given certificate against a certificate. - # Optionally verify against a CA certificate as well (Hopefully. If/when PyOpenSSL ever supports it.) - chk = OpenSSL.SSL.Context(OpenSSL.SSL.TLSv1_METHOD) - chk.use_privatekey(key) - chk.use_certificate(cert) - try: - chk.check_privatekey() - except OpenSSL.SSL.Error: - return(False) - exit(("{0}: {1} does not match {2}!".format(datetime.datetime.now(), key, cert))) - else: - print("{0}: [SSL] Verified {1} against {2} successfully.".format(datetime.datetime.now(), key, cert)) - return(True) - # This is disabled because there doesn't seem to currently be any way - # to actually verify certificates against a given CA. - #if CA: - # try: - # magic stuff here - -def sslCAKey(conf): - # TODO: use path from conf, even if it doesn't exist? - # if it does, read it into a pkey object - keyfile = conf['ipxe']['ssl_cakey'] - if os.path.isfile(keyfile): - try: - key = OpenSSL.crypto.load_privatekey( - OpenSSL.crypto.FILETYPE_PEM, - open(keyfile).read()) - except: - exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format( - datetime.datetime.now(), - keyfile)) - else: - key = OpenSSL.crypto.PKey() - print("{0}: [SSL] Generating SSL CA key...".format(datetime.datetime.now())) - key.generate_key(OpenSSL.crypto.TYPE_RSA, 4096) - with open(keyfile, 'wb') as f: - f.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key)) - return(key) - -def sslCA(conf, key = None): - # NOTE: 'key' is a pkey OBJECT, not a file. - keyfile = conf['ipxe']['ssl_cakey'] - crtfile = conf['ipxe']['ssl_ca'] - if not key: - if os.path.isfile(keyfile): - try: - key = OpenSSL.crypto.load_privatekey( - OpenSSL.crypto.FILETYPE_PEM, - open(keyfile).read()) - except: - exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format( - datetime.datetime.now(), - keyfile)) - else: - exit('{0}: ERROR: We need a key to generate a CA certificate!'.format( - datetime.datetime.now())) - if os.path.isfile(crtfile): - try: - ca = OpenSSL.crypto.load_certificate( - OpenSSL.crypto.FILETYPE_PEM, - open(crtfile).read()) - except: - exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL certificate.'.format( - datetime.datetime.now(), - crtfile)) - else: - domain = (re.sub('^(https?|ftp)://([a-z0-9.-]+)/?.*$', '\g<2>', - conf['ipxe']['uri'], - flags=re.IGNORECASE)).lower() - # http://www.pyopenssl.org/en/stable/api/crypto.html#pkey-objects - # http://docs.ganeti.org/ganeti/2.14/html/design-x509-ca.html - ca = OpenSSL.crypto.X509() - ca.set_version(3) - ca.set_serial_number(1) - #ca.get_subject().CN = domain - ca.get_subject().CN = '{0} CA'.format(conf['bdisk']['name']) - ca.gmtime_adj_notBefore(0) - # valid for ROUGHLY 10 years. years(ish) * days * hours * mins * secs. - # the paramater is in seconds, which is why we need to multiply them all together. - ca.gmtime_adj_notAfter(10 * 365 * 24 * 60 * 60) - ca.set_issuer(ca.get_subject()) - ca.set_pubkey(key) - ca.add_extensions([ - OpenSSL.crypto.X509Extension(b"basicConstraints", - True, - b"CA:TRUE, pathlen:0"), - OpenSSL.crypto.X509Extension(b"keyUsage", - True, - b"keyCertSign, cRLSign"), - OpenSSL.crypto.X509Extension(b"subjectKeyIdentifier", - False, - b"hash", - subject = ca),]) - ca.sign(key, "sha512") - with open(crtfile, 'wb') as f: - f.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, ca)) - return(ca) - -def sslCKey(conf): - keyfile = conf['ipxe']['ssl_key'] - if os.path.isfile(keyfile): - try: - key = OpenSSL.crypto.load_privatekey( - OpenSSL.crypto.FILETYPE_PEM, - open(keyfile).read()) - except: - exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format( - datetime.datetime.now(), - keyfile)) - else: - key = OpenSSL.crypto.PKey() - print("{0}: [SSL] Generating SSL Client key...".format(datetime.datetime.now())) - key.generate_key(OpenSSL.crypto.TYPE_RSA, 4096) - with open(keyfile, 'wb') as f: - f.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key)) - return(key) - -def sslCSR(conf, key = None): - # NOTE: 'key' is a pkey OBJECT, not a file. - keyfile = conf['ipxe']['ssl_key'] - crtfile = conf['ipxe']['ssl_crt'] - if not key: - if os.path.isfile(keyfile): - try: - key = OpenSSL.crypto.load_privatekey( - OpenSSL.crypto.FILETYPE_PEM, - open(keyfile).read()) - except: - exit('{0}: ERROR: It seems that {1} is not a proper PEM-encoded SSL key.'.format( - datetime.datetime.now(), - keyfile)) - else: - exit('{0}: ERROR: We need a key to generate a CSR!'.format( - datetime.datetime.now())) - domain = (re.sub('^(https?|ftp)://([a-z0-9.-]+)/?.*$', '\g<2>', - conf['ipxe']['uri'], - flags=re.IGNORECASE)).lower() - csr = OpenSSL.crypto.X509Req() - csr.get_subject().CN = domain - #req.get_subject().countryName = 'xxx' - #req.get_subject().stateOrProvinceName = 'xxx' - #req.get_subject().localityName = 'xxx' - #req.get_subject().organizationName = 'xxx' - #req.get_subject().organizationalUnitName = 'xxx' - csr.set_pubkey(key) - csr.sign(key, "sha512") - with open('/tmp/main.csr', 'wb') as f: - f.write(OpenSSL.crypto.dump_certificate_request(OpenSSL.crypto.FILETYPE_PEM, csr)) - return(csr) - -def sslSign(conf, ca, key, csr): - #ca_cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, ca) - #ca_key = OpenSSL.crypto.load_privatekey(key) - #req = OpenSSL.crypto.load_certificate_request(csr) - csr = OpenSSL.crypto.load_certificate_request(OpenSSL.crypto.FILETYPE_PEM, - open("/tmp/main.csr").read()) - cert = OpenSSL.crypto.X509() - cert.set_subject(csr.get_subject()) - cert.set_serial_number(1) - cert.gmtime_adj_notBefore(0) - cert.gmtime_adj_notAfter(24 * 60 * 60) - cert.set_issuer(ca.get_subject()) - cert.set_pubkey(csr.get_pubkey()) - #cert.set_pubkey(ca.get_pubkey()) - cert.sign(key, "sha512") - with open(conf['ipxe']['ssl_crt'], 'wb') as f: - f.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)) - return(cert) - -def sslPKI(conf): - # run checks for everything, gen what's missing - ssldir = conf['ipxe']['ssldir'] - os.makedirs(ssldir, exist_ok = True) - certfile = conf['ipxe']['ssl_crt'] - key = sslCAKey(conf) - ca = sslCA(conf, key = key) - ckey = sslCKey(conf) - if os.path.isfile(certfile): - cert = OpenSSL.crypto.load_certificate( - OpenSSL.crypto.FILETYPE_PEM, - open(certfile).read()) - if not verifyCert(cert, ckey): - csr = sslCSR(conf, ckey) - cert = sslSign(conf, ca, key, csr) - else: - csr = sslCSR(conf, ckey) - cert = sslSign(conf, ca, key, csr) - return(cert) diff --git a/bdisk/bchroot.py b/bdisk/bchroot.py deleted file mode 100755 index 269cad4..0000000 --- a/bdisk/bchroot.py +++ /dev/null @@ -1,156 +0,0 @@ -import os -import sys -import psutil -import subprocess -import datetime -import tarfile -import humanize -import shutil - - -def chroot(chrootdir, chroot_hostname, cmd = '/root/pre-build.sh'): - # MOUNT the chroot - mountpoints = psutil.disk_partitions(all = True) - mounts = [] - for m in mountpoints: - mounts.append(m.mountpoint) - 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: - cmounts['chroot'] = ['/bin/mount', - '--bind', - chrootdir, - chrootdir] - # resolv - if (chrootdir + '/etc/resolv.conf') not in mounts: - cmounts['resolv'] = ['/bin/mount', - '--bind', - '-o', 'ro', - '/etc/resolv.conf', - chrootdir + '/etc/resolv.conf'] - # proc - if (chrootdir + '/proc') not in mounts: - cmounts['proc'] = ['/bin/mount', - '-t', 'proc', - '-o', 'nosuid,noexec,nodev', - 'proc', - chrootdir + '/proc'] - # sys - if (chrootdir + '/sys') not in mounts: - cmounts['sys'] = ['/bin/mount', - '-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 (chrootdir + '/sys/firmware/efi/efivars') not in mounts: - cmounts['efi'] = ['/bin/mount', - '-t', 'efivarfs', - '-o', 'nosuid,noexec,nodev', - 'efivarfs', - chrootdir + '/sys/firmware/efi/efivars'] - # dev - if (chrootdir + '/dev') not in mounts: - cmounts['dev'] = ['/bin/mount', - '-t', 'devtmpfs', - '-o', 'mode=0755,nosuid', - 'udev', - chrootdir + '/dev'] - # pts - if (chrootdir + '/dev/pts') not in mounts: - 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 (chrootdir + '/dev/shm') not in mounts: - 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 (chrootdir + '/run') not in mounts: - 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 (chrootdir + '/tmp') not in mounts: - 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}: [CHROOT] Running '{1}' ({2}). PROGRESS: tail -f {2}/var/log/chroot_install.log ...".format( - datetime.datetime.now(), - cmd, - chrootdir)) - real_root = os.open("/", os.O_RDONLY) - os.chroot(chrootdir) - os.system('/root/pre-build.sh') - os.fchdir(real_root) - os.chroot('.') - os.close(real_root) - if not os.path.isfile('{0}/sbin/init'.format(chrootdir)): - os.symlink('../lib/systemd/systemd', '{0}/sbin/init'.format(chrootdir)) - return(chrootdir) - -def chrootUnmount(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}: [CHROOT] Compressing {1}'s cache ({2})...".format( - datetime.datetime.now(), - chrootdir + '/root.' + a, - i)) - 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}: [CHROOT] Created {1} ({2}). {3} cleared.".format( - datetime.datetime.now(), - tarball, - humanize.naturalsize( - os.path.getsize(tarball)), - dbdir)) - #for d in ('etc/pacman.d/gnupg', 'var/empty/.gnupg'): # actually, we should probably keep these. - # they don't take much space, and it's a PITA to pacman-key --init && pacman-key --populate again on boot. - # if os.path.isdir('{0}/root.{1}/{2}'.format(chrootdir, a, d)): - # shutil.rmtree('{0}/root.{1}/{2}'.format(chrootdir, a, d)) - # TODO: move the self-cleanup in pre-build.sh to here. - delme = [#'/root/.gnupg', # see above - '/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) diff --git a/bdisk/bdisk.py b/bdisk/bdisk.py deleted file mode 100755 index 9e288bc..0000000 --- a/bdisk/bdisk.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/env python3 - -import argparse -import host -import prep -import bchroot -import build -import datetime -import bSSL -import ipxe -import bsync -import bGPG -import os - - -def bdisk(args): - # 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 os.getuid() != 0: - exit('{0}: ERROR: BDisk *must* be run as the root user or with sudo!'.format(datetime.datetime.now())) - print('{0}: Starting.'.format(datetime.datetime.now())) - conf = host.parseConfig(host.getConfig(conf_file = args['buildini']))[1] - prep.dirChk(conf) - conf['gpgobj'] = bGPG.genGPG(conf) - prep.buildChroot(conf, keep = False) - prep.prepChroot(conf) - arch = conf['build']['arch'] - bGPG.killStaleAgent(conf) - for a in arch: - bchroot.chroot(conf['build']['chrootdir'] + '/root.' + a, 'bdisk.square-r00t.net') - bchroot.chrootUnmount(conf['build']['chrootdir'] + '/root.' + a) - prep.postChroot(conf) - bchroot.chrootTrim(conf['build']) - build.genImg(conf) - build.genUEFI(conf['build'], conf['bdisk']) - fulliso = build.genISO(conf) - bGPG.signIMG(fulliso['Main']['file'], conf) - build.displayStats(fulliso) - if conf['build']['ipxe']: - bSSL.sslPKI(conf) - ipxe.buildIPXE(conf) - iso = ipxe.genISO(conf) - if iso: - for x in iso.keys(): - if x != 'name': - path = iso[x]['file'] - bGPG.signIMG(path, conf) - build.displayStats(iso) - bsync.http(conf) - bsync.tftp(conf) - bsync.git(conf) - bsync.rsync(conf) - print('{0}: Finish.'.format(datetime.datetime.now())) - -def parseArgs(): - args = argparse.ArgumentParser(description = 'BDisk - a tool for building live/rescue media.', - epilog = 'brent s. || 2017 || https://bdisk.square-r00t.net') - args.add_argument('buildini', - metavar = '/path/to/build.ini', - default = '/etc/bdisk/build.ini', - nargs = '?', - help = 'The full/absolute path to the build.ini to use for this run. The default is /etc/bdisk/build.ini, but see https://bdisk.square-r00t.net/#the_code_build_ini_code_file.') - return(args) - -def main(): - args = vars(parseArgs().parse_args()) - bdisk(args) - -if __name__ == '__main__': - main() diff --git a/bdisk/bsync.py b/bdisk/bsync.py deleted file mode 100755 index 42e62a5..0000000 --- a/bdisk/bsync.py +++ /dev/null @@ -1,187 +0,0 @@ -import shutil -import os -import pwd -import grp -import datetime -import git -import subprocess - - -def http(conf): - http = conf['http'] - build = conf['build'] - prepdir = build['prepdir'] - arch = build['arch'] - bdisk = conf['bdisk'] - if conf['sync']['http']: - uid = pwd.getpwnam(http['user'])[2] - gid = grp.getgrnam(http['group'])[2] - httpdir = http['path'] - archboot = build['archboot'] - # remove the destination if it exists - if os.path.isdir(httpdir): - print('{0}: [HTTP] Removing {1}...'.format( - datetime.datetime.now(), - httpdir)) - shutil.rmtree(httpdir) - # just to make it again. we do this to avoid file existing conflicts. - os.makedirs(httpdir) - # here we build a dict of files to copy and their destination paths. - httpfiles = {} - print('{0}: [HTTP] (Boot files) => {1}...'.format( - datetime.datetime.now(), - httpdir)) - for a in arch: - for i in ('md5', 'sfs', 'sha256', 'sha512'): - httpfiles['{0}/{1}/airootfs.{2}'.format(bdisk['name'], a, i)] = '{0}/{1}/airootfs.{2}'.format(bdisk['name'], a, i) - httpfiles['VERSION_INFO.txt'] = 'VERSION_INFO.txt' - if 'x86_64' in arch: - httpfiles['boot/{0}.64.kern'.format(bdisk['uxname'])] = '{0}.64.kern'.format(bdisk['uxname']) - httpfiles['boot/{0}.64.img'.format(bdisk['uxname'])] = '{0}.64.img'.format(bdisk['uxname']) - if 'i686' in arch: - httpfiles['boot/{0}.32.kern'.format(bdisk['uxname'])] = '{0}.32.kern'.format(bdisk['uxname']) - httpfiles['boot/{0}.32.img'.format(bdisk['uxname'])] = '{0}.32.img'.format(bdisk['uxname']) - httpfiles['{0}.png'.format(bdisk['uxname'])] = '{0}.png'.format(bdisk['uxname']) - # and now the magic. - for k in httpfiles.keys(): - destpath = httpfiles[k] - fulldest = '{0}/{1}'.format(httpdir, destpath) - parentdir = os.path.split(fulldest)[0] - os.makedirs(parentdir, exist_ok = True) - if os.path.lexists('{0}/{1}'.format(prepdir, k)): - shutil.copy2('{0}/{1}'.format(prepdir, k), '{0}/{1}'.format(httpdir, httpfiles[k])) - for root, dirs, files in os.walk(httpdir): - for d in dirs: - os.chown(os.path.join(root, d), uid, gid) - for f in files: - os.chown(os.path.join(root, f), uid, gid) - -def tftp(conf): - # TODO: pxelinux cfg - tftp = conf['tftp'] - build = conf['build'] - prepdir = build['prepdir'] - arch = build['arch'] - bdisk = conf['bdisk'] - if conf['sync']['tftp']: - uid = pwd.getpwnam(tftp['user'])[2] - gid = grp.getgrnam(tftp['group'])[2] - tftpdir = tftp['path'] - # remove the destination if it exists - if os.path.isdir(tftpdir): - print('{0}: [TFTP] Removing {1}...'.format( - datetime.datetime.now(), - tftpdir)) - shutil.rmtree(tftpdir) - # and we make it again - os.makedirs(tftpdir) - # and make a dict of the files etc. - tftpfiles = {} - print('{0}: [TFTP] (Boot files) => {1}...'.format( - datetime.datetime.now(), - tftpdir)) - for a in arch: - for i in ('md5', 'sfs', 'sha256', 'sha512'): - tftpfiles['{0}/{1}/airootfs.{2}'.format(bdisk['name'], a, i)] = '{0}/{1}/airootfs.{2}'.format(bdisk['name'], a, i) - tftpfiles['VERSION_INFO.txt'] = 'VERSION_INFO.txt' - if 'x86_64' in arch: - tftpfiles['boot/{0}.64.kern'.format(bdisk['uxname'])] = '{0}.kern'.format(bdisk['uxname']) - tftpfiles['boot/{0}.64.img'.format(bdisk['uxname'])] = '{0}.img'.format(bdisk['uxname']) - if 'i686' in arch: - tftpfiles['boot/{0}.32.kern'.format(bdisk['uxname'])] = '{0}.32.kern'.format(bdisk['uxname']) - tftpfiles['boot/{0}.32.img'.format(bdisk['uxname'])] = '{0}.32.img'.format(bdisk['uxname']) - tftpfiles['{0}.png'.format(bdisk['uxname'])] = '{0}.png'.format(bdisk['uxname']) - # and now the magic. - for k in tftpfiles.keys(): - destpath = tftpfiles[k] - fulldest = '{0}/{1}'.format(tftpdir, destpath) - parentdir = os.path.split(fulldest)[0] - os.makedirs(parentdir, exist_ok = True) - shutil.copy2('{0}/{1}'.format(prepdir, k), '{0}/{1}'.format(tftpdir, tftpfiles[k])) - for root, dirs, files in os.walk(tftpdir): - for d in dirs: - os.chown(os.path.join(root, d), uid, gid) - for f in files: - os.chown(os.path.join(root, f), uid, gid) - -def git(conf): - build = conf['build'] - git_name = conf['bdisk']['dev'] - git_email = conf['bdisk']['email'] - if conf['sync']['git']: - print('{0}: [GIT] Creating commit...'.format(datetime.datetime.now())) - repo = git.Repo(build['basedir']) - repo.git.add('--all') - repo.index.commit("automated commit from BDisk (git:sync)") - print('{0}: [GIT] Pushing to remote...'.format(datetime.datetime.now())) - repo.remotes.origin.push() - - -def rsync(conf): - # TODO: just copy tftpbooting pxelinux.cfg (to be generated) if tftp, - # and do nothing if http- copying over three copies of the squashed filesystems - # is a waste of time, bandwidth, and disk space on target. - build = conf['build'] - prepdir = build['prepdir'] - isodir = build['isodir'] - arch = build['arch'] - rsync = conf['rsync'] - sync = conf['sync'] - server = rsync['host'] - path = rsync['path'] - user = rsync['user'] - locpath = False - if sync['rsync']: - # TODO: some sort of debugging/logging - cmd = ['/usr/bin/rsync', - '-a', - '-q', - '-z', - locpath, - '{0}@{1}:{2}/.'.format(user, server, path)] - #if sync['http']: # TODO: rsync:http to enable this - # cmd[4] = conf['http']['path'] - # print('{0}: Syncing {1} to {2}. Please wait...'.format( - # datetime.datetime.now(), - # cmd[4], - # server)) - # subprocess.call(cmd) - #if sync['tftp']: - # cmd[4] = conf['tftp']['path'] - # print('{0}: Syncing {1} to {2}. Please wait...'.format( - # datetime.datetime.now(), - # cmd[4], - # server)) - # subprocess.call(cmd) - if conf['ipxe']: - cmd[4] = build['archboot'] - print('{0}: [RSYNC] {1} => {2}...'.format( - datetime.datetime.now(), - cmd[4], - server)) - subprocess.call(cmd) - cmd[4] = '{0}/boot'.format(build['prepdir']) - subprocess.call(cmd) - if conf['rsync']['iso']: - cmd[4] = isodir - print('{0}: [RSYNC] {1} => {2}...'.format( - datetime.datetime.now(), - cmd[4], - server)) - subprocess.call(cmd) - # Now we copy some extra files. - prebuild_dir = '{0}/extra/pre-build.d'.format(build['basedir']) - rsync_files = ['{0}/VERSION_INFO.txt'.format(prepdir), - '{0}/root/packages.both'.format(prebuild_dir), - '{0}/root/iso.pkgs.both'.format(prebuild_dir)] - for x in rsync_files: - cmd[4] = x - subprocess.call(cmd) - # And we grab the remaining, since we need to rename them. - for a in arch: - cmd[4] = '{0}/{1}/root/packages.arch'.format(prebuild_dir, a) - cmd[5] = '{0}@{1}:{2}/packages.{3}'.format(user, server, path, a) - subprocess.call(cmd) - cmd[4] = '{0}/{1}/root/iso.pkgs.arch'.format(prebuild_dir, a) - cmd[5] = '{0}@{1}:{2}/iso.pkgs.{3}'.format(user, server, path, a) - subprocess.call(cmd) diff --git a/bdisk/build.py b/bdisk/build.py deleted file mode 100755 index 17d50e5..0000000 --- a/bdisk/build.py +++ /dev/null @@ -1,416 +0,0 @@ -import os -import tarfile -import shutil -import glob -import subprocess -import hashlib -import psutil -import jinja2 -import humanize -import datetime -import bGPG # bdisk.bGPG -from urllib.request import urlopen - - -def genImg(conf): - bdisk = conf['bdisk'] - build = conf['build'] - arch = build['arch'] - chrootdir = build['chrootdir'] - archboot = build['archboot'] - basedir = build['basedir'] - prepdir = build['prepdir'] - hashes = {} - hashes['sha512'] = {} - hashes['sha256'] = {} - hashes['md5'] = {} - squashfses = [] - for a in arch: - if a == 'i686': - bitness = '32' - elif a == 'x86_64': - bitness = '64' - # Create the squashfs image - airoot = archboot + '/' + a + '/' - squashimg = airoot + 'airootfs.sfs' - os.makedirs(airoot, exist_ok = True) - print("{0}: [BUILD] Squashing filesystem ({1})...".format( - datetime.datetime.now(), - chrootdir + '/root.' + a)) - # TODO: use stdout and -progress if debugging is enabled. the below subprocess.call() just redirects to - # /dev/null. - DEVNULL = open(os.devnull, 'w') - cmd = ['/usr/bin/mksquashfs', - chrootdir + '/root.' + a, - squashimg, - '-no-progress', - '-noappend', - '-comp', 'xz'] - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - print("{0}: [BUILD] Generated {1} ({2}).".format( - datetime.datetime.now(), - squashimg, - humanize.naturalsize( - os.path.getsize(squashimg)))) - # Generate the checksum files - print("{0}: [BUILD] Generating SHA512 SHA256, MD5 checksums ({1})...".format( - datetime.datetime.now(), - squashimg)) - hashes['sha512'][a] = hashlib.sha512() - hashes['sha256'][a] = hashlib.sha256() - hashes['md5'][a] = hashlib.md5() - with open(squashimg, 'rb') as f: - while True: - stream = f.read(65536) # 64kb chunks - if not stream: - break - # NOTE: these items are hashlib objects, NOT strings! - hashes['sha512'][a].update(stream) - hashes['sha256'][a].update(stream) - hashes['md5'][a].update(stream) - with open(airoot + 'airootfs.sha512', 'w+') as f: - f.write("{0} airootfs.sfs\n".format(hashes['sha512'][a].hexdigest())) - with open(airoot + 'airootfs.sha256', 'w+') as f: - f.write("{0} airootfs.sfs\n".format(hashes['sha256'][a].hexdigest())) - with open(airoot + 'airootfs.md5', 'w+') as f: - f.write("{0} airootfs.sfs\n".format(hashes['md5'][a].hexdigest())) - squashfses.append('{0}'.format(squashimg)) - print("{0}: [BUILD] Hash checksums complete.".format(datetime.datetime.now())) - # Logo - os.makedirs(prepdir + '/boot', exist_ok = True) - if not os.path.isfile('{0}/extra/{1}.png'.format(basedir, bdisk['uxname'])): - shutil.copy2(basedir + '/extra/bdisk.png', '{0}/{1}.png'.format(prepdir, bdisk['uxname'])) - else: - shutil.copy2(basedir + '/extra/{0}.png'.format(bdisk['uxname']), '{0}/{1}.png'.format(prepdir, bdisk['uxname'])) - # Kernels, initrds... - # We use a dict here so we can use the right filenames... - # I might change how I handle this in the future. - bootfiles = {} - #bootfiles['kernel'] = ['vmlinuz-linux-' + bdisk['name'], '{0}.{1}.kern'.format(bdisk['uxname'], bitness)] - bootfiles['kernel'] = ['vmlinuz-linux', '{0}.{1}.kern'.format(bdisk['uxname'], bitness)] - #bootfiles['initrd'] = ['initramfs-linux-{0}.img'.format(bdisk['name']), '{0}.{1}.img'.format(bdisk['uxname'], bitness)] - bootfiles['initrd'] = ['initramfs-linux.img', '{0}.{1}.img'.format(bdisk['uxname'], bitness)] - for x in ('kernel', 'initrd'): - shutil.copy2('{0}/root.{1}/boot/{2}'.format(chrootdir, a, bootfiles[x][0]), '{0}/boot/{1}'.format(prepdir, bootfiles[x][1])) - for i in squashfses: - bGPG.signIMG(i, conf) - - -def genUEFI(build, bdisk): - arch = build['arch'] - # 32-bit EFI implementations are nigh nonexistant. - # We don't really need to worry about them. - # Plus there's always multiarch. - # I can probably do this better with a dict... TODO. - if 'x86_64' in arch: - prepdir = build['prepdir'] - basedir = build['basedir'] - chrootdir = build['chrootdir'] - mountpt = build['mountpt'] - templates_dir = build['basedir'] + '/extra/templates' - efidir = '{0}/EFI/{1}'.format(prepdir, bdisk['name']) - os.makedirs(efidir, exist_ok = True) - efiboot_img = efidir + '/efiboot.img' - os.makedirs(prepdir + '/EFI/boot', exist_ok = True) - os.makedirs(efidir, exist_ok = True) - ## Download the EFI shells if we don't have them. - # For UEFI 2.3+ (http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=UEFI_Shell) - if not os.path.isfile(prepdir + '/EFI/shellx64_v2.efi'): - shell2_path = prepdir + '/EFI/shellx64_v2.efi' - print("{0}: [BUILD] Warning: You are missing {1}. Fetching...".format(datetime.datetime.now(), shell2_path)) - shell2_url = 'https://raw.githubusercontent.com/tianocore/edk2/master/ShellBinPkg/UefiShell/X64/Shell.efi' - shell2_fetch = urlopen(shell2_url) - with open(shell2_path, 'wb+') as dl: - dl.write(shell2_fetch.read()) - shell2_fetch.close() - # Shell for older versions (http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Efi-shell) - # TODO: is there an Arch package for this? can we just install that in the chroot and copy the shell binaries? - if not os.path.isfile(prepdir + '/EFI/shellx64_v1.efi'): - shell1_path = prepdir + '/EFI/shellx64_v1.efi' - print("{0}: [BUILD] Warning: You are missing {1}. Fetching...".format(datetime.datetime.now(), shell1_path)) - shell1_url = 'https://raw.githubusercontent.com/tianocore/edk2/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi' - shell1_fetch = urlopen(shell1_url) - with open(shell1_path, 'wb+') as dl: - dl.write(shell1_fetch.read()) - shell1_fetch.close() - print("{0}: [BUILD] Building UEFI support...".format(datetime.datetime.now())) - ## But wait! That's not all! We need more binaries. - # Looks like these are in the "efitools" package now. - for f in ('PreLoader.efi', 'HashTool.efi'): - if f == 'PreLoader.efi': - fname = 'bootx64.efi' - else: - fname = f - with open('{0}/root.x86_64/usr/share/efitools/efi/{1}'.format( - chrootdir, - f), - 'rb') as r: - with open('{0}/EFI/boot/{1}'.format(prepdir, fname), 'wb') as file: - file.write(r.read()) - # And we also need the systemd efi bootloader. - if os.path.isfile(prepdir + '/EFI/boot/loader.efi'): - os.remove(prepdir + '/EFI/boot/loader.efi') - with open('{0}/root.x86_64/usr/lib/systemd/boot/efi/systemd-bootx64.efi'.format( - chrootdir), - 'rb') as r: - with open('{0}/EFI/boot/loader.efi'.format(prepdir), 'wb') as file: - file.write(r.read()) - # And the accompanying configs for the systemd efi bootloader, too. - tpl_loader = jinja2.FileSystemLoader(templates_dir) - env = jinja2.Environment(loader = tpl_loader) - os.makedirs(prepdir + '/loader/entries', exist_ok = True) - for t in ('loader', 'ram', 'base', 'uefi2', 'uefi1'): - if t == 'base': - fname = bdisk['uxname'] + '.conf' - elif t not in ('uefi1', 'uefi2'): - fname = t + '.conf' - else: - fname = bdisk['uxname'] + '_' + t + '.conf' - if t == 'loader': - tplpath = prepdir + '/loader/' - fname = 'loader.conf' # we change the var from above because it's an oddball. - else: - tplpath = prepdir + '/loader/entries/' - tpl = env.get_template('EFI/' + t + '.conf.j2') - tpl_out = tpl.render(build = build, bdisk = bdisk) - with open(tplpath + fname, "w+") as f: - f.write(tpl_out) - # And we need to get filesizes (in bytes) for everything we need to include in the ESP. - # This is more important than it looks. - sizetotal = 33553920 # The spec'd EFI binary size (32MB). It's okay to go over this though (and we do) - # because xorriso sees it as a filesystem image and adjusts the ISO automagically. - #sizetotal = 2097152 # we start with 2MB and add to it for wiggle room - sizefiles = ['/boot/' + bdisk['uxname'] + '.64.img', - '/boot/' + bdisk['uxname'] + '.64.kern', - '/EFI/boot/bootx64.efi', - '/EFI/boot/loader.efi', - '/EFI/boot/HashTool.efi', - '/EFI/shellx64_v1.efi', - '/EFI/shellx64_v2.efi'] - for i in sizefiles: - sizetotal += os.path.getsize(prepdir + i) - # Loader configs - for (path, dirs, files) in os.walk(prepdir + '/loader/'): - for file in files: - fname = os.path.join(path, file) - sizetotal += os.path.getsize(fname) - # And now we create the EFI binary filesystem image/binary... - print("{0}: [BUILD] Creating EFI ESP image {2} ({1})...".format( - datetime.datetime.now(), - humanize.naturalsize(sizetotal), - efiboot_img)) - if os.path.isfile(efiboot_img): - os.remove(efiboot_img) - with open(efiboot_img, 'wb+') as f: - f.truncate(sizetotal) - DEVNULL = open(os.devnull, 'w') - cmd = ['/sbin/mkfs.fat', '-F', '32', '-n', bdisk['name'] + '_EFI', efiboot_img] - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - cmd = ['/bin/mount', efiboot_img, build['mountpt']] - subprocess.call(cmd) - os.makedirs('{0}/EFI/{1}'.format(build['mountpt'], bdisk['name'])) - os.makedirs(build['mountpt'] + '/EFI/boot') - os.makedirs(build['mountpt'] + '/loader/entries') - # Ready for some deja vu? This is because it uses an embedded version as well for hybrid ISO. - # I think. - # TODO: just move this to a function instead, with "efi" as a param and change - # the templates to use "if efi == 'yes'" instead. - # function should set the "installation" path for the conf as well based on the value of efi - # parameter. - env = jinja2.Environment(loader = tpl_loader) - for t in ('loader', 'ram', 'base', 'uefi2', 'uefi1'): - if t == 'base': - fname = bdisk['uxname'] + '.conf' - elif t in ('uefi1', 'uefi2'): - fname = t + '.conf' - else: - fname = bdisk['uxname'] + '_' + t + '.conf' - if t == 'loader': - tplpath = build['mountpt'] + '/loader/' - fname = 'loader.conf' # we change the var from above because it's an oddball. - else: - tplpath = build['mountpt'] + '/loader/entries/' - tpl = env.get_template('EFI/' + t + '.conf.j2') - tpl_out = tpl.render(build = build, bdisk = bdisk, efi = 'yes') - with open(tplpath + fname, "w+") as f: - f.write(tpl_out) - for x in ('bootx64.efi', 'HashTool.efi', 'loader.efi'): - y = prepdir + '/EFI/boot/' + x - z = mountpt + '/EFI/boot/' + x - if os.path.isfile(z): - os.remove(z) - shutil.copy(y, z) - for x in ('shellx64_v1.efi', 'shellx64_v2.efi'): - y = prepdir + '/EFI/' + x - z = mountpt + '/EFI/' + x - if os.path.isfile(z): - os.remove(z) - shutil.copy(y, z) - shutil.copy2('{0}/root.{1}/boot/vmlinuz-linux'.format(chrootdir, 'x86_64'), - '{0}/EFI/{1}/{2}.efi'.format(mountpt, bdisk['name'], bdisk['uxname'])) - shutil.copy2('{0}/root.{1}/boot/initramfs-linux.img'.format(chrootdir, 'x86_64'), - '{0}/EFI/{1}/{2}.img'.format(mountpt, bdisk['name'], bdisk['uxname'])) - # TODO: support both arch's as EFI bootable instead? Maybe? requires more research. very rare. - #shutil.copy2('{0}/root.{1}/boot/vmlinuz-linux-{2}'.format(chrootdir, a, bdisk['name']), - # '{0}/EFI/{1}/{2}.{3}.efi'.format(mountpt, bdisk['name'], bdisk['uxname'], bitness)) - #shutil.copy2('{0}/root.{1}/boot/initramfs-linux-{2}.img'.format(chrootdir, a, bdisk['uxname']), - # '{0}/EFI/{1}/{2}.{3}.img'.format(mountpt, bdisk['name'], bdisk['uxname'], bitness)) - cmd = ['/bin/umount', mountpt] - subprocess.call(cmd) - efisize = humanize.naturalsize(os.path.getsize(efiboot_img)) - print('{0}: [BUILD] Built EFI binary.'.format(datetime.datetime.now())) - return(efiboot_img) - -def genISO(conf): - build = conf['build'] - bdisk = conf['bdisk'] - archboot = build['archboot'] - prepdir = build['prepdir'] - templates_dir = build['basedir'] + '/extra/templates' - arch = build['arch'] - builddir = prepdir + '/' + bdisk['name'] - extradir = build['basedir'] + '/extra/' - # arch[0] is safe to use, even if multiarch, because the only cases when it'd be ambiguous - # is when x86_64 is specifically set to [0]. See host.py's parseConfig(). - # TODO: can we use syslinux for EFI too instead of prebootloader? - syslinuxdir = build['chrootdir'] + '/root.' + arch[0] + '/usr/lib/syslinux/bios/' - sysl_tmp = prepdir + '/isolinux/' - ver = bdisk['ver'] - if len(arch) == 1: - isofile = '{0}-{1}-{2}-{3}.iso'.format(bdisk['uxname'], bdisk['ver'], build['buildnum'], arch[0]) - else: - isofile = '{0}-{1}-{2}.iso'.format(bdisk['uxname'], bdisk['ver'], build['buildnum']) - isopath = build['isodir'] + '/' + isofile - arch = build['arch'] - # In case we're building a single-arch ISO... - if len(arch) == 1: - isolinux_cfg = '/BIOS/isolinux.cfg.arch.j2' - if arch[0] == 'i686': - bitness = '32' - efi = False - elif arch[0] == 'x86_64': - bitness = '64' - efi = True - else: - isolinux_cfg = '/BIOS/isolinux.cfg.multi.j2' - bitness = False - efi = True - if os.path.isfile(isopath): - os.remove(isopath) - if archboot != prepdir + '/' + bdisk['name']: # best to use static concat here... - if os.path.isdir(builddir): - shutil.rmtree(builddir, ignore_errors = True) - shutil.copytree(archboot, builddir) - if build['ipxe']: - ipxe = conf['ipxe'] - if ipxe['iso']: - minifile = '{0}-{1}-mini.iso'.format(bdisk['uxname'], bdisk['ver']) - minipath = build['isodir'] + '/' + minifile - if ipxe['usb']: - usbfile = '{0}-{1}-mini.usb.img'.format(bdisk['uxname'], bdisk['ver']) - minipath = build['isodir'] + '/' + usbfile - # Copy isolinux files - print("{0}: [BUILD] Staging ISO preparation...".format(datetime.datetime.now())) - isolinux_files = ['isolinux.bin', - 'vesamenu.c32', - 'linux.c32', - 'reboot.c32'] - # TODO: implement debugging mode in bdisk - #if debug: - # isolinux_files[0] = 'isolinux-debug.bin' - os.makedirs(sysl_tmp, exist_ok = True) - for f in isolinux_files: - if os.path.isfile(sysl_tmp + f): - os.remove(sysl_tmp + f) - shutil.copy2(syslinuxdir + f, sysl_tmp + f) - ifisolinux_files = ['ldlinux.c32', - 'libcom32.c32', - 'libutil.c32', - 'ifcpu64.c32'] - for f in ifisolinux_files: - if os.path.isfile(sysl_tmp + f): - os.remove(sysl_tmp + f) - shutil.copy2(syslinuxdir + f, sysl_tmp + f) - tpl_loader = jinja2.FileSystemLoader(templates_dir) - env = jinja2.Environment(loader = tpl_loader) - tpl = env.get_template(isolinux_cfg) - tpl_out = tpl.render(build = build, bdisk = bdisk, bitness = bitness) - with open(sysl_tmp + '/isolinux.cfg', "w+") as f: - f.write(tpl_out) - # And we need to build the ISO! - # TODO: only include UEFI support if we actually built it! - print("{0}: [BUILD] Building full ISO ({1})...".format(datetime.datetime.now(), isopath)) - if efi: - cmd = ['/usr/bin/xorriso', - '-as', 'mkisofs', - '-iso-level', '3', - '-full-iso9660-filenames', - '-volid', bdisk['name'], - '-appid', bdisk['desc'], - '-publisher', bdisk['dev'], - '-preparer', 'prepared by ' + bdisk['dev'], - '-eltorito-boot', 'isolinux/isolinux.bin', - '-eltorito-catalog', 'isolinux/boot.cat', - '-no-emul-boot', - '-boot-load-size', '4', - '-boot-info-table', - '-isohybrid-mbr', syslinuxdir + 'isohdpfx.bin', - '-eltorito-alt-boot', - '-e', 'EFI/' + bdisk['name'] + '/efiboot.img', - '-no-emul-boot', - '-isohybrid-gpt-basdat', - '-output', isopath, - prepdir] - else: - # UNTESTED. TODO. - # I think i want to also get rid of: -boot-load-size 4, - # -boot-info-table, ... possiblyyy -isohybrid-gpt-basedat... - # https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Remove_UEFI_boot_support_from_Optical_Media - cmd = ['/usr/bin/xorriso', - '-as', 'mkisofs', - '-iso-level', '3', - '-full-iso9660-filenames', - '-volid', bdisk['name'], - '-appid', bdisk['desc'], - '-publisher', bdisk['dev'], - '-preparer', 'prepared by ' + bdisk['dev'], - '-eltorito-boot', 'isolinux/isolinux.bin', - '-eltorito-catalog', 'isolinux/boot.cat', - '-no-emul-boot', - '-boot-load-size', '4', - '-boot-info-table', - '-isohybrid-mbr', syslinuxdir + 'isohdpfx.bin', - '-no-emul-boot', - '-isohybrid-gpt-basdat', - '-output', isopath, - prepdir] - DEVNULL = open(os.devnull, 'w') - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - # Get size of ISO - iso = {} - iso['name'] = ['Main'] - iso['Main'] = {} - iso['Main']['sha'] = hashlib.sha256() - with open(isopath, 'rb') as f: - while True: - stream = f.read(65536) # 64kb chunks - if not stream: - break - iso['Main']['sha'].update(stream) - iso['Main']['sha'] = iso['Main']['sha'].hexdigest() - iso['Main']['file'] = isopath - iso['Main']['size'] = humanize.naturalsize(os.path.getsize(isopath)) - iso['Main']['type'] = 'Full' - iso['Main']['fmt'] = 'Hybrid ISO' - return(iso) - -def displayStats(iso): - for i in iso['name']: - print("{0}: == {1} {2} ==".format(datetime.datetime.now(), iso[i]['type'], iso[i]['fmt'])) - print('\t\t\t = Size: {0}'.format(iso[i]['size'])) - print('\t\t\t = SHA256: {0}'.format(iso[i]['sha'])) - print('\t\t\t = Location: {0}'.format(iso[i]['file'])) - -def cleanUp(): - # TODO: clear out all of prepdir? - pass diff --git a/overlay/x86_64/.keepme b/bdisk/chroot.py similarity index 100% rename from overlay/x86_64/.keepme rename to bdisk/chroot.py diff --git a/bdisk/confparse.py b/bdisk/confparse.py new file mode 100644 index 0000000..e69de29 diff --git a/bdisk/env_prep.py b/bdisk/env_prep.py new file mode 100644 index 0000000..e69de29 diff --git a/bdisk/git.py b/bdisk/git.py new file mode 100644 index 0000000..e69de29 diff --git a/bdisk/host.py b/bdisk/host.py deleted file mode 100755 index 7045555..0000000 --- a/bdisk/host.py +++ /dev/null @@ -1,194 +0,0 @@ -import os -import sys -import platform -import re -import glob -import configparser -import validators -import git -import datetime -from socket import getaddrinfo - -def getOS(): - # Returns one of: SuSE, debian, fedora, redhat, centos, mandrake, - # mandriva, rocks, slackware, yellowdog, gentoo, UnitedLinux, - # turbolinux, arch, mageia - distro = list(platform.linux_distribution())[0].lower() - return(distro) - -def getBits(): - bits = list(platform.architecture())[0] - return(bits) - -def getHostname(): - hostname = platform.node() - return(hostname) - -def getConfig(conf_file = '/etc/bdisk/build.ini'): - conf = False - # define some defailt conf paths in case we're installed by - # a package manager. in order of the paths we should search. - currentdir = os.path.dirname(os.path.realpath(__file__)) - currentdir_user = os.path.abspath('{0}/../build.ini'.format(currentdir)) - currentdir_def = os.path.abspath('{0}/../extra/dist.build.ini'.format(currentdir)) - default_conf_paths = ['/etc/bdisk/build.ini', - '/usr/share/bdisk/build.ini', - '/usr/share/bdisk/extra/build.ini', - '/usr/share/docs/bdisk/build.ini', # this is the preferred installation path for packagers - '/usr/local/etc/bdisk/build.ini', - '/usr/local/share/docs/bdisk/build.ini', - '/opt/dev/bdisk/build.ini', - '/opt/dev/bdisk/extra/build.ini', - '/opt/dev/bdisk/extra/dist.build.ini', - currentdir_user] - # if we weren't given one/using the default... - if conf_file == '/etc/bdisk/build.ini': - if not os.path.isfile(conf_file): - for p in default_conf_paths: - if os.path.isfile(p): - conf = p - break - else: - conf = conf_file - else: - conf = conf_file - defconf = os.path.abspath('{0}/../extra/dist.build.ini'.format(os.path.dirname(os.path.realpath(__file__)))) - if not conf: - # okay, so let's check for distributed/"blank" ini's - # since we can't seem to find one. - dist_conf_paths = [re.sub('(build\.ini)','dist.\\1', s) for s in default_conf_paths] - for q in dist_conf_paths: - if os.path.isfile(q): - conf = q - break - if os.path.isfile(default_conf_paths[4]): - defconf = default_conf_paths[4] - confs = [defconf, conf] - return(confs) - -def parseConfig(confs): - config = configparser.ConfigParser() - config._interpolation = configparser.ExtendedInterpolation() - config.read(confs) - # a dict makes this so much easier. - config_dict = {s:dict(config.items(s)) for s in config.sections()} - # Convert the booleans to pythonic booleans in the dict... - config_dict['bdisk']['user'] = config['bdisk'].getboolean('user') - config_dict['build']['i_am_a_racecar'] = config['build'].getboolean('i_am_a_racecar') - config_dict['build']['ipxe'] = config['build'].getboolean('ipxe') - config_dict['build']['sign'] = config['build'].getboolean('sign') - config_dict['build']['multiarch'] = (config_dict['build']['multiarch']).lower() - config_dict['ipxe']['iso'] = config['ipxe'].getboolean('iso') - config_dict['ipxe']['usb'] = config['ipxe'].getboolean('usb') - config_dict['sync']['git'] = config['sync'].getboolean('git') - config_dict['sync']['http'] = config['sync'].getboolean('http') - config_dict['sync']['rsync'] = config['sync'].getboolean('rsync') - config_dict['sync']['tftp'] = config['sync'].getboolean('tftp') - config_dict['rsync']['iso'] = config['rsync'].getboolean('iso') - # Get the version... - # Two possibilities. - # e.g. 1 commit after tag with 7-digit object hex: ['v3.10', '1', 'gb4a5e40'] - # Or if were sitting on a tag with no commits: ['v3.10'] - # So we want our REAL version to be the following: - # Tagged release: v#.## - # X number of commits after release: v#.##rX - # Both have the (local) build number appended to the deliverables, - # which is reset for an empty isodir OR a new tagged release (incl. - # commits on top of a new tagged release). e.g. for build Y: - # v#.##-Y or v#.##rX-Y - if config_dict['bdisk']['ver'] == '': - try: - repo = git.Repo(config_dict['build']['basedir']) - refs = repo.git.describe(repo.head.commit).split('-') - if len(refs) >= 2: - config_dict['bdisk']['ver'] = refs[0] + 'r' + refs[1] - else: - config_dict['bdisk']['ver'] = refs[0] - except: - exit(('{0}: ERROR: {1} is NOT a valid git repository, and you did not specify bdisk:ver in your build.ini! ' + - 'Did you perhaps install from a package manager? Please refer to the documentation.').format(datetime.datetime.now(), - config_dict['build']['basedir'])) - # And the build number. - # TODO: support tracking builds per version. i.e. in buildnum: - # v2.51r13:0 - # v2.51r17:3 - if os.path.isfile(config_dict['build']['dlpath'] + '/buildnum'): - with open(config_dict['build']['dlpath'] + '/buildnum', 'r') as f: - config_dict['build']['buildnum'] = int(f.readlines()[0]) - else: - config_dict['build']['buildnum'] = 0 - # But logically we should start the build over at 0 if we don't have any existing ISO's. - if os.path.isdir(config_dict['build']['isodir']): - if os.listdir(config_dict['build']['isodir']) == []: - config_dict['build']['buildnum'] = 0 - # ...or if we don't have any previous builds for this ISO version. - elif not glob.glob('{0}/*v{1}r*.iso'.format(config_dict['build']['isodir'], config_dict['bdisk']['ver'])): - config_dict['build']['buildnum'] = 0 - # and build a list of arch(es) we want to build - if config_dict['build']['multiarch'] in ('','yes','true','1','no','false','0'): - config_dict['build']['arch'] = ['x86_64','i686'] - elif config_dict['build']['multiarch'] in ('x86_64','64','no32'): - config_dict['build']['arch'] = ['x86_64'] - elif config_dict['build']['multiarch'] in ('i686','32','no64'): - config_dict['build']['arch'] = ['i686'] - else: - exit(('{0}: ERROR: {1} is not a valid value. Check your configuration.').format( - datetime.datetime.now(), - config_dict['build']['multiarch'])) - ## VALIDATORS ## - # Validate bootstrap mirror - config_dict['src'] = {} - for a in config_dict['build']['arch']: - config_dict['src'][a] = config_dict['source_' + a] - if (validators.domain(config_dict['src'][a]['mirror']) or validators.ipv4( - config_dict['src'][a]['mirror']) or validatords.ipv6( - config_dict['src'][a]['mirror'])): - try: - getaddrinfo(config_dict['src'][a]['mirror'], None) - except: - exit(('{0}: ERROR: {1} does not resolve and cannot be used as a ' + - 'mirror for the bootstrap tarballs. Check your configuration.').format( - datetime.datetime.now(), - config_dict['src'][a]['host'])) - config_dict['src'][a]['gpg'] = config['source_' + a].getboolean('gpg') - # Are we rsyncing? If so, validate the rsync host. - # Works for IP address too. It does NOT check to see if we can - # actually *rsync* to it; that'll come later. - if config_dict['sync']['rsync']: - if (validators.domain(config_dict['rsync']['host']) or validators.ipv4( - config_dict['rsync']['host']) or validators.ipv6( - config_dict['rsync']['host'])): - try: - getaddrinfo(config_dict['rsync']['host'], None) - except: - exit(('{0}: ERROR: {1} does not resolve and cannot be used for rsyncing.' + - 'Check your configuration.').format( - datetime.datetime.now(), - config_dict['rsync']['host'])) - else: - exit(('{0}: ERROR: {1} is not a valid host and cannot be used for rsyncing.' + - 'Check your configuration.').format( - datetime.datetime.now(), - config_dict['rsync']['host'])) - # Validate the URI. - if config_dict['build']['ipxe']: - # so this won't validate e.g. custom LAN domains (https://pxeserver/bdisk.php). TODO. - if not validators.url(config_dict['ipxe']['uri']): - if not re.match('^https?://localhost(/.*)?$'): - exit('{0}: ERROR: {1} is not a valid URL/URI. Check your configuration.'.format( - datetime.datetime.now(), - config_dict['ipxe']['uri'])) - # Validate required paths - if not os.path.exists(config_dict['build']['basedir'] + '/extra'): - exit(("{0}: ERROR: {1} does not contain BDisk's core files!" + - "Check your configuration.").format( - datetime.datetime.now(), - config_dict['build']['basedir'])) - # Make dirs if they don't exist - for d in ('archboot', 'isodir', 'mountpt', 'srcdir', 'prepdir'): - os.makedirs(config_dict['build'][d], exist_ok = True) - # Make dirs for sync staging if we need to - for x in ('http', 'tftp'): - if config_dict['sync'][x]: - os.makedirs(config_dict[x]['path'], exist_ok = True) - return(config, config_dict) diff --git a/bdisk/iPXE.py b/bdisk/iPXE.py new file mode 100644 index 0000000..e69de29 diff --git a/bdisk/ipxe.py b/bdisk/ipxe.py deleted file mode 100755 index 76fe97f..0000000 --- a/bdisk/ipxe.py +++ /dev/null @@ -1,304 +0,0 @@ -import os -import shutil -import re -import subprocess -import jinja2 -import git -import patch -import datetime -import humanize -import hashlib - - -def buildIPXE(conf): - build = conf['build'] - bdisk = conf['bdisk'] - ipxe = conf['ipxe'] - mini = ipxe['iso'] - prepdir = conf['build']['prepdir'] - templates_dir = build['basedir'] + '/extra/templates' - ipxe_tpl = templates_dir + '/iPXE' - srcdir = build['srcdir'] - embedscript = build['dlpath'] + '/EMBED' - ipxe_src = srcdir + '/ipxe' - #ipxe_git_uri = 'git://git.ipxe.org/ipxe.git' - ipxe_git_uri = 'http://git.ipxe.org/ipxe.git' - print('{0}: [IPXE] Prep/fetch sources...'.format( - datetime.datetime.now())) - # Get the source - if os.path.isdir(ipxe_src): - shutil.rmtree(ipxe_src) - ipxe_repo = git.Repo.clone_from(ipxe_git_uri, ipxe_src) - # Generate patches - tpl_loader = jinja2.FileSystemLoader(ipxe_tpl) - env = jinja2.Environment(loader = tpl_loader) - tpl = env.get_template('EMBED.j2') - tpl_out = tpl.render(ipxe = ipxe) - with open(embedscript, 'w+') as f: - f.write(tpl_out) - # Feature enabling - # In config/general.h - with open('{0}/src/config/general.h'.format(ipxe_src), 'r') as f: - generalconf = f.read() - # And in config/console.h - with open('{0}/src/config/console.h'.format(ipxe_src), 'r') as f: - consoleconf = f.read() - patterns = (('^#undef(\s*NET_PROTO_IPV6.*)$','#define\g<1>'), # enable IPv6 - ('^#undef(\s*DOWNLOAD_PROTO_HTTPS)','#define\g<1>'), # enable HTTPS - ('^//(#define\s*IMAGE_TRUST_CMD)','\g<1>'), # moar HTTPS - ('^#undef(\s*DOWNLOAD_PROTO_FTP)','#define\g<1>')) # enable FTP - #('^//(#define\s*CONSOLE_CMD)','\g<1>'), # BROKEN in EFI? TODO. if enable, replace } with , above etc. - #('^//(#define\s*IMAGE_PNG','\g<1>'), # SAME, broken in EFI? TODO. - #console = ('^//(#define\s*CONSOLE_VESAFB)','\g<1>') # BROKEN in EFI? TODO. - # https://stackoverflow.com/a/4427835 - # https://emilics.com/notebook/enblog/p869.html - # The above methods don't seem to work. it craps out on the pattern matchings - # so we use tuples instead. - for x in patterns: - generalconf = re.sub(x[0], x[1], generalconf, flags=re.MULTILINE) - with open('{0}/src/config/general.h'.format(ipxe_src), 'w') as f: - f.write(generalconf) - # Uncomment when we want to test the above consdict etc. - #for x in patterns: - # generalconf = re.sub(x[0], x[1], generalconf, flags=re.MULTILINE) - #with open('{0}/src/config/console.h'.format(ipxe_src), 'w') as f: - # f.write(console) - # Now we make! - cwd = os.getcwd() - os.chdir(ipxe_src + '/src') - modenv = os.environ.copy() - modenv['EMBED'] = embedscript - #modenv['TRUST'] = ipxe_ssl_ca # TODO: test these - #modenv['CERT'] = '{0},{1}'.format(ipxe_ssl_ca, ipxe_ssl_crt) # TODO: test these - #modenv['PRIVKEY'] = ipxe_ssl_ckey # TODO: test these - build_cmd = {} - build_cmd['base'] = ['/usr/bin/make', - 'all', - 'EMBED={0}'.format(embedscript)] - # TODO: copy the UNDI stuff/chainloader to tftpboot, if enabled - build_cmd['undi'] = ['/usr/bin/make', - 'bin/ipxe.pxe', - 'EMBED={0}'.format(embedscript)] - build_cmd['efi'] = ['/usr/bin/make', - 'bin-i386-efi/ipxe.efi', - 'bin-x86_64-efi/ipxe.efi', - 'EMBED={0}'.format(embedscript)] - # Now we call the commands. - DEVNULL = open(os.devnull, 'w') - if os.path.isfile(build['dlpath'] + '/ipxe.log'): - os.remove(build['dlpath'] + '/ipxe.log') - print(('{0}: [IPXE] Building iPXE ({1}). PROGRESS: tail -f {2}/ipxe.log ...').format( - datetime.datetime.now(), - ipxe_src, - build['dlpath'])) - with open('{0}/ipxe.log'.format(build['dlpath']), 'a') as f: - subprocess.call(build_cmd['base'], stdout = f, stderr = subprocess.STDOUT, env=modenv) - subprocess.call(build_cmd['undi'], stdout = f, stderr = subprocess.STDOUT, env=modenv) - subprocess.call(build_cmd['efi'], stdout = f, stderr = subprocess.STDOUT, env=modenv) - print('{0}: [IPXE] Built iPXE image(s) successfully.'.format(datetime.datetime.now())) - os.chdir(cwd) - -def genISO(conf): - build = conf['build'] - bdisk = conf['bdisk'] - ipxe = conf['ipxe'] - arch = build['arch'] - dlpath = build['dlpath'] - ver = bdisk['ver'] - isodir = build['isodir'] - isofile = '{0}-{1}-{2}.mini.iso'.format(bdisk['uxname'], bdisk['ver'], build['buildnum']) - isopath = '{0}/{1}'.format(isodir, isofile) - prepdir = build['prepdir'] - chrootdir = build['chrootdir'] - mini = ipxe['iso'] - iso = {} - srcdir = build['srcdir'] - ipxe_src = srcdir + '/ipxe' - mountpt = build['mountpt'] - templates_dir = build['basedir'] + '/extra/templates/iPXE/' - tpl_loader = jinja2.FileSystemLoader(templates_dir) - env = jinja2.Environment(loader = tpl_loader) - bootdir = '{0}/ipxe_mini'.format(dlpath) - efiboot_img = '{0}/EFI/{1}/efiboot.img'.format(bootdir, bdisk['name']) - innerefi64 = '{0}/src/bin-x86_64-efi/ipxe.efi'.format(ipxe_src) - efi = False - # this shouldn't be necessary... if it is, we can revisit this in the future. see "Inner dir" below. - #innerefi32 = '{0}/src/bin-i386-efi/ipxe.efi'.format(ipxe_src) - # We only need to do EFI prep if we have UEFI/x86_64 support. See above, but IA64 is dead, Zed. - if mini and (('x86_64') in arch): - efi = True - # EFI prep/building - print('{0}: [IPXE] UEFI support for Mini ISO...'.format(datetime.datetime.now())) - if os.path.isdir(bootdir): - shutil.rmtree(bootdir) - os.makedirs(os.path.dirname(efiboot_img), exist_ok = True) # FAT32 embedded EFI dir - os.makedirs('{0}/EFI/boot'.format(bootdir), exist_ok = True) # EFI bootloader binary dir - # Inner dir (miniboot.img file) - #sizetotal = 2097152 # 2MB wiggle room. increase this if we add IA64. - sizetotal = 34603008 # 33MB wiggle room. increase this if we add IA64. - sizetotal += os.path.getsize(innerefi64) - sizefiles = ['HashTool', 'PreLoader'] - for f in sizefiles: - sizetotal += os.path.getsize('{0}/root.x86_64/usr/share/efitools/efi/{1}.efi'.format( - chrootdir, - f)) - # These won't be *quite* accurate since it's before the template substitution, - # but it'll be close enough. - for (path, dirs, files) in os.walk(templates_dir): - for file in files: - fname = os.path.join(path, file) - sizetotal += os.path.getsize(fname) - print("{0}: [IPXE] Creating EFI ESP image {1} ({2})...".format( - datetime.datetime.now(), - efiboot_img, - humanize.naturalsize(sizetotal))) - if os.path.isfile(efiboot_img): - os.remove(efiboot_img) - with open(efiboot_img, 'wb+') as f: - f.truncate(sizetotal) - DEVNULL = open(os.devnull, 'w') - cmd = ['/sbin/mkfs.fat', '-F', '32', '-n', 'iPXE_EFI', efiboot_img] - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - cmd = ['/bin/mount', efiboot_img, mountpt] - subprocess.call(cmd) - os.makedirs(mountpt + '/EFI/boot', exist_ok = True) # "Inner" (EFI image) - #os.makedirs('{0}/EFI/{1}'.format(mountpt, bdisk['name']), exist_ok = True) # "Inner" (EFI image) - os.makedirs('{0}/boot'.format(bootdir), exist_ok = True) # kernel(s) - os.makedirs('{0}/loader/entries'.format(bootdir), exist_ok = True) # EFI - for d in (mountpt, bootdir): - shutil.copy2(innerefi64,'{0}/EFI/boot/ipxe.efi'.format(d)) - for f in ('PreLoader.efi', 'HashTool.efi'): - if f == 'PreLoader.efi': - fname = 'bootx64.efi' - else: - fname = f - - with open('{0}/root.x86_64/usr/share/efitools/efi/{1}'.format( - chrootdir,f), - 'rb') as r: - with open('{0}/EFI/boot/{1}'.format(mountpt, fname), 'wb') as file: - file.write(r.read()) - with open('{0}/root.x86_64/usr/share/efitools/efi/{1}'.format( - chrootdir, f), - 'rb') as r: - with open('{0}/EFI/boot/{1}'.format(bootdir, fname), 'wb+') as file: - file.write(r.read()) - # And the systemd efi bootloader. - with open('{0}/root.x86_64/usr/lib/systemd/boot/efi/systemd-bootx64.efi'.format( - chrootdir), - 'rb') as r: - with open('{0}/EFI/boot/loader.efi'.format(mountpt), 'wb+') as f: - f.write(r.read()) - - # And loader entries. - os.makedirs('{0}/loader/entries'.format(mountpt, exist_ok = True)) - for t in ('loader', 'base'): - if t == 'base': - name = bdisk['uxname'] - tplpath = '{0}/loader/entries'.format(mountpt) - else: - name = t - tplpath = '{0}/loader'.format(mountpt) - tpl = env.get_template('EFI/{0}.conf.j2'.format(t)) - tpl_out = tpl.render(build = build, bdisk = bdisk) - with open('{0}/{1}.conf'.format(tplpath, name), "w+") as f: - f.write(tpl_out) - cmd = ['/bin/umount', mountpt] - subprocess.call(cmd) - # Outer dir - outerdir = True - os.makedirs('{0}/isolinux'.format(bootdir), exist_ok = True) # BIOS - # Loader entries (outer) - for t in ('loader','base'): - if t == 'base': - name = bdisk['uxname'] - tplpath = '{0}/loader/entries'.format(bootdir) - else: - name = t - tplpath = '{0}/loader'.format(bootdir) - tpl = env.get_template('EFI/{0}.conf.j2'.format(t)) - tpl_out = tpl.render(build = build, bdisk = bdisk, outerdir = outerdir) - with open('{0}/{1}.conf'.format(tplpath, name), "w+") as f: - f.write(tpl_out) - if mini: - # BIOS prepping - shutil.copy2('{0}/src/bin/ipxe.lkrn'.format(ipxe_src), '{0}/boot/ipxe.krn'.format(bootdir)) - isolinux_filelst = ['isolinux.bin', - 'ldlinux.c32'] - os.makedirs('{0}/isolinux'.format(bootdir), exist_ok = True) - for f in isolinux_filelst: - shutil.copy2('{0}/root.{1}/usr/lib/syslinux/bios/{2}'.format(chrootdir, arch[0], f), '{0}/isolinux/{1}'.format(bootdir, f)) - tpl = env.get_template('BIOS/isolinux.cfg.j2') - tpl_out = tpl.render(build = build, bdisk = bdisk) - with open('{0}/isolinux/isolinux.cfg'.format(bootdir), "w+") as f: - f.write(tpl_out) - print("{0}: [IPXE] Building Mini ISO ({1})...".format(datetime.datetime.now(), isopath)) - if efi: - cmd = ['/usr/bin/xorriso', - '-as', 'mkisofs', - '-iso-level', '3', - '-full-iso9660-filenames', - '-volid', bdisk['name'] + '_MINI', - '-appid', bdisk['desc'], - '-publisher', bdisk['dev'], - '-preparer', 'prepared by ' + bdisk['dev'], - '-eltorito-boot', 'isolinux/isolinux.bin', - '-eltorito-catalog', 'isolinux/boot.cat', - '-no-emul-boot', - '-boot-load-size', '4', - '-boot-info-table', - '-isohybrid-mbr', '{0}/root.{1}/usr/lib/syslinux/bios/isohdpfx.bin'.format(chrootdir, arch[0]), - '-eltorito-alt-boot', - '-e', 'EFI/{0}/{1}'.format(bdisk['name'], os.path.basename(efiboot_img)), - '-no-emul-boot', - '-isohybrid-gpt-basdat', - '-output', isopath, - bootdir] - else: - # UNTESTED. TODO. - # I think i want to also get rid of: -boot-load-size 4, - # -boot-info-table, ... possiblyyy -isohybrid-gpt-basedat... - # https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#Remove_UEFI_boot_support_from_Optical_Media - cmd = ['/usr/bin/xorriso', - '-as', 'mkisofs', - '-iso-level', '3', - '-full-iso9660-filenames', - '-volid', bdisk['name'] + '_MINI', - '-appid', bdisk['desc'], - '-publisher', bdisk['dev'], - '-preparer', 'prepared by ' + bdisk['dev'], - '-eltorito-boot', 'isolinux/isolinux.bin', - '-eltorito-catalog', 'isolinux/boot.cat', - '-no-emul-boot', - '-boot-load-size', '4', - '-boot-info-table', - '-isohybrid-mbr', '{0}/root.{1}/usr/lib/syslinux/bios/isohdpfx.bin'.format(chrootdir, arch[0]), - '-no-emul-boot', - '-isohybrid-gpt-basdat', - '-output', isopath, - bootdir] - DEVNULL = open(os.devnull, 'w') - subprocess.call(cmd, stdout = DEVNULL, stderr = subprocess.STDOUT) - # Get size of ISO - iso['name'] = ['Mini'] - iso['Mini'] = {} - iso['Mini']['sha'] = hashlib.sha256() - with open(isopath, 'rb') as f: - while True: - stream = f.read(65536) # 64kb chunks - if not stream: - break - iso['Mini']['sha'].update(stream) - iso['Mini']['sha'] = iso['Mini']['sha'].hexdigest() - iso['Mini']['file'] = isopath - iso['Mini']['size'] = humanize.naturalsize(os.path.getsize(isopath)) - iso['Mini']['type'] = 'Mini' - iso['Mini']['fmt'] = 'Hybrid ISO' - return(iso) - -def tftpbootEnv(conf): - build = conf['build'] - ipxe = conf['ipxe'] - sync = conf['sync'] - if sync['tftp']: - pass # TODO: generate a pxelinux.cfg in bdisk/tftp.py (to write) and sync in the ipxe chainloader here diff --git a/bdisk/main.py b/bdisk/main.py new file mode 100644 index 0000000..e69de29 diff --git a/bdisk/prep.py b/bdisk/prep.py deleted file mode 100755 index cea9c7d..0000000 --- a/bdisk/prep.py +++ /dev/null @@ -1,375 +0,0 @@ -import os -import shutil -import re -import hashlib -import tarfile -import subprocess -import re -import jinja2 -import datetime -import humanize -from urllib.request import urlopen -import host # bdisk.host -import bGPG # bdisk.bGPG - - -def dirChk(conf): - # Make dirs if they don't exist - for d in ('archboot', 'isodir', 'mountpt', 'srcdir', 'prepdir'): - os.makedirs(conf['build'][d], exist_ok = True) - # Make dirs for sync staging if we need to - for x in ('http', 'tftp'): - if conf['sync'][x]: - os.makedirs(conf[x]['path'], exist_ok = True) - -def downloadTarball(conf): - build = conf['build'] - dlpath = build['dlpath'] - src = conf['src'] - arch = build['arch'] - tarball_path = {} - for a in arch: - locsrc = conf['source_' + a] - mirror = locsrc['mirrorproto'] + '://' + locsrc['mirror'] - rlsdir = mirror + locsrc['mirrorpath'] - if locsrc['mirrorchksum'] != '': - if locsrc['chksumtype'] == '': - exit("{0}: source_{1}:chksumtype is unset!".format(datetime.datetime.now(), a)) - hash_type = locsrc['chksumtype'] - hash_in = urlopen(mirror + locsrc['mirrorchksum']) - hashsums = hash_in.read() - hash_in.close() - hash_raw = hashsums.decode("utf-8") - hash_list = list(filter(None, hash_raw.split('\n'))) - hash_dict = {x.split()[1]: x.split()[0] for x in hash_list} - # returns path/filename e.g. /some/path/to/file.tar.gz - # we use .gnupg since we'll need it later. - os.makedirs(dlpath + '/.gnupg', exist_ok = True) - tarball_path[a] = dlpath + '/.latest.' + a + '.tar' - pattern = re.compile('^.*' + a + '\.tar(\.(gz|bz2|xz))?$') - if locsrc['mirrorfile'] != '': - tarball = locsrc['mirrorfile'] - else: - tarball = [filename.group(0) for l in list(hash_dict.keys()) for filename in [pattern.search(l)] if filename][0] - if locsrc['mirrorchksum'] != '': - hashsum = hash_dict[tarball] - if os.path.isfile(tarball_path[a]): - pass - else: - # fetch the tarball... - print("{0}: [PREP] Fetching tarball ({1} architecture)...".format( - datetime.datetime.now(), - a)) - tarball_dl = urlopen(rlsdir + tarball) - with open(tarball_path[a], 'wb') as f: - f.write(tarball_dl.read()) - tarball_dl.close() - print("{0}: [PREP] Done fetching {1} ({2}).".format( - datetime.datetime.now(), - tarball_path[a], - humanize.naturalsize( - os.path.getsize(tarball_path[a])))) - if locsrc['mirrorchksum'] != '': - print("{0}: [PREP] Checking hash checksum {1} against {2}...".format( - datetime.datetime.now(), - hashsum, - tarball_path[a])) - # Calculate the checksum according to type specified. - tarball_hash = False - for i in hashlib.algorithms_available: - if hash_type == i: - hashfunc = getattr(hashlib, i) - tarball_hash = hashfunc(open(tarball_path[a], 'rb').read()).hexdigest() - break - if not tarball_hash: - exit("{0}: source_{1}:chksumtype '{2}' is not supported on this machine!".format( - datetime.datetime.now(), - a, - hash_type)) - if tarball_hash != hashsum: - exit(("{0}: {1} either did not download correctly\n\t\t\t or a wrong (probably old) version exists on the filesystem.\n\t\t\t " + - "Please delete it and try again.").format(datetime.datetime.now(), tarball)) - if locsrc['mirrorgpgsig'] != '': - # let's verify the signature. - if locsrc['mirrorgpgsig'] == '.sig': - gpgsig_remote = rlsdir + tarball + '.sig' - else: - gpgsig_remote = locsrc['mirrorgpgsig'] - sig_dl = urlopen(gpgsig_remote) - sig = tarball_path[a] + '.sig' - with open(sig, 'wb+') as f: - f.write(sig_dl.read()) - sig_dl.close() - gpg_verify = bGPG.gpgVerify(sig, tarball_path[a], conf) - if not gpg_verify: - exit("{0}: There was a failure checking {1} against {2}. Please investigate.".format( - datetime.datetime.now(), - sig, - tarball_path[a])) - return(tarball_path) - -def unpackTarball(tarball_path, build, keep = False): - chrootdir = build['chrootdir'] - if os.path.isdir(chrootdir): - if not keep: - # Make the dir if it doesn't exist - shutil.rmtree(chrootdir, ignore_errors = True) - os.makedirs(chrootdir, exist_ok = True) - else: - os.makedirs(chrootdir, exist_ok = True) - # Open and extract the tarball - if not keep: - for a in build['arch']: - print("{0}: [PREP] Extracting tarball {1} ({2})...".format( - datetime.datetime.now(), - tarball_path[a], - humanize.naturalsize( - os.path.getsize(tarball_path[a])))) - tar = tarfile.open(tarball_path[a], 'r:gz') - tar.extractall(path = chrootdir) - tar.close() - print("{0}: [PREP] Extraction for {1} finished.".format(datetime.datetime.now(), tarball_path[a])) - -def buildChroot(conf, keep = False): - build = conf['build'] - bdisk = conf['bdisk'] - user = conf['user'] - dlpath = build['dlpath'] - chrootdir = build['chrootdir'] - arch = build['arch'] - extradir = build['basedir'] + '/extra' - unpack_me = unpackTarball(downloadTarball(conf), build, keep) - # build dict of lists of files and dirs from pre-build.d dir, do the same with arch-specific changes. - prebuild_overlay = {} - prebuild_arch_overlay = {} - for x in arch: - prebuild_arch_overlay[x] = {} - for y in ['files', 'dirs']: - prebuild_overlay[y] = [] - prebuild_arch_overlay[x][y] = [] - for path, dirs, files in os.walk('{0}/pre-build.d/'.format(extradir)): - prebuild_overlay['dirs'].append('{0}/'.format(path)) - for file in files: - prebuild_overlay['files'].append(os.path.join(path, file)) - for x in prebuild_overlay.keys(): - prebuild_overlay[x][:] = [re.sub('^{0}/pre-build.d/'.format(extradir), '', s) for s in prebuild_overlay[x]] - prebuild_overlay[x] = list(filter(None, prebuild_overlay[x])) - for y in prebuild_arch_overlay.keys(): - prebuild_arch_overlay[y][x][:] = [i for i in prebuild_overlay[x] if i.startswith(y)] - prebuild_arch_overlay[y][x][:] = [re.sub('^{0}/'.format(y), '', s) for s in prebuild_arch_overlay[y][x]] - prebuild_arch_overlay[y][x] = list(filter(None, prebuild_arch_overlay[y][x])) - prebuild_overlay[x][:] = [y for y in prebuild_overlay[x] if not y.startswith(('x86_64','i686'))] - prebuild_overlay['dirs'].remove('/') - # create the dir structure. these should almost definitely be owned by root. - for a in arch: - for dir in prebuild_overlay['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0) - # and copy over the files. again, chown to root. - for file in prebuild_overlay['files']: - shutil.copy2('{0}/pre-build.d/{1}'.format(extradir, file), - '{0}/root.{1}/{2}'.format(chrootdir, a, file), follow_symlinks = False) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - # do the same for arch-specific stuff. - for dir in prebuild_arch_overlay[a]['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0) - for file in prebuild_arch_overlay[a]['files']: - shutil.copy2('{0}/pre-build.d/{1}/{2}'.format(extradir, a, file), - '{0}/root.{1}/{2}'.format(chrootdir, a, file), follow_symlinks = False) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - -def prepChroot(conf): - build = conf['build'] - bdisk = conf['bdisk'] - user = conf['user'] - chrootdir = build['chrootdir'] - prepdir = build['prepdir'] - arch = build['arch'] - bdisk_repo_dir = build['basedir'] - dlpath = build['dlpath'] - templates_dir = bdisk_repo_dir + '/extra/templates' - #build = {} # why was this here? - ## let's prep some variables to write out the version info.txt - # and these should be passed in from the args, from the most part. - build['name'] = bdisk['name'] - build['time'] = datetime.datetime.utcnow().strftime("%a %b %d %H:%M:%S UTC %Y") - hostname = host.getHostname - build['user'] = os.environ['USER'] - if 'SUDO_USER' in os.environ: - build['realuser'] = os.environ['SUDO_USER'] - build['buildnum'] += 1 - with open(dlpath + '/buildnum', 'w+') as f: - f.write(str(build['buildnum']) + "\n") - # and now that we have that dict, let's write out the VERSION_INFO.txt file. - loader = jinja2.FileSystemLoader(templates_dir) - env = jinja2.Environment(loader = loader) - tpl = env.get_template('VERSION_INFO.txt.j2') - tpl_out = tpl.render(build = build, bdisk = bdisk, hostname = host.getHostname(), distro = host.getOS()) - for a in arch: - # Copy the GPG pubkey - shutil.copy2('{0}/gpgkey.pub'.format(dlpath), '{0}/root.{1}/root/pubkey.gpg'.format(chrootdir, a)) - # Write the VERSION_INFO.txt from template - with open('{0}/root.{1}/root/VERSION_INFO.txt'.format(chrootdir, a), 'w+') as f: - f.write(tpl_out) - with open('{0}/VERSION_INFO.txt'.format(prepdir), 'w+') as f: - f.write(tpl_out) - # And perform the templating overlays - templates_overlay = {} - templates_arch_overlay = {} - for x in arch: - templates_arch_overlay[x] = {} - for y in ['files', 'dirs']: - templates_overlay[y] = [] - templates_arch_overlay[x][y] = [] - for path, dirs, files in os.walk('{0}/pre-build.d'.format(templates_dir)): - for dir in dirs: - templates_overlay['dirs'].append('{0}/'.format(dir)) - for file in files: - templates_overlay['files'].append(os.path.join(path, file)) - for x in templates_overlay.keys(): - templates_overlay[x][:] = [re.sub('^{0}/pre-build.d/(.*)(\.j2)'.format(templates_dir), '\g<1>', s) for s in templates_overlay[x]] - templates_overlay[x] = list(filter(None, templates_overlay[x])) - for y in templates_arch_overlay.keys(): - templates_arch_overlay[y][x][:] = [i for i in templates_overlay[x] if i.startswith(y)] - templates_arch_overlay[y][x][:] = [re.sub('^{0}/(.*)(\.j2)'.format(y), '\g<1>', s) for s in templates_arch_overlay[y][x]] - templates_arch_overlay[y][x][:] = [re.sub('^{0}/'.format(y), '', s) for s in templates_arch_overlay[y][x]] - templates_arch_overlay[y][x] = list(filter(None, templates_arch_overlay[y][x])) - templates_overlay[x][:] = [y for y in templates_overlay[x] if not y.startswith(('x86_64','i686'))] - if '/' in templates_overlay['dirs']: - templates_overlay['dirs'].remove('/') - # create the dir structure. these should almost definitely be owned by root. - if build['gpg']: - gpg = conf['gpgobj'] - if conf['gpg']['mygpgkey']: - signkey = conf['gpg']['mygpgkey'] - else: - signkey = str(gpg.signers[0].subkeys[0].fpr) - for a in arch: - for dir in templates_overlay['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0) - # and write the files. again, chown to root. - for file in templates_overlay['files']: - tplname = 'pre-build.d/{0}.j2'.format(file) - tpl = env.get_template(tplname) - tpl_out = tpl.render(build = build, bdisk = bdisk, mygpgkey = signkey, user = user) - with open('{0}/root.{1}/{2}'.format(chrootdir, a, file), 'w') as f: - f.write(tpl_out) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - # do the same for arch-specific stuff. - for dir in templates_arch_overlay[a]['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0) - for file in templates_arch_overlay[a]['files']: - tplname = 'pre-build.d/{0}/{1}.j2'.format(a, file) - tpl = env.get_template('{0}'.format(tplname)) - tpl_out = tpl.render(build = build, bdisk = bdisk, mygpgkey = signkey) - with open('{0}/root.{1}/{2}'.format(chrootdir, a, file), 'w') as f: - f.write(tpl_out) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - return(build) - -def postChroot(conf): - build = conf['build'] - bdisk = conf['bdisk'] - dlpath = build['dlpath'] - chrootdir = build['chrootdir'] - arch = build['arch'] - overdir = build['basedir'] + '/overlay/' - templates_dir = '{0}/extra/templates'.format(build['basedir']) - loader = jinja2.FileSystemLoader(templates_dir) - env = jinja2.Environment(loader = loader) - postbuild_overlay = {} - postbuild_arch_overlay = {} - for x in arch: - os.remove('{0}/root.{1}/README'.format(chrootdir, x)) - postbuild_arch_overlay[x] = {} - for y in ['files', 'dirs']: - postbuild_overlay[y] = [] - postbuild_arch_overlay[x][y] = [] - for path, dirs, files in os.walk(overdir): - postbuild_overlay['dirs'].append('{0}/'.format(path)) - for file in files: - postbuild_overlay['files'].append(os.path.join(path, file)) - for x in postbuild_overlay.keys(): - postbuild_overlay[x][:] = [re.sub('^' + overdir, '', s) for s in postbuild_overlay[x]] - postbuild_overlay[x] = list(filter(None, postbuild_overlay[x])) - for y in postbuild_arch_overlay.keys(): - postbuild_arch_overlay[y][x][:] = [i for i in postbuild_overlay[x] if i.startswith(y)] - postbuild_arch_overlay[y][x][:] = [re.sub('^' + y + '/', '', s) for s in postbuild_arch_overlay[y][x]] - postbuild_arch_overlay[y][x] = list(filter(None, postbuild_arch_overlay[y][x])) - postbuild_overlay[x][:] = [y for y in postbuild_overlay[x] if not y.startswith(('x86_64','i686'))] - postbuild_overlay['dirs'].remove('/') - # create the dir structure. these should almost definitely be owned by root. - for a in arch: - for dir in postbuild_overlay['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0, follow_symlinks = False) - # and copy over the files. again, chown to root. - for file in postbuild_overlay['files']: - shutil.copy2(overdir + file, '{0}/root.{1}/{2}'.format(chrootdir, a, file), follow_symlinks = False) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - # do the same for arch-specific stuff. - for dir in postbuild_arch_overlay[a]['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0, follow_symlinks = False) - for file in postbuild_arch_overlay[a]['files']: - shutil.copy2('{0}{1}/{2}'.format(overdir, a, file), - '{0}/root.{1}/{2}'.format(chrootdir, a, file), - follow_symlinks = False) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - # And perform the templating overlays - templates_overlay = {} - templates_arch_overlay = {} - for x in arch: - templates_arch_overlay[x] = {} - for y in ['files', 'dirs']: - templates_overlay[y] = [] - templates_arch_overlay[x][y] = [] - for path, dirs, files in os.walk('{0}/overlay'.format(templates_dir)): - for dir in dirs: - templates_overlay['dirs'].append('{0}/'.format(dir)) - for file in files: - templates_overlay['files'].append(os.path.join(path, file)) - for x in templates_overlay.keys(): - templates_overlay[x][:] = [re.sub('^{0}/overlay/(.*)(\.j2)'.format(templates_dir), '\g<1>', s) for s in templates_overlay[x]] - templates_overlay[x] = list(filter(None, templates_overlay[x])) - for y in templates_arch_overlay.keys(): - templates_arch_overlay[y][x][:] = [i for i in templates_overlay[x] if i.startswith(y)] - templates_arch_overlay[y][x][:] = [re.sub('^{0}/(.*)(\.j2)'.format(y), '\g<1>', s) for s in templates_arch_overlay[y][x]] - templates_arch_overlay[y][x][:] = [re.sub('^{0}/'.format(y), '', s) for s in templates_arch_overlay[y][x]] - templates_arch_overlay[y][x] = list(filter(None, templates_arch_overlay[y][x])) - templates_overlay[x][:] = [y for y in templates_overlay[x] if not y.startswith(('x86_64','i686'))] - if '/' in templates_overlay['dirs']: - templates_overlay['dirs'].remove('/') - # create the dir structure. these should almost definitely be owned by root. - if build['gpg']: - gpg = conf['gpgobj'] - if conf['gpg']['mygpgkey']: - signkey = conf['gpg']['mygpgkey'] - else: - signkey = str(gpg.signers[0].subkeys[0].fpr) - for a in arch: - for dir in templates_overlay['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0) - # and write the files. again, chown to root. - for file in templates_overlay['files']: - tplname = 'overlay/{0}.j2'.format(file) - tpl = env.get_template(tplname) - tpl_out = tpl.render(build = build, bdisk = bdisk, mygpgkey = signkey) - with open('{0}/root.{1}/{2}'.format(chrootdir, a, file), 'w') as f: - f.write(tpl_out) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) - # do the same for arch-specific stuff. - for dir in templates_arch_overlay[a]['dirs']: - os.makedirs('{0}/root.{1}/{2}'.format(chrootdir, a, dir), exist_ok = True) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, dir), 0, 0) - for file in templates_arch_overlay[a]['files']: - tplname = 'overlay/{0}/{1}.j2'.format(a, file) - tpl = env.get_template(tplname) - tpl_out = tpl.render(build = build, bdisk = bdisk, mygpgkey = signkey) - with open('{0}/root.{1}/{2}'.format(chrootdir, a, file), 'w') as f: - f.write(tpl_out) - os.chown('{0}/root.{1}/{2}'.format(chrootdir, a, file), 0, 0, follow_symlinks = False) diff --git a/bdisk/sync.py b/bdisk/sync.py new file mode 100644 index 0000000..e69de29 diff --git a/bdisk/version.py b/bdisk/version.py new file mode 100644 index 0000000..b002e1e --- /dev/null +++ b/bdisk/version.py @@ -0,0 +1 @@ +BDISK_VERSION = '4.0.0a1' diff --git a/docs/COPYING b/docs/COPYING deleted file mode 100644 index 94a9ed0..0000000 --- a/docs/COPYING +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program 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 3 of the License, or - (at your option) any later version. - - This program 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 program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/docs/CREDITS b/docs/CREDITS deleted file mode 100644 index 414152e..0000000 --- a/docs/CREDITS +++ /dev/null @@ -1,12 +0,0 @@ -iPXE: -Thanks to "eworm" for his work on the AUR iPXE-git package: -https://aur.archlinux.org/packages/ipxe-git/ - -and specifically the following patches: -http://www.eworm.de/download/linux/ipxe-0001-git-version.patch -http://www.eworm.de/download/linux/ipxe-0002-banner.patch -http://www.eworm.de/download/linux/ipxe-0003-iso-efi.patch -http://www.eworm.de/download/linux/ipxe-0004-fix-no-pie-workaround.patch - - -thanks to jthan, even though he drives me batty sometimes. diff --git a/docs/FAQ b/docs/FAQ deleted file mode 100644 index ee39910..0000000 --- a/docs/FAQ +++ /dev/null @@ -1,33 +0,0 @@ -BDisk Frequently Asked(/Unasked) Questions - - - -0.) Why does it take so long to build? -1.) Why is the generated ISO file so big? -2.) How do I find the version/release/etc. number of an ISO? - - -========================================================= - - - -0.) WHY DOES IT TAKE SO LONG TO BUILD? -A: This typically occurs when you're building from within a LiveCD/LiveUSB situation, in a VM/container/etc., or on a headless server. -If this is the case, you may run into what appears to be "stalling", especially while keys are generating for the chroots. -Thankfully, there is an easy fix. You can install the "haveged"(http://www.issihosts.com/haveged/) software and run it. This will -show an immediate and non-negligible improvement for the above contexts. If you have extra power to throw at it (or are using a dedicated build box) -as well, I recommend enabling I_AM_A_RACECAR in your build.conf. BDisk will then be more aggressive with its resource consumption. - - -1.) WHY IS THE GENERATED ISO FILE SO BIG? -A: You may have enabled a LOT of packages in extra/packages.(32|64|both). Or you're using the default set of packages, which tries to include a LOT -of different (and in some cases, redundant) packages for widespread utilization and usage. In addition, keep in mind that BDisk builds a single ISO -that can be used on both i686 architectures AND full x86_64 architectures ("AMD64" as you may sometimes see it referenced). Because it doesn't cheat -and just use a 64-bit kernel with a 32-bit userland, it needs two different squash images on each ISO- one for 32-bit userland and one for 64-bit -userland. - -2.) HOW DO I FIND THE VERSION/RELEASE/ETC. NUMBER OF AN ISO? -A: This can be found in a multitude of places. The full-size ISO file (iso/---(32|64|any).iso) should have the -version right in the file name. If you want more detailed information (or perhaps you renamed the file), you can mount the ISO as loopback in GNU/Linux, -*BSD, or Mac OS X and check /path/to/mounted/iso/VERSION_INTO.txt. Lastly, within the runtime itself (especially handy if booting via iPXE), you can -check /root/VERSION_INFO.txt within the running live environment. diff --git a/docs/LICENSE b/docs/LICENSE deleted file mode 120000 index d24842f..0000000 --- a/docs/LICENSE +++ /dev/null @@ -1 +0,0 @@ -COPYING \ No newline at end of file diff --git a/docs/README b/docs/README deleted file mode 100644 index 6e06b8a..0000000 --- a/docs/README +++ /dev/null @@ -1,8 +0,0 @@ -Please see the full documentation at https://bdisk.square-r00t.net - -Alternatively, you can compile the manual yourself (requires asciidoc and asciidoctor): - -cd docs/manual -asciidoctor -o /tmp/README.html HEAD.adoc - -Then point your browser to /tmp/README.html diff --git a/docs/THANKS b/docs/THANKS deleted file mode 120000 index 4131c92..0000000 --- a/docs/THANKS +++ /dev/null @@ -1 +0,0 @@ -CREDITS \ No newline at end of file diff --git a/docs/TODO b/docs/TODO deleted file mode 100644 index 20f85c9..0000000 --- a/docs/TODO +++ /dev/null @@ -1,60 +0,0 @@ --investigate weird signing issue- if you specify a key to sign with, it appears that the squashed images (at least in the http dir) doesn't have a sig/asc. do they need to copy it over? or is it not even signing them? --switch from python-pygpgme to python-gpgme for better performance. also clean up bGPG in general; reference KANT. --more pythonic! classes (because inits help), use list or tuple constant for checksums, try vars-ing the configparser stuff (and move defaults to in-code?), - change path combinations to use os.path.join etc. --modularity: https://stackoverflow.com/a/8719100 - --mtree-like functionality; if mtree spec is found, apply that to files in overlay (or chroot even); otherwise copy from overlay and don't touch chroot - --i_am_a_racecar optimizations -- different distro guests (debian, etc.)- https://stackoverflow.com/questions/2349991/python-how-to-import-other-python-files/20749411#20749411 --incorporate this into the manual? --TFTP configs generated for pxelinux --fix the branding, etc. on ipxe. :( --add ipxe to full iso maybe? --include benchmarking --- http://sourceforge.net/projects/unixbench/ --- https://code.google.com/p/byte-unixbench/ --- https://github.com/akopytov/sysbench --- (http://blog.due.io/2014/linode-digitalocean-and-vultr-comparison/ etc.) --There *has* to be a better way of handling package installation in the chroots. ---implement pyalpm to decreate dependency on chroot pacman-ing? ---or even maybe https://wiki.archlinux.org/index.php/offline_installation_of_packages in pure python! --set up automatic exporting to PDF of the user manual server-side. https://pypi.python.org/pypi/unoconv/0.6 --maybe remove lxde, firefox, chrome and replace with enlightenment/midori? --custom repo? https://brainwreckedtech.wordpress.com/2013/01/27/making-your-own-arch-linux-repository/ ---https://wiki.archlinux.org/index.php/Building_32-bit_packages_on_a_64-bit_system # NOTE: arch has dropped i686, now continued as archlinux32 --implement better "additional" packages list. specify for path in build.ini- these should be more easily changed by end users. DON'T TOUCH iso.pkgs.lst since those are necessary for booting. --automatic shorewall/some other firewall? --autodetection/configuration of network. DHCP is currently running by default, but does it need to support IPv6? if so, how would the user configure their network? --DISABLE NETWORKMANAGER AND "fi.w1.wpa_supplicant1"??? keeps spawning wpa_supplicant (and thusly killing networking proper) --for netboot, custom user agent (should be defined by build.ini) ---iPXE's curl ---initrd's curl --WISH: Better logging/debugging -https://web.archive.org/web/20170726052946/http://www.lexev.org/en/2013/python-logging-every-day/ - --WISH: signing for secureboot releases (PreLoader and loader.efi handle this okay, but require manual intervention) --does loader.efi support splash backgrounds? can i implement that differently somehow? ---yes, see e.g. https://www.reddit.com/r/archlinux/comments/3bwgf0/where_put_the_splasharchbmp_to_splash_screen_boot/ --strip out/remove unnecessary and orphan packages (e.g. gcc, make, automake, etc.) before building ISO --incorporate iPXE tweaks: ---http://ipxe.org/crypto ---http://ipxe.org/cmd/imgtrust ---http://ipxe.org/cmd/imgverify ---enable use of custom CA/self-signed certs for HTTPS etc. ---signed kernel and initrd for ipxe: ----#imgtrust --permanent ----#imgverify vmlinuz path/to/vmlinuz.sig ----#imgverify initrd path/to/initrd.sig ----DONE, partially. need to incorporate codesign certs/keys. routines, conf variables --enable mirror= kernel commandline. --NOTE: Following should be implemented via AIF-NG (https://git.square-r00t.net/AIF-NG, work pending for fix to BDisk for i686/x86_64 split) ---if mirror_(NAME) is present, use that as repo name. ---if it starts with /, treat as mirrorlist (Include); otherwise use Server = ---if it has mirror_SIG-X, set signature options e.g. _SIG-N would be "SigLevel = Never" --iPXE background support. sed -rf "${BASEDIR}/src/ipxe_local/script.sed" ${SRCDIR}/ipxe/src/config/general.h ; sed -rf "${BASEDIR}/src/ipxe_local/script2.sed" ${SRCDIR}/ipxe/src/config/console.h ---note that iPXE VESAFB console is not (yet) supported in EFI, so this is on hold. check into this to see if it has changed. --include WinMTR, build Mac OS X MTR for dist/tools on CD --include pre-compiled LibreCrypt for opening LUKS parts on Windows (https://github.com/t-d-k/LibreCrypt) ---curl -s https://raw.githubusercontent.com/t-d-k/LibreCrypt/master/README.md | egrep 'InstallLibreCrypt_v[A-Za-z0-9\.]*.exe' | cut -f2 -d'"' diff --git a/docs/manual/BODY.adoc b/docs/manual/BODY.adoc deleted file mode 100644 index 7329eac..0000000 --- a/docs/manual/BODY.adoc +++ /dev/null @@ -1,6 +0,0 @@ -include::USER.adoc[] -include::DEV.adoc[] -include::BOOT.adoc[] -include::FURTHER.adoc[] -include::FAQ.adoc[] -include::FOOT.adoc[] diff --git a/docs/manual/BOOT.adoc b/docs/manual/BOOT.adoc deleted file mode 100644 index d9e6594..0000000 --- a/docs/manual/BOOT.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= Netboot -[partintro] -.What good is software if you can't see it in action? --- -It's possible to netboot my personal build of BDisk. I mostly keep this up for emergencies in case I need it, but it's good to show you that yes, you can boot a 2GB+ squashed and compressed filesystem from a <50MB image file. --- - -include::netboot/HOWTO.adoc[] diff --git a/docs/manual/DEV.adoc b/docs/manual/DEV.adoc deleted file mode 100644 index 62a1a5f..0000000 --- a/docs/manual/DEV.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= Developer Manual -[partintro] -.What good is software if nobody changes it? --- -BDisk can be sourced for other projects, as it's written in a modular manner. Future versions may support installation as a normal Python module. This will also provide information you may need to change parts of BDisk -- it *is* opensource, after all! --- - -include::dev/FUNCTIONS.adoc[] diff --git a/docs/manual/FAQ.adoc b/docs/manual/FAQ.adoc deleted file mode 100644 index 11a309f..0000000 --- a/docs/manual/FAQ.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= FAQ -[partintro] -.What good is software if nobody understands it? --- -Here you will find some answers to Frequently Asked Questions I've received about this project. Please be sure to check this list before <> or sending a patch! --- - -include::faq/INDEX.adoc[] diff --git a/docs/manual/FOOT.adoc b/docs/manual/FOOT.adoc deleted file mode 100644 index 13ce12f..0000000 --- a/docs/manual/FOOT.adoc +++ /dev/null @@ -1,8 +0,0 @@ -//[appendix] -//= User Manual -//[appendix] -//= Developer Manual -//[appendix] -//= Netboot -//[appendix] -//= Bug Reports/Feature Requests \ No newline at end of file diff --git a/docs/manual/FURTHER.adoc b/docs/manual/FURTHER.adoc deleted file mode 100644 index 4014adb..0000000 --- a/docs/manual/FURTHER.adoc +++ /dev/null @@ -1,11 +0,0 @@ -= Further Reading/Resources -[partintro] -.What good is software if you can't interact? --- -Here you will find further info, other resources, and such relating to BDisk. --- - -include::further/PASSWORDS.adoc[] -include::further/BUGS.adoc[] -include::further/CONTACT.adoc[] - diff --git a/docs/manual/HEAD.adoc b/docs/manual/HEAD.adoc deleted file mode 100644 index 32cd684..0000000 --- a/docs/manual/HEAD.adoc +++ /dev/null @@ -1,48 +0,0 @@ -= BDisk User and Developer Manual -Brent Saner -v1.3, 2017-08-20 -:doctype: book -:data-uri: -:imagesdir: images -:sectlinks: -:toc: preamble -:toc2: left -:idprefix: -:sectnums: -:toclevels: 2 -// So there's currently a "bug" in that the TOC will display with continued numbering across parts. -// i essentially want the opposite of https://github.com/asciidoctor/asciidoctor/issues/979 TODO - -[dedication] -= Thanks -See CREDITS in the project source for a list of thanks. - - -[preface] -= Preface -=== About the Author -I 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 I’m not working at _${dayjob}_, mostly to assist in other side projects and become more efficient and proficient at those tasks. “Shaving the yak,” footnote:[See http://catb.org/jargon/html/Y/yak-shaving.html] indeed. - -A lot of research went into how low-level boot operations take place when writing BDisk, both in BIOS and UEFI footnote:[*Unified Extensible Firmware Interface.* UEFI is not BIOS, and BIOS is not UEFI.] (and corresponding concepts such as Secureboot, etc.) which is no easy task to understand and very commonly misunderstood. (For instance, a common misconception is that UEFI necessarily implies Secureboot. This is quite far from the truth and UEFI by itself is quite a useful replacement for BIOS). I invite you to do research into the specifications yourself; it's rather fascinating. - - -=== What is BDisk? -BDisk refers to both a live distribution I use in my own uses (for rescue situations, recovery, etc.) but foremost and most importantly, it also refers to the tool I use for building that distribution. In other words, it's both a complete GNU/Linux distribution you can run entirely from USB/CD/DVD/etc. (without needing to install it to your hard drive)... and also the name of a tool to create a custom GNU/Linux install. The latter is what this project and documentation refer to when the word “BDisk” is used. - -This documentation was started when I rewrote BDisk in Python 3.x; versions 0.x-2.x of BDisk were written in Bash, and horribly inelegant and rigid. footnote:[I should take the time to note that I am still quite new to Python so expect there to be plenty of optimizations to be made and general WTF-ery from seasoned Python developers. If you encounter any bugs or improvements, please <>! It'd be much appreciated.] One of my main goals was to make BDisk as easy to use as possible. This is surprisingly hard to do- it’s quite challenging to try to approach software you’ve written with the mindset of someone other than you. - -It’s my hope that by releasing this utility (and documenting it), you can use it and save some time for yourself as well (and hopefully get the chance to learn a bit more in the process!). - -It of course is not the <> out there, but most others only focus on remastering an existing ISO, or creating an installer ISO -- not creating a custom live-centric environment. - - -=== Copyright/Licensing -The BDisk code is https://www.gnu.org/licenses/gpl-3.0.en.html[GPLv3-licensed^]. This means that you can use it for business reasons, personal reasons, modify it, etc. Please be sure to familiarize yourself with the full set of terms. You can find the full license in `docs/LICENSE`. - -image::https://www.gnu.org/graphics/gplv3-127x51.png[GPLv3,align="center"] - -This document, and all other associated author-generated documentation, are released under the http://creativecommons.org/licenses/by-sa/4.0/[Creative Commons CC-BY-SA 4.0^] copyright. It's essentially the GPL for non-software, so similar terms apply. - -image::https://i.creativecommons.org/l/by-sa/4.0/88x31.png[CC-BY-SA_4.0,align="center"] - -include::BODY.adoc[] diff --git a/docs/manual/USER.adoc b/docs/manual/USER.adoc deleted file mode 100644 index 6fc73e4..0000000 --- a/docs/manual/USER.adoc +++ /dev/null @@ -1,26 +0,0 @@ -= User Manual - -[partintro] -.What good is software if nobody uses it? --- -BDisk was ultimately designed to make your life easier. "Why would I possibly need yet another LiveCD/LiveUSB?" Well, that's sort of the point- by customizing a live distribution of GNU/Linux to _your_ particular needs/desires/whimsy, you can do away with the multiple other images you keep around. It's designed to let you create a fully customized distribution. - -Using BDisk, you can: - -* Install GNU/Linux (https://wiki.archlinux.org/index.php/installation_guide[Arch^], https://watchmysys.com/blog/2015/02/installing-centos-7-with-a-chroot/[CentOS^], https://www.debian.org/releases/stable/amd64/apds03.html.en[Debian^], https://wiki.gentoo.org/wiki/Handbook:AMD64#Installing_Gentoo[Gentoo^], https://help.ubuntu.com/lts/installation-guide/powerpc/apds04.html[Ubuntu^]...). BDisk may be Arch-based, but many if not most other distros offer ways to install from any GNU/Linux live distribution. -* Perform disk maintenance (https://raid.wiki.kernel.org/index.php/RAID_setup[mdadm^], fdisk / http://www.rodsbooks.com/gdisk/[gdisk^], http://gparted.org/[gparted^], https://www.thomas-krenn.com/en/wiki/StorCLI[storcli^], etc.). Need to replace that disk in your RAID and you don't have hotswap? Not a problem! -* Rescue, recover, wipe (http://www.sleuthkit.org/sleuthkit/[scalpel^], http://www.andybev.com/index.php/Nwipe[nwipe^], http://foremost.sourceforge.net/[foremost^], etc.). Chances are this is why you booted a live distro in the first place, yes? -* Boot over the Internet (or LAN). Burning a new image to CD/DVD/USB is a pain. BDisk has built-in support for http://ipxe.org/[iPXE^] (and traditional PXE setups). Update the filesystem image once, deploy it everywhere. -* And much, much more. -** Seriously. - -This manual will give you the information you need to build your very own live GNU/Linux distribution. --- - -include::user/GETTING_STARTED.adoc[] -include::user/IMPORTANT_CONCEPTS.adoc[] -include::user/PROJECT_LAYOUT.adoc[] -include::user/BUILDINI.adoc[] -include::user/ADVANCED.adoc[] -include::user/BUILDING.adoc[] - diff --git a/docs/manual/dev/FUNCTIONS.adoc b/docs/manual/dev/FUNCTIONS.adoc deleted file mode 100644 index e75c5ca..0000000 --- a/docs/manual/dev/FUNCTIONS.adoc +++ /dev/null @@ -1,24 +0,0 @@ -== Layout of BDisk functions -These functions exist in <<_bdisk_,`bdisk/`>>. - -include::functions/BCHROOT.adoc[] - -=== `bdisk.py` -This file is a sort of "wrapper" -- it pulls all the other files in this directory together into a single usable Python script. In other words, to build a BDisk distribution, you would simply run `bdisk/bdisk.py` -- that's it! See <>. - -It contains no functions, it just contains minimal logic to tie all the other functions together. - -include::functions/BGPG.adoc[] - -include::functions/BSSL.adoc[] - -include::functions/BSYNC.adoc[] - -include::functions/BUILD.adoc[] - -include::functions/HOST.adoc[] - -include::functions/IPXE.adoc[] - -include::functions/PREP.adoc[] - diff --git a/docs/manual/dev/functions/BCHROOT.adoc b/docs/manual/dev/functions/BCHROOT.adoc deleted file mode 100644 index da87a28..0000000 --- a/docs/manual/dev/functions/BCHROOT.adoc +++ /dev/null @@ -1,29 +0,0 @@ -=== `bchroot.py` -This file controls creation of the chroots -- the directories in which BDisk builds the actual system that is booted into. - -==== chroot(_chrootdir_, _chroot_hostname_, _cmd_ = '`/root/pre-build.sh`') -This function manages mounting the mountpoints for the chroot(s) in preparation for the images of the live media. It also runs <>. Returns `chrootdir` (same as the paramater provided). - -===== chrootdir -The directory where the filesystem tree for the chroot lies. Absolute path only. - -===== chroot_hostname -The hostname to use for the guest. - -NOTE: This paramater may be removed in future versions. - -===== cmd -The command to run inside the chroot once all the mountpoints are set up. - -==== chrootUnmount(_chrootdir_) -Unmount the mounts set up in <>. - -===== chrootdir -See <>. - -==== chrootTrim(_build_) -This function performs some cleanup and optimizations to the chroot(s). - -===== build -A dictionary of <>'s values (with some additional keys/values added). See <>. - diff --git a/docs/manual/dev/functions/BGPG.adoc b/docs/manual/dev/functions/BGPG.adoc deleted file mode 100644 index d5ae2cc..0000000 --- a/docs/manual/dev/functions/BGPG.adoc +++ /dev/null @@ -1,41 +0,0 @@ -=== `bGPG.py` -This contains functions having to do with GPG -- signing files, verifying other signatures, generating a key (if one wasn't specified), using a key (if one was specified), etc. - -==== genGPG(_conf_) -This function controls generating (or "importing" an existing) GnuPG key for use with other operations. Returns `gpg`, a <> object. - -===== conf -A dictionary of the <> (with some additional keys/values added). See (TODO: link to host.py's config parser). - -==== killStaleAgent(_conf_) -This function kills off any stale GnuPG agents running. Not doing so can cause some strange behaviour both during the build process and on the host. - -===== conf -See <>. - -==== signIMG(_path_, _conf_) -This function signs a given file with the keys BDisk was either configured to use or automatically generated. - -===== path -The full, absolute path to the file to be signed. An https://www.gnupg.org/gph/en/manual/r1290.html[ASCII-armored^] https://www.gnupg.org/gph/en/manual/x135.html[detached^] signature (plaintext) will be generated at `_path_.asc`, and a binary detached signature will be generated at `_path_.sig`. - -===== conf -See <>. - -==== gpgVerify(_sigfile_, _datafile_, _conf_) -This function verifies a detatched signature against a file containing data. Returns *True* if the file verifies, or *False* if not. - -===== sigfile -The detached signature file. Can be ASCII-armored or binary format. Full/absolute path only. - -===== datafile -The file containing the data to be verified. Full/absolute path only. - -===== conf -See <>. - -==== delTempKeys(_conf_) -Delete automatically-generated keys (if we generated them) as well as the automatically imported verification key (<>). - -===== conf -See <>. diff --git a/docs/manual/dev/functions/BSSL.adoc b/docs/manual/dev/functions/BSSL.adoc deleted file mode 100644 index fdfbbe2..0000000 --- a/docs/manual/dev/functions/BSSL.adoc +++ /dev/null @@ -1,64 +0,0 @@ -=== `bSSL.py` -Functions having to do with OpenSSL are stored here. This is used primarily for "mini" builds (via iPXE), they let you boot your BDisk distribution over the Internet. If an SSL key, CA certificate, etc. weren't defined and you want to build a mini image, this file contains functions that will build an SSL PKI (public key infrastructure) for you automatically. - -==== verifyCert(_cert_, _key_, _CA_ = None) -This function will verify a certificate's validity/pairing with a key, optionally against a given CA certificate. Returns *True* on successful verification, or *False* and an exit (for sanity purposes). - -===== cert -The certificate to be validated. Must be a PyOpenSSL certificate object. - -===== key -The key to validate against <>. Must be a PyOpenSSL key object. - -===== CA -The CA, or certificate authority, certificate to verify against. - -NOTE: This currently does not work, as PyOpenSSL does not currently support verifying against a specified CA certificate. - -==== sslCAKey(_conf_) -This function imports a CA key (<>) into a PyOpenSSL object (or generates one if necessary). Returns a PyOpenSSL key object. - -===== conf -See <>. - -==== sslCA(_conf_, _key_ = None) -This function imports a CA certificate (<>) into a PyOpenSSL object (or generates one if necessary). Returns a PyOpenSSL certificate object. - -===== conf -See <>. - -===== key -A PyOpenSSL key object that should be used to generate the CA certificate (or is paired to the CA certificate if specified). - -==== sslCKey(_conf_) -This function imports a client key (<>) into a PyOpenSSL object (or generates one if necessary). Returns a PyOpenSSL key object. - -===== conf -See <>. - -==== ssslCSR(_conf_, _key_ = None) -This function generates a CSR (certificate signing request). - -===== conf -See <>. - -===== key -A PyOpenSSL key object that should be used to generate the CSR. It should be a key that is paired to the client certificate. - -==== sslSign(_conf_, _ca_, _key_, _csr_) -This function signs a CSR using a specified CA. - -===== conf -See <>. - -===== ca -A PyOpenSSL certificate object for the CA certificate. This certificate (object) should have signing capabilities. - -===== key -A PyOpenSSL key object paired to <>. - -===== csr -A PyOpenSSL CSR object. See <>. - -==== sslPKI(_conf_) -Ties all the above together into one convenient function. Returns a PyOpenSSL certificate object of the signed client certificate. \ No newline at end of file diff --git a/docs/manual/dev/functions/BSYNC.adoc b/docs/manual/dev/functions/BSYNC.adoc deleted file mode 100644 index 78f4cf6..0000000 --- a/docs/manual/dev/functions/BSYNC.adoc +++ /dev/null @@ -1,26 +0,0 @@ -=== `bsync.py` -This file has functions relating to copying your BDisk build to various resources. For instance, if you want your ISO available to download then this file would be used to copy your finished build to an HTTP server/root you specify. - -==== http(_conf_) -This function prepares a *local* HTTP directory, or webroot. See <>. - -===== conf -See <>. - -==== tftp(_conf_) -This function prepares a *local* TFTP directory (for traditional PXE). See <>. - -===== conf -See <>. - -==== git(_conf_) -This function commits (and pushes) any changes you might have made to your project (<>) automatically. - -===== conf -See <>. - -==== rsync(_conf_) -This function syncs your builds, HTTP directory (if enabled), TFTP directory (if enabled), etc. to a remote host. See <>. - -===== conf -See <>. diff --git a/docs/manual/dev/functions/BUILD.adoc b/docs/manual/dev/functions/BUILD.adoc deleted file mode 100644 index cc3cb3d..0000000 --- a/docs/manual/dev/functions/BUILD.adoc +++ /dev/null @@ -1,43 +0,0 @@ -=== `build.py` -This is responsible for building the "full" ISO, building UEFI support, etc. - -==== genImg(_conf_) -This function builds the http://tldp.org/HOWTO/SquashFS-HOWTO/creatingandusing.html[squashed filesystem^] images and, <>, signs them. - -===== conf -See <>. - -==== genUEFI(_build_, _bdisk_) -This function builds UEFI support for the ISO files. Returns the path of an embedded EFI bootable binary/ESP image. - -===== build -The <> of the configuration. - -===== bdisk -The <> of the configuration. - -==== genISO(_conf_) -Builds the full ISO image(s). Returns a dictionary of information about the built ISO file (see <>). - -===== conf -See <>. - -==== displayStats(_iso_) -Parses the output of e.g. <> and displays in a summary useful to the end-user. - -===== iso -A dictionary of information about the ISO file. This is typically: - - {'iso': - {'name':<'Main' for the full ISO, 'Mini' for the mini ISO, etc.>}, - {: - 'sha':, - 'file':, - 'size':, - 'type':, - 'fmt': - } - } - -==== cleanUp() -Currently a no-op; this function is reserved for future usage to cleanup the build process automatically. \ No newline at end of file diff --git a/docs/manual/dev/functions/HOST.adoc b/docs/manual/dev/functions/HOST.adoc deleted file mode 100644 index a7198ec..0000000 --- a/docs/manual/dev/functions/HOST.adoc +++ /dev/null @@ -1,42 +0,0 @@ -=== `host.py` -These functions are used to perform "meta" tasks such as get information about the build host, find <>, and parse your configuration options. - -==== getOS() -Returns the distribution of the build host. - -==== getBits() -Returns the "bitness" of the build host (e.g. `32bit` or `64bit`) - -==== getHostname() -Returns the hostname of the build host. - -==== getConfig(_conf_file_ = '/etc/bdisk/build.ini') -Returns a list of: - -. the default configuration file -. the user-specified configuration file - -===== conf_file -This is a full/absolute path that is searched first. If it exists and is a file, it is assumed to be the "canonical" <>. - -==== parseConfig(_confs_) -This function parses the configuration file(s) and returns a list of: - -. A ConfigParser object -. The configuration as a dictionary - -It performs some additional things, such as: - -* Converts "boolean" operations to true Python booleans -* Tries to automatically detect the version if one isn't provided -* Establishes the build number (this is a number that should be local to the build host) -* Forms a list of the <> to build -* Validates: -** The bootstrap tarball mirror -** The rsync destination (if <>) -** The iPXE remote URI (if <>) -** That <> is correctly set -* Makes prerequisite directories - -===== confs -A list of configuration files. See <>. \ No newline at end of file diff --git a/docs/manual/dev/functions/IPXE.adoc b/docs/manual/dev/functions/IPXE.adoc deleted file mode 100644 index ee72faa..0000000 --- a/docs/manual/dev/functions/IPXE.adoc +++ /dev/null @@ -1,22 +0,0 @@ -=== `ipxe.py` -This file handles building the "mini" ISO via iPXE. - -==== buildIPXE(_conf_) -This function builds the iPXE core files. - -===== conf -See <>. - -==== genISO(_conf_) -This function builds the mini ISO (if <>). Returns a dictionary of information about the built ISO file (see <>). - -===== conf -See <>. - -==== tftpbootEnv(_conf_) -This function configures a TFTP boot/root directory for traditional PXE setups. - -NOTE: This function currently is a no-op; it will be implemented in future versions. - -===== conf -See <>. diff --git a/docs/manual/dev/functions/PREP.adoc b/docs/manual/dev/functions/PREP.adoc deleted file mode 100644 index be71025..0000000 --- a/docs/manual/dev/functions/PREP.adoc +++ /dev/null @@ -1,52 +0,0 @@ -=== `prep.py` -This contains functions that download the base tarball releases, preps them for <>, builds necessary directory structures, and performs the overlay preparations. - -==== dirChk(_conf_) -This function creates extra directories if needed. - -===== conf -See <>. - -==== downloadTarball(_conf_) -This function downloads the tarball (<>) from the <>, and performs verifications (SHA1 and GPG signature <>). Returns the full/absolute path to the downloaded tarball. - -===== conf -See <>. - -==== unpackTarball(_tarball_path_, _build_, _keep_ = False) -This function extracts the tarball downloaded via <>. - -===== tarball_path -The full/absolute path to the downloaded tarball. - -===== build -See <>. - -===== keep -`True` or `False`. Whether we should keep the downloaded tarball after unpacking/extracting. If your upstream tarball changes often enough, it's recommended to set this to `False`. However, setting it to `True` can speed up the build process if you're on a slower Internet connection. - -==== buildChroot(_conf_, _keep_ = False) -This incorporates <> and <> into one function, as well as applying the <> directory (and the <>). - -===== conf -See <>. - -===== keep -See <>. - -==== prepChroot(_conf_) -Returns a modified/updated <>. This function: - -. Prepares some variables that <> needs inside the chroot(s) -. Builds <> -. Updates the build number -. Imports the <> - -===== conf -See <>. - -==== postChroot(_conf_) -This function applies the <> directory (and the <>). - -===== conf -See <>. diff --git a/docs/manual/faq/ALTERNATIVES.adoc b/docs/manual/faq/ALTERNATIVES.adoc deleted file mode 100644 index 341432b..0000000 --- a/docs/manual/faq/ALTERNATIVES.adoc +++ /dev/null @@ -1,83 +0,0 @@ -== I don't like BDisk. Are there any other alternatives? -First, I'm sorry to hear that BDisk doesn't suit your needs. If you want any features you think are missing or encounter any <>, please report them! - -But yes; there are plenty of alternatives! - -NOTE: Only *currently maintained projects* are listed here. - -=== https://wiki.archlinux.org/index.php/archboot[Archboot^] -Written in Bash -[frame="topbot",options="header,footer"] -|====================== -|Pros|Cons -|Highly featureful|Arch-only live media -|Includes an assisted Arch install script|Inaccessible to non-Arch users -|Can create tarballs too|Not very customizable by default -|Supports hybrid ISOs|Infrequent stable releases -|Supports PXE-booting infrastructure|Requires a systemd build host -|Supports SecureBoot|Not a secure setup by default -|Supports GRUB2's "ISO-loopback" mode|Builds a much larger image -|Official Arch project|Some graphical bugs -||Much more disk space is necessary for the tool itself -||*Only* runs in RAM, so not ideal for RAM-constrained systems -||Based on/requires an Arch build host -||Requires an x86_64 build host -||Has a large amount of dependencies -||Manual intervention required for build process -||Minimal documentation -|| -|====================== - -=== https://wiki.archlinux.org/index.php/archiso[Archiso^] -Written in Bash. -[frame="topbot",options="header,footer"] -|====================== -|Pros|Cons -|Used to build the official Arch ISO|Requires an x86_64 build host -|Supports custom local on-disk repositories|Not very featureful as far as customization goes -|Supports arbitrary file placement in finished image|Requires an Arch build host -|Supports hybrid ISOs|Has odd quirks with package selection -|Supports Secureboot|Manual intervention required for build process -|Official Arch project|Does not start networking by default -|Can run in RAM or from media|Very minimal environment -||Arch-only live meda -||Documentation is lacking -|| -|====================== - -=== Debian's https://wiki.debian.org/Simple-CDD[Simple-CDD^] -Written in Bash (some Python). -[frame="topbot",options="header,footer"] -|====================== -|Pros|Cons -|Supports custom packages to be installed|Very limited -- no customization beyond package listing -|Lightweight; quick to set up|Takes a long time for preparation; requires a clone of many .deb packages first. -||Doesn't seem to work as according to https://wiki.debian.org/Simple-CDD/Howto[the documentation^] -||Documentation is sparse -||Full featureset unknown due to ISO not building on Debian Jessie (8.0) -|| -|====================== - -=== Fedora's https://fedoraproject.org/wiki/Livemedia-creator-_How_to_create_and_use_a_Live_CD[Livemedia-creator^] -Written in Bash. -[frame="topbot",options="header,footer"] -|====================== -|Pros|Cons -|Somewhat customizable|Requires manual initialization of chroot(s) via https://github.com/rpm-software-management/mock/wiki[mock^] -|Uses kickstart configurations|*Requires* a kickstart configuration to be useful -|Simple/easy to use|Full featureset unknown; documentation is sparse -||Limited configuration/customization -|| -|====================== - -=== https://github.com/rhinstaller/livecd-tools[LiveCD Tools^] -Written in Python 2, some Bash. -[frame="topbot",options="header,footer"] -|====================== -|Pros|Cons -|Can use kickstarts|*Requires* a kickstart configuration -|Simple/easy to use to use|Limited configuration/customization -|Automatically builds chroots|Full featureset unknown; documentation is sparse -|| -|====================== - diff --git a/docs/manual/faq/GETVERSION.adoc b/docs/manual/faq/GETVERSION.adoc deleted file mode 100644 index 6988560..0000000 --- a/docs/manual/faq/GETVERSION.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== How do I get the version/build of an ISO? -This can be found in a multitude of places. The full-size ISO file (iso/---(32|64|any).iso) should have the version right in the filename. If you want more detailed information (or perhaps you renamed the file), you can mount the ISO as loopback in GNU/Linux, *BSD, or Mac OS X/macOS and check `/path/to/mounted/iso/VERSION_INTO.txt`. Lastly, within the runtime itself (especially handy if booting via iPXE), you can check `/root/VERSION_INFO.txt` to get information about the build of the currently running live environment. - diff --git a/docs/manual/faq/INDEX.adoc b/docs/manual/faq/INDEX.adoc deleted file mode 100644 index 93dd466..0000000 --- a/docs/manual/faq/INDEX.adoc +++ /dev/null @@ -1,5 +0,0 @@ -include::WHYARCH.adoc[] -include::LONGTIME.adoc[] -include::ISOBIG.adoc[] -include::GETVERSION.adoc[] -include::ALTERNATIVES.adoc[] diff --git a/docs/manual/faq/ISOBIG.adoc b/docs/manual/faq/ISOBIG.adoc deleted file mode 100644 index f24d0cf..0000000 --- a/docs/manual/faq/ISOBIG.adoc +++ /dev/null @@ -1,5 +0,0 @@ -== Why is the ISO so large? -This actually entirely depends on what <> (and if you're building a <>). The default list is quite large. - -If you build a minimal ISO (i.e. only the necessary components required for booting and nothing else, single-arch), the ISO is only about 570MB (but work is being done to make this even smaller). - diff --git a/docs/manual/faq/LONGTIME.adoc b/docs/manual/faq/LONGTIME.adoc deleted file mode 100644 index d80c4d6..0000000 --- a/docs/manual/faq/LONGTIME.adoc +++ /dev/null @@ -1,94 +0,0 @@ -== Why does building take so long? -This typically occurs when you're building from within a LiveCD/LiveUSB situation, in a VM/container/etc., or on a headless server. If this is the case, you may run into what appears to be "stalling", especially while keys are generating for the chroots. Thankfully, there is an easy fix. You can install http://www.issihosts.com/haveged/[haveged^] and run it (this can be done safely while a build is executing). This will show an immediate and non-negligible improvement for the above contexts. If you have extra processing power to throw at the build process (or are using a dedicated build box) as well, I recommend enabling <>. BDisk will then be more aggressive with its resource consumption. - -=== Running a local mirror -Keep in mind also that the more packages you opt to install, the longer the build process will take. This process will also use quite a fair bit of bandwidth. If you plan on building regular images (e.g. nightly builds, etc.) or are undergoing some custom change testing, I recommend running a private repository mirror on-site. This will not store AUR packages, as those will still be fetched and built (documentation on working around this is TODO) but setting up a local mirror is quite quick and easy. - -First, you'll need at least 70Gb of free disk space. Let's say our repository clone will be at `/srv/repo/arch/`. - -You'll also need to find an Arch mirror, ideally one close to you that is up-to-date. The https://www.archlinux.org/mirrorlist/[mirrorlist generator^] and https://www.archlinux.org/mirrors/[mirror list^] will assist you here greatly. - -NOTE: You'll need to find a mirror that supports _rsync_. - -TIP: You can use ANY distro to run a repository mirror, as long as it has _rsync_ installed! - -==== Set up the sync - -Create a script and mark it as executable with the following content: - - #!/bin/bash - SOURCE='rsync://your.mirror.here/archlinux' - DEST='/srv/repo/arch' - LCK_FLE='/var/run/repo-sync.lck' - PATH='/usr/bin' - if [ -e "${LCK_FLE}" ] ; then - OTHER_PID=$(cat ${LCK_FLE}) - echo "Another instance already running: ${OTHER_PID}" - exit 1 - fi - # If e.g. /srv/repo is a mountpoint, uncomment below. - #findmnt /srv/repo > /dev/null 2>&1 - #if [[ "${?}" -ne '0' ]]; - #then - # echo "External storage not mounted!" - # exit 1 - #fi - echo $$ > "${LCK_FLE}" - rsync -rvtlH --delete-after --delay-updates --safe-links --max-delete=1000 ${SOURCE}/. ${DEST}/. >> /var/log/arch.repo.sync 2>&1 - date +%s > ${DEST}/lastsync - rm -f "${LCK_FLE}" - -Assuming you want to run the sync script every 6 hours and it is located at `/root/bin/arch.repo.clone.sh`, this is the cron entry you would use (`crontab -e`): - - 0 */6 * * * /root/bin/arch.repo.clone.sh > /dev/null 2>&1 - -The first sync can take quite a while, but subsequent runs shouldn't take more than five minutes or so. - -==== Configuring the local mirror -You'll need a way to serve this local mirror in a way pacman can understand. Luckily, it's fairly easy. I recommend using https://www.nginx.com/[nginx^] as it's available by default in many operating systems. You can of course use others such as https://www.lighttpd.net/[lighttpd^], https://httpd.apache.org/[apache/httpd^], etc. For the example configuration here, we're going to use an nginx configuration file. - -``` -server { -listen [::]:80; -access_log /var/log/nginx/repo.access.log main; -error_log /var/log/nginx/repo.error.log; -#error_log /var/log/nginx/repo.error.log debug; - -autoindex on; - -root /srv/repo/arch; - -} -``` - -The configuration may vary according to your distribution's provided nginx default configuration, but you'll want this configuration to be served as the default (or set an appropriate `https://nginx.org/en/docs/http/server_names.html[server_name]` directive which you would then use in `/extra/pre-build.d/etc/pacman.d/mirrorlist`). - -==== Configuring BDisk - -You'll then want to configure BDisk's chroots to use your local mirror first. However, when doing so you run into an issue -- in the built image, install operations will take longer than they need to because the local mirror likely won't be available! This is a small issue as it's unexpected that you'll need to install software within the live environment, but I've run into cases where it was a necessity once or twice. - -There is an https://devblog.square-r00t.net/articles/libvirt-spoof-domains-dns-records-redirect-to-another-ip[easy workaround^] if you're using libvirt -- you can simply tell your build VM to resolve to the IP address of the box that is running the mirror for the same FQDN that the "preferred" "real" mirror on the Internet is and set that mirror at the top of `/extra/pre-build.d/etc/pacman.d/mirrorlist`. However, that's not always feasible- most notably if you're building on a physical box and it's the same host as the repository clone. In that case you can set the specific local resolution -- e.g. `http://127.0.0.1/` -- at the top of `/extra/pre-build.d/etc/pacman.d/mirrorlist` and then set a mirrorlist WITHOUT that entry in `/overlay/etc/pacman.d/mirrorlist`. For more information on using these type of overrides, see <>. - -If you're using the libvirt workaround, remember to configure nginx (or whatever you're using) with a virtual host and location block that matches the "real", upstream mirror. In our example below, we use *http://mirror.us.leaseweb.net/archlinux* as the mirror. - -``` -server { -listen [::]:80; -access_log /var/log/nginx/repo.access.log main; -error_log /var/log/nginx/repo.error.log; -#error_log /var/log/nginx/repo.error.log debug; - -server_name mirror.us.leaseweb.net; - -autoindex on; - -root /srv/repo/arch; - -location /archlinux { - autoindex on; - rewrite ^/archlinux(/.*)$ /$1; - } - -} -``` - diff --git a/docs/manual/faq/WHYARCH.adoc b/docs/manual/faq/WHYARCH.adoc deleted file mode 100644 index 2a468c8..0000000 --- a/docs/manual/faq/WHYARCH.adoc +++ /dev/null @@ -1,5 +0,0 @@ -== Why Arch Linux? -Because it's a very easy-to-use, simple, https://wiki.archlinux.org/[well-documented^] distro. It's no-frills and incredibly flexible/customizable, and can be made rather slim (and is out of the box, in fact). It's also very friendly to run as a chroot inside any other distro or as a chroot host to any other distro. - -Plus they release monthly tarball snapshots that are fairly small and create quick bootstrap environments. - diff --git a/docs/manual/further/BUGS.adoc b/docs/manual/further/BUGS.adoc deleted file mode 100644 index d2f8c13..0000000 --- a/docs/manual/further/BUGS.adoc +++ /dev/null @@ -1,18 +0,0 @@ -== Bug Reports/Feature Requests -NOTE: It is possible to submit a bug or feature request without registering in my bugtracker. One of my pet peeves is needing to create an account/register on a bugtracker simply to report a bug! The following links only require an email address to file a bug (which is necessary in case I need any further clarification from you or to keep you updated on the status of the bug/feature request -- so please be sure to use a valid email address). - -=== Bugs -If you encounter any bugs in *BDisk*, you can file a bug report https://bugs.square-r00t.net/index.php?do=newtask&project=2&task_type=1&product_category=5[here^]. - -If you encounter any bugs (inaccurate information, typos, misformatting, etc.) in *this documentation*, you can file a bug report https://bugs.square-r00t.net/index.php?do=newtask&project=2&task_type=1&product_category=26[here^]. - -=== Feature Requests -If you have any features you'd like to see or you think would help *BDisk* become even more useful, please file a feature request https://bugs.square-r00t.net/index.php?do=newtask&project=2&task_type=2&product_category=5[here^]. - -If you have any suggestions on how to improve *this documentation* or feel it's missing information that could be useful, please file a feature request https://bugs.square-r00t.net/index.php?do=newtask&project=2&task_type=2&product_category=26[here^]. - -=== Patches -I gladly welcome https://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html[patches^], but I deplore using GitHub (even though I https://github.com/johnnybubonic/BDisk[have a mirror there^]). For this reason, please follow the same https://www.kernel.org/doc/Documentation/process/submitting-patches.rst[patch/pull request process] for the Linux kernel and email it to bts@square-r00t.net. - -Alternatively, you may attach a patch to a <>/<>. - diff --git a/docs/manual/further/CONTACT.adoc b/docs/manual/further/CONTACT.adoc deleted file mode 100644 index b68a3f6..0000000 --- a/docs/manual/further/CONTACT.adoc +++ /dev/null @@ -1,10 +0,0 @@ -== Contact the Author -If you have any questions, comments, or concerns, you can use the following information to get in touch with me. - -I am available via mailto:bts@square-r00t.net[email]. If you use GPG, you can find my pubkey and other related info https://devblog.square-r00t.net/about/my-gpg-public-key-verification-of-identity[here^] (and on most keyservers). - -I occasionally write howto articles, brief tips, and other information in my https://devblog.square-r00t.net[dev blog]. - -I am on IRC as *r00t^2*, and am usually in the irc://irc.freenode.org/#sysadministrivia[Sysadministrivia channel on Freenode]. Which reminds me, I run a podcast called https://sysadministrivia.com[Sysadministrivia^]. - -I am on Twitter as https://twitter.com/brentsaner[@brentsaner^], though I don't tweet very often. (I usually tweet from my https://twitter.com/SysAdm_Podcast[podcast's twitter^].) diff --git a/docs/manual/further/PASSWORDS.adoc b/docs/manual/further/PASSWORDS.adoc deleted file mode 100644 index 590ba41..0000000 --- a/docs/manual/further/PASSWORDS.adoc +++ /dev/null @@ -1,95 +0,0 @@ -== Passwords -NOTE: If you're specifying passwords, be sure to use a https://www.schneier.com/blog/archives/2014/03/choosing_secure_1.html[strong password^]! - -=== `build.ini` Password Value Examples -Passwords work a little interestingly in BDisk. These aspects all apply to both <> and <> (if you enable a regular user). - -CAUTION: DO *NOT* USE A PLAINTEXT PASSWORD IN THE `build.ini`! This is _by design_; plaintext passwords are much more insecure. If you use a plaintext password, it *will not work*. - -WARNING: Remember to <> before placing it in your `build.ini`! - -.Password Value Scheme -[frame="topbot",options="header,footer"] -|====================== -|If you have...|BDisk will... -|the string `BLANK`|give the user a blank password, allowing you to just hit `` to log in -|nothing set|lock the account (e.g. no non-SSH login is possible) -|a properly hashed, salted, and escaped string|set the account to the password used to generate that hash. -|| -|====================== - -.Password Value Examples -[frame="topbot",options="header,footer"] -|====================== -|If the value is...|Then BDisk... -|`root_password = BLANK`|will let you log into the TTY as the root user by just hitting the `` key. -|`root_password =`|will not allow the root user to log into the TTY at all. -|`root_password = `|will let you log into the root user on a TTY with the password `test`. -|| -|====================== - - -NOTE: I specify "TTY login" because SSH login may still be possible. By default, SSH will allow password logins for non-root users (root user SSH password login is prohibited by default; only pubkey login for root is allowed.) -- this can be overridden, however, by customization. - -=== Generating a Password Salt/Hash -First, if you are not familiar with a http://man7.org/linux/man-pages/man3/crypt.3.html#NOTES[salted hash^] that GNU/Linux uses, you may want to learn about it. - -That said, there are utilities in `extra/bin/` that should generate a salted hash for you. Currently only `hashgen.py` is distributed, but additions/examples for other languages are welcome. - -.... - $ ./hashgen.py - - What password would you like to hash/salt? - (NOTE: will NOT echo back!) - - - Your salted hash is: - $6$t92Uvm1ETLocDb1D$BvI0Sa6CSXxzIKBinIaJHb1gLJWheoXp7WzdideAJN46aChFu3hKg07QaIJNk4dfIJ2ry3tEfo3FRvstKWasg/ - -.... - -The password `test` was used above. In `crypt(3)`-salted hashes, there are specific sections separated by USD dollar symbols (`$`). The first section (containing `6`) marks the *hash algorithm* -- in this case, _SHA512_. (The http://man7.org/linux/man-pages/man3/crypt.3.html#NOTES[crypt man page^] mentions all supported hash types and their corresponding ID.) The next section, `t92Uvm1ETLocDb1D`, is the *salt*. The last section is the *hash*. How salted hashes work is an original piece of data is given (in our case, the word `test`). This data is then sent through a one-way cryptographic process that generates a new string that makes it difficult to know what the original data was. THEN a salt is added- a random string- and the process repeats. In our format, this is done _5000_ times in a row. When you log in with your password, the salt is fetched and the same process is done again- predictably, the data that process goes through should then match the salted hash string stored in the password system (in this case, the https://linux.die.net/man/5/shadow[`/etc/shadow`] file). - -There are other ways to generate the salted hash as well. These include: - -==== Debian's `mkpasswd` Utility -Part of the https://packages.debian.org/jessie/whois[whois^] package, available in the AUR as https://aur.archlinux.org/packages/debian-whois-mkpasswd/[debian-whois-mkpasswd^]. - - mkpasswd --method=sha-512 - -==== Perl -The following Perl one-liner will generate a salted hash string (using the salt `aBcDeFgHiJ`): - - perl -e 'print crypt("PASSWORD","\$6\$aBcDeFgHiJ\$") . "\n"' - -==== `grub-crypt` -Legacy GRUB ("GRUB v1") includes `grub-crypt`, which will let you generate a salted hash: - - /sbin/grub-crypt --sha-512 - -=== Escaping the Salted Hash -One last thing, and this is *very* important -- failure to perform this step will cause all sorts of strange Python errors -- is to escape the salted hash. Thankfully, however, this is a lot easier than it sounds. - -So we have our salted hash: `$6$t92Uvm1ETLocDb1D$BvI0Sa6CSXxzIKBinIaJHb1gLJWheoXp7WzdideAJN46aChFu3hKg07QaIJNk4dfIJ2ry3tEfo3FRvstKWasg/`. In order to get it into a usable format, we need to make sure the configuration parsing won't try to read sections of it as variables. To do this, we do something called *escaping*. - -All you need to do is take the salted hash and replace every `$` you see -- there should be exactly three -- with `$$`. That's it! Count them to be sure; you should now have *6* `$` symbols present instead of three. Once you've escaped the salted hash, you're ready to roll. - -=== Cheating/The Easy Way -Feeling overwhelmed? There's an easy way to do all of this. - -First, while logged into your local computer, change your password to what you want ether `root_password` or `password` to be: - - passwd - -NOTE: Remember, changing your password won't echo the password back on the screen for security reasons! - -Then get your shadow entry. This has to be done with sudo, as only the root user has access to the hashed passwords on the system. The following command will combine all steps necessary; the string it returns will be a string you can use directly in your `build.ini`. - - sudo grep "^${SUDO_USER}:" /etc/shadow | awk -F':' '{print $2}' | sed -e 's/\$/$$/' - -Don't forget to change your password back to what it was before! - - passwd - -That's it! - diff --git a/docs/manual/images/fig1.1.png b/docs/manual/images/fig1.1.png deleted file mode 100644 index 3305d6e9c4539f31afc1ba44750ecce87eda105d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259654 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

(`ghoGEEr@xeh{FXl#B#I3vU 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

M*zRWL?x%gOv+`2WLU{@WpHhK7Qm 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 Utilities => Terminal. A black box should pop up. - -Insert your USB thumbdrive now (if you haven't already) and run the following command: - - diskutil list - -You should see an entry, probably near the bottom, that looks something like this: - - (...) - /dev/disk42 (external, physical): - #: TYPE NAME SIZE IDENTIFIER - 0: *8.2 GB disk42 - (...) - -CAUTION: *Be sure* to find the disk that matches the size of your thumbdrive! If you use the wrong disk identifier, it will break your OS X/macOS install at best and delete all your data at worst! - -Now that you've found which disk your USB device is (the `/dev/disk__#__` part), we can continue. Make sure that it is the disk ID *right above* the line that contains your flash drive size! For our example, I will use `/dev/disk__42__` as an example as it's highly unlikely you'll have that many disk IDs, but be sure to replace this in the following commands with the proper disk ID you found above. - -Then we need to unmount the disk, in case it's already mounted. - - diskutil unmountDisk /dev/disk42 - -Assuming you saved BDisk Mini to your Desktop, you can do: - - sudo dd if=~/Desktop/bdisk-mini.iso of=/dev/disk42 - -NOTE: The above command may prompt you for a password. This is the same password you use to log into your Mac (and unlock the screensaver, etc.). No characters will show up when you type (for security reasons, in case someone is behind you watching your screen) so it may take you a couple tries. - -This will run for a couple seconds. When it finishes, you should see something similar to (but not necessarily the same numbers as) this: - - 0+1 records in - 0+1 records out - 169 bytes transferred in 0.000530 secs (318865 bytes/sec) - -At this point you _may_ get a popup warning you _"The disk you inserted was not readable by this computer."_ If you do, just click the *Ignore* button. - -One last step. Still in Terminal: - - diskutil eject /dev/disk42 - -You can then close Terminal. - -==== Booting -The instructions here don't differ too much than from Windows, though it's always the same key. From it being in a shutdown state, power on your Macbook Pro (or whatever it is you have) and hold the *Option* key (or the *Alt* key on non-Apple keyboards). The *Option/Alt* key should bring up a boot menu that will let you select a USB device to boot from. - -Strangely enough, you should still be able to _boot_ a BDisk Mini CD/DVD, you just can't *burn* one. I'm tempted to make a cheap dig at Apple, but I'll refrain. - -=== GNU/Linux -==== CD/DVD -Easy. Most (if not all) of https://wiki.archlinux.org/index.php/Optical_disc_drive#Burning[these^] should support burning `bdisk-mini.iso` to disc (I'm partial to _cdrecord_). If you prefer a GUI, try some of https://wiki.archlinux.org/index.php/Optical_disc_drive#Burning_CD.2FDVD.2FBD_with_a_GUI[these^] instead (I like _k3b_). - -==== USB -Very similar to OS X/macOS in approach. First open a terminal emulator- the ways of navigating to it depends on your window manager/desktop environment, but it's usually under a System or Utilities menu. - -Now we need to find which disk our USB thumbdrive is. Insert your USB thumbdrive now, if you haven't already, and run in the terminal: - - sudo fdisk -l - -You should see a device matching your USB thumbdrive's size. In our example, I use */dev/sdz* as it's unlikely you have that many disks attached to a system, but be sure to replace this in the following commands with the proper disk ID you find. - - (...) - Disk /dev/sdz: 7.6 GiB, 8178892800 bytes, 15974400 sectors - Units: sectors of 1 * 512 = 512 bytes - Sector size (logical/physical): 512 bytes / 512 bytes - I/O size (minimum/optimal): 512 bytes / 512 bytes - (...) - -CAUTION: *Be sure* to find the disk that matches the size of your thumbdrive! If you use the wrong disk identifier, it will break your GNU/Linux install (or possibly Windows install if you're dual-booting, etc.) at best and delete all your data at worst! - -Make sure it isn't mounted: - - umount /dev/sdz - -You should get a message that says `umount: /dev/sdz: not mounted`. If it was mounted before, it's unmounted now. - -Next, simply dd over the ISO file. - - sudo dd if=~/Desktop/bdisk-mini.iso of=/dev/sdz - -NOTE: The above command may prompt you for a password. This is the same password you use to log in (and unlock the screensaver, etc.). No characters will show up when you type (for security reasons, in case someone is behind you watching your screen) so it may take you a couple tries. - -This will run for a couple seconds. When it finishes, you should see something similar to (but not necessarily the same numbers as) this: - - 75776+0 records in - 75776+0 records out - 38797312 bytes (39 MB, 37 MiB) copied, 9.01915 s, 4.3 MB/s - -If you get a popup from your desktop environment (assuming you're using one) about not being able to mount a disk, or that it's unformatted, etc. and it prompts you to format, ignore/cancel/close it- do *not* format it! This would erase the BDisk Mini image on it. - -==== Booting -Exactly the same as those for Windows. (Unless you're running GNU/Linux on Mac hardware, in which case follow the booting instructions for Mac instead.) - diff --git a/docs/manual/user/ADVANCED.adoc b/docs/manual/user/ADVANCED.adoc deleted file mode 100644 index 35c8f31..0000000 --- a/docs/manual/user/ADVANCED.adoc +++ /dev/null @@ -1,14 +0,0 @@ -== Advanced Customization -If the <> file doesn't provide enough customization to your liking, I don't blame you! It was designed only to provide the most basic control and is primarily only used to control the build process itself. - -Luckily, there are a lot of changes you can make. For all of these, you'll want to make a copy of the <> directory somewhere and change the basedir configuration option in the <> file to point to that directory. - -This section isn't going to cover every single use case, as that's mostly an exercise for you -- I can't predict how you want to use BDisk! But we'll cover some common cases you can use and in the process you'll know how to implement your own customizations. - -include::advanced/SSH.adoc[] -include::advanced/VPN.adoc[] -include::advanced/SOFTWARE.adoc[] -include::advanced/BUILDING.adoc[] -include::advanced/AUTOLOGIN.adoc[] -include::advanced/DESKTOP.adoc[] - diff --git a/docs/manual/user/BUILDING.adoc b/docs/manual/user/BUILDING.adoc deleted file mode 100644 index fe50da0..0000000 --- a/docs/manual/user/BUILDING.adoc +++ /dev/null @@ -1,15 +0,0 @@ -== Building a BDisk ISO -So you finally have <> BDisk (and perhaps added further <>. Now you're ready to build! - -Building is, thankfully, the easiest part! - -NOTE: Due to requiring various mounting and chrooting, BDisk must be run as the *root* user (or via _sudo_). - -To initiate a build, simply run `/bdisk/bdisk.py`. That's it! Everything should continue automatically. - -If you'd like to specify a path to a specific build configuration, you can use `/bdisk/bdisk.py path/to/build.ini`. The default is _/etc/bdisk/build.ini_ (plus <>). - -If you're using a packaged version you installed from your distro's package manager, you instead should run wherever it installs to. Most likely this is going to be `/usr/sbin/bdisk`. (On systemd build hosts that have done the https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/[/usr merge^], you can use `/usr/sbin/bdisk` or `/sbin/bdisk`.) - -If you encounter any issues during the process, make sure you read the documentation -- if your issue still isn't addressed, please be sure to file a <>! - diff --git a/docs/manual/user/BUILDINI.adoc b/docs/manual/user/BUILDINI.adoc deleted file mode 100644 index 362dc1d..0000000 --- a/docs/manual/user/BUILDINI.adoc +++ /dev/null @@ -1,669 +0,0 @@ -== The `build.ini` File -This file is where you can specify some of the very basics of BDisk building. It allows you to specify/define certain variables and settings used by the build process. It uses https://docs.python.org/3/library/configparser.html[ConfigParser^] for the parsing engine, and you can do some https://wiki.python.org/moin/ConfigParserExamples[more advanced^] things with it than I demonstrate in the default. - -It's single-level, but divided into "sections". This is unfortunately a limitation of ConfigParser, but it should be easy enough to follow. - -Blank lines are ignored, as well as any lines beginning with `#` and `;`. There are some restrictions and recommendations for some values, so be sure to note them when they occur. Variables referencing other values in the `build.ini` are allowed in the format of `${keyname}` if it's in the same section; otherwise, `${section:keyname}` can be used. - -If you want to use your own `build.ini` file (and you should!), the following paths are searched in order. The first one found will be used. - -* `/etc/bdisk/build.ini` -* `/usr/share/bdisk/build.ini` -* `/usr/share/bdisk/extra/build.ini` -* `/usr/share/docs/bdisk/build.ini` -* `/usr/local/etc/bdisk/build.ini` -* `/usr/local/share/docs/bdisk/build.ini` -* `/opt/dev/bdisk/build.ini` -* `/opt/dev/bdisk/extra/build.ini` -* `/opt/dev/bdisk/extra/dist.build.ini` -* `/../build.ini` - -We'll go into more detail for each section below. - -=== Example - [bdisk] - name = BDISK - uxname = bdisk - pname = BDisk - ver = - dev = A Developer - email = dev@domain.tld - desc = A rescue/restore live environment. - uri = https://domain.tld - root_password = - user = yes - [user] - username = ${bdisk:uxname} - name = Default user - groups = ${bdisk:uxname},admin - password = $$6$$t92Uvm1ETLocDb1D$$BvI0Sa6CSXxzIKBinIaJHb1gLJWheoXp7WzdideAJN46aChFu3hKg07QaIJNk4dfIJ2ry3tEfo3FRvstKWasg/ - [source_x86_64] - mirror = mirror.us.leaseweb.net - mirrorproto = https - mirrorpath = /archlinux/iso/latest/ - mirrorfile = .sig - mirrorchksum = ${mirrorpath}sha1sums.txt - chksumtype = sha1 - mirrorgpgsig = - gpgkey = 7F2D434B9741E8AC - gpgkeyserver = - [source_i686] - mirror = mirror.us.leaseweb.net - mirrorproto = https - mirrorpath = /archlinux/iso/latest/ - mirrorfile = - mirrorchksum = ${mirrorpath}sha1sums.txt - chksumtype = sha1 - mirrorgpgsig = - gpgkey = - gpgkeyserver = - [build] - dlpath = /var/tmp/${bdisk:uxname} - chrootdir = /var/tmp/chroots - basedir = /opt/dev/bdisk - isodir = ${dlpath}/iso - srcdir = ${dlpath}/src - prepdir = ${dlpath}/temp - archboot = ${prepdir}/${bdisk:name} - mountpt = /mnt/${bdisk:uxname} - multiarch = x86_64 - sign = yes - ipxe = no - i_am_a_racecar = no - [gpg] - mygpgkey = - mygpghome = - [sync] - http = no - tftp = no - git = no - rsync = no - [http] - path = ${build:dlpath}/http - user = http - group = http - [tftp] - path = ${build:dlpath}/tftpboot - user = root - group = root - [ipxe] - iso = no - uri = https://domain.tld - ssldir = ${build:dlpath}/ssl - ssl_ca = ${ssldir}/ca.crt - ssl_cakey = ${ssldir}/ca.key - ssl_crt = ${ssldir}/main.crt - ssl_key = ${ssldir}/main.key - [rsync] - host = - user = - path = - iso = no - -=== `[bdisk]` -This section controls some basic branding and information having to do with the end product. - -==== `name` -This value is a "basic" name of your project. It's not really shown anywhere end-user visible, but we need a consistent name that follows some highly constrained rules: - -. Alphanumeric only -. 8 characters total (or less) -. No whitespace -. ASCII only -. Will be converted to uppercase if it isn't already - -==== `uxname` -This value is used for filenames and the like. I highly recommend it be the same as `<>` (in lowercase) but it doesn't need to be. It also has some rules: - -. Alphanumeric only -. No whitespace -. ASCII only -. Will be converted to lowercase if it isn't already - -==== `pname` -This string is used for "pretty-printing" of the project name; it should be a more human-readable string. - -. *Can* contain whitespace -. *Can* be mixed-case, uppercase, or lowercase -. ASCII only - -==== `ver` -The version string. If this isn't specified, we'll try to guess based on the current git commit and tags in `<>`. If `<>` is *not* a git repository (i.e. you installed BDisk from a package manager), you MUST specify a version number. - -. No whitespace - -==== `dev` -The name of the developer or publisher of the ISO, be it an individual or organization. For example, if you are using BDisk to build an install CD for your distro, this would be the name of your distro. The same rules as `<>` apply. - -. *Can* contain whitespace -. *Can* be mixed-case, uppercase, or lowercase -. ASCII only - -==== `email` -An email address to use for git syncing messages, and/or GPG key generation. - -==== `desc` -What this distribution/project is used for. - -. *Can* contain whitespace -. *Can* be mixed-case, uppercase, or lowercase -. ASCII only - -==== `uri` -What is this project's URI (website, etc.)? Alternatively, your personal site, your company's site, etc. - -. Should be a valid URI understood by curl - - -==== `root_password` -The escaped, salted, hashed string to use for the root user. - -Please see <> for information on this value. In the <>, the string `$$6$$t92Uvm1ETLocDb1D$$BvI0Sa6CSXxzIKBinIaJHb1gLJWheoXp7WzdideAJN46aChFu3hKg07QaIJNk4dfIJ2ry3tEfo3FRvstKWasg/` is created from the password `test`. I cannot stress this enough, do not use a plaintext password here nor just use a regular `/etc/shadow` file/`crypt(3)` hash here. Read the section. I promise it's short. - -==== `user` -*Default: no* - -This setting specifies if we should create a regular (non-root) user in the live environment. See the section <> for more options. - -NOTE: If enabled, this user has full sudo access. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -=== `[user]` -This section of `build.ini` controls aspects about `bdisk:user`. It is only used if <> is enabled. - -==== `username` -What username should the user have? Standard *nix username rules apply: - -. ASCII only -. 32 characters or less -. Alphanumeric only -. Lowercase only -. No whitespace -. Cannot start with a number - -==== `name` -What comment/description/real name should be used for the user? For more information on this, see the https://linux.die.net/man/5/passwd[passwd(5) man page^]'s section on *GECOS*. - -. ASCII only - -==== `groups` -What groups this user should be added to, comma-separated. They will be created if they don't exist yet. Standard *nix group names rules apply: - -. ASCII only -. 32 characters or less -. Can only contain lower-case letters, numeric digits, underscores, or dashes (and can end with a dollar sign) -. Must start with a (lower-case) letter or underscore -. No whitespace - -==== `password` -The escaped, salted, hashed string to use for the non-root user. - -Please see <> for information on this value. In the <>, the string `$$6$$t92Uvm1ETLocDb1D$$BvI0Sa6CSXxzIKBinIaJHb1gLJWheoXp7WzdideAJN46aChFu3hKg07QaIJNk4dfIJ2ry3tEfo3FRvstKWasg/` is created from the password `test`. I cannot stress this enough, do not use a plaintext password here nor just use a regular `/etc/shadow` file/`crypt(3)` hash here. Read the section. I promise it's short. - -=== `[source_]` -This section controls where to fetch the "base" tarballs. - -NOTE: Previously, these settings were *not* architecture-specific, and included in the <> section. - -It was necessary to create this section per architecture, because https://www.archlinux.org/news/phasing-out-i686-support/[Arch Linux has dropped i686 support^]. However, plenty of other distros also have removed support and other third-party projects have ported. (You can find the Arch Linux 32-bit/i686 port project http://archlinux32.org/[here^].) - -The directives here are only covered once, however, since both sections are identical- they just allow you to specify different mirrors. Note that the two settings are `[source_i686]` (for 32-bit) and `[source_x86_64]` (for 64-bit/multilib). - -Which section is used (or both) depends on what <> for the build. - -==== `mirror` -A mirror that hosts the bootstrap tarball. It is *highly* recommended you use an Arch Linux https://wiki.archlinux.org/index.php/Install_from_existing_Linux#Method_A:_Using_the_bootstrap_image_.28recommended.29[bootstrap tarball^] as the build process is highly specialized to this (but <> are welcome for other built distros). You can find a list of mirrors at the bottom of Arch's https://www.archlinux.org/download/[download page^]. - -. No whitespace -. Must be accessible remotely/via a WAN-recognized address -. Must be a domain/FQDN (or IP address) only; no paths (those come later!) - -==== `mirrorproto` -What protocol should we use for the <>? - -|====================== -^s|Must be (case-insensitive) one of: ^.^m|http ^.^m|https ^.^m|ftp -|====================== - -==== `mirrorpath` -What is the path to the tarball directory on the <>? - -. Must be a complete path (e.g. `/dir1/subdir1/subdir2`) -. No whitespace - -==== `mirrorfile` -What is the filename for the tarball found in the path specified in <> ? If left blank, we will use the hash <> file to try to guess the most recent file. - -==== `mirrorchksum` -*[optional]* + -*default: (no hash checking done)* + -*requires: <>* - -The path to a checksum file of the bootstrap tarball. - -. No whitespace -. Must be the full path -. Don't include the <> or <> - -==== `chksumtype` -The algorithm that <>'s hashes are in. - -[options="header"] -|====================== -7+^|Accepts one of: -^m|blake2b -^m|blake2s -^m|md5 -^m|sha1 -^m|sha224 -^m|sha256 -^m|sha384 -^m|sha512 -^m|sha3_224 -^m|sha3_256 -^m|sha3_384 -^m|sha3_512 -^m|shake_128 -^m|shake_256 -|====================== - -TIP: You may have support for additional hashing algorithms, but these are the ones gauranteed to be supported by Python's https://docs.python.org/3/library/hashlib.html[hashlib module^]. To get a full list of algorithms the computer you're building on supports, you can run `python3 -c 'import hashlib;print(hashlib.algorithms_available)'`. Most likely, however, <> is going to be hashes of one of the above. - -==== `mirrorgpgsig` -*[optional]* + -*default: (no GPG checking done)* + -*requires: <>* + -*requires: <>* - -If the bootstrap tarball file has a GPG signature, we can use it for extra checking. If it's blank, GPG checking will be disabled. - -If you specify just `.sig` (or use the default and don't specify a <>), BDisk will try to guess based on the file from the hash <> file. Note that unless you're using the `.sig` "autodetection", this must evaluate to a full URL. (e.g. `${mirrorproto}://${mirror}${mirrorpath}somefile.sig`) - -==== `gpgkey` -*requires: <>* - -What is a key ID that should be used to verify/validate the <>? - -. Only used if <> is set -. Can be in "short" form (e.g. _7F2D434B9741E8AC_) or "full" form (_4AA4767BBC9C4B1D18AE28B77F2D434B9741E8AC_), with or without the _0x_ prefix. - -==== `gpgkeyserver` -*default: blank (GNUPG-bundled keyservers)* + -*requires: <>* - -What is a valid keyserver we should use to fetch <>? - -. Only used if <> is set -. The default (blank) is probably fine. If you don't specify a personal GPG config, then you'll most likely want to leave this blank. -. If set, make sure it is a valid keyserver URI (e.g. `hkp://keys.gnupg.net`) - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -=== `[build]` -This section controls some aspects about the host and things like filesystem paths, etc. - - -==== `gpg` -Should we sign our release files? See the <> section. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -==== `dlpath` -Where should the release files be saved? Note that many other files are created here as well. - -WARNING: If you manage your project in git, this should not be checked in as it has many large files that are automatically generated! - -. No whitespace -. Will be created if it doesn't exist - -==== `chrootdir` -Where the bootstrap tarball(s) extract to, where the chroots are built and prepped for filesystems on the live media. - -WARNING: If you manage your project in git, this should not be checked in as it has many large files that are automatically generated! - -. No whitespace -. Will be created if it doesn't exist - -==== `basedir` -Where your <> and <> directories are located. If you checked out from git, this would be your git worktree directory. - -. No whitespace -. Must exist and contain the above directories populated with necessary files - -==== `isodir` -This is the output directory of ISO files when they're created (as well as GPG signatures if you <>). - -WARNING: If you manage your project in git, this should not be checked in as it has many large files that are automatically generated! - -. No whitespace -. Will be created if it doesn't exist - -==== `srcdir` -This is where we save and compile source code if we need to dynamically build components (such as iPXE for mini ISOs). - -. No whitespace -. Will be created if it doesn't exist (and is needed) - -==== `prepdir` -This is the directory we use for staging. - -. No whitespace -. Will be created if it doesn't exist - -==== `archboot` -This directory is used to stage boot files. - -WARNING: This directory should not be the exact same path as other directives! If so, you will cause your ISO to be much larger than necessary. A subdirectory of another directive's path, however, is okay. - -. No whitespace -. Will be created if it doesn't exist - -==== `mountpt` -The path to use as a mountpoint. - -. No whitespace -. Will be created if it doesn't exist - -==== `multiarch` -*default: yes* - -Whether or not to build a "multiarch" image- that is, building support for both x86_64 and i686 in the same ISO. - -[options="header"] -|====================== -s|In order to... 3+^|Accepts (case-insensitive) one of: -s|build a multiarch ISO ^m|yes ^m|true ^m|1 -s|build a separate ISO for each architecture ^m|no ^m|false ^m|0 -s|only build an i686-architecture ISO ^m|i686 ^m|32 ^m|no64 -s|only build an x86_64-architecture ISO ^m|x86_64 ^m|64 ^m|no32 -|====================== - -==== `ipxe` -*default: no* - -Enable iPXE ("mini ISO") functionality. - -NOTE: This has no bearing on the <> section, so you can create an iPXE HTTP preparation for instance without needing to sync it anywhere (in case you're building on the webserver itself). - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -==== `i_am_a_racecar` -*default: no* - -This option should only be enabled if you are on a fairly powerful, multicore system with plenty of RAM. It will speed the build process along, but will have some seriously adverse effects if your system can't handle it. Most modern systems should be fine with enabling it. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -=== `[gpg]` -This section controls settings for signing our release files. This is only used if <> is enabled. - -==== `mygpgkey` -A valid key ID that BDisk should use to _sign_ release files. - -. You will be prompted for a passphrase if your key has one/you don't have an open and authorized gpg-agent session. Make sure you have a working pinentry configuration set up! -. If you leave this blank we will use the key we generate automatically earlier in the build process. -. We will generate one if this is blank and you have selected sign as yes. - -==== `mygpghome` -The directory should be used for the above GPG key if specified. Make sure it contains a keybox (`.kbx`) your private key. (e.g. `/home/username/.gnupg`) - -=== `[sync]` -This section controls what we should do with the resulting build and how to handle uploads, if we choose to use those features. - -==== `http` -*default: no* - -If enabled, BDisk will generate/prepare HTTP files. This is mostly only useful if you plan on using iPXE. See the <> section. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -==== `tftp` -*default: no* - -If enabled, BDisk will generate/prepare TFTP files. This is mostly only useful if you plan on using more traditional (non-iPXE) setups and regualar PXE bootstrapping into iPXE. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -==== `git` -*requires: <>* + -*default: no* - -Enable automatic Git pushing for any changes done to the project itself. If you don't have upstream write/push access, you'll want to disable this. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -==== `rsync` -*requires: <>* + -*default: no* - -Enable rsync pushing for the ISO (and other files, if you choose- useful for iPXE over HTTP(S)). - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -=== `[http]` -This section controls details about HTTP file preparation/generation. Only used if <> is enabled. - -==== `path` -This directory is where to build an HTTP webroot. - -WARNING: MAKE SURE you do not store files here that you want to keep! They will be deleted! - -. No whitespace -. If blank, HTTP preparation/generation will not be done -. If specified, it will be created if it doesn't exist -. Will be deleted first - -==== `user` -What user the HTTP files should be owned as. This is most likely going to be either 'http', 'nginx', or 'apache'. - -. No whitespace -. User must exist on build system - -|====================== -^s|Can be one of: ^.^m|username ^.^m|http://www.linfo.org/uid.html[UID] -|====================== - -==== `group` -What group the HTTP files should be owned as. This is most likely going to be either 'http', 'nginx', or 'apache'. - -. No whitespace -. Group must exist on build system - -|====================== -^s|Can be one of: ^.^m|groupname ^.^m|https://linux.die.net/man/5/group[GID] -|====================== - -=== `[tftp]` -This section controls details about TFTP file preparation/generation. Only used if <> is enabled. - -==== `path` -The directory where we want to build a TFTP root. - -WARNING: MAKE SURE you do not store files here that you want to keep! They will be deleted! - -. No whitespace -. Will be created if it doesn't exist -. Will be deleted first - -==== `user` -What user the TFTP files should be owned as. This is most likely going to be either 'tftp', 'root', or 'nobody'. - -. No whitespace -. User must exist on build system - -|====================== -^s|Can be one of: ^.^m|username ^.^m|http://www.linfo.org/uid.html[UID] -|====================== - -==== `group` -What group the TFTP files should be owned as. This is most likely going to be either 'tftp', 'root', or 'nobody'. - -. No whitespace -. Group must exist on build system - -|====================== -^s|Can be one of: ^.^m|groupname ^.^m|https://linux.die.net/man/5/group[GID] -|====================== - -=== `[ipxe]` -This section controls aspects of iPXE building. Only used if <> is enabled. - -==== `iso` -*default: no* + -*requires: <>* - -Build a "mini-ISO"; that is, an ISO file that can be used to bootstrap an iPXE environment (so you don't need to set up a traditional PXE environment on your LAN). We'll still build a full standalone ISO no matter what. - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== - -==== `uri` -What URI iPXE's EMBED script should use. This would be where you host an iPXE chainloading script on a webserver, for instance. See iPXE's example of http://ipxe.org/scripting#dynamic_scripts[dynamic scripts^] for an example of the script that would be placed at this URI. - -NOTE: If you require HTTP BASIC Authentication or HTTP Digest Authentication (untested), you can format it via `https://user:password@bdisk.square-r00t.net/boot.php`. - -NOTE: This currently does not work for HTTPS with self-signed certificates. - -. *Required* if <> is enabled - -==== `ssldir` -Directory to hold SSL results, if we are generating keys, certificates, etc. - -. No whitespace -. Will be created if it does not exist - -==== `ssl_ca` -Path to the (root) CA certificate file iPXE should use. See http://ipxe.org/crypto[iPXE's crypto page^] for more information. - -NOTE: You can use your own CA to sign existing certs. This is handy if you run a third-party/"Trusted" root-CA-signed certificate for the HTTPS target. - -. No whitespace -. Must be in PEM/X509 format -. *Required* if <> is enabled -. If it exists, a matching key (ssl_cakey) *must* be specified -.. However, if left blank/doesn't exist, one will be automatically generated - -==== `ssl_cakey` -Path to the (root) CA key file iPXE should use. - -. No whitespace -. Must be in PEM/X509 format -. *Required* if <> is enabled -. If left blank or it doesn't exist (and <> is also blank), one will be automatically generated -. *Must* match/pair to <> if specified/exists -. MUST NOT be passphrase-protected/DES-encrypted - -==== `ssl_crt` -Path to the _client_ certificate iPXE should use. - -. No whitespace -. Must be in PEM/X509 format -. *Required* if <> is enabled -. If specified/existent, a matching CA cert (<>) and key (<>) *must* be specified -.. However, if left blank/doesn't exist, one will be automatically generated -. *Must* be signed by <>/<> if specified and already exists - -==== `ssl_key` -Path to the _client_ key iPXE should use. - -. No whitespace -. Must be in PEM/X509 format -. *Required* if <> is enabled -. If left blank/nonexistent (and <> is also blank), one will be automatically generated - -=== `[rsync]` -This section controls aspects of rsync pushing. Only used if <> is enabled. - -==== `host` -The rsync destination host. - -. Must resolve from the build server -. Can be host, FQDN, or IP address - -==== `user` -This is the remote user we should use when performing the rsync push. - -. User must exist on remote system -. SSH pubkey authorization must be configured -. The destination's hostkey must be added to your local build user's known hosts - -==== `path` -This is the remote destination path we should use for pushing via rsync. - - -NOTE: You'll probably want to set <> and <> to what it'll need to be on the destination. - -. No whitespace -. The path *must* exist on the remote host -. The path MUST be writable by <> - -==== `iso` -Should we rsync over the ISO files too, or just the boot files? - -[options="header"] -|====================== -2+^|Accepts (case-insensitive) one of: -^m|yes ^m|no -^m|true ^m|false -^m|1 ^m|0 -|====================== diff --git a/docs/manual/user/GETTING_STARTED.adoc b/docs/manual/user/GETTING_STARTED.adoc deleted file mode 100644 index b0d2f0f..0000000 --- a/docs/manual/user/GETTING_STARTED.adoc +++ /dev/null @@ -1,80 +0,0 @@ -== Getting Started - -=== Downloading -If it isn't in your distro's repositories (It *is* in Arch's AUR! Both https://aur.archlinux.org/packages/bdisk/[tagged release^] and https://aur.archlinux.org/packages/bdisk-git/[git master^].), you can still easily get rolling. Simply visit the project's https://git.square-r00t.net/BDisk/[source code web interface^] and download a tarball under the *Download* column: - -image::fig1.1.png[cgit,align="center"] - -If you know the tag of the commit you want, you can use curl: - - curl -sL -o bdisk.tar.xz https://git.square-r00t.net/BDisk/snapshot/BDisk-3.00-BETA.tar.xz - -or wget: - - wget -O bdisk.tar.xz https://git.square-r00t.net/BDisk/snapshot/BDisk-3.00-BETA.tar.xz - -You can use `https://git.square-r00t.net/BDisk/snapshot/BDisk-master.tar.xz` for the URL if you want the latest working version. If you want a snapshot of a specific commit, you can use e.g. `https://git.square-r00t.net/BDisk/snapshot/BDisk-a1fe1dbc0a0ce2b2a5d1b470d30b60636f9b2efa.tar.xz` and so on. - -Alternatively, you can use https://git-scm.com/[git^]. Git most definitely _should_ be in your distro's repositories. - -TIP: If you're new to git and want to learn more, I highly recommend the book https://git-scm.com/book/en/v2[Pro Git^]. It is available for free download (or online reading). - -You can clone via https: - - git clone https://git.square-r00t.net/BDisk - -or native git protocol: - - git clone git://git.square-r00t.net/bdisk.git BDisk - -The git protocol is much faster, but at a cost of lessened security. - -NOTE: I also have a mirror at https://github.com/johnnybubonic/BDisk[GitHub^], but I don't like GitHub very much and since it's a mirror repository, it's possible it will be out of date. For this reason, it's recommended that you use the resources above. - -=== Prerequisites -This is a list of software you'll need available to build with BDisk. - -TIP: Your distro's package manager should have most if not all of these available, so it's unlikely you'll need to install from source. - -NOTE: Some versions may be higher than actually needed (especially _gcc_). - -CAUTION: You will need at least about *15GB* of free disk space, depending on what options you enable. Each architecture chroot (i.e. x86_64, i686) is about 3.5GB after a build using the default package set (more on that later), each architecture release tarball (what we use to build the chroots) is approximately 115MB each, and each squashed image per architecture is 1.1GB (if you use the default package set). If you don't understand what this means quite yet, don't worry- we'll go into more detail later on. Just know that you'll need a fair bit of free disk space. - -==== Necessary -These are needed for using BDisk. - -* https://www.python.org/[Python^] (>=3.5) -* https://github.com/dosfstools/dosfstools[dosfstools^] -* http://libburnia-project.org[libisoburn^] -* http://squashfs.sourceforge.net[squashfs-tools^] (>=4.2) - -These are required Python modules: - -* https://pypi.python.org/pypi/GitPython[GitPython^] -* https://pypi.python.org/pypi/humanize[Humanize^] -* http://jinja.pocoo.org/[Jinja2^] -* https://pypi.python.org/pypi/psutil[PSUtil^] -* https://pypi.python.org/pypi/patch[Patch^] -* https://pypi.python.org/pypi/pygpgme[PyGPGME^] -* https://pypi.python.org/pypi/pyOpenSSL[PyOpenSSL^] -* https://pypi.python.org/pypi/validators[Validators^] - -==== Optional -While not strictly necessary, these will greatly enhance your BDisk usage. I've included some reasons why you might want to install them. - -NOTE: If you do not wish to install any of these or cannot install them, be sure to disable the relevant options in the `build.ini` file (we'll talk about that later). The default `extra/dist.build.ini` should be sane enough to not require any of these. - -* http://cdrtools.sourceforge.net/private/cdrecord.html[cdrtools^] -** Needed for building iPXE. -* http://gcc.gnu.org[gcc (multilib)^] (>=6.x) -** Needed for building iPXE. -* http://gcc.gnu.org[gcc-libs (multilib)^] (>=6.x) -** (Same as _gcc_.) -* https://git-scm.com/[git^] -** For autodetection of version, automatically making commits for your project, checking out source code, etc. -* https://www.gnupg.org/[gpg/gnupg^] (>=2.1.11) -** For automatically signing releases, verifying downloaded files from the Internet as part of the build process, etc. It's okay if you don't have a key set up! -* https://rsync.samba.org/[rsync^] -** For syncing built ISOs to a fileserver, syncing to a remote iPXE server, syncing to a traditional PXE/TFTP server, etc. - - diff --git a/docs/manual/user/IMPORTANT_CONCEPTS.adoc b/docs/manual/user/IMPORTANT_CONCEPTS.adoc deleted file mode 100644 index cf7ae1a..0000000 --- a/docs/manual/user/IMPORTANT_CONCEPTS.adoc +++ /dev/null @@ -1,51 +0,0 @@ -== Important Concepts -If this is your first foray into building live distros, there are some terms and concepts we need to understand first. This will simplify the process later on. - -=== Terms -An *operating system*, or OS, is what your programs (email client, web browser, etc.) run on. - -There are two basic types of booting systems that communicate between the *hardware* (the physical computer itself and its components) and the operating system: https://en.wikipedia.org/wiki/BIOS[*BIOS*^] (Basic Input/Output System) which has been around for quite some time and the newer https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface[*UEFI*^] (Unified Extensible Firmware Interface). Don't worry, you don't need to memorize what they're acronyms for and there won't be an exam -- just remember that BIOS is an older technology and UEFI is the newer one (and that they operate differently). - -*GNU/Linux*, sometimes just referred to as _Linux_ (And there is a difference between the terminologies, but it's nuanced. You are welcome to https://www.gnu.org/gnu/linux-and-gnu.en.html[read up on it^] though!), is an example of an operating system. Other examples include _Windows_, _macOS_ (previously _OS X_), _iOS_, _Android_, and a whole slew of others. There are many types of GNU/Linux offerings, called _distributions_, _flavors_, or _distros_. - -A *live distro*, *live CD*, *live DVD*, *live USB*, and the like are a way of booting an operating system without installing it on the hard drive- this means the computer doesn't even need a hard drive installed, or it doesn't matter if the installed operating system is broken. Typically they are Linux-based, but there are several Windows-based live releases out there (usually they're focused on rescuing broken Windows systems, so they're not very flexible). - -*Hybrid ISOs* are ISO files that can be burned to optical media (CDs, DVDs, etc.) and also be _dd_'d directly to a USB thumbdrive (for computers that support booting from USB). That means one file, multiple media types. - -*Architectures* are different hardware platforms. This mostly refers to the CPU. Common implementations are *64-bit* (also known as *x86_64* or *AMD64* for ones that support running both 64-bit and 32-bit software, or *IA64* or *Itanium* for processors that only support 64-bit) and *32-bit* (or *i686* and the older *i386* and *i486* implementations). Most consumer PCs on the market today are x86_64. - -*Chroots*, *chrooting*, and the like are variants on the word *chroot*. A *chroot* is a way of running a GNU/Linux install "inside" another GNU/Linux distro. It's sort of like a virtual machine, or VM, except that it's a lot more lightweight and it doesn't do any actual virtualization- and uses the host's kernel, memory mapping, etc. It's very useful for development of operating systems. - -*PXE*, or Pre-boot eXecution Environment, is a way of booting operating systems over a local network. - -*iPXE* is a http://ipxe.org/[project^] that builds a very small Linux kernel, UNDI (traditional PXE) images, and the like that allow you to essentially use PXE over the Internet. It's very flexible and customizable, and supports a custom scripting engine and such. - -=== Why live media is necessary/Why you might want BDisk -"But Brent," I hear you ask in a voice which most likely is nothing close to what you actually sound like and entirely in my head, "Why would I need a live CD/USB/etc.? And why BDisk?" - -Elementary, my dear imaginary reader! I touch on some reasons why one might want live media in the beginning of the <>, but here's why you might want BDisk specifically as opposed to another live distro (or <>). - -* Fully customizable -* Works with a multitude of GNU/Linux distros -- both for the host build system and as the guest. (Still under development!) -* It performs optimizations and compression to help you get the smallest ISO possible. -* In addition to building hybrid ISOs, it supports building iPXE hybrid ISOs (meaning you only need a very small file; the rest of the operating system boots over the Internet). -* It supports both BIOS and UEFI systems- both the full image and the iPXE images. -* It supports multiple architectures (x86_64, i686, possibly IA64 -- untested) on the same ISO. -* It supports automatically syncing to a web mirror, PXE boot server, etc. via rsync upon successful build. -* It supports SecureBoot (untested!). -* It is 100% compatible with both the https://wiki.archlinux.org/index.php/installation_guide[Arch installation guide^] and the https://wiki.gentoo.org/wiki/Handbook:AMD64#Installing_Gentoo[Gentoo installation guide^]. -* It allows for non-interactive/automated building (i.e. nightly images). -* It supports arbitrary file inclusion in a defined path on the ISO itself, not via some arbitrary directory as a separate partition on the media. -* It can automatically build an accompanying "mini" ISO using iPXE -- which is also a hybrid, UEFI-supported ISO. -* Automatic versioning based on git tags (optional). - -=== Who might want to use BDisk? -* System builders/hardware testers -* System Administrators/Engineers/Architects -* Information Security professionals -* Computer repair shops -* Technology Consultants -* Hobbyists -* Home GNU/Linux users -* Technology enthusiasts - diff --git a/docs/manual/user/PROJECT_LAYOUT.adoc b/docs/manual/user/PROJECT_LAYOUT.adoc deleted file mode 100644 index d7f49a8..0000000 --- a/docs/manual/user/PROJECT_LAYOUT.adoc +++ /dev/null @@ -1,81 +0,0 @@ -== Project Structure -The following is a tree of files and directories in a BDisk root directory. Note that yours may not look quite like this, as BDisk supports some directory relocation to aid in packaging for distros. These will be examined in-depth in the coming sections. - - - ├── bdisk - │   ├── bchroot.py - │   ├── bdisk.py - │   ├── bGPG.py - │   ├── bSSL.py - │   ├── bsync.py - │   ├── build.py - │   ├── host.py - │   ├── ipxe.py - │   └── prep.py - ├── docs - │   ├── COPYING - │   ├── LICENSE -> COPYING - │   ├── manual - │   │   └── (...) - │   ├── README - ├── examples - │   └── HTTP - │   └── (...) - ├── extra - │   ├── bdisk.png - │   ├── bin - │   │   └── (...) - │   ├── dist.build.ini - │   ├── external - │   │   └── (...) - │   ├── mirrorlist - │   ├── pre-build.d - │   │   ├── (...) - │   │   ├── i686 - │   │   │   └── (...) - │   │   └── x86_64 - │   │   └── (...) - │   └── templates - │   ├── BIOS - │   │   ├── isolinux.cfg.arch.j2 - │   │   └── isolinux.cfg.multi.j2 - │   ├── EFI - │   │   ├── base.conf.j2 - │   │   ├── loader.conf.j2 - │   │   ├── ram.conf.j2 - │   │   ├── uefi1.conf.j2 - │   │   └── uefi2.conf.j2 - │   ├── GPG.j2 - │   ├── iPXE - │   │   ├── BIOS - │   │   │   └── isolinux.cfg.j2 - │   │   ├── EFI - │   │   │   ├── base.conf.j2 - │   │   │   └── loader.conf.j2 - │   │   ├── EMBED.j2 - │   │   ├── patches - │   │   │   ├── 01.git-version.patch.j2 - │   │   │   └── 02.banner.patch.j2 - │   │   └── ssl - │   │   └── openssl.cnf - │   ├── overlay - │   │   ├── (...) - │   │   ├── i686 - │   │   ├── x86_64 - │   ├── pre-build.d - │   │   ├── (...) - │   │   ├── i686 - │   │   ├── x86_64 - │   ├── VARS.txt.j2 - │   └── VERSION_INFO.txt.j2 - └── overlay - ├── (...) - ├── i686 - └── x86_64 - -include::fslayout/BDISK.adoc[] -include::fslayout/DOCS.adoc[] -include::fslayout/EXAMPLES.adoc[] -include::fslayout/EXTRA.adoc[] -include::fslayout/OVERLAY.adoc[] - diff --git a/docs/manual/user/advanced/AUTOLOGIN.adoc b/docs/manual/user/advanced/AUTOLOGIN.adoc deleted file mode 100644 index 707e1b5..0000000 --- a/docs/manual/user/advanced/AUTOLOGIN.adoc +++ /dev/null @@ -1,10 +0,0 @@ -=== Automatic Login (TTY) -If you don't want to have to log into the TTY on boot, BDisk can automatically log in for you with a given username. - -If, for example, you want a terminal to auto-login on TTY1 with the root user, you would create the following file at `/overlay/etc/systemd/system/getty@tty1.service.d/autologin.conf`: - - [Service] - Type=idle - ExecStart= - ExecStart=-/usr/bin/agetty --autologin root --noclear %I 38400 linux - diff --git a/docs/manual/user/advanced/BUILDING.adoc b/docs/manual/user/advanced/BUILDING.adoc deleted file mode 100644 index 3910837..0000000 --- a/docs/manual/user/advanced/BUILDING.adoc +++ /dev/null @@ -1,3 +0,0 @@ -=== Changing the Build Process -If you want to make modifications that can't be managed by arbitrary file inclusion or changing the software package lists, you may want to introduce additional changes to the image configuration that's run during the chroot. This is fairly easy to do. Simply modify `/extra/pre-build.d/root/pre-build.sh` with the changes you desire. Note that this has a `.sh` file extension, but it can be any type of script you want -- Bash, Perl, Python, etc. -- it just needs the shebang line at the beginning of the script. - diff --git a/docs/manual/user/advanced/DESKTOP.adoc b/docs/manual/user/advanced/DESKTOP.adoc deleted file mode 100644 index 3fd68f7..0000000 --- a/docs/manual/user/advanced/DESKTOP.adoc +++ /dev/null @@ -1,30 +0,0 @@ -=== Starting a Desktop Environment -You can install any desktop environment or window manager you would like via <>! From there, it's simply a matter of setting the correct Systemd unit to start automatically. The https://wiki.archlinux.org/index.php/[Arch wiki^] has a lot of useful information here. As an example, I'll include http://lxde.org/[LXDE^] instructions here. - -Simply create a symlink for the target. In the `/overlay/etc/systemd/system/` directory: - - ln -s /usr/lib/systemd/system/lxdm.service display-manager.service - -==== Autologin (LXDE) -Many desktop environments even offer an automatic login feature directly through the desktop manager (LXDM, in LXDE's case). - -Again, using LXDE as an example, create a file at `/overlay/etc/lxdm/lxdm.conf`: - - [base] - autologin=bdisk - greeter=/usr/lib/lxdm/lxdm-greeter-gtk - [server] - arg=/usr/bin/X -background vt1 - [display] - gtk_theme=Adwaita - bottom_pane=1 - lang=1 - keyboard=0 - theme=Industrial - [input] - [userlist] - disable=0 - white= - black= - -LXDE will then automatically log in with the user `bdisk` (note the second line, right under `[base]`) whenever started. \ No newline at end of file diff --git a/docs/manual/user/advanced/SOFTWARE.adoc b/docs/manual/user/advanced/SOFTWARE.adoc deleted file mode 100644 index 3148b5e..0000000 --- a/docs/manual/user/advanced/SOFTWARE.adoc +++ /dev/null @@ -1,20 +0,0 @@ -=== Changing the Installed Software -BDisk comes with a large https://bdisk.square-r00t.net/packages/[list of software^] installed in the build instance by default, ranging from data recovery (such as _foremost_, _scalpel_, _ddrescue_, etc.), security and data wiping (_nwipe_, _scrub_, etc.), penetration testing (_wifite_, _aircrack-ng_, etc.) and a slew of others. Seriously, if you're looking for a tool, changes are it's on it. - -However, this leads to a fairly long build time- even with a local repository mirror (many of the packages are from the AUR). You may want to replace the list with a smaller subset. - -The `iso.pkgs.\*` files are not files you should modify- they contain software necessary to the building of BDisk and are the basic necessary files to build a bootable image. However, the `packages.*` files are where you would add or remove software to be installed. - -NOTE: The package lists can contain both https://www.archlinux.org/packages/[Arch repository packages^] *and* https://aur.archlinux.org/[AUR^] packages. - -NOTE: Blank lines are ignored, and you can comment out lines by prefixing the line with the `#` character. - -==== `/extra/pre-build.d/i686/root/packages.arch` -This list contains packages to *only* be installed for the i686 image. - -==== `/extra/pre-build.d/x86_64/root/packages.arch` -This list contains packages you *only* want installed in the x86_64 image. - -==== `/extra/pre-build.d/root/packages.both` -This file contains packages for both architectures (i686 and x86_64). - diff --git a/docs/manual/user/advanced/SSH.adoc b/docs/manual/user/advanced/SSH.adoc deleted file mode 100644 index 57b0e01..0000000 --- a/docs/manual/user/advanced/SSH.adoc +++ /dev/null @@ -1,74 +0,0 @@ -=== SSH Pubkey Authentication -To start with, you'll want to secure SSH a little more than normal. - -I highly recommend https://stribika.github.io/2015/01/04/secure-secure-shell.html[this article^], which we'll be following in this process. - -First, create a file: `/overlay/etc/ssh/sshd_config` using the following. Comments and blank lines have been stripped out for brevity. - - PermitRootLogin prohibit-password - HostKey /etc/ssh/ssh_host_ed25519_key - HostKey /etc/ssh/ssh_host_rsa_key - AuthorizedKeysFile .ssh/authorized_keys - PasswordAuthentication no - PermitEmptyPasswords no - ChallengeResponseAuthentication no - UsePAM yes - PrintMotd no # pam does that - Subsystem sftp /usr/lib/ssh/sftp-server - KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 - Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr - MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com - -We'll also want to implement a more secure `ssh_config` file to avoid possible leaks. The following is `/overlay/etc/ssh/ssh_config`: - - Host * - KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256 - PasswordAuthentication no - ChallengeResponseAuthentication no - PubkeyAuthentication yes - HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa - Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr - MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com - -We'll want to create our own moduli. This can take a long time, but only needs to be done once -- it doesn't need to be done for every build. The following commands should be run in `/overlay/etc/ssh/`: - - ssh-keygen -G moduli.all -b 4096 - ssh-keygen -T moduli.safe -f moduli.all - mv moduli.safe moduli - rm moduli.all - -Then we generate hostkeys. This isn't strictly necessary as the live media will create them automatically when starting SSH if they're missing, but this does provide some verification that the host you're SSHing to is, in fact, running the BDisk instance that you yourself built. The following commands should be run in `/overlay/etc/ssh/`: - - ssh-keygen -t ed25519 -f ssh_host_ed25519_key -N "" < /dev/null - ssh-keygen -t rsa -b 4096 -f ssh_host_rsa_key -N "" < /dev/null - -Make sure you have keys on your host workstation generated so you can SSH into BDisk. If you don't have any ED25519 or RSA SSH keys, this will create them for you. The following should be run as the host (build machine, or what have you) user you want to be able to SSH into BDisk as: - - ssh-keygen -t ed25519 -o -a 100 - ssh-keygen -t rsa -b 4096 -o -a 100 - -The defaults are fine. Adding a password to your private key is not necessary, but recommended (though note that doing so will inhibit automated SSHing). You should now have in `~/.ssh/` the following files (assuming you kept the defaults above): - - id_ed25519 - id_ed25519.pub - id_rsa - id_rsa.pub - -WARNING: The files ending in *.pub* are _public_ -- they can be published anywhere. However, the ones that are not appended with *.pub* are your _private keys_ and should not be shared with anyone, whether they're password-protected or not! - -Now you'll want to get the public key of your SSH keys so you can add them to your BDisk build. The following commands should be run in `/overlay/`: - - mkdir -p root/.ssh - chmod 700 root/.ssh - touch root/.ssh/authorized_keys - chmod 600 root/.ssh/authorized_keys - cat ~/.ssh/id_{ed25519,rsa}.pub > root/.ssh/authorized_keys - -If you decided to <> in your build, you'll want to perform the same steps above for the regular user as well (or forego the above and just enable SSH for the user you create). Remember to replace `root/` with `home/<<_code_username_code,>>/`! - -Lastly, we need to enable SSH to start on boot. Run the following command in `/overlay/etc/systemd/system/multi-user.target.wants/`: - - ln -s /usr/lib/systemd/system/sshd.service sshd.service - -You should now have SSH automatically start once the instance boots. - diff --git a/docs/manual/user/advanced/VPN.adoc b/docs/manual/user/advanced/VPN.adoc deleted file mode 100644 index b07cbbf..0000000 --- a/docs/manual/user/advanced/VPN.adoc +++ /dev/null @@ -1,13 +0,0 @@ -=== VPN Configuration -For this example we'll set up an https://openvpn.net/[OpenVPN^] client to start automatically on boot. - -Setting up an OpenVPN server is outside the scope of this section, but there are a https://openvpn.net/index.php/open-source/documentation/howto.html[multitude^] of https://openvpn.net/index.php/open-source/documentation/examples.html[useful^] https://wiki.archlinux.org/index.php/OpenVPN[documentation^] https://wiki.gentoo.org/wiki/Openvpn[sources^] out there that will help you with that. - -However, once you have your client .ovpn file (in our example, we'll call it `client.ovpn`) you can add it to the build relatively easily. - -Copy `client.ovpn` as `/overlay/etc/openvpn/client/client.conf` -- note the changed file extension. Then, in the `/overlay/etc/systemd/system/multi-user.target.wants/` directory, issue these commands: - - ln -s /usr/lib/systemd/system/openvpn-client\@.service openvpn-client\@client.service - -OpenVPN will then start on boot in the built BDisk instance. - diff --git a/docs/manual/user/fslayout/BDISK.adoc b/docs/manual/user/fslayout/BDISK.adoc deleted file mode 100644 index fa122be..0000000 --- a/docs/manual/user/fslayout/BDISK.adoc +++ /dev/null @@ -1,13 +0,0 @@ -=== bdisk/ -This directory contains the "heart" of BDisk. It essentially is a Python module package. It contains several python "subpackages" split into different files that provide different functions for BDisk. Chances are you won't ever need to touch anything in here. - -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> - diff --git a/docs/manual/user/fslayout/DOCS.adoc b/docs/manual/user/fslayout/DOCS.adoc deleted file mode 100644 index 42cf6c4..0000000 --- a/docs/manual/user/fslayout/DOCS.adoc +++ /dev/null @@ -1,15 +0,0 @@ -=== docs/ -This directory contains various documentation and other helpful text. - -==== COPYING -This contains BDisk's license, the GPLv3. - -==== LICENSE -This is simply a link to `COPYING`. - -==== manual/ -This directory contains the documentation source you're reading right now! It's written in http://asciidoc.org/[asciidoc^] (well, to be more precise it's written in/has some http://asciidoctor.org/[asciidoctor^]-isms). I'd recommend reading the rendered version, as the source (while perfectly human-readable) is written in a very modular fashion so it may be inconvenient to read each source file and following include directives. - -==== README -This is a placeholder for common convention; it simply tells you to read the manual (and where to find it/build it). - diff --git a/docs/manual/user/fslayout/EXAMPLES.adoc b/docs/manual/user/fslayout/EXAMPLES.adoc deleted file mode 100644 index 7b1553e..0000000 --- a/docs/manual/user/fslayout/EXAMPLES.adoc +++ /dev/null @@ -1,3 +0,0 @@ -=== examples/ -This directory contains example filesystem layouts for e.g. your webserver (for iPXE), or your PXE server via TFTP. - diff --git a/docs/manual/user/fslayout/EXTRA.adoc b/docs/manual/user/fslayout/EXTRA.adoc deleted file mode 100644 index d65d468..0000000 --- a/docs/manual/user/fslayout/EXTRA.adoc +++ /dev/null @@ -1,21 +0,0 @@ -=== extra/ -This directory contains multiple "support files" for BDisk building. - -==== bdisk.png -This file is used for bootloader graphics. If you change the name of the project, this can be named something different -- see <>. - -==== bin/ -This directory contains sample code or extra tools that don't have anything to do with BDisk normal operation but are useful in building a BDisk distribution. - -==== dist.build.ini -This is the "source-provided"/upstream example <>. It will be sourced for any missing configuration options or the like. - -==== external/ -This directory contains external source code for use with extra features in BDisk that would otherwise be inconvenient to fetch and build dynamically. - -==== pkg.build.ini -This is the recommended default <> file for packagers of distro repositories to use when packaging BDisk for inclusion in a package manager. - -include::PREBUILD.adoc[] - -include::TEMPLATES.adoc[] diff --git a/docs/manual/user/fslayout/OVERLAY.adoc b/docs/manual/user/fslayout/OVERLAY.adoc deleted file mode 100644 index 85f347d..0000000 --- a/docs/manual/user/fslayout/OVERLAY.adoc +++ /dev/null @@ -1,13 +0,0 @@ -=== overlay/ -This directory follows similar rules to the <> directory, except it is applied *after* the chroots are prepared (as it is designed to be user-centric rather than core functionality). We'll go more into this later in-depth, as this is where most of your customizations will be done. - -For files that should be included in both chroots, simply recreate the path with the desired file. For instance, if you want a file `/etc/foo/bar.conf` to exist in both i686 and x86_64 versions, it would exist as the path `overlay/etc/foo/bar.conf`. - -It follows the following structure: - -==== i686/ -This contains modifications that should be applied to the i686 version only. If you wanted a file to exist only in the i686 version at `/etc/a/b.conf`, it would be placed in `overlay/i686/etc/a/b.conf`. - -==== x86_64/ -This contains modifications that should be applied to the x86_64 version only. If you wanted a file to exist only in the x86_64 version at `/etc/z/y.conf`, it would be placed in `overlay/x86_64/etc/z/y.conf`. - diff --git a/docs/manual/user/fslayout/PREBUILD.adoc b/docs/manual/user/fslayout/PREBUILD.adoc deleted file mode 100644 index dc84ec2..0000000 --- a/docs/manual/user/fslayout/PREBUILD.adoc +++ /dev/null @@ -1,13 +0,0 @@ -==== pre-build.d/ -This file contains a "core" overlay. Generally these files shouldn't be modified unless you know what you're doing, but there are some interesting things you can do in here. Generally speaking, though, you'll want to place your modifications in the <> directory. - -For files that should be included in both chroots, simply recreate the path with the desired file. For instance, if you want a file `/etc/foo/bar.conf` to exist in both i686 and x86_64 versions, it would exist as the path `pre-build.d/etc/foo/bar.conf`. - -It follows the following structure: - -===== i686/ -This contains modifications that should be applied to the i686 version *only*. If you wanted a file to exist only in the i686 version at `/etc/a/b.conf`, it would be placed in `pre-build.d/i686/etc/a/b.conf`. - -===== x86_64/ -This contains modifications that should be applied to the x86_64 version *only*. If you wanted a file to exist only in the x86_64 version at `/etc/z/y.conf`, it would be placed in `pre-build.d/x86_64/etc/z/y.conf`. - diff --git a/docs/manual/user/fslayout/TEMPLATES.adoc b/docs/manual/user/fslayout/TEMPLATES.adoc deleted file mode 100644 index db9d92b..0000000 --- a/docs/manual/user/fslayout/TEMPLATES.adoc +++ /dev/null @@ -1,48 +0,0 @@ -==== templates/ -This directory contains dynamic templates used for dynamic configuration building and other such things. They are written in http://jinja.pocoo.org/[Jinja2^]. If you haven't used Jinja2 before, the http://jinja.pocoo.org/docs/dev/templates/[templating documentation^] will prove to be very useful. - -This allows you to customize low-level behaviour of BDisk without modifying the source. - -===== BIOS/ -The `isolinux.cfg.arch.j2` template controls boot options for the single-arch versions of BDisk. In other words if you only build an i686 or only an x86_64 version, this is the template that would be used for BIOS boot mode. - -The `isolinux.cfg.multi.j2` is used for multi-arch. It manages booting for both i686 and x86_64 versions. - -These files will let you change the behaviour of booting in BIOS systems. The menu colour, the menu entries, the menu default, etc. - -===== EFI/ -The files in here are https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/[systemd-boot^] configurations. The distributed defaults are: - -`base.conf.j2`, which controls the "main"/default entry. - -`loader.conf.j2`, the meta configuration file which tells the loader which entry to load by default and which entries to include. - -`ram.conf.j2` which allows BDisk to run entirely from RAM. - -`uefi1.conf.j2` which provides a UEFI shell (for older UEFI systems). - -`uefi2.conf.j2` which provides a UEFI shell (for newer UEFI systems). - -===== GPG.j2 -This file contains default parameters for the https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html[GPG key generation], if we need to automatically generate a key. - -===== iPXE/ -This directory holds templates for iPXE/mini builds. - -The `BIOS/` directory is similar to <> mentioned above, but it only needs one configuration file and is a much more minimal design (since its entire purpose is to chainload to the iPXE loader). - -The `EFI/` directory is similar to <> above also, but needs fewer configuration files (its only purpose is to bootstrap iPXE). - -`EMBED.j2` is the iPXE http://ipxe.org/scripting[embedded script^] (http://ipxe.org/embed[more info^]). This is what chainloads the remote resources (kernel, intird, squashed filesystem images, and so forth). - -The `patches/` directory largely control branding of the mini ISO. They are in https://www.gnu.org/software/diffutils/manual/html_node/Unified-Format.html[unified diff^] (or "patch") format. - -===== overlay/ -This directory contains *templated* overlays. These are intended to be templated by the user. See <> for more information on how to use this. Remember to suffix your template files with the `.j2` extension. - -===== pre-build.d/ -This directory contains *templated* overlays. These are intended to not be managed by the user, as they handle configuration necessary for building an ISO. See <> for more information on this. - -===== VERSION_INFO.txt.j2 -This template specifies a VERSION_INFO.txt file placed in various locations throughout the builds to help identify which version, build, etc. the ISO is. - diff --git a/examples/HTTP/boot.php b/examples/HTTP/boot.php deleted file mode 100644 index 967edb2..0000000 --- a/examples/HTTP/boot.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/examples/HTTP/example.32.img b/examples/HTTP/example.32.img deleted file mode 100644 index c92465b..0000000 --- a/examples/HTTP/example.32.img +++ /dev/null @@ -1 +0,0 @@ -NOT A REAL INITRD IMAGE. REPLACE WITH ACTUAL INITRD. diff --git a/examples/HTTP/example.32.kern b/examples/HTTP/example.32.kern deleted file mode 100644 index c9c75c9..0000000 --- a/examples/HTTP/example.32.kern +++ /dev/null @@ -1 +0,0 @@ -NOT A REAL KERNEL FILE. REPLACE WITH ACTUAL KERNEL diff --git a/examples/HTTP/example.64.img b/examples/HTTP/example.64.img deleted file mode 100644 index c92465b..0000000 --- a/examples/HTTP/example.64.img +++ /dev/null @@ -1 +0,0 @@ -NOT A REAL INITRD IMAGE. REPLACE WITH ACTUAL INITRD. diff --git a/examples/HTTP/example.64.kern b/examples/HTTP/example.64.kern deleted file mode 100644 index c9c75c9..0000000 --- a/examples/HTTP/example.64.kern +++ /dev/null @@ -1 +0,0 @@ -NOT A REAL KERNEL FILE. REPLACE WITH ACTUAL KERNEL diff --git a/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.md5 b/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.md5 deleted file mode 100644 index 7dafed4..0000000 --- a/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.md5 +++ /dev/null @@ -1 +0,0 @@ -c18bde6e20c195bfb0a018b5c13dc420 airootfs.sfs diff --git a/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sfs b/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sfs deleted file mode 100644 index 909a182..0000000 --- a/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sfs +++ /dev/null @@ -1 +0,0 @@ -NOT A REAL SQUASHED FILESYSTEM FILE. REPLACE WITH ACTUAL SQUASHED FILESYSTEM diff --git a/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sha256 b/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sha256 deleted file mode 100644 index 1928e91..0000000 --- a/examples/HTTP/path/to/squashes/EXAMPLE/i686/airootfs.sha256 +++ /dev/null @@ -1 +0,0 @@ -ada655a13f53702b3fe13cae001ab14f741e10c2bb83869048d4c18e74111c12 airootfs.sfs diff --git a/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.md5 b/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.md5 deleted file mode 100644 index 7dafed4..0000000 --- a/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.md5 +++ /dev/null @@ -1 +0,0 @@ -c18bde6e20c195bfb0a018b5c13dc420 airootfs.sfs diff --git a/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sfs b/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sfs deleted file mode 100644 index 909a182..0000000 --- a/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sfs +++ /dev/null @@ -1 +0,0 @@ -NOT A REAL SQUASHED FILESYSTEM FILE. REPLACE WITH ACTUAL SQUASHED FILESYSTEM diff --git a/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sha256 b/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sha256 deleted file mode 100644 index 1928e91..0000000 --- a/examples/HTTP/path/to/squashes/EXAMPLE/x86_64/airootfs.sha256 +++ /dev/null @@ -1 +0,0 @@ -ada655a13f53702b3fe13cae001ab14f741e10c2bb83869048d4c18e74111c12 airootfs.sfs diff --git a/extra/aif.png b/extra/aif.png deleted file mode 100644 index 9dd30abe65547eb3f5026a0c7d3ca0c70e9af315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&H%)r3FFYmXUfq{WJz$e6&fq`LpmF+DC z1_t&LPhVH|hpcQo3OYfI%zO+C47Q#wjv*Dd-X3J+Wnf@9wBWmcE}!`V24cX2^9<7; VFfe+bk@f;9_jL7hS?83{1OPIc8`%H= diff --git a/extra/bdisk.png b/extra/bdisk.png deleted file mode 100644 index 2db6acaf950d4a97720a3ee47254a5ff0089e24a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1154437 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%0Ai4#YifgS?ew{K?%4Gm=g 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 J);T3K0RRRh{Ivi8 diff --git a/extra/bdisk.png.xcf b/extra/bdisk.png.xcf deleted file mode 100644 index 9dd674da3035e586fbad9e3407faf8edb43be4b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219311 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Ð2I7}Oa)v9K{_q{KzE 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 pW?(?V{}~tmg$Lv#QD diff --git a/extra/bin/hashgen.py b/extra/bin/hashgen.py deleted file mode 100755 index 5553465..0000000 --- a/extra/bin/hashgen.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/env python3 -import crypt -import getpass - -password = getpass.getpass("\nWhat password would you like to hash/salt?\n(NOTE: will NOT echo back!)\n") -salt = crypt.mksalt(crypt.METHOD_SHA512) -salthash = crypt.crypt(password, salt) -print("\nYour salted hash is:\n\t{0}\n".format(salthash)) diff --git a/extra/dist.build.ini b/extra/dist.build.ini deleted file mode 100644 index 9751076..0000000 --- a/extra/dist.build.ini +++ /dev/null @@ -1,103 +0,0 @@ -########################################################### -## BUILD.CONF SAMPLE FILE ## -########################################################### -# -# This file is used to define various variables/settings -# used by the build script. -# -# For full (perhaps overly-verbose ;) documentation, please -# see: -# https://bdisk.square-r00t.net/#_the_code_build_ini_code_file -# Or simply refer to the section titled "The build.ini File" -# in the user manual. - -[bdisk] -name = BDISK -uxname = bdisk -pname = BDisk -ver = -dev = r00t^2 -email = bts@square-r00t.net -desc = j00 got 0wnz0r3d lulz. -uri = https://bdisk.square-r00t.net -root_password = -user = yes - -[user] -username = ${bdisk:uxname} -name = Default user -groups = ${bdisk:uxname},admin -password = - -[source_x86_64] -mirror = mirror.us.leaseweb.net -mirrorproto = https -mirrorpath = /archlinux/iso/latest/ -mirrorfile = -mirrorchksum = ${mirrorpath}sha1sums.txt -chksumtype = sha1 -mirrorgpgsig = -gpgkey = 7F2D434B9741E8AC -gpgkeyserver = - -[source_i686] -mirror = mirror.us.leaseweb.net -mirrorproto = https -mirrorpath = /archlinux/iso/latest/ -mirrorfile = -mirrorchksum = ${mirrorpath}sha1sums.txt -chksumtype = sha1 -mirrorgpgsig = -gpgkey = 7F2D434B9741E8AC -gpgkeyserver = - -[build] -gpg = no -dlpath = /var/tmp/${bdisk:uxname} -chrootdir = /var/tmp/chroots -basedir = /opt/dev/bdisk -isodir = ${dlpath}/iso -srcdir = ${dlpath}/src -prepdir = ${dlpath}/temp -archboot = ${prepdir}/${bdisk:name} -mountpt = /mnt/${bdisk:uxname} -#multiarch = yes -multiarch = x86_64 -sign = yes -ipxe = no -i_am_a_racecar = yes - -[gpg] -mygpgkey = -mygpghome = ${build:dlpath}/.gnupg - -[sync] -http = no -tftp = no -git = no -rsync = no - -[http] -path = ${build:dlpath}/http -user = http -group = http - -[tftp] -path = ${build:dlpath}/tftpboot -user = root -group = root - -[ipxe] -iso = no -uri = https://bdisk.square-r00t.net -ssldir = ${build:dlpath}/ssl -ssl_ca = ${ssldir}/ca.crt -ssl_cakey = ${ssldir}/ca.key -ssl_crt = ${ssldir}/main.crt -ssl_key = ${ssldir}/main.key - -[rsync] -host = -user = -path = -iso = yes diff --git a/extra/external/SMC_DumpKey/README b/extra/external/SMC_DumpKey/README deleted file mode 100644 index d7dcbe0..0000000 --- a/extra/external/SMC_DumpKey/README +++ /dev/null @@ -1,3 +0,0 @@ -taken with graces to http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/ - -Needs to be compiled on linux with gcc, and only runs on genuine Apple hardware (as it polls the SMC chip for the given value) diff --git a/extra/external/SMC_DumpKey/SmcDumpKey.c b/extra/external/SMC_DumpKey/SmcDumpKey.c deleted file mode 100644 index ff8672e..0000000 --- a/extra/external/SMC_DumpKey/SmcDumpKey.c +++ /dev/null @@ -1,193 +0,0 @@ -/* - * prints out 4-character name of the SMC key at given index position; - * - * by Gabriel L. Somlo , Summer 2014 - * - * Compile with: gcc -O2 -o SmcDumpKey SmcDumpKey.c -Wall - * - * You probably want to "modprobe -r applesmc" before running this... - * - * Code bits and pieces shamelessly ripped from the linux kernel driver - * (drivers/hwmon/applesmc.c by N. Boichat and H. Rydberg) - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License v2 as published by the - * Free Software Foundation. - * - * This program 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 program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#define APPLESMC_START 0x300 -#define APPLESMC_RANGE 0x20 - -#define APPLESMC_DATA_PORT (APPLESMC_START + 0x00) -#define APPLESMC_CMD_PORT (APPLESMC_START + 0x04) - -#define APPLESMC_READ_CMD 0x10 -#define APPLESMC_GET_KEY_BY_INDEX_CMD 0x12 -#define APPLESMC_GET_KEY_TYPE_CMD 0x13 - - -/* wait up to 128 ms for a status change. */ -#define APPLESMC_MIN_WAIT 0x0010 -#define APPLESMC_RETRY_WAIT 0x0100 -#define APPLESMC_MAX_WAIT 0x20000 - - -#define APPLESMC_KEY_NAME_LEN 4 -#define APPLESMC_KEY_TYPE_LEN 4 - -typedef struct key_type { - uint8_t data_len; - uint8_t data_type[APPLESMC_KEY_TYPE_LEN]; - uint8_t flags; -} __attribute__((packed)) key_type; - - -/* wait_read - Wait for a byte to appear on SMC port. */ -static int -wait_read(void) -{ - uint8_t status; - int us; - - for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { - usleep(us); - status = inb(APPLESMC_CMD_PORT); - /* read: wait for smc to settle */ - if (status & 0x01) - return 0; - } - - fprintf(stderr, "wait_read() fail: 0x%02x\n", status); - return -1; -} - -/*send_byte - Write to SMC port, retrying when necessary. */ -static int -send_byte(uint8_t cmd, unsigned short port) -{ - uint8_t status; - int us; - - outb(cmd, port); - for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) { - usleep(us); - status = inb(APPLESMC_CMD_PORT); - /* write: wait for smc to settle */ - if (status & 0x02) - continue; - /* ready: cmd accepted, return */ - if (status & 0x04) - return 0; - /* timeout: give up */ - if (us << 1 == APPLESMC_MAX_WAIT) - break; - /* busy: long wait and resend */ - usleep(APPLESMC_RETRY_WAIT); - outb(cmd, port); - } - - fprintf(stderr, - "send_byte(0x%02x, 0x%04x) fail: 0x%02x\n", cmd, port, status); - return -1; -} - -static int -send_argument(const uint8_t *key) -{ - int i; - - for (i = 0; i < APPLESMC_KEY_NAME_LEN; i++) - if (send_byte(key[i], APPLESMC_DATA_PORT)) - return -1; - return 0; -} - -static int -read_smc(uint8_t cmd, const uint8_t *key, uint8_t *buf, uint8_t len) -{ - int i; - - if (send_byte(cmd, APPLESMC_CMD_PORT) || send_argument(key)) { - fprintf(stderr, "%.4s: read arg fail\n", key); - return -1; - } - - if (send_byte(len, APPLESMC_DATA_PORT)) { - fprintf(stderr, "%.4s: read len fail\n", key); - return -1; - } - - for (i = 0; i < len; i++) { - if (wait_read()) { - fprintf(stderr, "%.4s: read data[%d] fail\n", key, i); - return -1; - } - buf[i] = inb(APPLESMC_DATA_PORT); - } - - return 0; -} - - -int -main(int argc, char **argv) -{ - key_type kt; - uint8_t data_buf[UCHAR_MAX]; - uint8_t i; - - if (argc != 2 || strlen(argv[1]) != APPLESMC_KEY_NAME_LEN) { - fprintf(stderr, "\nUsage: %s <4-char-key-name>\n\n", argv[0]); - return -1; - } - - if (ioperm(APPLESMC_START, APPLESMC_RANGE, 1) != 0) { - perror("ioperm failed"); - return -2; - } - - if (read_smc(APPLESMC_GET_KEY_TYPE_CMD, - (uint8_t *)argv[1], (uint8_t *)&kt, sizeof(kt)) != 0) { - fprintf(stderr, "\nread_smc get_key_type error\n\n"); - return -3; - } - printf(" type=\""); - for (i = 0; i < APPLESMC_KEY_TYPE_LEN; i++) - printf(isprint(kt.data_type[i]) ? "%c" : "\\x%02x", - (uint8_t)kt.data_type[i]); - printf("\" length=%d flags=%x\n", kt.data_len, kt.flags); - - if (read_smc(APPLESMC_READ_CMD, - (uint8_t *)argv[1], data_buf, kt.data_len) != 0) { - fprintf(stderr, "\nread_smc get_key_data error\n\n"); - return -4; - } - printf(" data=\""); - for (i = 0; i < kt.data_len; i++) - printf(isprint(data_buf[i]) ? "%c" : "\\x%02x", - (uint8_t)data_buf[i]); - printf("\"\n"); - - return 0; -} diff --git a/extra/modules/distro/TEMPLATE b/extra/modules/distro/TEMPLATE deleted file mode 100644 index dd82e26..0000000 --- a/extra/modules/distro/TEMPLATE +++ /dev/null @@ -1,48 +0,0 @@ -# The modules found in here are for distro-specific differences in the builds. -# For instance, if you want to build a Debian-based BDisk, you'd specify pkg['install'] = ['apt-get', '-y', 'install', '%PKG%'], -# name this file as "debian.py", and set bdisk:distro as 'debian'. -# Note that the guest will need python installed. If distro is set as "NOCHECK", a distro check of the tarball won't be performed -# (as the distro check requires python be installed first). - -# Special variables to be used in strings: -# %PKG% = the name of a package would be inserted here. - -# This template uses Debian as an example. - -# The name of the distro. Must match the output from platform.linux_distribution()[0].lower() -# Regex is supported. -distro = 'debian' - -# The path to python. Can be either python 2.x (2.6 or higher) or 3.x. -pybin = '/usr/bin/python' - -guestenv = {} -# The following environment variables will be set for the guest. -guestenv['DEBIAN_FRONTEND'] = 'noninteractive' - -scripts = {} -# This variable can be used to perform some additional system tweaks and such. This is run before package installation. -# It must be formatted as a complete script- i.e. include a shebang etc. -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" - -# This variable can be used to perform some additional system tweaks and such. This is run after package installation. -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" - - -pkg = {} -# The command, with arguments, in list format that should be run before we install software in the guest. -# For instance, if your guest distro requires a local package listing cache (nearly all of them do) to be -# updated first, this is where it would be run. -pkg['pre'] = ['apt-get', '-y', 'update'] - -# The command, with arguments, in a list format to install a package. -# Note that the command must be constructed in a way that does not require user interaction. -pkg['install'] = ['apt-get', '-y', 'install', '%PKG%'] - -# The command, with arguments, in list format to use to check if a package is installed. -# It should return 0 on exist status if it's installed. Any other exit status assumes the package is not installed. -pkg['check'] = ['dpkg-query', '-f', '${binary:Package}\n', '-W', '%PKG'] diff --git a/extra/modules/distro/arch.py b/extra/modules/distro/arch.py deleted file mode 100644 index e3266a0..0000000 --- a/extra/modules/distro/arch.py +++ /dev/null @@ -1,11 +0,0 @@ -distro = 'arch' -pybin = '/usr/bin/python' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['pacman', '-Syyy'] -pkg['install'] = ['apacman', '-S', '%PKG%'] -pkg['check'] = ['pacman', '-Q', '%PKG'] diff --git a/extra/modules/distro/centos.py b/extra/modules/distro/centos.py deleted file mode 100644 index 5db749a..0000000 --- a/extra/modules/distro/centos.py +++ /dev/null @@ -1,11 +0,0 @@ -distro = 'centos linux' -pybin = '/usr/bin/python' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['yum', 'makecache'] -pkg['install'] = ['yum', '-y', 'install', '%PKG%'] -pkg['check'] = ['rpm', '-qi', '%PKG'] diff --git a/extra/modules/distro/debian.py b/extra/modules/distro/debian.py deleted file mode 100644 index 5069f85..0000000 --- a/extra/modules/distro/debian.py +++ /dev/null @@ -1,12 +0,0 @@ -distro = 'debian' -pybin = '/usr/bin/python' -guestenv['DEBIAN_FRONTEND'] = 'noninteractive' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['apt-get', '-q', '-y', 'update'] -pkg['install'] = ['apt-get', '-q', '-y', '-o Dpkg::Options::="--force-confdef"', '-o Dpkg::Options::="--force-confold"', 'install', '%PKG%'] -pkg['check'] = ['dpkg-query', '-f', "'${binary:Package}\n'", '-W', '%PKG'] diff --git a/extra/modules/distro/fedora.py b/extra/modules/distro/fedora.py deleted file mode 100644 index 66d8bf6..0000000 --- a/extra/modules/distro/fedora.py +++ /dev/null @@ -1,11 +0,0 @@ -distro = 'fedora' -pybin = '/usr/bin/python3' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['yum', 'makecache'] -pkg['install'] = ['yum', '-y', 'install', '%PKG%'] -pkg['check'] = ['rpm', '-qi', '%PKG'] diff --git a/extra/modules/distro/rhel.py b/extra/modules/distro/rhel.py deleted file mode 100644 index 7d20b62..0000000 --- a/extra/modules/distro/rhel.py +++ /dev/null @@ -1,11 +0,0 @@ -distro = 'red hat enterprise linux (server|desktop)' -pybin = '/usr/bin/python' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['yum', 'makecache'] -pkg['install'] = ['yum', '-y', 'install', '%PKG%'] -pkg['check'] = ['rpm', '-qi', '%PKG'] diff --git a/extra/modules/distro/sles.py b/extra/modules/distro/sles.py deleted file mode 100644 index c021edf..0000000 --- a/extra/modules/distro/sles.py +++ /dev/null @@ -1,11 +0,0 @@ -distro = 'suse linux enterprise server' -pybin = '/usr/bin/python' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['zypper', 'refresh'] -pkg['install'] = ['zypper', 'install', '--no-confirm', '-l', '%PKG%'] -pkg['check'] = ['rpm', '-qi', '%PKG'] diff --git a/extra/modules/distro/ubuntu.py b/extra/modules/distro/ubuntu.py deleted file mode 100644 index d95179d..0000000 --- a/extra/modules/distro/ubuntu.py +++ /dev/null @@ -1,12 +0,0 @@ -distro = 'ubuntu' -pybin = '/usr/bin/python' -guestenv['DEBIAN_FRONTEND'] = 'noninteractive' -script['pre'] = """#!/bin/bash -touch /root/BDISK -""" -script['post'] = """#!/bin/bash -rm -f /root/BDISK -""" -pkg['pre'] = ['apt-get', '-q', '-y', 'update'] -pkg['install'] = ['apt-get', '-q', '-y', '-o Dpkg::Options::="--force-confdef"', '-o Dpkg::Options::="--force-confold"', 'install', '%PKG%'] -pkg['check'] = ['dpkg-query', '-f', "'${binary:Package}\n'", '-W', '%PKG'] diff --git a/extra/pkg.build.ini b/extra/pkg.build.ini deleted file mode 100644 index 2bed919..0000000 --- a/extra/pkg.build.ini +++ /dev/null @@ -1,102 +0,0 @@ -########################################################### -## BUILD.CONF SAMPLE FILE ## -########################################################### -# -# This file is used to define various variables/settings -# used by the build script. -# -# For full (perhaps overly-verbose ;) documentation, please -# see: -# https://bdisk.square-r00t.net/#_the_code_build_ini_code_file -# Or simply refer to the section titled "The build.ini File" -# in the user manual. - -[bdisk] -name = BDISK -uxname = bdisk -pname = BDisk -ver = -dev = A Developer -email = dev@domain.tld -desc = A rescue/restore live environment. -uri = https://domain.tld -root_password = -user = yes - -[user] -username = ${bdisk:uxname} -name = Default user -groups = ${bdisk:uxname},admin -password = - -[source_x86_64] -mirror = mirror.us.leaseweb.net -mirrorproto = https -mirrorpath = /archlinux/iso/latest/ -mirrorfile = -mirrorchksum = ${mirrorpath}sha1sums.txt -chksumtype = sha1 -mirrorgpgsig = -gpgkey = 7F2D434B9741E8AC -gpgkeyserver = - -[source_i686] -mirror = mirror.us.leaseweb.net -mirrorproto = https -mirrorpath = /archlinux/iso/latest/ -mirrorfile = -mirrorchksum = ${mirrorpath}sha1sums.txt -chksumtype = sha1 -mirrorgpgsig = -gpgkey = 7F2D434B9741E8AC -gpgkeyserver = - -[build] -gpg = no -dlpath = /var/tmp/${bdisk:uxname} -chrootdir = /var/tmp/chroots -basedir = /var/lib/bdisk -isodir = ${dlpath}/iso -srcdir = ${dlpath}/src -prepdir = ${dlpath}/temp -archboot = ${prepdir}/${bdisk:name} -mountpt = /mnt/${bdisk:uxname} -#multiarch = yes -multiarch = x86_64 -ipxe = no -i_am_a_racecar = no - -[gpg] -mygpgkey = -mygpghome = ${build:dlpath}/.gnupg - -[sync] -http = no -tftp = no -git = no -rsync = no - -[http] -path = ${build:dlpath}/http -user = http -group = http - -[tftp] -path = ${build:dlpath}/tftpboot -user = root -group = root - -[ipxe] -iso = no -uri = https://domain.tld -ssldir = ${build:dlpath}/ssl -ssl_ca = ${ssldir}/ca.crt -ssl_cakey = ${ssldir}/ca.key -ssl_crt = ${ssldir}/main.crt -ssl_key = ${ssldir}/main.key - -[rsync] -host = -user = -path = -iso = no diff --git a/extra/pre-build.d/etc/apacman.conf b/extra/pre-build.d/etc/apacman.conf deleted file mode 100644 index 2223aee..0000000 --- a/extra/pre-build.d/etc/apacman.conf +++ /dev/null @@ -1,62 +0,0 @@ -# -# /etc/apacman.conf -# -# See the apacman.conf(5) manpage for options - -# -# GENERAL OPTIONS -# - -#auronly=1 -#buildonly=1 -#cachevcs=1 -#ignorearch=1 -keepkeys=1 -needed=1 -#noaur=1 -noconfirm=1 -nodatabase=1 -noedit=1 -nofail=1 -#preview=1 -progress=1 -purgebuild=1 -#quiet=1 -skipcache=1 -#skipinteg=1 -#skiptest=1 -#warn=1 - -# -# CONFIGURATION -# - -#builddir="/tmp/pkgbuild-$UID" -#tmpdir="/tmp/apacmantmp-$UID" -#makepkgconf="/etc/makepkg.conf" -#usermakepkgconf="$HOME/.makepkg.conf" -#pacmanconf="/etc/pacman.conf" -#downdir="/var/cache/pacman/pkg" -#savedir="/var/cache/apacman/pkg" -#database="/var/lib/apacman" -#pacmandb="/var/lib/pacman/sync/aur.db" -#pkgfiledb="/var/cache/pkgfile/aur.files" -#localrepo="aur" -#editor="nano -w" -#pager="less -R" -#RPCURL="https://aur.archlinux.org/rpc.php?type" -#PKGURL="https://aur.archlinux.org" -#WEBURL="https://www.archlinux.org" -#ABSURL="rsync.archlinux.org" - -# -# COLORIZATION -# - -#COLOR1='\e[1;39m' -#COLOR2='\e[1;32m' -#COLOR3='\e[1;35m' -#COLOR4='\e[1;36m' -#COLOR5='\e[1;34m' -#COLOR6='\e[1;33m' -#COLOR7='\e[1;31m' diff --git a/extra/pre-build.d/etc/customizepkg.d/autopsy b/extra/pre-build.d/etc/customizepkg.d/autopsy deleted file mode 100755 index 024dbcf..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/autopsy +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -# original URL at sourceforge chokes out -sed -re 's@^(source=\(").*$@\1ftp://ftp.gnome.org/mirror/temp/sf2015/a/au/autopsy/autopsy/2.24/autopsy-2.24.tar.gz")@g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/dd_rhelp b/extra/pre-build.d/etc/customizepkg.d/dd_rhelp deleted file mode 100755 index be58499..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/dd_rhelp +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sed -i -e 's/build(/package(/g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/etc-update b/extra/pre-build.d/etc/customizepkg.d/etc-update deleted file mode 100755 index a762691..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/etc-update +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sed -i -re 's/^(url=)\((.*)\)$/\1\2/g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/fang b/extra/pre-build.d/etc/customizepkg.d/fang deleted file mode 100755 index a762691..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/fang +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sed -i -re 's/^(url=)\((.*)\)$/\1\2/g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/libnfc b/extra/pre-build.d/etc/customizepkg.d/libnfc deleted file mode 100755 index a762691..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/libnfc +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sed -i -re 's/^(url=)\((.*)\)$/\1\2/g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/lsiutil b/extra/pre-build.d/etc/customizepkg.d/lsiutil deleted file mode 100755 index 2c98a83..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/lsiutil +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sed -re 's@^(source=\(").*$@\1https://github.com/kwilczynski/lsi/blob/master/lsiutil/LSIUtil_1.62.zip?raw=true")@g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/ms-sys b/extra/pre-build.d/etc/customizepkg.d/ms-sys deleted file mode 100755 index 4addea7..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/ms-sys +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -# original URL at sourceforge chokes out -sed -re 's@^(source=\(").*$@\1http://fossies.org/linux/privat/${pkgname}-${pkgver}.tar.gz")@g' ${1} diff --git a/extra/pre-build.d/etc/customizepkg.d/whdd b/extra/pre-build.d/etc/customizepkg.d/whdd deleted file mode 100755 index 34d9169..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/whdd +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -if [[ ! -f "/usr/lib/libdialog.so" ]]; -then - echo "Please run the following: sudo ln -s /usr/lib/libdialog.so.1.2 /usr/lib/libdialog.so" - echo "This package will fail to build otherwise." -fi diff --git a/extra/pre-build.d/etc/customizepkg.d/wifite-mod-pixiewps-git b/extra/pre-build.d/etc/customizepkg.d/wifite-mod-pixiewps-git deleted file mode 100755 index 5091a4e..0000000 --- a/extra/pre-build.d/etc/customizepkg.d/wifite-mod-pixiewps-git +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -sed -i -re "s/'any'/'i686' 'x86_64'/g" ${1} diff --git a/extra/pre-build.d/etc/initcpio/hooks/livecd b/extra/pre-build.d/etc/initcpio/hooks/livecd deleted file mode 100644 index 5ad705c..0000000 --- a/extra/pre-build.d/etc/initcpio/hooks/livecd +++ /dev/null @@ -1,7 +0,0 @@ -# vim: set ft=sh: - -run_cleanuphook () { - msg ":: Adding SSL and SSH support..." - - pkill -9 dropbear #kill SSH (in preparation for the live system starting ssh on port 22 -} diff --git a/extra/pre-build.d/etc/initcpio/install/livecd b/extra/pre-build.d/etc/initcpio/install/livecd deleted file mode 100644 index da1db3e..0000000 --- a/extra/pre-build.d/etc/initcpio/install/livecd +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -build() -{ - add_module 'squashfs' - add_module 'loop' - add_module 'overlay' - - add_file "/etc/passwd" - add_file "/etc/shadow" - add_file "/etc/group" - add_file "/etc/gshadow" - - add_binary "/usr/bin/sed" - add_binary "/usr/bin/pkill" - add_binary "/usr/bin/curl" - add_binary "/usr/bin/pv" - add_full_dir /etc/ssl - add_full_dir /etc/ca-certificates - - add_runscript - - # Normally, archiso does this for us. But we don't want to use the build.sh they provide, so we perform it in a more minimal version here. - if [ -f /root/pubkey.gpg ]; - then - add_binary "/usr/bin/gpg" - mkdir -p "${BUILDROOT}${dest}"/gpg - gpg --homedir "${BUILDROOT}${dest}"/gpg --import /root/pubkey.gpg - fi - -} - -help() -{ - cat < -# -# where is one of the locales given in /usr/share/i18n/locales -# and is one of the character sets listed in /usr/share/i18n/charmaps -# -# Examples: -# en_US ISO-8859-1 -# en_US.UTF-8 UTF-8 -# de_DE ISO-8859-1 -# de_DE@euro ISO-8859-15 -# -# The locale-gen command will generate all the locales, -# placing them in /usr/lib/locale. -# -# A list of supported locales is included in this file. -# Uncomment the ones you need. -# -#aa_DJ.UTF-8 UTF-8 -#aa_DJ ISO-8859-1 -#aa_ER UTF-8 -#aa_ER@saaho UTF-8 -#aa_ET UTF-8 -#af_ZA.UTF-8 UTF-8 -#af_ZA ISO-8859-1 -#ak_GH UTF-8 -#am_ET UTF-8 -#an_ES.UTF-8 UTF-8 -#an_ES ISO-8859-15 -#anp_IN UTF-8 -#ar_AE.UTF-8 UTF-8 -#ar_AE ISO-8859-6 -#ar_BH.UTF-8 UTF-8 -#ar_BH ISO-8859-6 -#ar_DZ.UTF-8 UTF-8 -#ar_DZ ISO-8859-6 -#ar_EG.UTF-8 UTF-8 -#ar_EG ISO-8859-6 -#ar_IN UTF-8 -#ar_IQ.UTF-8 UTF-8 -#ar_IQ ISO-8859-6 -#ar_JO.UTF-8 UTF-8 -#ar_JO ISO-8859-6 -#ar_KW.UTF-8 UTF-8 -#ar_KW ISO-8859-6 -#ar_LB.UTF-8 UTF-8 -#ar_LB ISO-8859-6 -#ar_LY.UTF-8 UTF-8 -#ar_LY ISO-8859-6 -#ar_MA.UTF-8 UTF-8 -#ar_MA ISO-8859-6 -#ar_OM.UTF-8 UTF-8 -#ar_OM ISO-8859-6 -#ar_QA.UTF-8 UTF-8 -#ar_QA ISO-8859-6 -#ar_SA.UTF-8 UTF-8 -#ar_SA ISO-8859-6 -#ar_SD.UTF-8 UTF-8 -#ar_SD ISO-8859-6 -#ar_SS UTF-8 -#ar_SY.UTF-8 UTF-8 -#ar_SY ISO-8859-6 -#ar_TN.UTF-8 UTF-8 -#ar_TN ISO-8859-6 -#ar_YE.UTF-8 UTF-8 -#ar_YE ISO-8859-6 -#ayc_PE UTF-8 -#az_AZ UTF-8 -#as_IN UTF-8 -#ast_ES.UTF-8 UTF-8 -#ast_ES ISO-8859-15 -#be_BY.UTF-8 UTF-8 -#be_BY CP1251 -#be_BY@latin UTF-8 -#bem_ZM UTF-8 -#ber_DZ UTF-8 -#ber_MA UTF-8 -#bg_BG.UTF-8 UTF-8 -#bg_BG CP1251 -#bhb_IN.UTF-8 UTF-8 -#bho_IN UTF-8 -#bn_BD UTF-8 -#bn_IN UTF-8 -#bo_CN UTF-8 -#bo_IN UTF-8 -#br_FR.UTF-8 UTF-8 -#br_FR ISO-8859-1 -#br_FR@euro ISO-8859-15 -#brx_IN UTF-8 -#bs_BA.UTF-8 UTF-8 -#bs_BA ISO-8859-2 -#byn_ER UTF-8 -#ca_AD.UTF-8 UTF-8 -#ca_AD ISO-8859-15 -#ca_ES.UTF-8 UTF-8 -#ca_ES ISO-8859-1 -#ca_ES@euro ISO-8859-15 -#ca_FR.UTF-8 UTF-8 -#ca_FR ISO-8859-15 -#ca_IT.UTF-8 UTF-8 -#ca_IT ISO-8859-15 -#ce_RU UTF-8 -#chr_US UTF-8 -#cmn_TW UTF-8 -#crh_UA UTF-8 -#cs_CZ.UTF-8 UTF-8 -#cs_CZ ISO-8859-2 -#csb_PL UTF-8 -#cv_RU UTF-8 -#cy_GB.UTF-8 UTF-8 -#cy_GB ISO-8859-14 -#da_DK.UTF-8 UTF-8 -#da_DK ISO-8859-1 -#de_AT.UTF-8 UTF-8 -#de_AT ISO-8859-1 -#de_AT@euro ISO-8859-15 -#de_BE.UTF-8 UTF-8 -#de_BE ISO-8859-1 -#de_BE@euro ISO-8859-15 -#de_CH.UTF-8 UTF-8 -#de_CH ISO-8859-1 -#de_DE.UTF-8 UTF-8 -#de_DE ISO-8859-1 -#de_DE@euro ISO-8859-15 -#de_IT.UTF-8 UTF-8 -#de_IT ISO-8859-1 -#de_LI.UTF-8 UTF-8 -#de_LU.UTF-8 UTF-8 -#de_LU ISO-8859-1 -#de_LU@euro ISO-8859-15 -#doi_IN UTF-8 -#dv_MV UTF-8 -#dz_BT UTF-8 -#el_GR.UTF-8 UTF-8 -#el_GR ISO-8859-7 -#el_CY.UTF-8 UTF-8 -#el_CY ISO-8859-7 -#en_AG UTF-8 -#en_AU.UTF-8 UTF-8 -#en_AU ISO-8859-1 -#en_BW.UTF-8 UTF-8 -#en_BW ISO-8859-1 -#en_CA.UTF-8 UTF-8 -#en_CA ISO-8859-1 -#en_DK.UTF-8 UTF-8 -#en_DK ISO-8859-1 -en_GB.UTF-8 UTF-8 -en_GB ISO-8859-1 -#en_HK.UTF-8 UTF-8 -#en_HK ISO-8859-1 -#en_IE.UTF-8 UTF-8 -#en_IE ISO-8859-1 -#en_IE@euro ISO-8859-15 -#en_IL UTF-8 -#en_IN UTF-8 -#en_NG UTF-8 -#en_NZ.UTF-8 UTF-8 -#en_NZ ISO-8859-1 -#en_PH.UTF-8 UTF-8 -#en_PH ISO-8859-1 -#en_SG.UTF-8 UTF-8 -#en_SG ISO-8859-1 -en_US.UTF-8 UTF-8 -en_US ISO-8859-1 -#en_ZA.UTF-8 UTF-8 -#en_ZA ISO-8859-1 -#en_ZM UTF-8 -#en_ZW.UTF-8 UTF-8 -#en_ZW ISO-8859-1 -#eo UTF-8 -#es_AR.UTF-8 UTF-8 -#es_AR ISO-8859-1 -#es_BO.UTF-8 UTF-8 -#es_BO ISO-8859-1 -#es_CL.UTF-8 UTF-8 -#es_CL ISO-8859-1 -#es_CO.UTF-8 UTF-8 -#es_CO ISO-8859-1 -#es_CR.UTF-8 UTF-8 -#es_CR ISO-8859-1 -#es_CU UTF-8 -#es_DO.UTF-8 UTF-8 -#es_DO ISO-8859-1 -#es_EC.UTF-8 UTF-8 -#es_EC ISO-8859-1 -#es_ES.UTF-8 UTF-8 -#es_ES ISO-8859-1 -#es_ES@euro ISO-8859-15 -#es_GT.UTF-8 UTF-8 -#es_GT ISO-8859-1 -#es_HN.UTF-8 UTF-8 -#es_HN ISO-8859-1 -#es_MX.UTF-8 UTF-8 -#es_MX ISO-8859-1 -#es_NI.UTF-8 UTF-8 -#es_NI ISO-8859-1 -#es_PA.UTF-8 UTF-8 -#es_PA ISO-8859-1 -#es_PE.UTF-8 UTF-8 -#es_PE ISO-8859-1 -#es_PR.UTF-8 UTF-8 -#es_PR ISO-8859-1 -#es_PY.UTF-8 UTF-8 -#es_PY ISO-8859-1 -#es_SV.UTF-8 UTF-8 -#es_SV ISO-8859-1 -#es_US.UTF-8 UTF-8 -#es_US ISO-8859-1 -#es_UY.UTF-8 UTF-8 -#es_UY ISO-8859-1 -#es_VE.UTF-8 UTF-8 -#es_VE ISO-8859-1 -#et_EE.UTF-8 UTF-8 -#et_EE ISO-8859-1 -#et_EE.ISO-8859-15 ISO-8859-15 -#eu_ES.UTF-8 UTF-8 -#eu_ES ISO-8859-1 -#eu_ES@euro ISO-8859-15 -#fa_IR UTF-8 -#ff_SN UTF-8 -#fi_FI.UTF-8 UTF-8 -#fi_FI ISO-8859-1 -#fi_FI@euro ISO-8859-15 -#fil_PH UTF-8 -#fo_FO.UTF-8 UTF-8 -#fo_FO ISO-8859-1 -#fr_BE.UTF-8 UTF-8 -#fr_BE ISO-8859-1 -#fr_BE@euro ISO-8859-15 -#fr_CA.UTF-8 UTF-8 -#fr_CA ISO-8859-1 -#fr_CH.UTF-8 UTF-8 -#fr_CH ISO-8859-1 -#fr_FR.UTF-8 UTF-8 -#fr_FR ISO-8859-1 -#fr_FR@euro ISO-8859-15 -#fr_LU.UTF-8 UTF-8 -#fr_LU ISO-8859-1 -#fr_LU@euro ISO-8859-15 -#fur_IT UTF-8 -#fy_NL UTF-8 -#fy_DE UTF-8 -#ga_IE.UTF-8 UTF-8 -#ga_IE ISO-8859-1 -#ga_IE@euro ISO-8859-15 -#gd_GB.UTF-8 UTF-8 -#gd_GB ISO-8859-15 -#gez_ER UTF-8 -#gez_ER@abegede UTF-8 -#gez_ET UTF-8 -#gez_ET@abegede UTF-8 -#gl_ES.UTF-8 UTF-8 -#gl_ES ISO-8859-1 -#gl_ES@euro ISO-8859-15 -#gu_IN UTF-8 -#gv_GB.UTF-8 UTF-8 -#gv_GB ISO-8859-1 -#ha_NG UTF-8 -#hak_TW UTF-8 -#he_IL.UTF-8 UTF-8 -#he_IL ISO-8859-8 -#hi_IN UTF-8 -#hne_IN UTF-8 -#hr_HR.UTF-8 UTF-8 -#hr_HR ISO-8859-2 -#hsb_DE ISO-8859-2 -#hsb_DE.UTF-8 UTF-8 -#ht_HT UTF-8 -#hu_HU.UTF-8 UTF-8 -#hu_HU ISO-8859-2 -#hy_AM UTF-8 -#hy_AM.ARMSCII-8 ARMSCII-8 -#ia_FR UTF-8 -#id_ID.UTF-8 UTF-8 -#id_ID ISO-8859-1 -#ig_NG UTF-8 -#ik_CA UTF-8 -#is_IS.UTF-8 UTF-8 -#is_IS ISO-8859-1 -#it_CH.UTF-8 UTF-8 -#it_CH ISO-8859-1 -#it_IT.UTF-8 UTF-8 -#it_IT ISO-8859-1 -#it_IT@euro ISO-8859-15 -#iu_CA UTF-8 -#ja_JP.EUC-JP EUC-JP -#ja_JP.UTF-8 UTF-8 -#ka_GE.UTF-8 UTF-8 -#ka_GE GEORGIAN-PS -#kk_KZ.UTF-8 UTF-8 -#kk_KZ PT154 -#kl_GL.UTF-8 UTF-8 -#kl_GL ISO-8859-1 -#km_KH UTF-8 -#kn_IN UTF-8 -#ko_KR.EUC-KR EUC-KR -#ko_KR.UTF-8 UTF-8 -#kok_IN UTF-8 -#ks_IN UTF-8 -#ks_IN@devanagari UTF-8 -#ku_TR.UTF-8 UTF-8 -#ku_TR ISO-8859-9 -#kw_GB.UTF-8 UTF-8 -#kw_GB ISO-8859-1 -#ky_KG UTF-8 -#lb_LU UTF-8 -#lg_UG.UTF-8 UTF-8 -#lg_UG ISO-8859-10 -#li_BE UTF-8 -#li_NL UTF-8 -#lij_IT UTF-8 -#ln_CD UTF-8 -#lo_LA UTF-8 -#lt_LT.UTF-8 UTF-8 -#lt_LT ISO-8859-13 -#lv_LV.UTF-8 UTF-8 -#lv_LV ISO-8859-13 -#lzh_TW UTF-8 -#mag_IN UTF-8 -#mai_IN UTF-8 -#mg_MG.UTF-8 UTF-8 -#mg_MG ISO-8859-15 -#mhr_RU UTF-8 -#mi_NZ.UTF-8 UTF-8 -#mi_NZ ISO-8859-13 -#mk_MK.UTF-8 UTF-8 -#mk_MK ISO-8859-5 -#ml_IN UTF-8 -#mn_MN UTF-8 -#mni_IN UTF-8 -#mr_IN UTF-8 -#ms_MY.UTF-8 UTF-8 -#ms_MY ISO-8859-1 -#mt_MT.UTF-8 UTF-8 -#mt_MT ISO-8859-3 -#my_MM UTF-8 -#nan_TW UTF-8 -#nan_TW@latin UTF-8 -#nb_NO.UTF-8 UTF-8 -#nb_NO ISO-8859-1 -#nds_DE UTF-8 -#nds_NL UTF-8 -#ne_NP UTF-8 -#nhn_MX UTF-8 -#niu_NU UTF-8 -#niu_NZ UTF-8 -#nl_AW UTF-8 -#nl_BE.UTF-8 UTF-8 -#nl_BE ISO-8859-1 -#nl_BE@euro ISO-8859-15 -#nl_NL.UTF-8 UTF-8 -#nl_NL ISO-8859-1 -#nl_NL@euro ISO-8859-15 -#nn_NO.UTF-8 UTF-8 -#nn_NO ISO-8859-1 -#nr_ZA UTF-8 -#nso_ZA UTF-8 -#oc_FR.UTF-8 UTF-8 -#oc_FR ISO-8859-1 -#om_ET UTF-8 -#om_KE.UTF-8 UTF-8 -#om_KE ISO-8859-1 -#or_IN UTF-8 -#os_RU UTF-8 -#pa_IN UTF-8 -#pa_PK UTF-8 -#pap_AW UTF-8 -#pap_CW UTF-8 -#pl_PL.UTF-8 UTF-8 -#pl_PL ISO-8859-2 -#ps_AF UTF-8 -#pt_BR.UTF-8 UTF-8 -#pt_BR ISO-8859-1 -#pt_PT.UTF-8 UTF-8 -#pt_PT ISO-8859-1 -#pt_PT@euro ISO-8859-15 -#quz_PE UTF-8 -#raj_IN UTF-8 -#ro_RO.UTF-8 UTF-8 -#ro_RO ISO-8859-2 -#ru_RU.KOI8-R KOI8-R -#ru_RU.UTF-8 UTF-8 -#ru_RU ISO-8859-5 -#ru_UA.UTF-8 UTF-8 -#ru_UA KOI8-U -#rw_RW UTF-8 -#sa_IN UTF-8 -#sat_IN UTF-8 -#sc_IT UTF-8 -#sd_IN UTF-8 -#sd_IN@devanagari UTF-8 -#se_NO UTF-8 -#sgs_LT UTF-8 -#shs_CA UTF-8 -#si_LK UTF-8 -#sid_ET UTF-8 -#sk_SK.UTF-8 UTF-8 -#sk_SK ISO-8859-2 -#sl_SI.UTF-8 UTF-8 -#sl_SI ISO-8859-2 -#so_DJ.UTF-8 UTF-8 -#so_DJ ISO-8859-1 -#so_ET UTF-8 -#so_KE.UTF-8 UTF-8 -#so_KE ISO-8859-1 -#so_SO.UTF-8 UTF-8 -#so_SO ISO-8859-1 -#sq_AL.UTF-8 UTF-8 -#sq_AL ISO-8859-1 -#sq_MK UTF-8 -#sr_ME UTF-8 -#sr_RS UTF-8 -#sr_RS@latin UTF-8 -#ss_ZA UTF-8 -#st_ZA.UTF-8 UTF-8 -#st_ZA ISO-8859-1 -#sv_FI.UTF-8 UTF-8 -#sv_FI ISO-8859-1 -#sv_FI@euro ISO-8859-15 -#sv_SE.UTF-8 UTF-8 -#sv_SE ISO-8859-1 -#sw_KE UTF-8 -#sw_TZ UTF-8 -#szl_PL UTF-8 -#ta_IN UTF-8 -#ta_LK UTF-8 -#tcy_IN.UTF-8 UTF-8 -#te_IN UTF-8 -#tg_TJ.UTF-8 UTF-8 -#tg_TJ KOI8-T -#th_TH.UTF-8 UTF-8 -#th_TH TIS-620 -#the_NP UTF-8 -#ti_ER UTF-8 -#ti_ET UTF-8 -#tig_ER UTF-8 -#tk_TM UTF-8 -#tl_PH.UTF-8 UTF-8 -#tl_PH ISO-8859-1 -#tn_ZA UTF-8 -#tr_CY.UTF-8 UTF-8 -#tr_CY ISO-8859-9 -#tr_TR.UTF-8 UTF-8 -#tr_TR ISO-8859-9 -#ts_ZA UTF-8 -#tt_RU UTF-8 -#tt_RU@iqtelif UTF-8 -#ug_CN UTF-8 -#uk_UA.UTF-8 UTF-8 -#uk_UA KOI8-U -#unm_US UTF-8 -#ur_IN UTF-8 -#ur_PK UTF-8 -#uz_UZ.UTF-8 UTF-8 -#uz_UZ ISO-8859-1 -#uz_UZ@cyrillic UTF-8 -#ve_ZA UTF-8 -#vi_VN UTF-8 -#wa_BE ISO-8859-1 -#wa_BE@euro ISO-8859-15 -#wa_BE.UTF-8 UTF-8 -#wae_CH UTF-8 -#wal_ET UTF-8 -#wo_SN UTF-8 -#xh_ZA.UTF-8 UTF-8 -#xh_ZA ISO-8859-1 -#yi_US.UTF-8 UTF-8 -#yi_US CP1255 -#yo_NG UTF-8 -#yue_HK UTF-8 -#zh_CN.GB18030 GB18030 -#zh_CN.GBK GBK -#zh_CN.UTF-8 UTF-8 -#zh_CN GB2312 -#zh_HK.UTF-8 UTF-8 -#zh_HK BIG5-HKSCS -#zh_SG.UTF-8 UTF-8 -#zh_SG.GBK GBK -#zh_SG GB2312 -#zh_TW.EUC-TW EUC-TW -#zh_TW.UTF-8 UTF-8 -#zh_TW BIG5 -#zu_ZA.UTF-8 UTF-8 -#zu_ZA ISO-8859-1 diff --git a/extra/pre-build.d/etc/locale.nopurge b/extra/pre-build.d/etc/locale.nopurge deleted file mode 100644 index e2a6a9f..0000000 --- a/extra/pre-build.d/etc/locale.nopurge +++ /dev/null @@ -1,56 +0,0 @@ -#################################################### -# This is the configuration file for localepurge(8). -#################################################### -# Comment this to enable localepurge. -# NO COMMENT IT IF YOU ARE NOT SURE WHAT ARE YOU DOING -# THIS APP DO NOT ASK FOR CONFIRMATION - -#NEEDSCONFIGFIRST - -#################################################### -# Uncommenting this string enables removal of localized -# man pages based on the configuration information for -# locale files defined below: - -MANDELETE - -#################################################### -# Uncommenting this string causes localepurge to simply delete -# locales which have newly appeared on the system without -# bothering you about it: - -#DONTBOTHERNEWLOCALE - -##################################################### -# Commenting out this string enables faster but less -# accurate calculation of freed disk space: - -#QUICKNDIRTYCALC - -#################################################### -# Uncommenting this string enables display of freed disk -# space if localepurge has purged any superfluous data: - -SHOWFREEDSPACE - -##################################################### -# Commenting out this string disables verbose output: - -#VERBOSE - -##################################################### -# You like Colors? - -NOCOLOR - -##################################################### -# You can use the -v -d -nc options in command line. - -##################################################### -# Following locales won't be deleted from this system -# for example: -en -en_GB -en_GB.UTF-8 -en_US -en_US.UTF-8 diff --git a/extra/pre-build.d/etc/mkinitcpio.conf b/extra/pre-build.d/etc/mkinitcpio.conf deleted file mode 100644 index e6e2c1d..0000000 --- a/extra/pre-build.d/etc/mkinitcpio.conf +++ /dev/null @@ -1,69 +0,0 @@ -# MODULES -# The following modules are loaded before any boot hooks are -# run. Advanced users may wish to specify all system modules -# in this array. For instance: -# MODULES="piix ide_disk reiserfs" -MODULES="overlay ata_generic ata_piix loop nls_cp437 ext4 raid456 vfat netconsole isofs" - -# BINARIES -# This setting includes any additional binaries a given user may -# wish into the CPIO image. This is run last, so it may be used to -# override the actual binaries included by a given hook -# BINARIES are dependency parsed, so you may safely ignore libraries -BINARIES="/usr/bin/memdiskfind" - -# FILES -# This setting is similar to BINARIES above, however, files are added -# as-is and are not parsed in any way. This is useful for config files. -FILES="/usr/bin/pkill" - -# HOOKS -# This is the most important setting in this file. The HOOKS control the -# modules and scripts added to the image, and what happens at boot time. -# Order is important, and it is recommended that you do not change the -# order in which HOOKS are added. Run 'mkinitcpio -H ' for -# help on a given hook. -# 'base' is _required_ unless you know precisely what you are doing. -# 'udev' is _required_ in order to automatically load modules -# 'filesystems' is _required_ unless you specify your fs modules in MODULES -# Examples: -## This setup specifies all modules in the MODULES setting above. -## No raid, lvm2, or encrypted root is needed. -# HOOKS="base" -# -## This setup will autodetect all modules for your system and should -## work as a sane default -# HOOKS="base udev autodetect block filesystems" -# -## This setup will generate a 'full' image which supports most systems. -## No autodetection is done. -# HOOKS="base udev block filesystems" -# -## This setup assembles a pata mdadm array with an encrypted root FS. -## Note: See 'mkinitcpio -H mdadm' for more information on raid devices. -# HOOKS="base udev block mdadm encrypt filesystems" -# -## This setup loads an lvm2 volume group on a usb device. -# HOOKS="base udev block lvm2 filesystems" -# -## NOTE: If you have /usr on a separate partition, you MUST include the -# usr, fsck and shutdown hooks. -#HOOKS="base udev autodetect modconf block filesystems keyboard fsck" -#HOOKS="base udev memdisk archiso_shutdown archiso modconf net archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard livecd" -#HOOKS="base udev autodetect memdisk systemd archiso_shutdown archiso modconf net ssh archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard livecd" -#HOOKS="base udev memdisk autodetect archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms modconf net ssh block pcmcia filesystems keyboard livecd" -HOOKS="base udev memdisk autodetect archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms modconf block pcmcia filesystems keyboard livecd" - -# COMPRESSION -# Use this to compress the initramfs image. By default, gzip compression -# is used. Use 'cat' to create an uncompressed image. -#COMPRESSION="gzip" -#COMPRESSION="bzip2" -#COMPRESSION="lzma" -COMPRESSION="xz" -#COMPRESSION="lzop" -#COMPRESSION="lz4" - -# COMPRESSION_OPTIONS -# Additional options for the compressor -COMPRESSION_OPTIONS="-9" diff --git a/extra/pre-build.d/etc/mkinitcpio.d/linux.preset b/extra/pre-build.d/etc/mkinitcpio.d/linux.preset deleted file mode 100644 index 41cb2a8..0000000 --- a/extra/pre-build.d/etc/mkinitcpio.d/linux.preset +++ /dev/null @@ -1,15 +0,0 @@ -# mkinitcpio preset file for the 'linux' package - -ALL_config="/etc/mkinitcpio.conf" -ALL_kver="/boot/vmlinuz-linux" - -#PRESETS=('default' 'fallback') -PRESETS=('default') - -#default_config="/etc/mkinitcpio.conf" -default_image="/boot/initramfs-linux.img" -#default_options="" - -#fallback_config="/etc/mkinitcpio.conf" -#fallback_image="/boot/initramfs-linux-fallback.img" -#fallback_options="-S autodetect" diff --git a/extra/pre-build.d/etc/motd b/extra/pre-build.d/etc/motd deleted file mode 100644 index 3585105..0000000 --- a/extra/pre-build.d/etc/motd +++ /dev/null @@ -1 +0,0 @@ -((Generated by BDisk. https://bdisk.square-r00t.net/)) diff --git a/extra/pre-build.d/etc/os-release b/extra/pre-build.d/etc/os-release deleted file mode 100644 index 30e5cf3..0000000 --- a/extra/pre-build.d/etc/os-release +++ /dev/null @@ -1,7 +0,0 @@ -NAME="Arch Linux" -ID=arch -PRETTY_NAME="Arch Linux" -ANSI_COLOR="0;36" -HOME_URL="https://www.archlinux.org/" -SUPPORT_URL="https://bbs.archlinux.org/" -BUG_REPORT_URL="https://bugs.archlinux.org/" diff --git a/extra/pre-build.d/etc/pacman.d/hooks/archiso.hook b/extra/pre-build.d/etc/pacman.d/hooks/archiso.hook deleted file mode 100644 index ee10286..0000000 --- a/extra/pre-build.d/etc/pacman.d/hooks/archiso.hook +++ /dev/null @@ -1,10 +0,0 @@ -[Trigger] -Type = File -Operation = Install -Operation = Upgrade -Target = usr/lib/initcpio/hooks/archiso - -[Action] -Description = Modifying archiso usable space... -When = PostTransaction -Exec = /usr/bin/sed -i -e 's/"size=${cow_spacesize}",//g' -e 's@^[[:space:]]*if\ !\ cp\ "${img}"\ "/run/archiso/copytoram/${img_fullname}"\ ;\ then@if ! pv -pterabT "${img}" > "/run/archiso/copytoram/${img_fullname}" ; then@g' /usr/lib/initcpio/hooks/archiso diff --git a/extra/pre-build.d/etc/pacman.d/mirrorlist b/extra/pre-build.d/etc/pacman.d/mirrorlist deleted file mode 100644 index 6365056..0000000 --- a/extra/pre-build.d/etc/pacman.d/mirrorlist +++ /dev/null @@ -1,6 +0,0 @@ -Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch -Server = http://mirror.jmu.edu/pub/archlinux/$repo/os/$arch -Server = http://mirror.metrocast.net/archlinux/$repo/os/$arch -Server = http://mirror.vtti.vt.edu/archlinux/$repo/os/$arch -Server = http://arch.mirrors.pair.com/$repo/os/$arch -Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch diff --git a/extra/pre-build.d/etc/resolvconf.conf b/extra/pre-build.d/etc/resolvconf.conf deleted file mode 100644 index e133936..0000000 --- a/extra/pre-build.d/etc/resolvconf.conf +++ /dev/null @@ -1,17 +0,0 @@ -# Configuration for resolvconf(8) -# See resolvconf.conf(5) for details - - -resolv_conf=/etc/resolv.conf -# If you run a local name server, you should uncomment the below line and -# configure your subscribers configuration files below. -#name_servers='2620:0:ccc::2 2620:0:ccd::2 4.2.2.1 4.2.2.2 127.0.0.1 ::1 ' -name_servers='4.2.2.1 4.2.2.2 208.67.220.220 2620:0:ccc::2 2072620:0:ccd::2 208.67.222.222 208.67.222.220 208.67.220.222' - -# Write out dnsmasq extended configuration and resolv files -#dnsmasq_conf=/etc/dnsmasq.d/openresolv.conf -#dnsmasq_resolv=/etc/dnsmasq.resolv.conf - - -domain=square-r00t.net -search_domains=square-r00t.net diff --git a/extra/pre-build.d/etc/systemd/scripts/livecd.fix.sh b/extra/pre-build.d/etc/systemd/scripts/livecd.fix.sh deleted file mode 100755 index b3871cc..0000000 --- a/extra/pre-build.d/etc/systemd/scripts/livecd.fix.sh +++ /dev/null @@ -1,72 +0,0 @@ -#/bin/sh - - -locale-gen - -#chmod 4755 /opt/google/chrome-beta/chrome-sandbox -chmod 4755 /usr/bin/sudo - -# Fix user perms/ownerships, etc. -chown -R root:root /root -for i in $(grep '/home/' /etc/passwd | cut -f1 -d":"); -do - chown -R ${i}:${i} /home/${i} -done - -chmod 700 /root/.ssh -chmod 600 /root/.ssh/authorized_keys - -for i in $(find /home -type d -name "*/.ssh"); -do - chmod 700 ${i} - chmod 600 ${i}/authorized_keys -done - -function fuck_you_gimme_net() { -IFACE=$(ip -o link | awk '{print $2}' | egrep -E '^((en|wl)p?|em)' | sed -e 's/:$//g' | head -n1) -for i in ${IFACE}; -do - - LINK_STATE=$(ethtool ${i} | egrep '^[[:space:]]*Link' | sed -re 's/^[[:space:]]*Link detected:(.*)/\1/g') - DEV=$(echo ${i} | sed -re 's/^([A-Za-z]{1}).*/\1/g' | tr '[[:upper:]]' '[[:lower:]]' ) - if [ "${DEV}" == "e" ]; - then - if [ "${LINK_STATE}" != "no" ]; - then - DEV='ethernet-dhcp' - else - # skip disconnected ethernet - continue - fi - else - DEV='wireless-open' - fi - - ip link set dev ${i} down - cp -a /etc/netctl/examples/${DEV} /etc/netctl/${i} - sed -i -re "s/^([[:space:]]*Interface[[:space:]]*=).*/\1${i}/g" /etc/netctl/${i} - if [ "${DEV}" == "wireless-open" ]; - then - ip link set dev ${i} up && \ - ESSID=$(iwlist ${i} scanning | egrep -A5 -B5 '^[[:space:]]*Encryption key:off' | egrep '^[[:space:]]*ESSID:' | sed -re 's/^[[:space:]]*ESSID:(.*)/\1/g') - sed -i -re "s/^([[:space:]]*ESSID[[:space:]]*=).*/\1${ESSID}/g" /etc/netctl/${i} - ip link set ${i} down - fi - netctl restart ${i} > /dev/null 2>&1 - #cat /etc/resolvconf.conf.failover > /etc/resolvconf.conf - #resolvconf -u -done -} - -ping -c1 google.com | grep -q '1 received' -if [[ "${?}" != "0" ]]; -then - fuck_you_gimme_net - systemctl restart openvpn@* -fi - -# And lastly, do we need to set custom DNS servers? -host -s -W1 bdisk.square-r00t.net | egrep -q '^bdisk\.square-r00t\.net\ has\ address' -if [[ "${?}" != "0" ]]; -then - resolvconf -u -fi diff --git a/extra/pre-build.d/etc/systemd/scripts/pacmandb.sh b/extra/pre-build.d/etc/systemd/scripts/pacmandb.sh deleted file mode 100755 index 7dea98f..0000000 --- a/extra/pre-build.d/etc/systemd/scripts/pacmandb.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -for i in pacman apacman; -do - if [ -f /usr/local/${i}/${i}.db.tar.xz ]; - then - /usr/bin/tar -Jxf /usr/local/${i}/${i}.db.tar.xz -C /var/lib/${i}/ - fi -done diff --git a/extra/pre-build.d/etc/systemd/system/livecdfix.service b/extra/pre-build.d/etc/systemd/system/livecdfix.service deleted file mode 100644 index d316dd5..0000000 --- a/extra/pre-build.d/etc/systemd/system/livecdfix.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Various LiveCD fixes -After=pacmandb.service - -[Service] -Type=oneshot -ExecStart=/bin/bash /etc/systemd/scripts/livecd.fix.sh -RemainAfterExit=yes - -[Install] -WantedBy=multi-user.target diff --git a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager-dispatcher.service b/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager-dispatcher.service deleted file mode 120000 index dc1dc0c..0000000 --- a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager-dispatcher.service +++ /dev/null @@ -1 +0,0 @@ -/dev/null \ No newline at end of file diff --git a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager.service b/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager.service deleted file mode 120000 index dc1dc0c..0000000 --- a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/NetworkManager.service +++ /dev/null @@ -1 +0,0 @@ -/dev/null \ No newline at end of file diff --git a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/livecdfix.service b/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/livecdfix.service deleted file mode 120000 index 60d5b4a..0000000 --- a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/livecdfix.service +++ /dev/null @@ -1 +0,0 @@ -/etc/systemd/system/livecdfix.service \ No newline at end of file diff --git a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/pacmandb.service b/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/pacmandb.service deleted file mode 120000 index 16e5cce..0000000 --- a/extra/pre-build.d/etc/systemd/system/multi-user.target.wants/pacmandb.service +++ /dev/null @@ -1 +0,0 @@ -/etc/systemd/system/pacmandb.service \ No newline at end of file diff --git a/extra/pre-build.d/etc/systemd/system/pacmandb.service b/extra/pre-build.d/etc/systemd/system/pacmandb.service deleted file mode 100644 index f5c6162..0000000 --- a/extra/pre-build.d/etc/systemd/system/pacmandb.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Restoring Installed Packages DB - -[Service] -Type=oneshot -#ExecStart=/usr/bin/tar -Jxf /usr/local/pacman.db.tar.xz -C /var/lib/pacman/ -ExecStart=/usr/bin/bash /etc/systemd/scripts/pacmandb.sh -RemainAfterExit=yes - -[Install] -WantedBy=multi-user.target diff --git a/extra/pre-build.d/i686/etc/pacman.conf b/extra/pre-build.d/i686/etc/pacman.conf deleted file mode 100644 index 7cd3a6b..0000000 --- a/extra/pre-build.d/i686/etc/pacman.conf +++ /dev/null @@ -1,92 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -#HookDir = /etc/pacman.d/hooks/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -C - -f %u > %o -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -#UseDelta = 0.7 -Architecture = i686 - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -UseSyslog -Color -TotalDownload -CheckSpace -VerbosePkgLists -#ILoveCandy - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[community-testing] -#Include = /etc/pacman.d/mirrorlist - -[community] -Include = /etc/pacman.d/mirrorlist - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs diff --git a/extra/pre-build.d/i686/root/iso.pkgs.arch b/extra/pre-build.d/i686/root/iso.pkgs.arch deleted file mode 100644 index ce1d5d0..0000000 --- a/extra/pre-build.d/i686/root/iso.pkgs.arch +++ /dev/null @@ -1,2 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. diff --git a/extra/pre-build.d/i686/root/packages.arch b/extra/pre-build.d/i686/root/packages.arch deleted file mode 100644 index ce1d5d0..0000000 --- a/extra/pre-build.d/i686/root/packages.arch +++ /dev/null @@ -1,2 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. diff --git a/extra/pre-build.d/i686/root/pre-build.arch.sh b/extra/pre-build.d/i686/root/pre-build.arch.sh deleted file mode 100755 index b0a39d9..0000000 --- a/extra/pre-build.d/i686/root/pre-build.arch.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -# Put any arch-specific tasks here. They will be run after /root/pre-build.sh. diff --git a/extra/pre-build.d/root/apacman-3.1-1-any.pkg.tar.xz b/extra/pre-build.d/root/apacman-3.1-1-any.pkg.tar.xz deleted file mode 100644 index 00083a8f2d347feb664f6e2da31177c03e2e7f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55592 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%0AK#|$@0%7g zEKdk#IAMEcxy1#q!>R3t6F7>e90^@0c|5C-?^}HI4As0nYgb<_eQxsV-Oien!v_UZ zj;xl|zW1N2;Fwi@>>7?wa>)*_Lwmmo@7f>yr=&NcsN&3R>YBU1J-;Da#kVKH)~6@)`w8ttan?tt-pm#?kG2y2t$wpC zD(o5C+zY#{MYh~O>~gvF+2P{Oi6v`irpW}>>V@yAmzU`~tIjxW2Y2w!O;MHmWxii$ z@avm0X_XdH$aEoYm!ZdHu78Jz9Eu*9qUhVJB4UH*x*4wWp3V*gW@t zAwU1#zdLq03a*Wu|CLO>FkDdneN}wb_q0XRc@{*^`@PFa|IlLnGin*1{w=CbUU+El zp><9ZYt3W&XHT=tZ91ASUUqEF?|F$~rkg%&nSb3-Dpr1d(xH8M$#dT96*;)#)X$i0 z$MlVkFv?9oVD(9H&C%Wiw|-chYA=-Hn`!ka)~xeQ=gHM#8KukCnhG9%I#2uQl=oa` zx49YUTV3J!BC|ihykvgIMFw%Dubm1l?f&dMJc~-&-YGA%+tWL_Yhl84`>D4gzb|e7 zH!G_{Q}>iCZ}21Oh2*tFAAszezVeiSw{z42LO z?I~+5O@9#wC#L1|-mR_rJg4=kNZ!VQBoTsq#CL)~eU9uDHJObMc+CA@e^!E?>uxetqx9wnv}N_ErAX z_AE6Qn;j=`GS_U;MT1lFI>)jK7km?T71i3$T|8HE^W&~}t#LtqUsIO)9WV=ct(UvK z^pVTVDeuExyxlBtdi@ho^>u6+t9mbItZVwaw9Z36x1?0+$of#@xl0P}{r}a#&Q@gG z++APT>f@t&WV0^w)+;udkr#hAeQ9A}V3_!5&J?)?3#KwKHg95Xn7}Kxn(geyBk8}H L7#J8BSR$hU3o(rI diff --git a/extra/pre-build.d/root/iso.pkgs.both b/extra/pre-build.d/root/iso.pkgs.both deleted file mode 100644 index cbefa8c..0000000 --- a/extra/pre-build.d/root/iso.pkgs.both +++ /dev/null @@ -1,46 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. -arch-install-scripts -archiso -bzip2 -coreutils -customizepkg-scripting -cronie -dhclient -dhcp -dhcpcd -dosfstools -dropbear -efibootmgr -efitools -efivar -ethtool -file -findutils -iproute2 -iputils -libisoburn -localepurge -lz4 -lzo -lzop -mkinitcpio-nbd -mkinitcpio-nfs-utils -mkinitcpio-utils -nbd -ms-sys -mtools -net-tools -netctl -networkmanager -openssh -openvpn -pv -rsync -sed -shorewall -squashfs-tools -sudo -sysfsutils -syslinux -traceroute diff --git a/extra/pre-build.d/root/packages.both b/extra/pre-build.d/root/packages.both deleted file mode 100644 index 3c28248..0000000 --- a/extra/pre-build.d/root/packages.both +++ /dev/null @@ -1,350 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. -# We need to install all X drivers. -abs -acpi -#acpidump -#afflib -aircrack-ng -apr -apr-util -arj -asciidoc -atop -autopsy -autossh -backuppc -## TODO: grab all the bacula packages in here -#bacula -beep -bin86 -bind-tools -binutils -bluez-utils -## TODO: ugh. apacman has a new "regex mode"... that you can't disable. https://github.com/oshazard/apacman/issues/79 -#bonnie++ -boxbackup-client -boxbackup-server -bozocrack-git -bridge-utils -burp-backup-git -btrfs-progs -cabextract -cdrtools -cdw -cfv -chapcrack-git -chntpw -cifs-utils -ckermit -clamav -clonezilla -cmospwd -colordiff -cowpatty -cpio -cpuburn -cpupower -crackpkcs12 -cryptcat -cryptsetup -csync2 -customizepkg-scripting -dar -dcfldd -ddrescue -dd_rescue -dd_rhelp -debianutils -debootstrap -## giving a weird dependency issue -#dialog -diffutils -djohn -dmidecode -dnssec-anchors -dnstracer -## replaced by bind-tools, https://www.archlinux.org/packages/extra/x86_64/bind-tools/ -#dnsutils -dos2unix -dropbear -dstat -dump -dumpet -duplicity -dvd+rw-tools -e2fsprogs -easy-rsa -ecryptfs-utils -ed -elfutils -#elilo-efi -elinks -etc-update -ethtool -exfat-utils -ext3grep -extundelete -f2fs-tools -fang -fbset -fcgi -fcgiwrap -fcrackzip -fdupes -file -findmyhash -findutils -firefox -flac -flashrom -foremost -fsarchiver -fuse -gd -git -gnu-efi-libs -gnu-netcat -gpart -gparted -gperftools -gpm -gptfdisk -gst-libav -gst-plugins-ugly -hashcat -hashdeep -haveged -hddtemp -hdparm -hexcurse -hexedit -hfsprogs -hfsutils -htop -httping -hwdetect -hwinfo -hydra -idnkit -ifenslave -iftop -inetutils -iotop -iozone -ipcalc -iperf -iperf3 -ipsec-tools -iptraf-ng -ipython -irssi -iso-codes -isomaster -jasper -jfsutils -#john-mpi -john -keyutils -kismet-allplugins -lftp -links -## requires a /dev/input, which apparently isn't included in the chroots -#logkeys-git -lm_sensors -lrzsz -lshw -## giving intermittent errors when trying to fetch source -#lsiutil -lsof -lsscsi -## apacman currently doesn't like package groups, so... -#lxde -gpicview -lxappearance -lxappearance-obconf -lxde-common -lxde-icon-theme -lxdm -lxinput -lxlauncher -lxmusic -lxpanel -lxrandr -lxsession -lxtask -lxterminal -openbox -pcmanfm -# end lxde -lynx -#lzip -macchanger -## no longer maintained, upstream down -#magicrescue -mbr -mbuffer -mcelog -mdadm -mdcrack -## superseded by storcli -#megaraid-cli -memtester -mfoc -minicom -## mindi-busybox fails to build 09.23.2016 -#mondo -mtd-utils -mtr -mtree-git -multipath-tools -myrescue -nbd -ncftp -ncompress -ncrack -net-snmp -netselect -nettle -networkmanager-pptp -nginx-mainline -ngrep -nmap -nmon -ntfs-3g -ntfsfixboot -## broken since they moved to github(?) -#nwipe -nwipe-git -obnam -open-iscsi -openipmi -ophcrack -os-prober -p7zip -pack -par2cmdline -partclone -partclone-utils -parted -partimage -pax-utils -pciutils -pcmciautils -pdfcrack -perf -php -php-fpm -php-gd -php-mcrypt -phrasendrescher -pigz -pkgfile -pkgtools -ppp -pptpclient -procinfo-ng -procps-ng -progsreiserfs -psmisc -pwgen -pixz -pyrit -python2-gnuplot -python2-pyx -rarcrack -rcracki_mt -rdiff-backup -read-edid -reaver-wps-fork-t6x-git -rename -rfkill -rp-pppoe -rpcbind -rpmextract -rp-pppoe -rsnapshot -rygel -safecopy -samba -scalpel-git -scapy -screen -scrounge-ntfs -scrub -scsiadd -sdparm -setserial -sg3_utils -sharutils -sipcalc -sipcrack -smartmontools -smbclient -s-nail -socat -## do people even USE tape backups anymore? -#star -storcli -strace -stress -sucrack -symlinks -sysstat -systemd-sysvcompat -tcpdump -tcpslice -tcptraceroute -testdisk -tftp-hpa -thin-provisioning-tools -thttpd -tmon -tmux -tre -tree -truecrack-git -truecrypt -tor -udftools -#udpcast -unace -unison -unrar -unshield -unzip -usb_modeswitch -usbip -usbutils -vim-a -vim-bufexplorer -vim-indent-object -vim-minibufexpl -vim-nerdtree -vim-syntastic -vim-workspace -vlc -vncrack -vnstat -vpnc -weplab -## currently depends on dialog, which is broke as shit -#whdd -whois -wifite-mod-pixiewps-git -wipe -wireshark-cli -wpscrack -wput -x11vnc -xfburn -xfsdump -xfsprogs -xmlto -xorg -xorg-drivers -xorg-xinit -xterm -zerofree -zip -zsh diff --git a/extra/pre-build.d/root/packages.both.FULL b/extra/pre-build.d/root/packages.both.FULL deleted file mode 100644 index 3c28248..0000000 --- a/extra/pre-build.d/root/packages.both.FULL +++ /dev/null @@ -1,350 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. -# We need to install all X drivers. -abs -acpi -#acpidump -#afflib -aircrack-ng -apr -apr-util -arj -asciidoc -atop -autopsy -autossh -backuppc -## TODO: grab all the bacula packages in here -#bacula -beep -bin86 -bind-tools -binutils -bluez-utils -## TODO: ugh. apacman has a new "regex mode"... that you can't disable. https://github.com/oshazard/apacman/issues/79 -#bonnie++ -boxbackup-client -boxbackup-server -bozocrack-git -bridge-utils -burp-backup-git -btrfs-progs -cabextract -cdrtools -cdw -cfv -chapcrack-git -chntpw -cifs-utils -ckermit -clamav -clonezilla -cmospwd -colordiff -cowpatty -cpio -cpuburn -cpupower -crackpkcs12 -cryptcat -cryptsetup -csync2 -customizepkg-scripting -dar -dcfldd -ddrescue -dd_rescue -dd_rhelp -debianutils -debootstrap -## giving a weird dependency issue -#dialog -diffutils -djohn -dmidecode -dnssec-anchors -dnstracer -## replaced by bind-tools, https://www.archlinux.org/packages/extra/x86_64/bind-tools/ -#dnsutils -dos2unix -dropbear -dstat -dump -dumpet -duplicity -dvd+rw-tools -e2fsprogs -easy-rsa -ecryptfs-utils -ed -elfutils -#elilo-efi -elinks -etc-update -ethtool -exfat-utils -ext3grep -extundelete -f2fs-tools -fang -fbset -fcgi -fcgiwrap -fcrackzip -fdupes -file -findmyhash -findutils -firefox -flac -flashrom -foremost -fsarchiver -fuse -gd -git -gnu-efi-libs -gnu-netcat -gpart -gparted -gperftools -gpm -gptfdisk -gst-libav -gst-plugins-ugly -hashcat -hashdeep -haveged -hddtemp -hdparm -hexcurse -hexedit -hfsprogs -hfsutils -htop -httping -hwdetect -hwinfo -hydra -idnkit -ifenslave -iftop -inetutils -iotop -iozone -ipcalc -iperf -iperf3 -ipsec-tools -iptraf-ng -ipython -irssi -iso-codes -isomaster -jasper -jfsutils -#john-mpi -john -keyutils -kismet-allplugins -lftp -links -## requires a /dev/input, which apparently isn't included in the chroots -#logkeys-git -lm_sensors -lrzsz -lshw -## giving intermittent errors when trying to fetch source -#lsiutil -lsof -lsscsi -## apacman currently doesn't like package groups, so... -#lxde -gpicview -lxappearance -lxappearance-obconf -lxde-common -lxde-icon-theme -lxdm -lxinput -lxlauncher -lxmusic -lxpanel -lxrandr -lxsession -lxtask -lxterminal -openbox -pcmanfm -# end lxde -lynx -#lzip -macchanger -## no longer maintained, upstream down -#magicrescue -mbr -mbuffer -mcelog -mdadm -mdcrack -## superseded by storcli -#megaraid-cli -memtester -mfoc -minicom -## mindi-busybox fails to build 09.23.2016 -#mondo -mtd-utils -mtr -mtree-git -multipath-tools -myrescue -nbd -ncftp -ncompress -ncrack -net-snmp -netselect -nettle -networkmanager-pptp -nginx-mainline -ngrep -nmap -nmon -ntfs-3g -ntfsfixboot -## broken since they moved to github(?) -#nwipe -nwipe-git -obnam -open-iscsi -openipmi -ophcrack -os-prober -p7zip -pack -par2cmdline -partclone -partclone-utils -parted -partimage -pax-utils -pciutils -pcmciautils -pdfcrack -perf -php -php-fpm -php-gd -php-mcrypt -phrasendrescher -pigz -pkgfile -pkgtools -ppp -pptpclient -procinfo-ng -procps-ng -progsreiserfs -psmisc -pwgen -pixz -pyrit -python2-gnuplot -python2-pyx -rarcrack -rcracki_mt -rdiff-backup -read-edid -reaver-wps-fork-t6x-git -rename -rfkill -rp-pppoe -rpcbind -rpmextract -rp-pppoe -rsnapshot -rygel -safecopy -samba -scalpel-git -scapy -screen -scrounge-ntfs -scrub -scsiadd -sdparm -setserial -sg3_utils -sharutils -sipcalc -sipcrack -smartmontools -smbclient -s-nail -socat -## do people even USE tape backups anymore? -#star -storcli -strace -stress -sucrack -symlinks -sysstat -systemd-sysvcompat -tcpdump -tcpslice -tcptraceroute -testdisk -tftp-hpa -thin-provisioning-tools -thttpd -tmon -tmux -tre -tree -truecrack-git -truecrypt -tor -udftools -#udpcast -unace -unison -unrar -unshield -unzip -usb_modeswitch -usbip -usbutils -vim-a -vim-bufexplorer -vim-indent-object -vim-minibufexpl -vim-nerdtree -vim-syntastic -vim-workspace -vlc -vncrack -vnstat -vpnc -weplab -## currently depends on dialog, which is broke as shit -#whdd -whois -wifite-mod-pixiewps-git -wipe -wireshark-cli -wpscrack -wput -x11vnc -xfburn -xfsdump -xfsprogs -xmlto -xorg -xorg-drivers -xorg-xinit -xterm -zerofree -zip -zsh diff --git a/extra/pre-build.d/root/packages.both.SMALL b/extra/pre-build.d/root/packages.both.SMALL deleted file mode 100644 index bd9c062..0000000 --- a/extra/pre-build.d/root/packages.both.SMALL +++ /dev/null @@ -1,4 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. -# We need to install all X drivers. -mtree-git diff --git a/extra/pre-build.d/root/pre-build.sh b/extra/pre-build.d/root/pre-build.sh deleted file mode 100755 index 5c0cbe7..0000000 --- a/extra/pre-build.d/root/pre-build.sh +++ /dev/null @@ -1,212 +0,0 @@ -#!/bin/bash - -# needed so we override whatever's set in python -# alternatively, we can just mkdir -p $GNUPGHOME -#export GNUPGHOME=/root/.gnupg -unset GNUPGHOME -mkdir -p /var/empty/.gnupg - - -# set up a shell env -source /etc/profile - -# Import settings. -source /root/VARS.txt - -# Logging! -exec 3>&1 4>&2 -trap 'exec 2>&4 1>&3' 0 1 2 3 -exec 1>/var/log/chroot_install.log 2>&1 - -# we need this fix before anything. -dirmngr /root/pubkey.gpg - -cleanPacorigs() -{ - for x in $(find /etc/ -type f -iname "*.pacorig"); - do - mv -f ${x} ${x%%.pacorig} - done -} -getPkgList() -{ - if [ -f "${1}" ]; - then - pkgfile=$(cat ${1}) - echo "${pkgfile}" | \ - sed -r -e '/^[[:space:]]*(#|$)/d' \ - -e 's/[[:space:]]*#.*$//g' | \ - tr '\n' ' ' | \ - sed -re 's/([+\_])/\\\1/g' - fi -} -# NetworkManager is a scourge upon the earth that must be purged and cleansed. -ln -s /dev/null /etc/systemd/system/NetworkManager.service -ln -s /dev/null /etc/systemd/system/NetworkManager-dispatcher.service -# Build the keys -pacman-key --init -pacman-key --populate archlinux -pacman-key -r 93481F6B -# Update the mirror cache -pacman -Syy -# Just in case. -cleanPacorigs -# Install some prereqs -pacman -S --noconfirm --needed sed -pacman -S --noconfirm --needed grep -sed -i.bak -e 's/^CheckSpace/#CheckSpace/g' /etc/pacman.conf -pacman -S --noconfirm --needed filesystem -pacman -S --noconfirm --needed core -mv /etc/pacman.conf.bak /etc/pacman.conf -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 -cleanPacorigs -# Force update all currently installed packages in case the tarball's out of date -pacman -Su --force --noconfirm -# And in case the keys updated... -pacman-key --refresh-keys -cleanPacorigs -# We'll need these. -pacman -S --noconfirm --needed base-devel -cleanPacorigs -# Install apacman -pacman --noconfirm -U /root/apacman*.tar.xz &&\ - mkdir /var/tmp/apacman && chmod 0750 /var/tmp/apacman &&\ - chown root:aurbuild /var/tmp/apacman -chown aurbuild:aurbuild /var/empty/.gnupg -chmod 700 /var/empty/.gnupg -cleanPacorigs -apacman -Syy -for p in apacman apacman-deps apacman-utils expac; -do - apacman -S --noconfirm --noedit --skipinteg --needed -S "${p}" -done -apacman --gendb -cleanPacorigs -# Install multilib-devel if we're in an x86_64 chroot. -if $(egrep -q '^\[multilib' /etc/pacman.conf); -then - yes 'y' | pacman -S --needed gcc-multilib lib32-fakeroot lib32-libltdl - pacman --noconfirm -S --needed multilib-devel - cleanPacorigs - TGT_ARCH='x86_64' -else - TGT_ARCH='i686' -fi -# Install some stuff we need for the ISO. -#PKGLIST=$(sed -re '/^[[:space:]]*(#|$)/d' /root/iso.pkgs.both | tr '\n' ' ') -PKGLIST=$(getPkgList /root/iso.pkgs.both) -if [[ -n "${PKGLIST}" ]]; -then - apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST} - apacman --gendb - cleanPacorigs -fi -# And install arch-specific packages for the ISO, if there are any. -#PKGLIST=$(sed -re '/^[[:space:]]*(#|$)/d' /root/iso.pkgs.arch | tr '\n' ' ') -PKGLIST=$(getPkgList /root/iso.pkgs.arch) -if [[ -n "${PKGLIST}" ]]; -then - apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST} - apacman --gendb - cleanPacorigs -fi -# Do some post tasks before continuing -apacman --noconfirm --noedit -S --needed customizepkg-scripting -ln -s /usr/lib/libdialog.so.1.2 /usr/lib/libdialog.so -cleanPacorigs -apacman --noconfirm --noedit --skipinteg -S --needed linux -apacman --gendb -cleanPacorigs - -# And install EXTRA functionality packages, if there are any. -#PKGLIST=$(sed -re '/^[[:space:]]*(#|$)/d' /root/packages.both | tr '\n' ' ') -PKGLIST=$(getPkgList /root/packages.both) -if [[ -n "${PKGLIST}" ]]; -then - echo "Now installing your extra packages. This will take a while and might appear to hang." - #yes 1 | apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST} - for p in ${PKGLIST}; - do - apacman --noconfirm --noedit --skipinteg -S --needed ${p} - done - apacman --gendb - cleanPacorigs -fi -# Add the regular user -useradd -m -s /bin/bash -c "${USERCOMMENT}" ${REGUSR} -usermod -aG users,games,video,audio ${REGUSR} # TODO: remove this in lieu of $REGUSR_GRPS? these are all kind of required, though, for regular users anyways -for g in $(echo ${REGUSR_GRPS} | sed 's/,[[:space:]]*/ /g'); -do - getent group ${g} > /dev/null 2>&1 || groupadd ${g} - usermod -aG ${g} ${REGUSR} -done -passwd -d ${REGUSR} -# Add them to sudoers -mkdir -p /etc/sudoers.d -chmod 750 /etc/sudoers.d -printf "Defaults:${REGUSR} \041lecture\n${REGUSR} ALL=(ALL) ALL\n" >> /etc/sudoers.d/${REGUSR} -# Set the password, if we need to. -if [[ -n "${REGUSR_PASS}" && "${REGUSR_PASS}" != 'BLANK' ]]; - then - sed -i -e "s|^${REGUSR}::|${REGUSR}:${REGUSR_PASS}:|g" /etc/shadow -elif [[ "${REGUSR_PASS}" == '{[BLANK]}' ]]; -then - passwd -d ${REGUSR} -else - usermod -L ${REGUSR} -fi -# Set the root password, if we need to. -if [[ -n "${ROOT_PASS}" && "${ROOT_PASS}" != 'BLANK' ]]; -then - sed -i -e "s|^root::|root:${ROOT_PASS}:|g" /etc/shadow -elif [[ "${ROOT_PASS}" == 'BLANK' ]]; -then - passwd -d root -else - usermod -L root -fi -cleanPacorigs -# And install arch-specific extra packages, if there are any. -#PKGLIST=$(sed -re '/^[[:space:]]*(#|$)/d' /root/packages.arch | tr '\n' ' ') -PKGLIST=$(getPkgList /root/packages.arch) -if [[ -n "${PKGLIST}" ]]; -then - #apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST} - for p in ${PKGLIST}; - do - apacman --noconfirm --noedit --skipinteg -S --needed ${PKGLIST} - done - apacman --gendb - cleanPacorigs -fi -# Run any arch-specific tasks here. -if [ -f '/root/pre-build.arch.sh' ]; -then - cnt=$(sed -re '/^[[:space:]]*(#|$)/d' /root/pre-build.arch.sh | wc -l) - if [[ "${cnt}" -ge 1 ]]; - then - /root/pre-build.arch.sh - fi - rm -f /root/pre-build.arch.sh -fi -# Cleanup -# TODO: look into https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Removing_unused_packages_.28orphans.29 -mkinitcpio -p linux -paccache -rk0 -localepurge-config -localepurge -localepurge-config -localepurge -rm -f /root/.bash_history -rm -f /root/.viminfo -rm -f /root/apacman-*.pkg.tar.xz -rm -f /root/pre-build.sh -pkill -9 dirmngr -pkill -9 gpg-agent diff --git a/extra/pre-build.d/x86_64/etc/pacman.conf b/extra/pre-build.d/x86_64/etc/pacman.conf deleted file mode 100644 index 9e0d17b..0000000 --- a/extra/pre-build.d/x86_64/etc/pacman.conf +++ /dev/null @@ -1,101 +0,0 @@ -# -# /etc/pacman.conf -# -# See the pacman.conf(5) manpage for option and repository directives - -# -# GENERAL OPTIONS -# -[options] -# The following paths are commented out with their default values listed. -# If you wish to use different paths, uncomment and update the paths. -#RootDir = / -#DBPath = /var/lib/pacman/ -#CacheDir = /var/cache/pacman/pkg/ -#LogFile = /var/log/pacman.log -#GPGDir = /etc/pacman.d/gnupg/ -#HookDir = /etc/pacman.d/hooks/ -HoldPkg = pacman glibc -#XferCommand = /usr/bin/curl -C - -f %u > %o -#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u -#CleanMethod = KeepInstalled -#UseDelta = 0.7 -Architecture = x86_64 - -# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup -#IgnorePkg = -#IgnoreGroup = - -#NoUpgrade = -#NoExtract = - -# Misc options -UseSyslog -Color -TotalDownload -CheckSpace -VerbosePkgLists -ILoveCandy - -# By default, pacman accepts packages signed by keys that its local keyring -# trusts (see pacman-key and its man page), as well as unsigned packages. -SigLevel = Required DatabaseOptional -LocalFileSigLevel = Optional -#RemoteFileSigLevel = Required - -# NOTE: You must run `pacman-key --init` before first using pacman; the local -# keyring can then be populated with the keys of all official Arch Linux -# packagers with `pacman-key --populate archlinux`. - -# -# REPOSITORIES -# - can be defined here or included from another file -# - pacman will search repositories in the order defined here -# - local/custom mirrors can be added here or in separate files -# - repositories listed first will take precedence when packages -# have identical names, regardless of version number -# - URLs will have $repo replaced by the name of the current repo -# - URLs will have $arch replaced by the name of the architecture -# -# Repository entries are of the format: -# [repo-name] -# Server = ServerName -# Include = IncludePath -# -# The header [repo-name] is crucial - it must be present and -# uncommented to enable the repo. -# - -# The testing repositories are disabled by default. To enable, uncomment the -# repo name header and Include lines. You can add preferred servers immediately -# after the header, and they will be used before the default mirrors. - -#[testing] -#Include = /etc/pacman.d/mirrorlist - -[core] -Include = /etc/pacman.d/mirrorlist - -[extra] -Include = /etc/pacman.d/mirrorlist - -#[community-testing] -#Include = /etc/pacman.d/mirrorlist - -[community] -Include = /etc/pacman.d/mirrorlist - -# If you want to run 32 bit applications on your x86_64 system, -# enable the multilib repositories as required here. - -#[multilib-testing] -#Include = /etc/pacman.d/mirrorlist - -[multilib] -Include = /etc/pacman.d/mirrorlist - -# An example of a custom package repository. See the pacman manpage for -# tips on creating your own repositories. -#[custom] -#SigLevel = Optional TrustAll -#Server = file:///home/custompkgs diff --git a/extra/pre-build.d/x86_64/root/iso.pkgs.arch b/extra/pre-build.d/x86_64/root/iso.pkgs.arch deleted file mode 100644 index 3e9ba8b..0000000 --- a/extra/pre-build.d/x86_64/root/iso.pkgs.arch +++ /dev/null @@ -1,3 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. -efitools diff --git a/extra/pre-build.d/x86_64/root/packages.arch b/extra/pre-build.d/x86_64/root/packages.arch deleted file mode 100644 index ce1d5d0..0000000 --- a/extra/pre-build.d/x86_64/root/packages.arch +++ /dev/null @@ -1,2 +0,0 @@ -# Commented lines are supported (via a preceding # only). -# Packages from the AUR can be specified. diff --git a/extra/pre-build.d/x86_64/root/pre-build.arch.sh b/extra/pre-build.d/x86_64/root/pre-build.arch.sh deleted file mode 100755 index b0a39d9..0000000 --- a/extra/pre-build.d/x86_64/root/pre-build.arch.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -# Put any arch-specific tasks here. They will be run after /root/pre-build.sh. diff --git a/extra/templates/BIOS/isolinux.cfg.arch.j2 b/extra/templates/BIOS/isolinux.cfg.arch.j2 deleted file mode 100644 index f4acbf6..0000000 --- a/extra/templates/BIOS/isolinux.cfg.arch.j2 +++ /dev/null @@ -1,74 +0,0 @@ -UI vesamenu.c32 -DEFAULT check -PROMPT 0 -TIMEOUT 50 -MENU HIDDEN -ONTIMEOUT {{ bdisk['uxname'] }}_ram_{{ bitness }} -MENU TABMSG Press [TAB] to edit options -#MENU TITLE {{ bdisk['pname'] }} (ISO edition) -MENU ROWS 16 -MENU TIMEOUTROW 22 -MENU TABMSGROW 24 -MENU CMDLINEROW 24 -MENU HELPMSGROW 26 -MENU WIDTH 78 -MENU MARGIN 6 -MENU IMMEDIATE -# http://www.colorpicker.com/ -MENU color border 0 #00000000 #00000000 none -MENU color title 0 #FFF5B800 #00000000 std -MENU color sel 7;37;40 #FF000000 #FFFFFFFF all -MENU color hotsel 1;7;37;40 #FFFF0000 #FFC0C0C0 all -MENU color hotkey 1;7;37;40 #FF0000CC #FFC0C0C0 all -MENU color tabmsg 1;31;40 #FF808080 #00000000 std -MENU color help 1;31;40 #FFFFFFFF #FF000000 none -MENU color timeout_msg 0 #FFFFB300 #00000000 none -MENU color timeout 0 #FFFF0000 #FF000000 none -MENU color cmdline 0 #FFFFFFFF #FF000000 none -MENU color cmdmark 1;36;40 #C000FFFF #FF000000 std -MENU color scrollbar 30;44 #FF00FF00 #FF000000 std -MENU color msg07 0 #FF000000 #00FFFFFF none -MENU BACKGROUND /{{ bdisk['uxname'] }}.png - -LABEL local_override - MENU LABEL Local ^Boot - localboot 0 - TEXT HELP - Boot from the local system instead. - ENDTEXT - -LABEL reboot - MENU LABEL ^Reboot - COM32 reboot.c32 - TEXT HELP - Reboot the machine - ENDTEXT - -MENU SEPARATOR - -MENU BEGIN {{ bitness }}BIT -MENU LABEL ^1) {{ bitness }}-Bit ... -ONTIMEOUT {{ bdisk['uxname'] }}_{{ bitness }} - -LABEL {{ bdisk['uxname'] }}_ram_{{ bitness }} - MENU LABEL ^1) {{ bdisk['pname'] }} (run from RAM) - LINUX /boot/{{ bdisk['uxname'] }}.{{ bitness }}.kern - INITRD /boot/{{ bdisk['uxname'] }}.{{ bitness }}.img - APPEND copytoram archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - TEXT HELP - {{ bitness }}-bit, run from RAM - ENDTEXT - MENU DEFAULT - -LABEL {{ bdisk['uxname'] }}_{{ bitness }} - MENU LABEL ^1) {{ bdisk['pname'] }} (Default) - LINUX /boot/{{ bdisk['uxname'] }}.{{ bitness }}.kern - INITRD /boot/{{ bdisk['uxname'] }}.{{ bitness }}.img - APPEND archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - TEXT HELP - Same as the above, except run directly from the CD- - don't copy the image to RAM. (Best for lower-memory boxes) - ENDTEXT - -MENU END - diff --git a/extra/templates/BIOS/isolinux.cfg.multi.j2 b/extra/templates/BIOS/isolinux.cfg.multi.j2 deleted file mode 100644 index a79980b..0000000 --- a/extra/templates/BIOS/isolinux.cfg.multi.j2 +++ /dev/null @@ -1,111 +0,0 @@ -UI vesamenu.c32 -DEFAULT check -PROMPT 0 -TIMEOUT 50 -MENU HIDDEN -#ONTIMEOUT {{ bdisk['uxname'] }}_ram -ONTIMEOUT check -MENU TABMSG Press [TAB] to edit options -#MENU TITLE {{ bdisk['pname'] }} (ISO edition) -MENU ROWS 16 -MENU TIMEOUTROW 22 -MENU TABMSGROW 24 -MENU CMDLINEROW 24 -MENU HELPMSGROW 26 -MENU WIDTH 78 -MENU MARGIN 6 -MENU IMMEDIATE -# http://www.colorpicker.com/ -MENU color border 0 #00000000 #00000000 none -MENU color title 0 #FFF5B800 #00000000 std -MENU color sel 7;37;40 #FF000000 #FFFFFFFF all -MENU color hotsel 1;7;37;40 #FFFF0000 #FFC0C0C0 all -MENU color hotkey 1;7;37;40 #FF0000CC #FFC0C0C0 all -MENU color tabmsg 1;31;40 #FF808080 #00000000 std -MENU color help 1;31;40 #FFFFFFFF #FF000000 none -MENU color timeout_msg 0 #FFFFB300 #00000000 none -MENU color timeout 0 #FFFF0000 #FF000000 none -MENU color cmdline 0 #FFFFFFFF #FF000000 none -MENU color cmdmark 1;36;40 #C000FFFF #FF000000 std -MENU color scrollbar 30;44 #FF00FF00 #FF000000 std -MENU color msg07 0 #FF000000 #00FFFFFF none -MENU BACKGROUND /{{ bdisk['uxname'] }}.png - -LABEL check - MENU LABEL Your best supported kernel should be detected automatically. - COM32 ifcpu64.c32 - APPEND {{ bdisk['uxname'] }}_64 -- {{ bdisk['uxname'] }}_32 - MENU DEFAULT - - - -LABEL local_override - MENU LABEL Local ^Boot - localboot 0 - TEXT HELP - Boot from the local system instead. - ENDTEXT - -LABEL reboot - MENU LABEL ^Reboot - COM32 reboot.c32 - TEXT HELP - Reboot the machine - ENDTEXT - -MENU SEPARATOR - -## 64 BIT -MENU BEGIN 64BIT -MENU LABEL ^1) 64-Bit ... -ONTIMEOUT {{ bdisk['uxname'] }}_64 - -LABEL {{ bdisk['uxname'] }}_ram_64 - MENU LABEL ^1) {{ bdisk['pname'] }} (run from RAM) - LINUX /boot/{{ bdisk['uxname'] }}.64.kern - INITRD /boot/{{ bdisk['uxname'] }}.64.img - APPEND copytoram archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - TEXT HELP - 64-bit, run from RAM - ENDTEXT - MENU DEFAULT - -LABEL {{ bdisk['uxname'] }}_64 - MENU LABEL ^1) {{ bdisk['pname'] }} (Default) - LINUX /boot/{{ bdisk['uxname'] }}.64.kern - INITRD /boot/{{ bdisk['uxname'] }}.64.img - APPEND archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - TEXT HELP - Same as the above, except run directly from the CD- - don't copy the image to RAM. (Best for lower-memory boxes) - ENDTEXT - -MENU END - -MENU BEGIN 32BIT -MENU LABEL ^2) 32-Bit ... -ONTIMEOUT {{ bdisk['uxname'] }}_32 - -## 32 BIT -LABEL {{ bdisk['uxname'] }}_ram_32 - MENU LABEL ^1) {{ bdisk['pname'] }} (run from RAM) - LINUX /boot/{{ bdisk['uxname'] }}.32.kern - INITRD /boot/{{ bdisk['uxname'] }}.32.img - APPEND copytoram archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - TEXT HELP - 32-bit, run from RAM - ENDTEXT - MENU DEFAULT - -LABEL {{ bdisk['uxname'] }}_32 - MENU LABEL ^2) {{ bdisk['pname'] }} (Default) - LINUX /boot/{{ bdisk['uxname'] }}.32.kern - INITRD /boot/{{ bdisk['uxname'] }}.32.img - APPEND archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - TEXT HELP - Same as the above, except run directly from the CD- - don't copy the image to RAM. (Best for lower-memory boxes) - ENDTEXT - -MENU END - diff --git a/extra/templates/EFI/base.conf.j2 b/extra/templates/EFI/base.conf.j2 deleted file mode 100644 index d3793c1..0000000 --- a/extra/templates/EFI/base.conf.j2 +++ /dev/null @@ -1,5 +0,0 @@ -title {{ bdisk['pname'] }} (Media) -linux /{% if efi is defined %}EFI/{{ bdisk['name'] }}{% else %}boot{% endif %}/{{ bdisk['uxname'] }}.{% if efi is defined %}efi{% else %}kern{% endif %} -initrd /{% if efi is defined %}EFI/{{ bdisk['name'] }}{% else %}boot{% endif %}/{{ bdisk['uxname'] }}.img -options archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - diff --git a/extra/templates/EFI/loader.conf.j2 b/extra/templates/EFI/loader.conf.j2 deleted file mode 100644 index e9c303e..0000000 --- a/extra/templates/EFI/loader.conf.j2 +++ /dev/null @@ -1,3 +0,0 @@ -timeout 3 -default {{ bdisk['uxname'] }} - diff --git a/extra/templates/EFI/ram.conf.j2 b/extra/templates/EFI/ram.conf.j2 deleted file mode 100644 index 23dc0f9..0000000 --- a/extra/templates/EFI/ram.conf.j2 +++ /dev/null @@ -1,5 +0,0 @@ -title {{ bdisk['pname'] }} (RAM) -linux /{% if efi is defined %}EFI/{{ bdisk['name'] }}{% else %}boot{% endif %}/{{ bdisk['uxname'] }}.{% if efi is defined %}efi{% else %}kern{% endif %} -initrd /{% if efi is defined %}EFI/{{ bdisk['name'] }}{% else %}boot{% endif %}/{{ bdisk['uxname'] }}.img -options copytoram archisobasedir={{ bdisk['name'] }} archisolabel={{ bdisk['name'] }} - diff --git a/extra/templates/EFI/uefi1.conf.j2 b/extra/templates/EFI/uefi1.conf.j2 deleted file mode 100644 index 36246f9..0000000 --- a/extra/templates/EFI/uefi1.conf.j2 +++ /dev/null @@ -1,3 +0,0 @@ -title UEFI Shell (v1) -efi /EFI/shellx64_v1.efi - diff --git a/extra/templates/EFI/uefi2.conf.j2 b/extra/templates/EFI/uefi2.conf.j2 deleted file mode 100644 index 5b51e83..0000000 --- a/extra/templates/EFI/uefi2.conf.j2 +++ /dev/null @@ -1,3 +0,0 @@ -title UEFI Shell (v2) -efi /EFI/shellx64_v2.efi - diff --git a/extra/templates/GPG.j2 b/extra/templates/GPG.j2 deleted file mode 100644 index 52799aa..0000000 --- a/extra/templates/GPG.j2 +++ /dev/null @@ -1,14 +0,0 @@ -{# For more options, see https://www.gnupg.org/documentation/manuals/gnupg/Unattended-GPG-key-generation.html -#} - Key-Type: RSA - Key-Length: 4096 - Subkey-Type: RSA - Subkey-Length: 4096 - Name-Real: {{ bdisk['dev'] }} - Name-Email: {{ bdisk['email'] }} - Name-Comment: via {{ bdisk['pname'] }} [autogenerated] | {{ bdisk['uri'] }} | {{ bdisk['desc'] }} - Expire-Date: 0 - %no-ask-passphrase - %no-protection - %commit - diff --git a/extra/templates/VERSION_INFO.txt.j2 b/extra/templates/VERSION_INFO.txt.j2 deleted file mode 100644 index 85fb300..0000000 --- a/extra/templates/VERSION_INFO.txt.j2 +++ /dev/null @@ -1,6 +0,0 @@ -Version: {{ bdisk['ver'] }} -Build: {{ build['buildnum'] }} -Time: {{ build['time'] }} -Machine: {{ hostname }} ({{ distro }}) -User: {{ build['user'] }}{% if build['realuser'] is defined and build['realuser']|length > 0 %} ({{ build['realuser'] }}){% endif %} - diff --git a/extra/templates/iPXE/BIOS/isolinux.cfg.j2 b/extra/templates/iPXE/BIOS/isolinux.cfg.j2 deleted file mode 100644 index 00ad0f1..0000000 --- a/extra/templates/iPXE/BIOS/isolinux.cfg.j2 +++ /dev/null @@ -1,7 +0,0 @@ -DEFAULT ipxe -PROMPT 0 -TIMEOUT 10 - -LABEL ipxe -KERNEL /boot/ipxe.krn - diff --git a/extra/templates/iPXE/EFI/base.conf.j2 b/extra/templates/iPXE/EFI/base.conf.j2 deleted file mode 100644 index db8a10d..0000000 --- a/extra/templates/iPXE/EFI/base.conf.j2 +++ /dev/null @@ -1,3 +0,0 @@ -title {{ bdisk['pname'] }} iPXE (Mini) -efi /EFI/boot/ipxe.efi - diff --git a/extra/templates/iPXE/EFI/loader.conf.j2 b/extra/templates/iPXE/EFI/loader.conf.j2 deleted file mode 100644 index 1cd238d..0000000 --- a/extra/templates/iPXE/EFI/loader.conf.j2 +++ /dev/null @@ -1,2 +0,0 @@ -default {{ bdisk['uxname'] }} - diff --git a/extra/templates/iPXE/EMBED.j2 b/extra/templates/iPXE/EMBED.j2 deleted file mode 100644 index dbba480..0000000 --- a/extra/templates/iPXE/EMBED.j2 +++ /dev/null @@ -1,10 +0,0 @@ -#!ipxe - -#dhcp -ifconf -## TODO: signed kernel and initrd -#imgtrust --permanent -#imgverify vmlinuz path/to/vmlinuz.sig -#imgverify initrd path/to/initrd.sig -chain {{ ipxe['uri'] }} - diff --git a/extra/templates/iPXE/patches/01.git-version.patch.j2 b/extra/templates/iPXE/patches/01.git-version.patch.j2 deleted file mode 100644 index ba3dffe..0000000 --- a/extra/templates/iPXE/patches/01.git-version.patch.j2 +++ /dev/null @@ -1,32 +0,0 @@ -{# we can probably honestly not include this. regardless, it's handy. #}From 4c139ece028b5dd6c4e5f46ce2bf8134c390de90 Mon Sep 17 00:00:00 2001 -From: Christian Hesse -Date: Thu, 12 Feb 2015 08:59:37 +0100 -Subject: [PATCH] git version - -Signed-off-by: Christian Hesse ---- - src/Makefile | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/src/Makefile b/src/Makefile -index cf9cfd2..38ebb3d 100644 ---- a/src/Makefile -+++ b/src/Makefile -@@ -194,10 +194,11 @@ VERSION_MINOR = 0 - VERSION_PATCH = 0 - EXTRAVERSION = + - MM_VERSION = $(VERSION_MAJOR).$(VERSION_MINOR) --VERSION = $(MM_VERSION).$(VERSION_PATCH)$(EXTRAVERSION) - ifneq ($(wildcard ../.git),) --GITVERSION := $(shell git describe --always --abbrev=1 --match "" 2>/dev/null) --VERSION += ($(GITVERSION)) -+GITVERSION := $(shell git describe --tags --long 2>/dev/null) -+VERSION = $(GITVERSION) -+else -+VERSION = $(MM_VERSION).$(VERSION_PATCH)$(EXTRAVERSION) - endif - version : - @$(ECHO) "$(VERSION)" --- -2.3.0 - diff --git a/extra/templates/iPXE/patches/02.banner.patch.j2 b/extra/templates/iPXE/patches/02.banner.patch.j2 deleted file mode 100644 index cb69c66..0000000 --- a/extra/templates/iPXE/patches/02.banner.patch.j2 +++ /dev/null @@ -1,41 +0,0 @@ -From 4ec31ece6757e19be455faa383886562b8793db9 Mon Sep 17 00:00:00 2001 -From: Christian Hesse -Date: Thu, 12 Feb 2015 09:06:41 +0100 -Subject: [PATCH] banner - -Signed-off-by: Christian Hesse ---- - src/usr/autoboot.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c -index 4bcb64d..74b5b77 100644 ---- a/src/usr/autoboot.c -+++ b/src/usr/autoboot.c -@@ -67,6 +67,7 @@ static int ( * is_autoboot_device ) ( struct net_device *netdev ); - #define NORMAL "\033[0m" - #define BOLD "\033[1m" - #define CYAN "\033[36m" -+#define BLUE "\033[34m" - - /** The "scriptlet" setting */ - const struct setting scriptlet_setting __setting ( SETTING_MISC, scriptlet ) = { -@@ -551,9 +552,13 @@ void ipxe ( struct net_device *netdev ) { - * do so. - * - */ -- printf ( NORMAL "\n\n" PRODUCT_NAME "\n" BOLD PRODUCT_SHORT_NAME " %s" -+ printf ( NORMAL "\n\n" PRODUCT_NAME "\n" BOLD PRODUCT_SHORT_NAME - NORMAL " -- " PRODUCT_TAG_LINE " -- " -- CYAN PRODUCT_URI NORMAL "\nFeatures:", product_version ); -+ CYAN PRODUCT_URI NORMAL "\n" -+ BOLD "{{ bdisk['pname'] }}" BLUE "LiveDistro" NORMAL " -- {{ bdisk['desc'] }} -- " -+ BOLD BLUE "{{ bdisk['uri'] }}" NORMAL "\n" -+ "Version %s compiled on " __DATE__ ", " __TIME__ "\n" -+ "Features:", product_version ); - for_each_table_entry ( feature, FEATURES ) - printf ( " %s", feature->name ); - printf ( "\n" ); --- -2.3.0 - diff --git a/extra/templates/iPXE/ssl/openssl.cnf b/extra/templates/iPXE/ssl/openssl.cnf deleted file mode 100644 index 7e1192b..0000000 --- a/extra/templates/iPXE/ssl/openssl.cnf +++ /dev/null @@ -1,34 +0,0 @@ -[ ca ] -default_ca = ca_default - -[ ca_default ] -certificate = crts/ca.crt -private_key = keys/ca.key -serial = txt/ca.srl -database = txt/ca.idx -#new_certs_dir = signed -new_certs_dir = crts -#default_md = default -default_md = sha512 -policy = policy_anything -preserve = yes -default_days = 90 -unique_subject = no - -[ policy_anything ] -countryName = optional -stateOrProvinceName = optional -localityName = optional -organizationName = optional -organizationalUnitName = optional -commonName = optional -emailAddress = optional - -[ cross ] -basicConstraints = critical,CA:true -keyUsage = critical,cRLSign,keyCertSign - -[ codesigning ] -keyUsage = digitalSignature -extendedKeyUsage = codeSigning - diff --git a/extra/templates/pre-build.d/etc/hostname.j2 b/extra/templates/pre-build.d/etc/hostname.j2 deleted file mode 100644 index 0510d37..0000000 --- a/extra/templates/pre-build.d/etc/hostname.j2 +++ /dev/null @@ -1 +0,0 @@ -{{ bdisk['uxname']|lower }}.loc.lan diff --git a/extra/templates/pre-build.d/root/VARS.txt.j2 b/extra/templates/pre-build.d/root/VARS.txt.j2 deleted file mode 100644 index 2c1417a..0000000 --- a/extra/templates/pre-build.d/root/VARS.txt.j2 +++ /dev/null @@ -1,12 +0,0 @@ -export DISTNAME='{{ bdisk['name']|upper }}' -export UXNAME='{{ bdisk['name']|lower }}' -export PNAME='{{ bdisk['name'] }}' -export DISTPUB='{{ bdisk['dev'] }}' -export DISTDESC='{{ bdisk['desc'] }}' -export REGUSR='{{ user['username']|lower }}' -export REGUSR_GRPS='{{ user['groups'] }}' -export USERCOMMENT='{{ user['name'] }}' -export REGUSR_PASS='{{ user['password'] }}' -export ROOT_PASS='{{ bdisk['root_password'] }}' -export SIGKEY='{{ mygpgkey }}' - diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..791c90f --- /dev/null +++ b/setup.py @@ -0,0 +1,28 @@ +from setuptools import setup + +import version + +# https://packaging.python.org/tutorials/distributing-packages/ +# https://docs.python.org/3/distutils/apiref.html +# https://python-packaging.readthedocs.io/en/latest/minimal.html +# https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords +setup(name = 'bdisk', + version = version.BDISK_VERSION, + description = ('An easy liveCD creator built in python. Supports hybrid ' + 'ISOs/USB, iPXE, and UEFI.'), + url = 'https://bdisk.square-r00t.net', + project_urls={'Bug Tracker': ('https://bugs.square-r00t.net/' + 'index.php?project=2&do=index'), + 'Documentation': 'https://bdisk.square-r00t.net/', + 'Source Code': 'https://git.square-r00t.net/BDisk/'} + author = 'Brent Saner', + author_email = 'bts@square-r00t.net', + license = 'GPLv3', + packages = ['bdisk'], + platforms = ['linux'], + classifiers = ['Environment :: Console', + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Information Technology', + 'Intended Audience :: System Administrators', + 'Operating System :: POSIX :: Linux'], + zip_safe = False) diff --git a/version.py b/version.py new file mode 120000 index 0000000..dd317d1 --- /dev/null +++ b/version.py @@ -0,0 +1 @@ +bdisk/version.py \ No newline at end of file