On Sun, May 07, 2006 at 11:53:46PM -0400, Jim C. Brown wrote: > Known Issues: > > booting is not supported - this will require passing a separate bootsector.
I stand corrected. New patch that adds support for booting partition images. Apply this on top of the first one. Also attached is the required bootsector.h (this contains the actual code of the bootsector). Bootsector code for the MBR was taken from http://www.cpqlinux.com/mbr.html. Also attached is a tarball of the sources I used to create bootsector.h -- Infinite complexity begets infinite beauty. Infinite precision begets infinite perfection.
--- ../qemu.cvs/block-part-raw.c Sun May 7 23:54:03 2006 +++ block-part-raw.c Mon May 8 00:40:32 2006 @@ -23,6 +23,7 @@ */ #include "vl.h" #include "block_int.h" +#include "bootsector.h" #ifdef __sun__ #include <sys/dkio.h> @@ -40,7 +41,7 @@ return 0; } -static int part_raw_open(BlockDriverState *bs, const char *filename) +static int part_raw_open(BlockDriverState *bs, const char *nfilename) { BDRVPartRawState *s = bs->opaque; int fd; @@ -53,6 +54,7 @@ int rv; #endif int head, cylinder, sector; + const char * filename = &(nfilename[5]); fd = open(filename, O_RDWR | O_BINARY | O_LARGEFILE); if (fd < 0) { @@ -102,6 +104,7 @@ /* set up fake MBR */ memset(s->mbr_data, 0, 63*512); + memcpy(s->mbr_data, mbr_boot_sector, 512); /* first partition is bootable */ s->mbr_data[446] = 0x80; /* start head */
const char mbr_boot_sector[512] = { 0xfa, 0x33, 0xc0, 0x8e, 0xd0, 0xbc, 0x0, 0x7c, 0x8b, 0xf4, 0x50, 0x7, 0x50, 0x1f, 0xfb, 0xfc, 0xbf, 0x0, 0x6, 0xb9, 0x0, 0x1, 0xf2, 0xa5, 0xea, 0x1d, 0x6, 0x0, 0x0, 0xbe, 0xbe, 0x7, 0xb3, 0x4, 0x80, 0x3c, 0x80, 0x74, 0xe, 0x80, 0x3c, 0x0, 0x75, 0x1c, 0x83, 0xc6, 0x10, 0xfe, 0xcb, 0x75, 0xef, 0xcd, 0x18, 0x8b, 0x14, 0x8b, 0x4c, 0x2, 0x8b, 0xee, 0x83, 0xc6, 0x10, 0xfe, 0xcb, 0x74, 0x1a, 0x80, 0x3c, 0x0, 0x74, 0xf4, 0xbe, 0x8b, 0x6, 0xac, 0x3c, 0x0, 0x74, 0xb, 0x56, 0xbb, 0x7, 0x0, 0xb4, 0xe, 0xcd, 0x10, 0x5e, 0xeb, 0xf0, 0xeb, 0xfe, 0xbf, 0x5, 0x0, 0xbb, 0x0, 0x7c, 0xb8, 0x1, 0x2, 0x57, 0xcd, 0x13, 0x5f, 0x73, 0xc, 0x33, 0xc0, 0xcd, 0x13, 0x4f, 0x75, 0xed, 0xbe, 0xa3, 0x6, 0xeb, 0xd3, 0xbe, 0xc2, 0x6, 0xbf, 0xfe, 0x7d, 0x81, 0x3d, 0x55, 0xaa, 0x75, 0xc7, 0x8b, 0xf5, 0xea, 0x0, 0x7c, 0x0, 0x0, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x0, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
bootsector.tgz
Description: application/tar-gz
_______________________________________________ Qemu-devel mailing list Qemu-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/qemu-devel