Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c489837d40 | |||
| 705ad0732c | |||
| 7e5e38a68a | |||
| 84f062813e | |||
| 111e812146 | |||
| a54b5b110d | |||
| 4217b7323b | |||
| 02b4fbc454 | |||
| cc3f23efc7 | |||
| 7c3a4a61b6 | |||
| e87976d740 | |||
| bf3dc2bb4c | |||
| fae0a53034 | |||
| f89283a301 | |||
| 3bcc023c01 | |||
| 74412e4dea | |||
| 676265b2aa | |||
| 6f3a0f6b86 | |||
| ef8562fb0e | |||
| 01e1b979f8 | |||
| 481a3e4cf9 | |||
| f9c44ecc8e | |||
| c9ccb3aa17 | |||
| 6ff5a96d76 | |||
| e3236eb0d6 | |||
| 60791f1596 | |||
| f37221c833 | |||
| 9afa665a75 | |||
| eec74f16e6 | |||
| 6760b46c5d | |||
| 06c8924367 | |||
| ac7bfa7320 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -8,7 +8,11 @@
|
||||
/overlay
|
||||
!/overlay/x86_64
|
||||
!/overlay/i686
|
||||
!/overlay/etc/
|
||||
!/overlay/etc
|
||||
extra/templates/overlay
|
||||
!extra/templates/overlay/x86_64
|
||||
!extra/templates/overlay/i686
|
||||
!extra/templates/overlay/etc
|
||||
# The default doesn't store these in the git working dir,
|
||||
# but better safe than sorry.
|
||||
/root.x86_64
|
||||
|
||||
@@ -19,7 +19,7 @@ def genGPG(conf):
|
||||
distkey = conf['src'][a]['gpgkey']
|
||||
if keysrv and (keysrv not in gpgkeyserver):
|
||||
gpgkeyserver.append(keysrv)
|
||||
if distkey not in distkeys:
|
||||
if distkey and(distkey not in distkeys):
|
||||
distkeys.append(distkey)
|
||||
templates_dir = '{0}/extra/templates'.format(build['basedir'])
|
||||
mykey = False
|
||||
@@ -35,6 +35,7 @@ def genGPG(conf):
|
||||
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?
|
||||
@@ -51,13 +52,13 @@ def genGPG(conf):
|
||||
s))
|
||||
if mykey:
|
||||
try:
|
||||
privkey = gpg.get_key(mykey, True)
|
||||
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):
|
||||
for key in gpg.keylist(None, True):
|
||||
if key.can_sign:
|
||||
pkeys.append(key)
|
||||
break
|
||||
@@ -116,13 +117,13 @@ def killStaleAgent(conf):
|
||||
# Kill off any stale GPG agents running.
|
||||
# Probably not even needed, but good to have.
|
||||
chrootdir = conf['build']['chrootdir']
|
||||
dlpath = conf['build']['dlpath']
|
||||
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, dlpath):
|
||||
for d in (chrootdir, gpgpath):
|
||||
if pd['cwd'].startswith('{0}'.format(d)):
|
||||
plst.append(p.pid)
|
||||
if len(plst) >= 1:
|
||||
|
||||
@@ -138,11 +138,12 @@ def chrootTrim(build):
|
||||
humanize.naturalsize(
|
||||
os.path.getsize(tarball)),
|
||||
dbdir))
|
||||
for d in ('etc/pacman.d/gnupg', 'var/empty/.gnupg'):
|
||||
if os.path.isdir('{0}/root.{1}/{2}'.format(chrootdir, a, d)):
|
||||
shutil.rmtree('{0}/root.{1}/{2}'.format(chrootdir, a, d))
|
||||
#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',
|
||||
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',
|
||||
|
||||
@@ -8,12 +8,15 @@ import bSSL
|
||||
import ipxe
|
||||
import bsync
|
||||
import bGPG
|
||||
import os
|
||||
|
||||
# we need to:
|
||||
# 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.
|
||||
# still on the todo: iPXE
|
||||
if __name__ == '__main__':
|
||||
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())[1]
|
||||
prep.dirChk(conf)
|
||||
|
||||
@@ -37,7 +37,7 @@ def http(conf):
|
||||
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}.32.img'.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'])
|
||||
@@ -48,6 +48,7 @@ def http(conf):
|
||||
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:
|
||||
|
||||
@@ -329,7 +329,7 @@ def genISO(conf):
|
||||
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)
|
||||
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!
|
||||
|
||||
@@ -24,10 +24,13 @@ def getHostname():
|
||||
hostname = platform.node()
|
||||
return(hostname)
|
||||
|
||||
def getConfig(conf_file='/etc/bdisk/build.ini'):
|
||||
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',
|
||||
@@ -36,7 +39,8 @@ def getConfig(conf_file='/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']
|
||||
'/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):
|
||||
@@ -46,7 +50,9 @@ def getConfig(conf_file='/etc/bdisk/build.ini'):
|
||||
break
|
||||
else:
|
||||
conf = conf_file
|
||||
defconf = '{0}/../extra/dist.build.ini'.format(os.path.dirname(os.path.realpath(__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.
|
||||
@@ -91,12 +97,17 @@ def parseConfig(confs):
|
||||
# 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
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
-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?
|
||||
|
||||
## Missing v2.x functionality ##
|
||||
-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. :(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
= BDisk User and Developer Manual
|
||||
Brent Saner <bts@square-r00t.net>
|
||||
v1.1, 2017-03-06
|
||||
v1.2, 2017-05-11
|
||||
:doctype: book
|
||||
:data-uri:
|
||||
:imagesdir: images
|
||||
|
||||
@@ -2,17 +2,17 @@
|
||||
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[here^].
|
||||
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=8&task_type=1[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[here^].
|
||||
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=8&task_type=2[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/SubmittingPatches[patch/pull request process] for the Linux kernel and email it to bts@square-r00t.net.
|
||||
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 <<bugs,bug report>>/<<feature_requests,feature request>>.
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ If you want to use your own `build.ini` file (and you should!), the following pa
|
||||
* `/opt/dev/bdisk/build.ini`
|
||||
* `/opt/dev/bdisk/extra/build.ini`
|
||||
* `/opt/dev/bdisk/extra/dist.build.ini`
|
||||
* `<bdisk.py directory>/../build.ini`
|
||||
|
||||
We'll go into more detail for each section below.
|
||||
|
||||
@@ -64,7 +65,7 @@ We'll go into more detail for each section below.
|
||||
prepdir = ${dlpath}/temp
|
||||
archboot = ${prepdir}/${bdisk:name}
|
||||
mountpt = /mnt/${bdisk:uxname}
|
||||
multiarch = yes
|
||||
multiarch = x86_64
|
||||
sign = yes
|
||||
ipxe = no
|
||||
i_am_a_racecar = no
|
||||
@@ -126,7 +127,7 @@ This string is used for "pretty-printing" of the project name; it should be a mo
|
||||
. 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 `<<code_basedir_code,build:basedir>>`.
|
||||
The version string. If this isn't specified, we'll try to guess based on the current git commit and tags in `<<code_basedir_code,build:basedir>>`. If `<<code_basedir_code,build:basedir>>` is *not* a git repository (i.e. you installed BDisk from a package manager), you MUST specify a version number.
|
||||
|
||||
. No whitespace
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ The `EFI/` directory is similar to <<efi, EFI/>> above also, but needs fewer con
|
||||
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 <<overlay, the overlay section>> for more information on how to use this. Remember to suffix your template files with the `.j2` extension.
|
||||
This directory contains *templated* overlays. These are intended to be templated by the user. See <<overlay_2, the overlay section>> 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 <<pre_build_d, the pre-build.d section>> for more information on this.
|
||||
|
||||
BIN
extra/aif.png
Normal file
BIN
extra/aif.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 152 B |
@@ -60,14 +60,15 @@ srcdir = ${dlpath}/src
|
||||
prepdir = ${dlpath}/temp
|
||||
archboot = ${prepdir}/${bdisk:name}
|
||||
mountpt = /mnt/${bdisk:uxname}
|
||||
multiarch = yes
|
||||
#multiarch = yes
|
||||
multiarch = x86_64
|
||||
sign = yes
|
||||
ipxe =
|
||||
ipxe = no
|
||||
i_am_a_racecar = yes
|
||||
|
||||
[gpg]
|
||||
mygpgkey =
|
||||
mygpghome =
|
||||
mygpghome = ${build:dlpath}/.gnupg
|
||||
|
||||
[sync]
|
||||
http = no
|
||||
|
||||
48
extra/modules/distro/TEMPLATE
Normal file
48
extra/modules/distro/TEMPLATE
Normal file
@@ -0,0 +1,48 @@
|
||||
# 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']
|
||||
11
extra/modules/distro/arch.py
Normal file
11
extra/modules/distro/arch.py
Normal file
@@ -0,0 +1,11 @@
|
||||
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']
|
||||
11
extra/modules/distro/centos.py
Normal file
11
extra/modules/distro/centos.py
Normal file
@@ -0,0 +1,11 @@
|
||||
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']
|
||||
12
extra/modules/distro/debian.py
Normal file
12
extra/modules/distro/debian.py
Normal file
@@ -0,0 +1,12 @@
|
||||
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']
|
||||
11
extra/modules/distro/fedora.py
Normal file
11
extra/modules/distro/fedora.py
Normal file
@@ -0,0 +1,11 @@
|
||||
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']
|
||||
11
extra/modules/distro/rhel.py
Normal file
11
extra/modules/distro/rhel.py
Normal file
@@ -0,0 +1,11 @@
|
||||
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']
|
||||
11
extra/modules/distro/sles.py
Normal file
11
extra/modules/distro/sles.py
Normal file
@@ -0,0 +1,11 @@
|
||||
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']
|
||||
12
extra/modules/distro/ubuntu.py
Normal file
12
extra/modules/distro/ubuntu.py
Normal file
@@ -0,0 +1,12 @@
|
||||
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']
|
||||
@@ -60,13 +60,14 @@ srcdir = ${dlpath}/src
|
||||
prepdir = ${dlpath}/temp
|
||||
archboot = ${prepdir}/${bdisk:name}
|
||||
mountpt = /mnt/${bdisk:uxname}
|
||||
multiarch = yes
|
||||
#multiarch = yes
|
||||
multiarch = x86_64
|
||||
ipxe = no
|
||||
i_am_a_racecar = no
|
||||
|
||||
[gpg]
|
||||
mygpgkey =
|
||||
mygpghome =
|
||||
mygpghome = ${build:dlpath}/.gnupg
|
||||
|
||||
[sync]
|
||||
http = no
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
bdisk-live.loc.lan
|
||||
@@ -1,90 +0,0 @@
|
||||
[H[J
|
||||
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0dc,.. ..;cxKWMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMMMMMMMMW0d:'. .,cx0WMMMMMMMMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMMMMNx:. .';cldxkkOOOOkkxdl:,.. .ckNMMMMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMKl. .;okKXXXXXXXXXXXXXXXXXXXXXX0xl;. 'oXMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMXl. .:d0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0d;. .dNMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMM0; .cOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKk: :KMMMMMMMMMMMM
|
||||
MMMMMMMMMMO' 'xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKd. ,KMMMMMMMMMM
|
||||
MMMMMMMMX, ,OXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx' :NMMMMMMMM
|
||||
MMMMMMMd .kXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXd. .kMMMMMMM
|
||||
MMMMMN' oKKxl:;,;:lkKXXXXXXXXXXXXXXXXXXXXXXXX0dl:;,;:ld0XXXXXXXXXXKc ;WMMMMM
|
||||
MMMMK. .O0; ':ool:. ;kXXXXXXXXXXXXXXXXXXX0l. .,coooc' .c0XXXXXXXXXk. .NMMMM
|
||||
MMMK. 'Kx cNMMMMK. ,0XXXXXXXXXXXXXXXKc :0MMMMMMk. cKXXXXXXXX0. .NMMM
|
||||
MMN. 'Kd kMMMMMM' .OXXXXXXXXXXXXX0. 'XMMMMMMMN 'KXXXXXXXX0. .WMM
|
||||
MW. .K0 xMMMMMMMd .KXXXXXXXXXXXK' ;WMMMMMMMMM: 'KXXXXXXXX0. ;MM
|
||||
Mo OXc .MMMMMMMMMXo:;ckN. dXXXXXXXXXXXd NMMMMMMMMMMM0l::l0N dXXXXXXXXXx xM
|
||||
N :XX, :MMMMMMMMMMMMMMMM; :XXXXXXXXXXX; ,MMMMMMMMMMMMMMMMMMM' :XXXXXXXXXX, .M
|
||||
d OXX; ,MMMMMMMMMMMMMMMM, :XXXXXXXXXXX: ,MMMMMMMMMMMMMMMMMMM' :XXXXXXXXXXx O
|
||||
, .XXXx dxxxxxxxxxxxxxxd xXXXXXXXXXXXx dxxxxxxxxxxxxxxxxxd xXXXXXXXXXXK. c
|
||||
. :XXXXc'''''''''''''''''':XXXXXXXXXXXXXc'''''''''''''''''''''cXXXXXXXXXXXX, '
|
||||
lXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX: .
|
||||
lXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; .
|
||||
. :XXXXXK0000000000000000000000000000000000000000000000000000KXXXXXXXXXXXXX, '
|
||||
, .XXXXXk .KXXXXXXXXXXXK. c
|
||||
x OXXXXXKKo .............................................. lXXXXXXXXXXXx 0
|
||||
W. ;XXXXXXXO ............................................... .XXXXXXXXXXX' .M
|
||||
Md kXXXXXXX, .............................................. KXXXXXXXXXd OM
|
||||
MM, .0XXXXXX0. .............................................. KXXXXXXXXO cMM
|
||||
MMN. .KXXXXXXk ............................................ ;XXXXXXXX0. ,WMM
|
||||
MMMX. .0XXXXXXk .........................'''............... .0XXXXXXXO. 'WMMM
|
||||
MMMMX. .kXXXXXXO. .................,cdkO0KKK0Oxo:'........ .kXXXXXXXd ,WMMMM
|
||||
MMMMMW; cKXXXXXK; .............'ckKKKKKKKKKKKKKK0x;.... '0XXXXXX0; cWMMMMM
|
||||
MMMMMMMk. .dXXXXXXx. ..........:OKKKKKKKKKKKKKKKKKKKo. .oXXXXXXKl .0MMMMMMM
|
||||
MMMMMMMMNc .xXXXXXKo. .......lKKKKKKKKKKKKKKKKKK0o' .dKXXXXXKd. lWMMMMMMMM
|
||||
MMMMMMMMMMK; .oKXXXXKd' ...:KKKKKKKKKKKKKKK0xc' .:kXXXXXX0l. cXMMMMMMMMMM
|
||||
MMMMMMMMMMMMXc ;xKXXXX0o,. .;ldxkkOkkxol:'. .,lOXXXXXXKd, .lNMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMWx, ,lOXXXXX0xl:,.........';cok0XXXXXXKkl' ;kWMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMNx, .'cdOKXXXXXXXXXXXXXXXXXXXXKOd:' ;kWMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMMMMW0o, .';:loddxxxxddol:,.. .,o0MMMMMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMMMMMMMMMXko:'. .':oONMMMMMMMMMMMMMMMMMMMMMMMMM
|
||||
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMW0dc;'......,:lx0WMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
|
||||
':ox0KXXK0koc'.
|
||||
.;ok000kxollcccclodxOKXKko;.
|
||||
;d00dc'. .;lkXKd;.
|
||||
.o0Oc. .,codkO0KKKKK0Okxdl;'. .;dXKo'
|
||||
.oKx, .:d0XXXXXXXXXXXXXXXXXXXXXXXKkl,. .c0Nd.
|
||||
,0O; .:xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOl' .oN0;
|
||||
;Kx. ;xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0l. :KX:
|
||||
,Kx. .lKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXk, ;XX,
|
||||
k0. .oKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXO, oWO.
|
||||
,No :KXX0Okk0XXXXXXXXXXXXXXXXXXXXXXXXXXXK0Okk0KXXXXXXXXXXXk. .KW;
|
||||
cN, .kKl' ... 'l0XXXXXXXXXXXXXXXXXXXXk:. ... .;dKXXXXXXXXK: kMo
|
||||
oN. '0d. c0WMMWo ;0XXXXXXXXXXXXXXXKo. 'dKWMMMX, .cKXXXXXXXXo xMd
|
||||
lW. 'Kl .KMMMMM: xXXXXXXXXXXXXX0' ,KMMMMMMM. .OXXXXXXXXx xMd
|
||||
;M; .Kd .NMMMMMMl kXXXXXXXXXXXK. lMMMMMMMMM. .OXXXXXXXXd 0M:
|
||||
Nx 0X. dMMMMMMMMk;..;dl 'XXXXXXXXXXXc 'MMMMMMMMMMWd,..:Oc ,XXXXXXXXX: .WW.
|
||||
dW. lXK KMMMMMMMMMMMMMMK KXXXXXXXXXX. dMMMMMMMMMMMMMMMMM0 KXXXXXXXXK. dMk
|
||||
Wx KXK 0MMMMMMMMMMMMMMK KXXXXXXXXXX. xMMMMMMMMMMMMMMMMM0 KXXXXXXXXXc .MM.
|
||||
:M; ;XXX; ,xxxxxxxxxxxxxx: 'XXXXXXXXXXXc 'xxxxxxxxxxxxxxxxx; ,XXXXXXXXXXO KMl
|
||||
xM. oXXX0,,,,,,,,,,,,,,,,,,kXXXXXXXXXXXK;,,,,,,,,,,,,,,,,,,,,OXXXXXXXXXXX. xMO
|
||||
0M xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. oMK
|
||||
0M dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. oMK
|
||||
xM. lXXXXXkdddddddddddddddddddddddddddddddddddddddddddddddddKXXXXXXXXXXXK kMk
|
||||
:Mc 'XXXXXc'. :XXXXXXXXXXXx XMc
|
||||
W0 OXXXXXX0 ............................................ OXXXXXXXXXX; ,MM.
|
||||
oM' ,XXXXXXX, ............................................ oXXXXXXXXXO 0Mx
|
||||
NK dXXXXXXO ........................................... lXXXXXXXXK. ;MN.
|
||||
,Md kXXXXXXd .......................................... xXXXXXXXX; .NM;
|
||||
cMl kXXXXXXo ......................................... .KXXXXXXK; .XMl
|
||||
lMl dXXXXXXd ..................':lodxxdol:'......... .0XXXXXXK' .XMo
|
||||
:Wx :KXXXXXk. ..............,lkKKKKKKKKKKKKkc'.... .0XXXXXXk. 'NMc
|
||||
.XK. .xXXXXXK: ..........'oKKKKKKKKKKKKKKKKK0l.. lKXXXXX0; oMN'
|
||||
dWo .xXXXXXO; .......,OKKKKKKKKKKKKKKKKKkc. .c0XXXXX0c 'KMx
|
||||
.0Nc .oKXXXXO:. ...'0KKKKKKKKKKKKKK0d:. ,xKXXXXXO: .OM0'
|
||||
,0No. ;xKXXXKx:. .;ldxkOOkkxol;'. 'cxKXXXXX0l. ,OMK;
|
||||
'kWk, ,o0XXXXKko:,.........,:ldOKXXXXXKkc. .lXMO,
|
||||
.cKNx; .,cxOKXXXXXXXXXXXXXXXXXXKko:. .lKMKl.
|
||||
.cOWKd;. ..,;cllooollc:;'. 'ckNM0c.
|
||||
'lONW0xl;.. .,:okXMNOo,
|
||||
.,cdOXWMWNXKK00KKXNMMWXOdc,.
|
||||
.,cokO00Okdc,.
|
||||
|
||||
|
||||
[H[J
|
||||
|
||||
bdisk
|
||||
\d \t
|
||||
\4
|
||||
\4{tun0}
|
||||
https://bdisk.square-r00t.net/
|
||||
@@ -1,14 +1,14 @@
|
||||
LANG=en_US.UTF-8
|
||||
LC_CTYPE="en_US.UTF-8"
|
||||
LC_NUMERIC="en_US.UTF-8"
|
||||
LC_TIME="en_US.UTF-8"
|
||||
LC_COLLATE="en_US.UTF-8"
|
||||
LC_MONETARY="en_US.UTF-8"
|
||||
LC_MESSAGES="en_US.UTF-8"
|
||||
LC_PAPER="en_US.UTF-8"
|
||||
LC_NAME="en_US.UTF-8"
|
||||
LC_ADDRESS="en_US.UTF-8"
|
||||
LC_TELEPHONE="en_US.UTF-8"
|
||||
LC_MEASUREMENT="en_US.UTF-8"
|
||||
LC_IDENTIFICATION="en_US.UTF-8"
|
||||
LC_ALL=
|
||||
#LC_CTYPE="en_US.UTF-8"
|
||||
#LC_NUMERIC="en_US.UTF-8"
|
||||
#LC_TIME="en_US.UTF-8"
|
||||
#LC_COLLATE="en_US.UTF-8"
|
||||
#LC_MONETARY="en_US.UTF-8"
|
||||
#LC_MESSAGES="en_US.UTF-8"
|
||||
#LC_PAPER="en_US.UTF-8"
|
||||
#LC_NAME="en_US.UTF-8"
|
||||
#LC_ADDRESS="en_US.UTF-8"
|
||||
#LC_TELEPHONE="en_US.UTF-8"
|
||||
#LC_MEASUREMENT="en_US.UTF-8"
|
||||
#LC_IDENTIFICATION="en_US.UTF-8"
|
||||
#LC_ALL=
|
||||
|
||||
@@ -1,40 +1 @@
|
||||
':ox0KXXK0koc'.
|
||||
.;ok000kxollcccclodxOKXKko;.
|
||||
;d00dc'. .;lkXKd;.
|
||||
.o0Oc. .,codkO0KKKKK0Okxdl;'. .;dXKo'
|
||||
.oKx, .:d0XXXXXXXXXXXXXXXXXXXXXXXKkl,. .c0Nd.
|
||||
,0O; .:xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOl' .oN0;
|
||||
;Kx. ;xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0l. :KX:
|
||||
,Kx. .lKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXk, ;XX,
|
||||
k0. .oKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXO, oWO.
|
||||
,No :KXX0Okk0XXXXXXXXXXXXXXXXXXXXXXXXXXXK0Okk0KXXXXXXXXXXXk. .KW;
|
||||
cN, .kKl' ... 'l0XXXXXXXXXXXXXXXXXXXXk:. ... .;dKXXXXXXXXK: kMo
|
||||
oN. '0d. c0WMMWo ;0XXXXXXXXXXXXXXXKo. 'dKWMMMX, .cKXXXXXXXXo xMd
|
||||
lW. 'Kl .KMMMMM: xXXXXXXXXXXXXX0' ,KMMMMMMM. .OXXXXXXXXx xMd
|
||||
;M; .Kd .NMMMMMMl kXXXXXXXXXXXK. lMMMMMMMMM. .OXXXXXXXXd 0M:
|
||||
Nx 0X. dMMMMMMMMk;..;dl 'XXXXXXXXXXXc 'MMMMMMMMMMWd,..:Oc ,XXXXXXXXX: .WW.
|
||||
dW. lXK KMMMMMMMMMMMMMMK KXXXXXXXXXX. dMMMMMMMMMMMMMMMMM0 KXXXXXXXXK. dMk
|
||||
Wx KXK 0MMMMMMMMMMMMMMK KXXXXXXXXXX. xMMMMMMMMMMMMMMMMM0 KXXXXXXXXXc .MM.
|
||||
:M; ;XXX; ,xxxxxxxxxxxxxx: 'XXXXXXXXXXXc 'xxxxxxxxxxxxxxxxx; ,XXXXXXXXXXO KMl
|
||||
xM. oXXX0,,,,,,,,,,,,,,,,,,kXXXXXXXXXXXK;,,,,,,,,,,,,,,,,,,,,OXXXXXXXXXXX. xMO
|
||||
0M xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. oMK
|
||||
0M dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. oMK
|
||||
xM. lXXXXXkdddddddddddddddddddddddddddddddddddddddddddddddddKXXXXXXXXXXXK kMk
|
||||
:Mc 'XXXXXc'. :XXXXXXXXXXXx XMc
|
||||
W0 OXXXXXX0 ............................................ OXXXXXXXXXX; ,MM.
|
||||
oM' ,XXXXXXX, ............................................ oXXXXXXXXXO 0Mx
|
||||
NK dXXXXXXO ........................................... lXXXXXXXXK. ;MN.
|
||||
,Md kXXXXXXd .......................................... xXXXXXXXX; .NM;
|
||||
cMl kXXXXXXo ......................................... .KXXXXXXK; .XMl
|
||||
lMl dXXXXXXd ..................':lodxxdol:'......... .0XXXXXXK' .XMo
|
||||
:Wx :KXXXXXk. ..............,lkKKKKKKKKKKKKkc'.... .0XXXXXXk. 'NMc
|
||||
.XK. .xXXXXXK: ..........'oKKKKKKKKKKKKKKKKK0l.. lKXXXXX0; oMN'
|
||||
dWo .xXXXXXO; .......,OKKKKKKKKKKKKKKKKKkc. .c0XXXXX0c 'KMx
|
||||
.0Nc .oKXXXXO:. ...'0KKKKKKKKKKKKKK0d:. ,xKXXXXXO: .OM0'
|
||||
,0No. ;xKXXXKx:. .;ldxkOOkkxol;'. 'cxKXXXXX0l. ,OMK;
|
||||
'kWk, ,o0XXXXKko:,.........,:ldOKXXXXXKkc. .lXMO,
|
||||
.cKNx; .,cxOKXXXXXXXXXXXXXXXXXXKko:. .lKMKl.
|
||||
.cOWKd;. ..,;cllooollc:;'. 'ckNM0c.
|
||||
'lONW0xl;.. .,:okXMNOo,
|
||||
.,cdOXWMWNXKK00KKXNMMWXOdc,.
|
||||
.,cokO00Okdc,.
|
||||
((Generated by BDisk. https://bdisk.square-r00t.net/))
|
||||
|
||||
@@ -187,7 +187,7 @@ minicom
|
||||
#mondo # mindi-busybox fails to build 09.23.2016
|
||||
mtd-utils
|
||||
mtr
|
||||
mtree
|
||||
mtree-git
|
||||
multipath-tools
|
||||
myrescue
|
||||
nbd
|
||||
@@ -280,6 +280,7 @@ stress
|
||||
sucrack
|
||||
symlinks
|
||||
sysstat
|
||||
systemd-sysvcompat
|
||||
tcpdump
|
||||
tcpslice
|
||||
tcptraceroute
|
||||
|
||||
@@ -187,7 +187,7 @@ minicom
|
||||
#mondo # mindi-busybox fails to build 09.23.2016
|
||||
mtd-utils
|
||||
mtr
|
||||
mtree
|
||||
mtree-git
|
||||
multipath-tools
|
||||
myrescue
|
||||
nbd
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Commented lines are supported (via a preceding # only).
|
||||
# Packages from the AUR can be specified.
|
||||
# We need to install all X drivers.
|
||||
mtree
|
||||
mtree-git
|
||||
|
||||
@@ -2,5 +2,5 @@ Version: {{ bdisk['ver'] }}
|
||||
Build: {{ build['buildnum'] }}
|
||||
Time: {{ build['time'] }}
|
||||
Machine: {{ hostname }} ({{ distro }})
|
||||
User: {{ build['user'] }}{% if build['realuser'] is defined and build['realuser'] > 0 %} ({{ build['realuser'] }}){% endif %}
|
||||
User: {{ build['user'] }}{% if build['realuser'] is defined and build['realuser']|length > 0 %} ({{ build['realuser'] }}){% endif %}
|
||||
|
||||
|
||||
1
extra/templates/pre-build.d/etc/hostname.j2
Normal file
1
extra/templates/pre-build.d/etc/hostname.j2
Normal file
@@ -0,0 +1 @@
|
||||
{{ bdisk['uxname']|lower }}.loc.lan
|
||||
Reference in New Issue
Block a user