diff --git a/.github/workflows/aarch64.yml b/.github/workflows/aarch64.yml
index 02fefdb3ad5b4fc18b61e86fc747dbad1336a224..021ab2271938d320105a555476e888e3f1b4bd11 100644
--- a/.github/workflows/aarch64.yml
+++ b/.github/workflows/aarch64.yml
@@ -46,7 +46,7 @@ jobs:
       - name: Build dev profile
         run: cargo build -Zbuild-std=core,alloc,std,panic_abort -Zbuild-std-features=compiler-builtins-mem --target aarch64-unknown-hermit --package hello_world
       - name: Build loader
-        run: make arch=aarch64
+        run: cargo xtask build --arch aarch64
         working-directory: loader
         env:
           HERMIT_APP: ../../../../target/aarch64-unknown-hermit/debug/hello_world
@@ -55,6 +55,6 @@ jobs:
           sudo apt-get update
           sudo apt-get install qemu-system-aarch64
       - name: Test kernel
-        run: qemu-system-aarch64 -semihosting -display none -serial stdio -kernel target/aarch64-unknown-hermit-loader/debug/rusty-loader -machine virt,gic-version=max -m 512M -cpu max -smp 1
+        run: qemu-system-aarch64 -semihosting -display none -serial stdio -kernel target/aarch64/debug/rusty-loader -machine virt,gic-version=max -m 512M -cpu max -smp 1
         working-directory: loader
         
diff --git a/.github/workflows/x86.yml b/.github/workflows/x86.yml
index 9244c4ed43fd74ce97e98731e45e373d78acc960..bf4e9508f877303bd4e58ba0e6225c1a089c13b1 100644
--- a/.github/workflows/x86.yml
+++ b/.github/workflows/x86.yml
@@ -36,12 +36,12 @@ jobs:
         run: |
           brew update
           brew install qemu nasm
-      - name: Install QEMU, NASM, GNU make (windows)
+      - name: Install QEMU, NASM (windows)
         if: ${{ matrix.os == 'windows-latest' }}
         run: |
           choco install qemu --version 2021.12.15
           echo "C:\Program Files\qemu" >> $GITHUB_PATH
-          choco install nasm make
+          choco install nasm
           echo "C:\Program Files\NASM" >> $GITHUB_PATH
       - name: Checkout rusty-hermit
         uses: actions/checkout@v3
@@ -67,18 +67,19 @@ jobs:
         working-directory: libhermit-rs
         run: cargo test --lib --target x86_64-unknown-linux-gnu
       - name: Build loader
-        run: make -C loader release=1
+        run: cargo xtask build --arch x86_64 --release
+        working-directory: loader
       - name: Test dev profile
         run: |
           qemu-system-x86_64 -display none -smp 1 -m 128M -serial stdio \
             -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr \
             -device isa-debug-exit,iobase=0xf4,iosize=0x04 \
-            -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader \
+            -kernel loader/target/x86_64/release/rusty-loader \
             -initrd target/x86_64-unknown-hermit/debug/rusty_demo
       - name: Integration tests (ubuntu)
         working-directory: libhermit-rs
         if: ${{ matrix.os == 'ubuntu-latest' }}
-        run: cargo test --tests --no-fail-fast -- --bootloader_path=../loader/target/x86_64-unknown-hermit-loader/release/rusty-loader
+        run: cargo test --tests --no-fail-fast -- --bootloader_path=../loader/target/x86_64/release/rusty-loader
         continue-on-error: true
       - name: Build release profile
         run: cargo build -Zbuild-std=core,alloc,std,panic_abort -Zbuild-std-features=compiler-builtins-mem --target x86_64-unknown-hermit --release
@@ -87,7 +88,7 @@ jobs:
           qemu-system-x86_64 -display none -smp 1 -m 128M -serial stdio \
             -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr \
             -device isa-debug-exit,iobase=0xf4,iosize=0x04 \
-            -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader \
+            -kernel loader/target/x86_64/release/rusty-loader \
             -initrd target/x86_64-unknown-hermit/release/rusty_demo
       - name: Build minimal profile
         if: ${{ matrix.os == 'ubuntu-latest' }}
@@ -102,7 +103,7 @@ jobs:
             -M microvm,x-option-roms=off,pit=off,pic=off,rtc=on \
             -global virtio-mmio.force-legacy=on -nodefaults -no-user-config \
             -display none -smp 1 -m 64M -serial stdio \
-            -kernel loader/target/x86_64-unknown-hermit-loader/release/rusty-loader \
+            -kernel loader/target/x86_64/release/rusty-loader \
             -initrd target/x86_64-unknown-hermit/release/hello_world \
             -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr \
             -device isa-debug-exit,iobase=0xf4,iosize=0x04 \
diff --git a/tests/hermit_test_runner.py b/tests/hermit_test_runner.py
index 7fcb573a2d6e5609f3da0face2c9452670f9ae64..ab07755f5b241cf237021921506ed67faaa3ca6d 100755
--- a/tests/hermit_test_runner.py
+++ b/tests/hermit_test_runner.py
@@ -88,7 +88,7 @@ class QemuTestRunner(TestRunner):
     def __init__(self,
                  test_exe_path: str,
                  timeout_seconds: int,
-                 bootloader_path: str = '../loader/target/x86_64-unknown-hermit-loader/debug/rusty-loader',
+                 bootloader_path: str = '../loader/target/x86_64/debug/rusty-loader',
                  num_cores=1,
                  memory_in_megabyte=512,
                  gdb_enabled=False):