diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 159a056d6..3ca02f9d1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,15 +39,11 @@ jobs: if: ${{ matrix.os == 'macos-latest' }} run: | brew update - brew tap-new --no-git hermitcore/homebrew - brew extract --version 6.0.0 qemu hermitcore/homebrew - brew install hermitcore/homebrew/qemu@6.0.0 - brew install nasm + brew install qemu nasm - name: Install QEMU, NASM, GNU make (windows) if: ${{ matrix.os == 'windows-latest' }} run: | - choco install nasm make - choco install qemu --version 2021.5.5 + choco install qemu nasm make echo "C:\Program Files\qemu" >> $GITHUB_PATH echo "C:\Program Files\NASM" >> $GITHUB_PATH - name: Build loader @@ -57,7 +53,7 @@ jobs: - name: Test dev profile run: | qemu-system-x86_64 -display none -smp 1 -m 128M -serial stdio \ - -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand \ + -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader \ -initrd target/x86_64-unknown-hermit/debug/rusty_demo - name: Build release profile @@ -66,7 +62,7 @@ jobs: - name: Test release profile run: | qemu-system-x86_64 -display none -smp 1 -m 128M -serial stdio \ - -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand \ + -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader \ -initrd target/x86_64-unknown-hermit/release/rusty_demo - name: Build httpd with DHCP support diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 81a003fb4..01b813474 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -87,10 +87,10 @@ test:qemu: script: - lscpu - kvm-ok - - qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader -initrd target/x86_64-unknown-hermit/debug/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm - - qemu-system-x86_64 -display none -smp 2 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader -initrd target/x86_64-unknown-hermit/debug/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm - - qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader -initrd target/x86_64-unknown-hermit/release/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm - - qemu-system-x86_64 -display none -smp 2 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader -initrd target/x86_64-unknown-hermit/release/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr,rdrand -enable-kvm + - qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader -initrd target/x86_64-unknown-hermit/debug/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand -enable-kvm + - qemu-system-x86_64 -display none -smp 2 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader -initrd target/x86_64-unknown-hermit/debug/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand -enable-kvm + - qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader -initrd target/x86_64-unknown-hermit/release/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand -enable-kvm + - qemu-system-x86_64 -display none -smp 2 -m 64M -serial stdio -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader -initrd target/x86_64-unknown-hermit/release/rusty_demo -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand -enable-kvm tags: - privileged diff --git a/README.md b/README.md index 4acd7c159..4e0cc80d7 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ Afterwards, the loader is stored in `target/x86_64-unknown-hermit-loader/debug/` As final step, the unikernel application `app` can be booted with following command: ```bash -qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio -kernel path_to_loader/rusty-loader -initrd path_to_app/app -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr +qemu-system-x86_64 -display none -smp 1 -m 64M -serial stdio -kernel path_to_loader/rusty-loader -initrd path_to_app/app -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr ``` It is important to enable the processor features _fsgsbase_ and _rdtscp_ because it is a prerequisite to boot RustyHermit. @@ -202,7 +202,7 @@ Currently, RustyHermit does only support network interfaces through [virtio](htt To use it, you have to start RustyHermit in Qemu with following command: ```bash -$ qemu-system-x86_64 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,fxsr \ +$ qemu-system-x86_64 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr \ -enable-kvm -display none -smp 1 -m 1G -serial stdio \ -kernel path_to_loader/rusty-loader \ -initrd path_to_app/app \