| void md0Ramdisk()␊ |
| {␊ |
| ␉RAMDiskParam ramdiskPtr;␊ |
| ␉char* filename = 0;␊ |
| ␉int fh = 0;␊ |
| ␉char filename[512];␊ |
| ␉const char* override_filename = 0;␊ |
| ␉int fh = -1;␊ |
| ␉int len;␊ |
| ␉␊ |
| ␉// Look for a ramdisk at Postboot.img (TODO: make configurable)␊ |
| ␉filename = "rd(0,0)/Extra/Postboot.img";␊ |
| ␉if((fh = open(filename, 0)) == -1)␊ |
| ␉if(getValueForKey(kMD0Image, &override_filename, &len, ␊ |
| ␉␉␉␉ &bootInfo->bootConfig))␊ |
| ␉{␊ |
| ␉␉filename = "/Extra/Postboot.img";␉// Check /Extra if not in rd(0,0)␊ |
| ␉␉// Use user specified md0 file␊ |
| ␉␉sprintf(filename, "%s", override_filename);␊ |
| ␉␉fh = open(filename, 0);␊ |
| ␊ |
| ␉␉␊ |
| ␉␉if(fh < 0)␊ |
| ␉␉{␊ |
| ␉␉␉sprintf(filename, "rd(0,0)/Extra/%s");␊ |
| ␉␉␉if((fh = open(filename, 0)) < 0)␊ |
| ␉␉␉{␊ |
| ␉␉␉␉sprintf(filename, "/Extra/%s");␊ |
| ␉␉␉␉fh = open(filename, 0);␊ |
| ␉␉␉␉␊ |
| ␉␉␉}␊ |
| ␉␉}␉␉␊ |
| ␉}␊ |
| ␉␊ |
| ␉␊ |
| ␉if (fh != -1)␊ |
| ␉if(fh < 0)␊ |
| ␉{␊ |
| ␉␉// Fallback to Postboot.img␊ |
| ␉␉sprintf(filename, "rd(0,0)/Extra/Postboot.img");␊ |
| ␉␉fh = open(filename, 0);␊ |
| ␉␉if(fh < 0)␊ |
| ␉␉{␊ |
| ␉␉␉sprintf(filename, "/Extra/Postboot.img");␉// Check /Extra if not in rd(0,0)␊ |
| ␉␉␉fh = open(filename, 0);␊ |
| ␉␉␉␊ |
| ␉␉}␊ |
| ␉}␉␉␊ |
| ␉␊ |
| ␉if (fh >= 0)␊ |
| ␉{␊ |
| ␉␉verbose("Enabling ramdisk %s\n", filename);␊ |
| ␊ |
| ␉␉ramdiskPtr.size = file_size(fh);␊ |
|
| ␉␉␉␉␊ |
| ␉␉␉}␊ |
| ␉␉␉else {␊ |
| ␉␉␉␉verbose("Unable to read ramdisk %s\n", filename);␊ |
| ␉␉␉␉verbose("Unable to read md0 image %s.\n", filename);␊ |
| ␉␉␉}␊ |
| ␉␉␉␊ |
| ␉␉} else {␊ |
| ␉␉␉verbose("Ramdisk %s is empty.\n", filename);␊ |
| ␉␉␉verbose("md0 image %s is empty.\n", filename);␊ |
| ␉␉}␊ |
| ␉␉␊ |
| ␉␉␊ |
| ␉␉close(fh);␊ |
| ␉␉␊ |
| ␉}␊ |
| ␉else {␊ |
| ␉␉verbose("Unable to open %s\n", filename);␊ |
| ␉}␊ |
| }␊ |
| ␊ |
| ␊ |