view python/makeinitrd.py @ 276:56d37ed4b4d2

phaa
author Windel Bouwman
date Mon, 16 Sep 2013 21:51:17 +0200
parents 8b2e5f3cd579
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)