TUD-OS / NRE

NOVA runtime environment (official branch)
GNU General Public License v2.0
33 stars 12 forks source link

boot/vmmng on real machine doesn't work #46

Open ironista opened 6 years ago

ironista commented 6 years ago

Hi. I'm trying to boot vmmng on a machine with a CPU Intel with VT-x enabled. I have created the bootable iso using novaboot ./b bochs boot/vmmng

Generated iso is successfully booted on qemu 2.0.0, while in my case I got the following error

[    root] Welcome to NRE rev b0c08bd-dirty built with gcc 4.8.1
[    root] Hip checksum is valid
[    root] SEL: 134217728, EXC: 32, VMI: 256, GSI: 128
[    root] CPU runs @ 2717 Mhz, bus @ 66 Mhz
[    root] Virtual memory for mappings:
[    root]  0006:f000 .. 0fff:ffff (255.5 MiB)
[    root] Virtual memory for RAM:
[    root]  1000:0000 .. 1fff:ffff (256.0 MiB)
[    root] Physical memory:
[    root]  0010:0000 .. 003f:ffff (3.0 MiB)
[    root]  0ff0:0000 .. 0fff:ffff (1.0 MiB)
[    root]  0365:1000 .. 0fed:ffff (200.5 MiB)
[    root]  0180:0000 .. 018c:7fff (800.0 KiB)
[    root] Memory map:
[    root]  addr=0000:0000 size=0x000009f000 type=+1 aux=0000:0000
[    root]  addr=0009:f800 size=0x0000000800 type=+2 aux=0000:0000
[    root]  addr=000d:c000 size=0x0000024000 type=+2 aux=0000:0000
[    root]  addr=0010:0000 size=0x000fde0000 type=+1 aux=0000:0000
[    root]  addr=0fee:0000 size=0x000001f000 type=+3 aux=0000:0000
[    root]  addr=0fef:f000 size=0x0000001000 type=+4 aux=0000:0000
[    root]  addr=0ff0:0000 size=0x0000100000 type=+1 aux=0000:0000
[    root]  addr=f000:0000 size=0x0008000000 type=+2 aux=0000:0000
[    root]  addr=fec0:0000 size=0x0000010000 type=+2 aux=0000:0000
[    root]  addr=fee0:0000 size=0x0000001000 type=+2 aux=0000:0000
[    root]  addr=fffe:0000 size=0x0000020000 type=+2 aux=0000:0000
[    root]  addr=018c:8000 size=0x00000a1ab5 type=-2 aux=1010:1060 ((cd)/bin/apps/root)
[    root]  addr=0196:a000 size=0x000005ba1d type=-2 aux=1010:1073 ((cd)/bin/apps/acpi provides=acpi)
[    root]  addr=019c:6000 size=0x0000061064 type=-2 aux=1010:1094 ((cd)/bin/apps/keyboard provides=keyboard)
[    root]  addr=01a2:8000 size=0x000005e577 type=-2 aux=1010:10bd ((cd)/bin/apps/reboot provides=reboot)
[    root]  addr=01a8:7000 size=0x000005dd9f type=-2 aux=1010:10e2 ((cd)/bin/apps/pcicfg provides=pcicfg)
[    root]  addr=01ae:5000 size=0x00000695ad type=-2 aux=1010:1107 ((cd)/bin/apps/timer provides=timer)
[    root]  addr=01b4:f000 size=0x00000fa66e type=-2 aux=1010:112a ((cd)/bin/apps/console provides=console)
[    root]  addr=01c4:a000 size=0x00000682c0 type=-2 aux=1010:1151 ((cd)/bin/apps/network provides=network)
[    root]  addr=01cb:3000 size=0x0000059ecd type=-2 aux=1010:1178 ((cd)/bin/apps/sysinfo)
[    root]  addr=01d0:d000 size=0x0000075196 type=-2 aux=1010:118e ((cd)/bin/apps/vmmng mods=all lastmod)
[    root]  addr=01d8:3000 size=0x00000eedb1 type=-2 aux=1010:11b3 ((cd)/bin/apps/vancouver)
[    root]  addr=01e7:2000 size=0x0000055175 type=-2 aux=1010:11cb ((cd)/bin/apps/hello_world)
[    root]  addr=01ec:8000 size=0x000005f492 type=-2 aux=1010:11e5 ((cd)/dist/imgs/escape.bin)
[    root]  addr=01f2:8000 size=0x00000161ea type=-2 aux=1010:11ff ((cd)/dist/imgs/escape_romdisk.bin)
[    root]  addr=01f3:f000 size=0x0000016319 type=-2 aux=1010:1221 ((cd)/dist/imgs/escape_rtc.bin)
[    root]  addr=01f5:6000 size=0x0000022b35 type=-2 aux=1010:123f ((cd)/dist/imgs/escape_fs.bin)
[    root]  addr=01f7:9000 size=0x000074d000 type=-2 aux=1010:125c ((cd)/dist/imgs/escape.iso)
[    root]  addr=026c:6000 size=0x0000003930 type=-2 aux=1010:1276 ((cd)/bin/apps/guest_munich)
[    root]  addr=026c:a000 size=0x00001d34b0 type=-2 aux=1010:1291 ((cd)/dist/imgs/bzImage-3.1.0-32)
[    root]  addr=0289:e000 size=0x0000361807 type=-2 aux=1010:12b1 ((cd)/dist/imgs/initrd-js.lzma)
[    root]  addr=02c0:0000 size=0x0000260640 type=-2 aux=1010:12cf ((cd)/dist/imgs/tinycore-vmlinuz)
[    root]  addr=02e6:1000 size=0x00007eb4a4 type=-2 aux=1010:12ef ((cd)/dist/imgs/tinycore-core.gz)
[    root]  addr=0364:d000 size=0x0000000110 type=-2 aux=1010:130f ((cd)/escape.vmconfig)
[    root]  addr=0364:e000 size=0x00000000a3 type=-2 aux=1010:1324 ((cd)/linux.vmconfig)
[    root]  addr=0364:f000 size=0x00000000a9 type=-2 aux=1010:1338 ((cd)/tinycore-linux.vmconfig)
[    root]  addr=0365:0000 size=0x000000001a type=-2 aux=1010:1355 ((cd)/hello_world.vmconfig)
[    root]  addr=0040:0000 size=0x0001400000 type=-1 aux=0000:0000
[   timer] TIMER: Found 4 usable timers.
[   timer] TIMER: More timers than CPUs. Use only 1 timers.
[   timer] TIMER: HPET ticks with 14318179 HZ.
[   timer] TIMER: 189+6287/8192 TSC ticks per timer tick.
[   timer] TIMER: timestamp: 1508774478 secs
[   timer] TIMER: date: TIMER: date: 23.10.2017 16:01:18
[   timer] TIMER: Timer 0 -> IRQ 23 (assigned 0x800000 ack 0x1).
[   timer] Listening to GSI 23
[ console] Exception: Capacity exceeded (14): Unable to allocate 134217728 units aligned to 1
[ console] Backtrace:
[ console]  0028:e654
[ console]  0029:426f
[ console]  0029:443b
[ console]  0026:28ed
[ console]  0021:e4e0
[ console]  0027:6c5d
[ console]  0028:9508
[ console]  0028:25cb
[ console]  0026:6085
[ console]  0027:fc1e
[    root] Child '(cd)/bin/apps/console': Pd terminated with exit code 1 on cpu 0
[    root] Backtrace:
[    root]  0028:ecfd
[    root]  0028:ef7f
[    root]  0026:8592
[    root]  0029:443b
[    root]  0026:28ed
[    root]  0021:e4e0
[    root]  0027:6c5d
[    root]  0028:9508
[    root]  0028:25cb
[    root]  0026:6085
[    root]  0027:fc1e

So I've decoded the backtrace using ./b trace=console and found


0x29426f nre::DataSpace::create(nre::DataSpaceDesc&, unsigned int*, unsigned int*)(T) +  0x64f = 0x293c20 in ??:?

0x29443b       nre::DataSpace::create()(T) +   0x1b = 0x294420 in ??:?

0x2628ed bool StaticReceiver<VBE>::receive_static<MessageHostOp>(Device*, MessageHostOp&)(W) +  0x54d = 0x2623a0 in ??:?

0x21e4e0 DirectPciDevice::DirectPciDevice(Motherboard&, unsigned int, unsigned int, bool, bool, unsigned int, unsigned int, unsigned int)(W) +  0x3e0 = 0x21e100 in ??:?

0x276c5d      __parameter_dpci_function(T) +  0x1ed = 0x276a70 in ??:?

0x289508                     VBE::VBE()(T) + 0x1718 = 0x287df0 in ??:?

0x2825cb ConsoleService::ConsoleService(char const*, unsigned int)(T) +  0x95b = 0x281c70 in ??:?

0x266085                           main(T) +  0x125 = 0x265f60 in ??:?

0x28ecfd                          abort(T) +    0xd = 0x28ecf0 in ??:?

---

0x28ef7f            verbose_terminate()(t) +   0x2f = 0x28ef50 in Startup.cc:?

0x268592 __cxxabiv1::__terminate(void (*)())(T) +    0x2 = 0x268590 in /opt/NRE/cross/x86_32/src/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:35

0x29443b       nre::DataSpace::create()(T) +   0x1b = 0x294420 in ??:?

0x2628ed bool StaticReceiver<VBE>::receive_static<MessageHostOp>(Device*, MessageHostOp&)(W) +  0x54d = 0x2623a0 in ??:?

0x21e4e0 DirectPciDevice::DirectPciDevice(Motherboard&, unsigned int, unsigned int, bool, bool, unsigned int, unsigned int, unsigned int)(W) +  0x3e0 = 0x21e100 in ??:?

0x276c5d      __parameter_dpci_function(T) +  0x1ed = 0x276a70 in ??:?

0x289508                     VBE::VBE()(T) + 0x1718 = 0x287df0 in ??:?

0x2825cb ConsoleService::ConsoleService(char const*, unsigned int)(T) +  0x95b = 0x281c70 in ??:?

0x266085                           main(T) +  0x125 = 0x265f60 in ??:?

Someone of you have experienced with this kind of issue? Thank you.

ironista commented 6 years ago

Error was caused setting x86_32 as NRE_TARGET. Shouldn't it work even on a 64 bit cpu? Anyway, no issue with x86_64.

Nils-TUD commented 6 years ago

It looks like it runs out of memory with x86_32. 256 MiB also seems a bit low for todays machines. Perhaps the remaining RAM is available above 0x100000000? Because this can't be used by x86_32 (it doesn't support PAE).