c++ - IncludeOS hello world 失败

标签 c++ kvm conan unikernel

我想调查IncludeOS and run their hello world .我在 Ubuntu 上并安装了 required dependencies .程序因错误而退出。 我在这里做错了什么?

apt-get install python3-pip python3-dev git cmake clang-6.0 gcc nasm make qemu
pip3 install setuptools wheel conan psutil jsonschema
conan config install https://github.com/includeos/conan_config.git

我按照安装说明进行操作并使用了 clang-6.0-linux-x86_64 配置文件,这是 Linux 推荐的配置文件。配置文件已列出 here

git clone https://github.com/includeos/hello_world.git
mkdir your_build_dir && cd "$_"
conan install ../hello_world -pr <your_conan_profile>
source activate.sh
cmake ../hello_world
cmake --build .
boot hello

用boot命令调用时程序崩溃

调用 boot hello -dv 时的输出(一些路径改变)(详细,调试)

* <boot>:  VERBOSE mode set for environment
* <VMRunner>:  Loading default config. 
* <VMRunner>:  Trying to load config from /path/to/vm.vanilla.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " Single virtio nic with vanilla cpu features " 
* <VMRunner>:  Trying to load config from ./vm.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " {'net': [], 'image': 'service.img', 'mem': 128} " 
* <VMRunner>:  {'description': 'Single virtio nic with vanilla cpu features', 'net': [], 'image': 'service.img', 'mem': 128} 
* <boot>:  Args to pass to VM:  []
* <boot>:  1 VM initialized. Commencing build- and boot...
* <VMRunner>:  Loading default config. 
* <VMRunner>:  Trying to load config from path/to/vm.vanilla.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " Single virtio nic with vanilla cpu features " 
* <VMRunner>:  Trying to load config from ./vm.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " {'net': [], 'image': 'service.img', 'mem': 128} " 
* <VMRunner>:  {'description': 'Single virtio nic with vanilla cpu features', 'net': [], 'image': 'service.img', 'mem': 128} 
* <boot>:  Booting in debug mode
* <boot>:  No file extension. Trying to boot as kernel
* <VMRunner>:  VM boot, timeout:  None multiboot:  True Kernel_args:   image_name:  hello 
* <VMRunner>:  Booting with multiboot: True kernel_args:   image_name: hello 
* <qemu>:  KVM ON 
* <VMRunner>:  File magic:  hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

* <VMRunner>:  Found 64-bit ELF, need chainloader 
Looking for chainloader: 
Found /path/to/chainloader Type:  /path/to/chainloader: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped

* <VMRunner>:  Booting hello directly without bootloader (multiboot / -kernel args) 
* <VMRunner>:  Command: sudo qemu-system-x86_64 --enable-kvm -cpu kvm64,+rdrand,+rdseed -kernel /path/to/chainloader -append "" -initrd hello "" -s -m 128 -nographic 
[ WARNING ] Running with sudo
* <qemu>:  Started process PID  1343 
* <VMRunner>:  Event loop done. Exit status: None poll: 1 
* <VMRunner>:  No poll - getting final output 
* <VMRunner>:  Exit called with status 1 ( PROGRAM_FAILURE ) 
* <VMRunner>:  Message: process exited Keep running:  False 
* <VMRunner>:  Calling on_exit 
* <VMRunner>:  Program exit called with status 1 ( PROGRAM_FAILURE ) 
* <VMRunner>:  Stopping all vms 

[ PROGRAM_FAILURE ] process exited

最佳答案

你能确认这个系统上安装了 qemu-system-x86_64 吗?我想我在没有安装 qemu 的情况下运行时遇到了同样的问题。

(conanenv) kristian@kristian-Zephyrus:~/git/hello_world/build$ boot hello -v
* <boot>:  VERBOSE mode set for environment
* <VMRunner>:  Loading default config. 
* <VMRunner>:  Trying to load config from /home/kristian/.conan/data/vmrunner/0.16.0/includeos/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/vmrunner/vm.vanilla.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " Single virtio nic with vanilla cpu features " 
* <VMRunner>:  Trying to load config from ./vm.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " {'net': [], 'image': 'service.img', 'mem': 128} " 
* <VMRunner>:  {'description': 'Single virtio nic with vanilla cpu features', 'net': [], 'image': 'service.img', 'mem': 128} 
* <boot>:  Args to pass to VM:  []
* <boot>:  1 VM initialized. Commencing build- and boot...
* <VMRunner>:  Loading default config. 
* <VMRunner>:  Trying to load config from /home/kristian/.conan/data/vmrunner/0.16.0/includeos/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/vmrunner/vm.vanilla.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " Single virtio nic with vanilla cpu features " 
* <VMRunner>:  Trying to load config from ./vm.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " {'net': [], 'image': 'service.img', 'mem': 128} " 
* <VMRunner>:  {'description': 'Single virtio nic with vanilla cpu features', 'net': [], 'image': 'service.img', 'mem': 128} 
* <boot>:  No file extension. Trying to boot as kernel
* <VMRunner>:  VM boot, timeout:  None multiboot:  True Kernel_args:   image_name:  hello 
* <VMRunner>:  Booting with multiboot: True kernel_args:   image_name: hello 
* <qemu>:  KVM ON 
* <VMRunner>:  File magic:  hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

* <VMRunner>:  Found 64-bit ELF, need chainloader 
Looking for chainloader: 
Found /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader Type:  /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped

* <VMRunner>:  Booting hello directly without bootloader (multiboot / -kernel args) 
* <VMRunner>:  Command: sudo qemu-system-x86_64 --enable-kvm -cpu kvm64,+rdrand,+rdseed -kernel /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader -append "" -initrd hello "" -m 128 -nographic 
[ WARNING ] Running with sudo
* <qemu>:  Started process PID  14648 
* <VMRunner>:  Event loop done. Exit status: None poll: 1 
* <VMRunner>:  No poll - getting final output 
* <VMRunner>:  Exit called with status 1 ( PROGRAM_FAILURE ) 
* <VMRunner>:  Message: process exited Keep running:  False 
* <VMRunner>:  Calling on_exit 
* <VMRunner>:  Program exit called with status 1 ( PROGRAM_FAILURE ) 
* <VMRunner>:  Stopping all vms 

sudo apt-get 安装 qemu

(conanenv) kristian@kristian-Zephyrus:~/git/hello_world/build$ boot hello -v
* <boot>:  VERBOSE mode set for environment
* <VMRunner>:  Loading default config. 
* <VMRunner>:  Trying to load config from /home/kristian/.conan/data/vmrunner/0.16.0/includeos/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/vmrunner/vm.vanilla.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " Single virtio nic with vanilla cpu features " 
* <VMRunner>:  Trying to load config from ./vm.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " {'net': [], 'image': 'service.img', 'mem': 128} " 
* <VMRunner>:  {'description': 'Single virtio nic with vanilla cpu features', 'net': [], 'image': 'service.img', 'mem': 128} 
* <boot>:  Args to pass to VM:  []
* <boot>:  1 VM initialized. Commencing build- and boot...
* <VMRunner>:  Loading default config. 
* <VMRunner>:  Trying to load config from /home/kristian/.conan/data/vmrunner/0.16.0/includeos/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/vmrunner/vm.vanilla.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " Single virtio nic with vanilla cpu features " 
* <VMRunner>:  Trying to load config from ./vm.json 
* <VMRunner>:  Successfully loaded vm config 
* <VMRunner>:  " {'net': [], 'image': 'service.img', 'mem': 128} " 
* <VMRunner>:  {'description': 'Single virtio nic with vanilla cpu features', 'net': [], 'image': 'service.img', 'mem': 128} 
* <boot>:  No file extension. Trying to boot as kernel
* <VMRunner>:  VM boot, timeout:  None multiboot:  True Kernel_args:   image_name:  hello 
* <VMRunner>:  Booting with multiboot: True kernel_args:   image_name: hello 
* <qemu>:  KVM ON 
* <VMRunner>:  File magic:  hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

* <VMRunner>:  Found 64-bit ELF, need chainloader 
Looking for chainloader: 
Found /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader Type:  /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped

* <VMRunner>:  Booting hello directly without bootloader (multiboot / -kernel args) 
* <VMRunner>:  Command: sudo qemu-system-x86_64 --enable-kvm -cpu kvm64,+rdrand,+rdseed -kernel /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader -append "" -initrd hello "" -m 128 -nographic 
[ WARNING ] Running with sudo
* <qemu>:  Started process PID  16622 
* Multiboot begin: 0x9500
* Multiboot cmdline @ 0x22e019: /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader ""
* Multiboot end: 0x22e09e
* Module list @ 0x22e000
         * Module @ 0x22f000
         * Args: hello ""
         * End: 0x393978
 * Multiboot end: 0x393978
<Multiboot>Booted with multiboot
        * Boot flags: 0x24f
        * Valid memory (130559 Kib):
          0x00000000 - 0x0009fbff (639 Kib)
          0x00100000 - 0x07fdffff (129920 Kib)

        * Booted with parameters @ 0x22e019: /home/kristian/.conan/data/chainloader/0.15.1-5/includeos/latest/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/bin/chainloader ""
        * Multiboot provided memory map  (7 entries @ 0x9000)
          0x0000000000 - 0x000009fbff FREE (639 Kb.)
          0x000009fc00 - 0x000009ffff RESERVED (1 Kb.)
          0x00000f0000 - 0x00000fffff RESERVED (64 Kb.)
          0x0000100000 - 0x0007fdffff FREE (129920 Kb.)
          0x0007fe0000 - 0x0007ffffff RESERVED (128 Kb.)
          0x00feffc000 - 0x00feffffff RESERVED (16 Kb.)
          0x00fffc0000 - 0x00ffffffff RESERVED (256 Kb.)

<Multiboot>OS loaded with 1 modules
        * hello "" @ 0x22f000 - 0x393978, size: 1460600b
* Multiboot begin: 0x9500
* Multiboot end: 0x326840
[x86_64 PC] constructor
[ Machine ] Initializing heap
[ Machine ] Main memory detected as 130441024 b
[ Machine ] Reserving 1048576 b for machine use
<Multiboot>Booted with multiboot
        * Boot flags: 0x24f
        * Valid memory (130559 Kib):
          0x00000000 - 0x0009fbff (639 Kib)
          0x00100000 - 0x07fdffff (129920 Kib)

        * Booted with parameters @ 0x8000: hello ""
        * Multiboot provided memory map  (7 entries @ 0x9000)
          0x0000000000 - 0x000009fbff FREE (639 Kb.)
          0x000009fc00 - 0x000009ffff RESERVED (1 Kb.)
          0x00000f0000 - 0x00000fffff RESERVED (64 Kb.)
          0x0000100000 - 0x0007fdffff FREE (129920 Kb.)
          0x0007fe0000 - 0x0007ffffff RESERVED (128 Kb.)
          0x00feffc000 - 0x00feffffff RESERVED (16 Kb.)
          0x00fffc0000 - 0x00ffffffff RESERVED (256 Kb.)
================================================================================
 IncludeOS 0.15.1-5 (x86_64 / 64-bit)
 +--> Running [ Hello world - OS included ]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Hello world
       [ main ] returned with status 0

^C[ WARNING ] Process interrupted - stopping vms
* <VMRunner>:  Exit called with status 70 ( ABORT ) 
* <VMRunner>:  Message: Process terminated by user Keep running:  False 
* <VMRunner>:  Calling on_exit 
* <VMRunner>:  Program exit called with status 70 ( ABORT ) 
* <VMRunner>:  Stopping all vms 
* <VMRunner>:  Stopping hello PID 16622 with -SIGTERM 
* <VMRunner>:   + child process  16623 

[ ABORT ] Process terminated by user

关于c++ - IncludeOS hello world 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58101236/

相关文章:

c++ - 通过引用传递结构并分配字符串

c++ - 如何为使用 makefile 构建的整个项目生成一个大型依赖映射?

virtual-machine - 如何获取VM(KVM)的CPU使用率

linux - 不使用 SSH (KVM) 获取 VM 的 CPU 使用率

c++ - 使用 conan 和 cmake 选择文件

c++ - 在 C++ 中通过子类访问父类(super class)的 protected 静态成员

c++ - 将位图保存到视频(libavcodec ffmpeg)

virtualization - 如何在 KVM (libvirt/virsh) 上设置启动顺序?

linux - Q : conan error: Incorrect 'clang' , 不是 CMake 检测到的那个: 'GNU' 当我使用选项 "-s build_type=Debug"

c++ - 将 yaml-cpp 与 conan 链接