Message ID | 4B2BB7E6.9040705@codemonkey.ws |
---|---|
State | New |
Headers | show |
On Fri, Dec 18, 2009 at 11:12:06AM -0600, Anthony Liguori wrote: > BTW, the following works: > > sudo x86_64-softmmu/qemu-system-x86_64 -hda ~/images/linux.img -snapshot > -m 512 -net nic,model=rtl8139,macaddr=56:54:32:12:34:56 -net > nic,model=e1000,macaddr=56:54:32:12:34:57 -net > nic,model=virtio,macaddr=56:54:32:12:34:58 -boot menu=on -net tap > -kernel /boot/vmlinuz-2.6.27.38-170.2.113.fc10.x86_64 -initrd > /boot/initrd-2.6.27.38-170.2.113.fc10.x86_64.img -append "ro" > > Using the F12 menu, I can select any of the three option roms and it > network boots or I can select 'Legacy Option ROM' and it will boot from > -kernel. That is exceedingly cool :-) We just need to give it a proper > PnP header and advertise it as a BEV device so that we can give it a > meaningful name. As it stands now, if the command line has -kernel, it will always boot from the kernel regardless of the item one selects in the boot menu. (Legacy roms are always run - the boot menu only selects the order wrt BCVs.) However, converting the rom into a BEV will indeed make it selectable. Also, to see a truly interesting boot menu - try appending something like the following to the command line: -fda disk.dsk -fdb odin1440.img -hdd dos-drivec -cdrom ../../iso/win-vista.iso -drive file=../../iso/win-xp.iso,media=cdrom,index=1 SeaBIOS allows one to boot from either floppy, any harddrive, and any cdrom. -Kevin
Kevin O'Connor wrote: > On Fri, Dec 18, 2009 at 11:12:06AM -0600, Anthony Liguori wrote: > >> BTW, the following works: >> >> sudo x86_64-softmmu/qemu-system-x86_64 -hda ~/images/linux.img -snapshot >> -m 512 -net nic,model=rtl8139,macaddr=56:54:32:12:34:56 -net >> nic,model=e1000,macaddr=56:54:32:12:34:57 -net >> nic,model=virtio,macaddr=56:54:32:12:34:58 -boot menu=on -net tap >> -kernel /boot/vmlinuz-2.6.27.38-170.2.113.fc10.x86_64 -initrd >> /boot/initrd-2.6.27.38-170.2.113.fc10.x86_64.img -append "ro" >> >> Using the F12 menu, I can select any of the three option roms and it >> network boots or I can select 'Legacy Option ROM' and it will boot from >> -kernel. That is exceedingly cool :-) We just need to give it a proper >> PnP header and advertise it as a BEV device so that we can give it a >> meaningful name. >> > > As it stands now, if the command line has -kernel, it will always boot > from the kernel regardless of the item one selects in the boot menu. > Ah, I spoke too soon, you are indeed correct. I was wondering how that could possibly work :-) > (Legacy roms are always run - the boot menu only selects the order wrt > BCVs.) However, converting the rom into a BEV will indeed make it > selectable. > > Also, to see a truly interesting boot menu - try appending something > like the following to the command line: > > -fda disk.dsk -fdb odin1440.img -hdd dos-drivec -cdrom ../../iso/win-vista.iso -drive file=../../iso/win-xp.iso,media=cdrom,index=1 > > SeaBIOS allows one to boot from either floppy, any harddrive, and any > cdrom. > Very cool stuff! We just have to figure out a way to let a user specify which of these devices they want to boot from via the qemu command line. Maybe something that encodes a bus type and then an address on the bus or something like that. I think that works okay for PCI and IDE buses. For fw_cfg roms, I guess we could also just expose the filename as the address on the fw_cfg bus. Regards, Anthony Liguori
diff --git a/hw/fw_cfg.c b/hw/fw_cfg.c index 0492f5f..fe9c527 100644 --- a/hw/fw_cfg.c +++ b/hw/fw_cfg.c @@ -309,8 +309,8 @@ int fw_cfg_add_file(FWCfgState *s, const char *dir, const c } s->files->f[index].size = cpu_to_be32(len); s->files->f[index].select = cpu_to_be16(FW_CFG_FILE_FIRST + index); - fprintf(stderr, "%s: #%d: %s (%d bytes)\n", __FUNCTION__, - index, s->files->f[index].name, len); + FW_CFG_DPRINTF("%s: #%d: %s (%d bytes)\n", __FUNCTION__, + index, s->files->f[index].name, len); s->files->count = cpu_to_be32(index+1);