if {![have_spec x86] || [have_spec linux]} { puts "Platform is unsupported." exit 0 } proc depot_user {} { return [get_cmd_arg --depot-user genodelabs] } create_boot_directory import_from_depot genodelabs/src/[base_src] \ genodelabs/pkg/sculpt proc config_system_content {} { return {\ } } proc config_trace_subject_reporter_content {} { return {\ } } install_config { } [config_trace_subject_reporter_content] { } [config_system_content] { ### start ### } foreach file [glob "[genode_dir]/repos/gems/run/sculpt/*.config"] { file copy -force $file [run_dir]/genode/ } # # Override files normally obtained from depot archive with the most current # version found in the Genode source tree. This way, we don't need to # rebuild the corresponding depot archives each time we tweak one of the # files. This is just a hack to accelerate the work flow. # file copy -force [genode_dir]/repos/gems/run/sculpt/vimrc [run_dir]/genode/ file copy -force [genode_dir]/repos/gems/run/sculpt/machine.vbox [run_dir]/genode/ file copy -force [genode_dir]/repos/gems/recipes/raw/drivers_managed-pc/drivers.config \ [run_dir]/genode/drivers.config file copy -force [genode_dir]/repos/os/src/server/input_filter/en_us.chargen \ [run_dir]/genode/en_us.chargen file copy -force [genode_dir]/repos/os/src/server/input_filter/de.chargen \ [run_dir]/genode/de.chargen file copy -force [genode_dir]/repos/gems/recipes/raw/drivers_managed-pc/input_filter.config \ [run_dir]/genode/input_filter.config file copy -force [genode_dir]/repos/gems/recipes/raw/depot_download/depot_download.config \ [run_dir]/genode/depot_download.config file copy -force [genode_dir]/depot/[depot_user]/pubkey [run_dir]/genode/[depot_user]_pubkey file copy -force [genode_dir]/depot/[depot_user]/download [run_dir]/genode/[depot_user]_download exec gzip -dc [genode_dir]/repos/gems/run/sculpt/machine.vdi.gz > [run_dir]/genode/machine.vdi # # Package-management support # # The package management has two aspects, installation and deployment. # Packages are installed via the 'install' runtime, which takes the # information about the packages to install from 'config/installation'. # Once installed, packages can be deployed via the 'deploy' runtime. # This runtime can be tailored by modifying 'config/deploy/config'. # proc current_pkg { pkg } { return $pkg/[_current_depot_archive_version pkg $pkg] } # # Depot packages to be included in the default installation # set pkgs_to_install { sculpt-installation } set fd [open [run_dir]/genode/installation w] puts $fd "" foreach pkg $pkgs_to_install { puts $fd " " } puts $fd "" close $fd # # Configuration of deploy runtime # # This configuration is not provided as a file at run/sculpt/ because some # parts need to be filled in at run-script execution time, in particular the # current versions of the packages to deploy. # append depot_deploy_config { } set fd [open [run_dir]/genode/deploy.config w] puts $fd $depot_deploy_config close $fd # # Create and run boot image # append boot_modules { } build_boot_image $boot_modules # enable Qemu networking, usable via the nic_drv append qemu_args " -m 768 -net nic,model=e1000 -net user " # attach small SATA disk to Qemu to experiment with file-system access set disk_image "bin/sculpt-ahci.raw" if {![file exists bin/sculpt-ahci.raw]} { puts stderr "creating toy disk image $disk_image for use in Qemu" catch { exec dd if=/dev/zero of=$disk_image bs=1M count=512 } } append qemu_args " -device ahci,id=ahci " append qemu_args " -drive id=hdd,file=$disk_image,format=raw,if=none -device ide-hd,drive=hdd,bus=ahci.0 " run_genode_until forever