Commit 41b9be47 authored by bellard's avatar bellard
Browse files

preserve partition table when using -linux option


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@716 c046a42c-6fe2-441c-8c8c-71466251a162
parent 52302d72
...@@ -313,6 +313,7 @@ void pc_init(int ram_size, int vga_ram_size, int boot_device, ...@@ -313,6 +313,7 @@ void pc_init(int ram_size, int vga_ram_size, int boot_device,
if (linux_boot) { if (linux_boot) {
uint8_t bootsect[512]; uint8_t bootsect[512];
uint8_t old_bootsect[512];
if (bs_table[0] == NULL) { if (bs_table[0] == NULL) {
fprintf(stderr, "A disk image must be given for 'hda' when booting a Linux kernel\n"); fprintf(stderr, "A disk image must be given for 'hda' when booting a Linux kernel\n");
...@@ -326,6 +327,11 @@ void pc_init(int ram_size, int vga_ram_size, int boot_device, ...@@ -326,6 +327,11 @@ void pc_init(int ram_size, int vga_ram_size, int boot_device,
exit(1); exit(1);
} }
if (bdrv_read(bs_table[0], 0, old_bootsect, 1) >= 0) {
/* copy the MSDOS partition table */
memcpy(bootsect + 0x1be, old_bootsect + 0x1be, 0x40);
}
bdrv_set_boot_sector(bs_table[0], bootsect, sizeof(bootsect)); bdrv_set_boot_sector(bs_table[0], bootsect, sizeof(bootsect));
/* now we can load the kernel */ /* now we can load the kernel */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment