diff --git a/redoxer.sh b/redoxer.sh
index 3b00c981e56561e7fb2712bd34be2ce1339a94c3..9de24a9690adcd3c869401f35063f345cb4dc647 100755
--- a/redoxer.sh
+++ b/redoxer.sh
@@ -90,8 +90,6 @@ function redoxfs_mount {
     done
 }
 
-name="$(basename "$1")"
-
 if [ ! -f build/bootloader.bin ]
 then
     echo "building bootloader" >&2
@@ -139,13 +137,25 @@ mkdir -p "build/${uuid}"
 redoxfs_mount "build/${uuid}.bin" "build/${uuid}"
 
 cp "target/${TARGET}/release/redoxerd" "build/${uuid}/bin/redoxerd"
+
+if [[ "$1" == */* ]]
+then
+    name="$(basename "$1")"
+    cp "$1" "build/${uuid}/bin/${name}"
+    echo "${name}" >> "build/${uuid}/etc/redoxerd"
+    shift
+fi
+
 for arg in "$@"
 do
     echo "${arg}" >> "build/${uuid}/etc/redoxerd"
 done
 
+
 redoxfs_unmount "build/${uuid}"
 
+set +e
+
 qemu-system-x86_64 \
     -enable-kvm \
     -cpu host \
@@ -161,7 +171,10 @@ qemu-system-x86_64 \
     -nographic \
     -vga none \
     -drive file="build/${uuid}.bin",format=raw
+status="$(("$?" / 2))"
 
 echo
-echo "## redoxer $@ ##"
+echo "## redoxer (${status}) ##"
 cat "build/${uuid}.log"
+
+exit "${status}"
diff --git a/src/bin/redoxerd.rs b/src/bin/redoxerd.rs
index 95f557edc79d52b53adeb9961da4d46ad4c40b02..9acab031417417694e4e3407e602d705bc3405da 100644
--- a/src/bin/redoxerd.rs
+++ b/src/bin/redoxerd.rs
@@ -147,8 +147,7 @@ pub fn main() {
         Err(err) => {
             eprintln!("redoxerd: {}", err);
             // Exit with error using qemu device
-            let status = 0x21;
-            Pio::<u8>::new(0x501).write(status >> 1);
+            Pio::<u8>::new(0x501).write(1);
         }
     }
 }