Skip to content
Snippets Groups Projects
Commit 799730ed authored by Avi Kivity's avatar Avi Kivity
Browse files

Add script for creating boot filesystem

parent c02ce240
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/python
import os, sys, struct, optparse, StringIO, ConfigParser
make_option = optparse.make_option
defines = {}
def add_var(option, opt, value, parser):
var, val = value.split('=')
defines[var] = val
opt = optparse.OptionParser(option_list = [
make_option('-o',
dest = 'output',
help = 'write to FILE',
metavar = 'FILE'),
make_option('-d',
dest = 'depends',
help = 'write dependencies to FILE',
metavar = 'FILE',
default = None),
make_option('-m',
dest = 'manifest',
help = 'read manifest from FILE',
metavar = 'FILE'),
make_option('-D',
type = 'string',
help = 'define VAR=DATA',
metavar = 'VAR=DATA',
action = 'callback',
callback = add_var),
])
(options, args) = opt.parse_args()
metadata_size = 128
depends = StringIO.StringIO()
if options.depends:
depends = file(options.depends, 'w')
out = file(options.output, 'w')
print defines
manifest = ConfigParser.SafeConfigParser()
manifest.read(options.manifest)
depends.write('%s: \\\n' % (options.output,))
files = dict([(f, manifest.get('manifest', f, vars = defines))
for f in manifest.options('manifest')])
pos = (len(files) + 1) * metadata_size
for name, hostname in files.items():
size = os.stat(hostname).st_size
metadata = struct.pack('QQ112s', size, pos, name)
out.write(metadata)
pos += size
depends.write('\t%s \\\n' % (hostname,))
out.write(struct.pack('128s', ''))
for name, hostname in files.items():
out.write(file(hostname).read())
depends.write('\n\n')
out.close()
depends.close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment