Example #1
0
int main(int argc, char **argv) {
	_u8 error = 0;
	mbr_t *mbr;
	
	printf("MBR info v0.1\n");
	printf("Author: Tiago Natel aka i4k\n");
	
	if (argc < 2) {
		fprintf(stderr, "Invalid number of arguments...\n");
		fprintf(stderr, "Usage: %s <mbr-file or disk device>\n", *argv);
		return 1;
	}
	
	printf("Size of mbr struct: %d\n", sizeof(mbr_t));
	
	error = readFile(argv[1]);
	
	if (!error) {
		fprintf(stderr, "Failed to read file: %s\n", argv[1]);
		return 1;
	}
	
	mbr = (mbr_t *) mbrbytes;
	
	printMBR(mbr);
	
	return 0;
}
Example #2
0
int iinit(struct proc* p, int dev)
{
    struct inode* rootNode;
    struct superblock sb;
    // TODO: change ot iterate over all partitions
    cprintf("kernal by Asaf and Ilana \n");
    initlock(&icache.lock, "icache");

    rootNode = p->cwd;
    // acquire(&icache.lock);

    initMbr(dev);
    printMBR(&mbrI);
    cprintf("booting from %d \n", bootfrom);
    if (bootfrom == -1) {
        panic("no bootable partition");
    }
    rootNode->part = &(partitions[bootfrom]);
    int i;
    for (i = 0; i < NPARTITIONS; i++) {
        readsb(dev, i);
        sb = sbs[i];
        cprintf("sb: offset %d size %d nblocks %d ninodes %d nlog %d logstart %d inodestart %d bmap start %d\n",
                sb.offset,
                sb.size,
                sb.nblocks,
                sb.ninodes,
                sb.nlog,
                sb.logstart,
                sb.inodestart,
                sb.bmapstart);
    }

    // set root inode

    // release(&icache.lock);

    // cprintf("root node init %d \n",rootNode->part->offset);

    return bootfrom;
}