44 lines
1.5 KiB
Plaintext
44 lines
1.5 KiB
Plaintext
|
|
:name: X86-KVM Linux
|
||
|
|
:description: This script runs Linux on a bare x86 platform in KVM.
|
||
|
|
|
||
|
|
$name?="x86-kvm"
|
||
|
|
mach create $name
|
||
|
|
|
||
|
|
$bin?=@https://dl.antmicro.com/projects/renode/virt_x86--linux.bin-s_7459328-fec50f291c065d8b13ce4d49abc96ea71af349df
|
||
|
|
machine LoadPlatformDescription @platforms/cpus/x86-kvm.repl
|
||
|
|
|
||
|
|
showAnalyzer uart
|
||
|
|
|
||
|
|
macro reset
|
||
|
|
"""
|
||
|
|
# skip the header -- based on akvm copy_kernel()
|
||
|
|
sysbus LoadBinary $bin 0x100000 sysbus.cpu 0x4000
|
||
|
|
|
||
|
|
# setup boot params (aka Zero Page) - for more info please refer to https://docs.kernel.org/arch/x86/zero-page.html
|
||
|
|
sysbus WriteASCIIString 0x90880 "console=ttyS0 root=/dev/vda earlyprintk loglevel=7 rootwait"
|
||
|
|
# pass address of cmdline in `cmd_line_ptr` field
|
||
|
|
sysbus WriteDoubleWord 0x90228 0x90880
|
||
|
|
# pass (RAM size - 1MiB) / 1024
|
||
|
|
sysbus WriteDoubleWord 0x901e0 0x7fc00
|
||
|
|
|
||
|
|
# init flat protected mode
|
||
|
|
# for more info please refer to kernel boot protocol
|
||
|
|
sysbus.cpu SetDescriptor CS 0x10 0x0 0xffffffff 0xc09b00
|
||
|
|
sysbus.cpu SetDescriptor DS 0x18 0x0 0xffffffff 0xc09300
|
||
|
|
sysbus.cpu SetDescriptor ES 0x18 0x0 0xffffffff 0xc09300
|
||
|
|
sysbus.cpu SetDescriptor SS 0x18 0x0 0xffffffff 0xc09300
|
||
|
|
sysbus.cpu SetDescriptor FS 0x18 0x0 0xffffffff 0xc09300
|
||
|
|
sysbus.cpu SetDescriptor GS 0x18 0x0 0xffffffff 0xc09300
|
||
|
|
|
||
|
|
sysbus.cpu EIP 0x100000
|
||
|
|
|
||
|
|
# address to kernel param args
|
||
|
|
sysbus.cpu ESI 0x90000
|
||
|
|
|
||
|
|
# enable protected mode
|
||
|
|
sysbus.cpu CR0 0x60000011
|
||
|
|
|
||
|
|
sysbus.cpu EFLAGS 0x2
|
||
|
|
"""
|
||
|
|
runMacro $reset
|