view cos/makeinitrd.py @ 37:5c20bd53cccd

Cleanup
author windel
date Mon, 16 Jan 2012 21:38:55 +0100
parents 3a6a9b929db0
children
line wrap: on
line source

#!/usr/bin/python

# Script for generation of an initial ramdisk that contains 
# the first programs to run.

import struct
import sys

if len(sys.argv) < 3:
   print('Usage: {0} output file1 [file2] ...'.format(sys.argv[0]))
   sys.exit(1)

outputfilename = sys.argv[1]
inputFileNames = sys.argv[2:]

with open(outputfilename, 'wb') as outputFile:
   # Amount of files:
   outputFile.write(struct.pack('<I', 0x1337babe))
   outputFile.write(struct.pack('<I', len(inputFileNames)))
   for inputFileName in inputFileNames:
      # Magic:
      outputFile.write(struct.pack('<I', 0xcafebabe))

      # Filename:
      fn = inputFileName.encode('ascii')
      outputFile.write(struct.pack('<I', len(fn)))
      outputFile.write(fn)

      # Data:
      with open(inputFileName, 'rb') as inputFile:
         data = inputFile.read()
      outputFile.write(struct.pack('<I', len(data)))
      outputFile.write(data)