#include #include #include #include _PROTOTYPE(void error, (char *message) ); int main(int narg,char *argv[]) { unsigned size; char mbr[512]; int fd; if(narg!=3) error("Usage: vdisk size"); size=atoi(argv[1]); if((fd=open(argv[2],O_RDONLY))<0) error("Error ocurred during an I/O operation"); read(fd,mbr,sizeof(mbr)); close(fd); if((fd=open("hd0",O_RDWR | O_CREAT))<0) error("Error ocurred during an I/O operation" ); write(fd,mbr,sizeof(mbr)); lseek(fd,size*512-4,SEEK_SET); write(fd,&size,sizeof(size)); close(fd); } void error(char *message) { fprintf(stderr,"%s\n",message); exit(1); }