mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-22 18:22:41 +00:00
vancouver: run script for booting Linux VMs
The setup now uses nitpicker and nit_fb to display several instances of vancouver. The guest OS binaries must be supplied in the '<build-dir>/bin' directory manually. Furthermore, the patch lets launchpad pass Block, Nic, and Rtc to the parent.
This commit is contained in:
parent
3a533779e4
commit
47cc2f8590
@ -1,11 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
* \brief Launchpad child management
|
* \brief Launchpad child management
|
||||||
* \author Norman Feske
|
* \author Norman Feske
|
||||||
|
* \author Markus Partheymueller
|
||||||
* \date 2006-09-01
|
* \date 2006-09-01
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2006-2013 Genode Labs GmbH
|
* Copyright (C) 2006-2013 Genode Labs GmbH
|
||||||
|
* Copyright (C) 2012 Intel Corporation
|
||||||
*
|
*
|
||||||
* This file is part of the Genode OS framework, which is distributed
|
* This file is part of the Genode OS framework, which is distributed
|
||||||
* under the terms of the GNU General Public License version 2.
|
* under the terms of the GNU General Public License version 2.
|
||||||
@ -43,7 +45,7 @@ Launchpad::Launchpad(unsigned long initial_quota)
|
|||||||
"IRQ", "ROM", "LOG", "SIGNAL",
|
"IRQ", "ROM", "LOG", "SIGNAL",
|
||||||
|
|
||||||
/* services expected to got started by init */
|
/* services expected to got started by init */
|
||||||
"Nitpicker", "Init", "Timer", "PCI",
|
"Nitpicker", "Init", "Timer", "PCI", "Block", "Nic", "Rtc",
|
||||||
|
|
||||||
0 /* null-termination */
|
0 /* null-termination */
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#
|
#
|
||||||
# \brief Example for using Vancouver on Genode
|
# \brief Example for using Vancouver on Genode
|
||||||
# \author Norman Feske
|
# \author Norman Feske
|
||||||
|
# \author Markus Partheymueller
|
||||||
# \date 2011-11-21
|
# \date 2011-11-21
|
||||||
#
|
#
|
||||||
# This run script starts the Vancouver VMM booting the multiboot modules
|
# This run script starts the Vancouver VMM booting the multiboot modules
|
||||||
@ -20,47 +21,28 @@ if {![have_spec nova]} {
|
|||||||
set build_components {
|
set build_components {
|
||||||
core init
|
core init
|
||||||
drivers/timer
|
drivers/timer
|
||||||
|
drivers/rtc
|
||||||
vancouver
|
vancouver
|
||||||
|
drivers/framebuffer
|
||||||
|
server/nitpicker
|
||||||
|
server/liquid_framebuffer
|
||||||
|
drivers/nic
|
||||||
|
server/nic_bridge
|
||||||
|
drivers/pci
|
||||||
|
drivers/input
|
||||||
|
drivers/usb
|
||||||
|
app/launchpad
|
||||||
|
server/nitlog
|
||||||
}
|
}
|
||||||
|
|
||||||
build $build_components
|
build $build_components
|
||||||
|
|
||||||
create_boot_directory
|
# write vancouver vm config file
|
||||||
|
set vm_cfg_fd [open "bin/vm_linux.cfg" w]
|
||||||
#
|
puts $vm_cfg_fd {<config>
|
||||||
# Generate config
|
|
||||||
#
|
|
||||||
|
|
||||||
append config {
|
|
||||||
<config>
|
|
||||||
<parent-provides>
|
|
||||||
<service name="ROM"/>
|
|
||||||
<service name="RAM"/>
|
|
||||||
<service name="IRQ"/>
|
|
||||||
<service name="IO_MEM"/>
|
|
||||||
<service name="IO_PORT"/>
|
|
||||||
<service name="CAP"/>
|
|
||||||
<service name="PD"/>
|
|
||||||
<service name="RM"/>
|
|
||||||
<service name="CPU"/>
|
|
||||||
<service name="LOG"/>
|
|
||||||
</parent-provides>
|
|
||||||
<default-route>
|
|
||||||
<any-service> <parent/> <any-child/> </any-service>
|
|
||||||
</default-route>}
|
|
||||||
|
|
||||||
append config {
|
|
||||||
<start name="timer">
|
|
||||||
<resource name="RAM" quantum="1M"/>
|
|
||||||
<provides><service name="Timer"/></provides>
|
|
||||||
</start>
|
|
||||||
<start name="vancouver">
|
|
||||||
<binary name="vancouver"/>
|
|
||||||
<resource name="RAM" quantum="65M"/>
|
|
||||||
<config>
|
|
||||||
<machine>
|
<machine>
|
||||||
<mem start="0x0" end="0xa0000"/>
|
<mem start="0x0" end="0x9a000"/>
|
||||||
<mem start="0x100000" end="0x2000000"/>
|
<mem start="0x100000" end="0xfffff000"/>
|
||||||
<!--<ioio/>-->
|
<!--<ioio/>-->
|
||||||
<nullio io_base="0x80" />
|
<nullio io_base="0x80" />
|
||||||
<pic io_base="0x20" elcr_base="0x4d0"/>
|
<pic io_base="0x20" elcr_base="0x4d0"/>
|
||||||
@ -73,7 +55,8 @@ append config {
|
|||||||
<rtc io_base="0x70" irq="8"/>
|
<rtc io_base="0x70" irq="8"/>
|
||||||
<serial io_base="0x3f8" irq="0x4" host_serial="0x4711"/>
|
<serial io_base="0x3f8" irq="0x4" host_serial="0x4711"/>
|
||||||
<hostsink host_dev="0x4712" buffer="80"/>
|
<hostsink host_dev="0x4712" buffer="80"/>
|
||||||
<vga io_base="0x03c0"/>
|
<vga io_base="0x03c0" fb_size="4096" readonly="1"/>
|
||||||
|
|
||||||
<vbios_disk/>
|
<vbios_disk/>
|
||||||
<vbios_keyboard/>
|
<vbios_keyboard/>
|
||||||
<vbios_mem/>
|
<vbios_mem/>
|
||||||
@ -88,13 +71,164 @@ append config {
|
|||||||
<vcpu/> <halifax/> <vbios/> <lapic/>
|
<vcpu/> <halifax/> <vbios/> <lapic/>
|
||||||
</machine>
|
</machine>
|
||||||
<multiboot>
|
<multiboot>
|
||||||
<rom name="bootstrap"/>
|
<rom name="munich"/>
|
||||||
<rom name="fiasco"/>
|
<rom name="bzImage" cmdline="root=/dev/ram0 console=tty0 vga=0x314 earlyprintk=ttyS0"/>
|
||||||
<rom name="sigma0.foc"/>
|
<rom name="ramdisk"/>
|
||||||
<rom name="core.foc"/>
|
|
||||||
</multiboot>
|
</multiboot>
|
||||||
|
</config>}
|
||||||
|
close $vm_cfg_fd
|
||||||
|
|
||||||
|
# write launchpad config file
|
||||||
|
set launchpad_cfg_fd [open "bin/launchpad-config" w]
|
||||||
|
puts $launchpad_cfg_fd {<config>
|
||||||
|
<launcher><ram_quota>128M</ram_quota><filename>init</filename>
|
||||||
|
<config>
|
||||||
|
<parent-provides>
|
||||||
|
<service name="ROM"/>
|
||||||
|
<service name="RAM"/>
|
||||||
|
<service name="IRQ"/>
|
||||||
|
<service name="IO_MEM"/>
|
||||||
|
<service name="IO_PORT"/>
|
||||||
|
<service name="CAP"/>
|
||||||
|
<service name="PD"/>
|
||||||
|
<service name="RM"/>
|
||||||
|
<service name="CPU"/>
|
||||||
|
<service name="LOG"/>
|
||||||
|
<service name="SIGNAL"/>
|
||||||
|
<service name="Nitpicker"/>
|
||||||
|
<service name="Timer"/>
|
||||||
|
<service name="Nic"/>
|
||||||
|
<service name="Block"/>
|
||||||
|
<service name="Rtc"/>
|
||||||
|
</parent-provides>
|
||||||
|
|
||||||
|
<start name="vancouver_fb">
|
||||||
|
<binary name="liquid_fb"/>
|
||||||
|
<resource name="RAM" quantum="16M"/>
|
||||||
|
<provides>
|
||||||
|
<service name="Framebuffer"/>
|
||||||
|
<service name="Input"/>
|
||||||
|
</provides>
|
||||||
|
<route>
|
||||||
|
<any-service><parent/></any-service>
|
||||||
|
</route>
|
||||||
|
<config>
|
||||||
|
<animate>off</animate>
|
||||||
|
<x>10</x><y>10</y>
|
||||||
|
<width>640</width>
|
||||||
|
<height>480</height>
|
||||||
</config>
|
</config>
|
||||||
</start>
|
</start>
|
||||||
|
|
||||||
|
<start name="vancouver">
|
||||||
|
<binary name="vancouver"/>
|
||||||
|
<resource name="RAM" quantum="64M"/>
|
||||||
|
<route>
|
||||||
|
<service name="Timer"><parent/></service>
|
||||||
|
<service name="Nic"><parent/></service>
|
||||||
|
<service name="Input"><child name="vancouver_fb"/></service>
|
||||||
|
<service name="Framebuffer"><child name="vancouver_fb"/></service>
|
||||||
|
<any-service><parent/></any-service>
|
||||||
|
</route>
|
||||||
|
<configfile name="vm_linux.cfg"/>
|
||||||
|
</start>
|
||||||
|
</config>
|
||||||
|
</launcher>
|
||||||
|
</config>}
|
||||||
|
close $launchpad_cfg_fd
|
||||||
|
|
||||||
|
create_boot_directory
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generate config
|
||||||
|
#
|
||||||
|
|
||||||
|
append config {
|
||||||
|
<config verbose="yes">
|
||||||
|
<parent-provides>
|
||||||
|
<service name="ROM"/>
|
||||||
|
<service name="RAM"/>
|
||||||
|
<service name="IRQ"/>
|
||||||
|
<service name="IO_MEM"/>
|
||||||
|
<service name="IO_PORT"/>
|
||||||
|
<service name="CAP"/>
|
||||||
|
<service name="PD"/>
|
||||||
|
<service name="RM"/>
|
||||||
|
<service name="CPU"/>
|
||||||
|
<service name="LOG"/>
|
||||||
|
<service name="SIGNAL"/>
|
||||||
|
</parent-provides>
|
||||||
|
<default-route>
|
||||||
|
<any-service> <parent/> <any-child/> </any-service>
|
||||||
|
</default-route>
|
||||||
|
|
||||||
|
<start name="timer">
|
||||||
|
<resource name="RAM" quantum="1M"/>
|
||||||
|
<provides><service name="Timer"/></provides>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="rtc_drv">
|
||||||
|
<resource name="RAM" quantum="1M"/>
|
||||||
|
<provides><service name="Rtc"/></provides>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="pci_drv">
|
||||||
|
<resource name="RAM" quantum="3M"/>
|
||||||
|
<provides><service name="PCI"/></provides>
|
||||||
|
<route> <any-service><parent/></any-service> </route>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="nic_drv">
|
||||||
|
<resource name="RAM" quantum="3M"/>
|
||||||
|
<provides><service name="Nic"/></provides>
|
||||||
|
<route> <any-service><any-child/><parent/></any-service> </route>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="nic_bridge">
|
||||||
|
<resource name="RAM" quantum="3M"/>
|
||||||
|
<provides><service name="Nic"/></provides>
|
||||||
|
<route>
|
||||||
|
<service name="Nic"><child name="nic_drv"/></service>
|
||||||
|
<any-service><parent/></any-service>
|
||||||
|
</route>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="vesa_drv">
|
||||||
|
<resource name="RAM" quantum="8M"/>
|
||||||
|
<provides><service name="Framebuffer"/></provides>
|
||||||
|
<route>
|
||||||
|
<service name="Timer"><child name="timer"/></service>
|
||||||
|
<service name="PCI"><any-child/></service>
|
||||||
|
<any-service><parent/></any-service>
|
||||||
|
</route>
|
||||||
|
<config width="1024" height="768" depth="16" buffered="no"/>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="ps2_drv">
|
||||||
|
<resource name="RAM" quantum="3M"/>
|
||||||
|
<provides><service name="Input"/></provides>
|
||||||
|
<route> <any-service><parent/></any-service> </route>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="nitpicker">
|
||||||
|
<resource name="RAM" quantum="8M"/>
|
||||||
|
<route>
|
||||||
|
<service name="Timer"> <child name="timer"/></service>
|
||||||
|
<service name="Framebuffer"><child name="vesa_drv"/></service>
|
||||||
|
<service name="Input"> <child name="ps2_drv"/></service>
|
||||||
|
<any-service><parent/></any-service>
|
||||||
|
</route>
|
||||||
|
<provides><service name="Nitpicker"/></provides>
|
||||||
|
</start>
|
||||||
|
|
||||||
|
<start name="launchpad">
|
||||||
|
<resource name="RAM" quantum="2500M"/>
|
||||||
|
<configfile name="launchpad-config"/>
|
||||||
|
<route>
|
||||||
|
<service name="Nic"><child name="nic_bridge"/></service>
|
||||||
|
<any-service><any-child/><parent/></any-service>
|
||||||
|
</route>
|
||||||
|
</start>
|
||||||
</config>}
|
</config>}
|
||||||
|
|
||||||
install_config $config
|
install_config $config
|
||||||
@ -106,21 +240,40 @@ install_config $config
|
|||||||
# generic modules
|
# generic modules
|
||||||
set boot_modules {
|
set boot_modules {
|
||||||
core init
|
core init
|
||||||
|
vesa_drv
|
||||||
|
nitpicker
|
||||||
|
liquid_fb
|
||||||
|
ps2_drv
|
||||||
|
pci_drv
|
||||||
|
nic_drv
|
||||||
|
nic_bridge
|
||||||
|
usb_drv
|
||||||
timer
|
timer
|
||||||
|
rtc_drv
|
||||||
vancouver
|
vancouver
|
||||||
|
launchpad
|
||||||
|
launchpad-config
|
||||||
|
nitlog
|
||||||
|
vm_linux.cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
set guest_os_binaries { munich bzImage ramdisk }
|
||||||
# Add files for a simple Fiasco.OC setup to core's ROM service
|
|
||||||
#
|
set guest_os_binary_missing 0
|
||||||
# The files are copied from a Genode build directory for the Fiasco.OC base
|
foreach binary $guest_os_binaries {
|
||||||
# platform.
|
if {![file exists bin/$binary]} {
|
||||||
#
|
puts stderr "Error: guest OS binary \"bin/$binary\" does not exist"
|
||||||
append boot_modules { bootstrap fiasco sigma0.foc core.foc }
|
set guest_os_binary_missing 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if {$guest_os_binary_missing} { exit 1 }
|
||||||
|
|
||||||
|
append boot_modules $guest_os_binaries
|
||||||
|
|
||||||
build_boot_image $boot_modules
|
build_boot_image $boot_modules
|
||||||
|
|
||||||
append qemu_args " -m 256 "
|
append qemu_args " -m 256 "
|
||||||
append qemu_args " -nographic "
|
append qemu_args " -cpu phenom "
|
||||||
|
|
||||||
run_genode_until forever
|
run_genode_until forever
|
||||||
|
Loading…
x
Reference in New Issue
Block a user