preserve partition table when using -linux option
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@716 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
52302d7274
commit
41b9be476c
6
hw/pc.c
6
hw/pc.c
|
@ -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,
|
||||||
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 */
|
||||||
|
|
Loading…
Reference in a new issue