Mercurial > lcfOS
diff cos/makeinitrd.py @ 32:3a6a9b929db0
Added initial ramdisk and some virtual file system functions
author | windel |
---|---|
date | Fri, 13 Jan 2012 18:18:17 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cos/makeinitrd.py Fri Jan 13 18:18:17 2012 +0100 @@ -0,0 +1,34 @@ +#!/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) +