view cos/utils/makeinitrd.py @ 126:bbf4c9b138d4

Changes to elf reading
author Windel Bouwman
date Sun, 13 Jan 2013 12:14:27 +0100
parents 35cc54e078dd
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)