mirror of
https://github.com/genodelabs/genode.git
synced 2025-01-03 04:26:45 +00:00
92db5d2c4e
relocation is required, to avoid overlapping phdr in the elf binaries, but sel4 will fail to boot if bender relocates the images at the end of physical memory. Limit the physical relocation address to a fixed 256M value, so that sel4 will work. Issue #2451
95 lines
2.2 KiB
Plaintext
95 lines
2.2 KiB
Plaintext
proc binary_name_ld_lib_so { } { return "ld-sel4.lib.so" }
|
|
proc binary_name_core_o { } { return "core-sel4.o" }
|
|
proc binary_name_timer { } { return "pit_timer_drv" }
|
|
|
|
proc kernel_files { } { return sel4 }
|
|
|
|
|
|
proc run_boot_string { } { return "\n\rStarting node #0" }
|
|
proc core_link_address { } { return "0x02000000" }
|
|
|
|
|
|
##
|
|
# Populate boot directory with binaries on hw
|
|
#
|
|
proc run_boot_dir {binaries} {
|
|
|
|
#
|
|
# Build kernel and dynamic linker on demand, if not yet present in
|
|
# '[run_dir]/genode/'
|
|
#
|
|
set kernel_arg ""
|
|
set ld_arg ""
|
|
if {![file exists [run_dir]/genode/sel4]} { set kernel_arg "kernel/sel4" }
|
|
if {![file exists [run_dir]/genode/ld.lib.so]} { set ld_arg "lib/ld/sel4" }
|
|
set targets "$kernel_arg $ld_arg"
|
|
|
|
if {[llength $targets]} { build $targets }
|
|
|
|
if {$kernel_arg != ""} {
|
|
file copy -force [pwd]/bin/sel4 [run_dir]/genode/sel4
|
|
}
|
|
|
|
build_core_image $binaries
|
|
|
|
#
|
|
# Move kernel files to distinct location within the boot directory so that
|
|
# we can remove [run_dir]/genode after the core image has been built.
|
|
#
|
|
file copy -force [run_dir]/genode/sel4 [run_dir]/sel4
|
|
exec rm -r [run_dir]/genode
|
|
|
|
if {[have_include "image/iso"] || [have_include "image/disk"]} {
|
|
#
|
|
# Install isolinux/GRUB files and bender
|
|
#
|
|
install_iso_bootloader_to_run_dir
|
|
|
|
#
|
|
# Generate GRUB config file
|
|
#
|
|
set fh [open "[run_dir]/boot/grub/menu.lst" "WRONLY CREAT TRUNC"]
|
|
puts $fh "timeout 0"
|
|
puts $fh "default 0"
|
|
puts $fh "\ntitle Genode on seL4"
|
|
puts $fh " kernel /boot/bender phys_max=256M"
|
|
puts $fh " module /sel4 disable_iommu"
|
|
puts $fh " module /image.elf"
|
|
|
|
close $fh
|
|
}
|
|
|
|
run_image [run_dir]/image.elf
|
|
|
|
if {[have_include "load/tftp"]} {
|
|
#
|
|
# Install PXE bootloader pulsar
|
|
#
|
|
install_pxe_bootloader_to_run_dir
|
|
|
|
#
|
|
# Generate pulsar config file
|
|
#
|
|
set fh [open "[run_dir]/config-52-54-00-12-34-56" "WRONLY CREAT TRUNC"]
|
|
puts $fh " exec /boot/bender phys_max=256M"
|
|
puts $fh " load /sel4 disable_iommu"
|
|
puts $fh " load /image.elf"
|
|
close $fh
|
|
|
|
generate_tftp_config
|
|
}
|
|
|
|
if {[have_include "load/ipxe"]} {
|
|
create_ipxe_iso_config
|
|
update_ipxe_boot_dir
|
|
create_symlink_for_iso
|
|
}
|
|
}
|
|
|
|
|
|
##
|
|
# Base source archive within depot
|
|
#
|
|
proc base_src { } { return base-sel4 }
|
|
|