diff --git a/.gitignore b/.gitignore index 645f4238..5b9b187b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ net0.pcap *.dd .llvmbox /test/generated_tests +/disk-image diff --git a/crates/console/build.sh b/crates/console/build.sh index 62cec4d7..2d3eba73 100755 --- a/crates/console/build.sh +++ b/crates/console/build.sh @@ -1,14 +1,16 @@ #!/usr/bin/env bash set -ex +cd "$(dirname "$0")" BIN="console" TARGET=aarch64-unknown-none-softfloat PROFILE=${PROFILE-"release"} cargo rustc --profile="${PROFILE}" \ - --target=${TARGET} -- \ - -C relocation-model=static + --target="${TARGET}" \ + --bin="${BIN}" \ + -- -C relocation-model=static if test "$PROFILE" = "dev" ; then BINARY=../../target/${TARGET}/debug/${BIN} @@ -17,3 +19,7 @@ else fi cp "${BINARY}" "${BIN}".elf + +if test -n "$DESTDIR" ; then + cp "${BINARY}" "$DESTDIR/" +fi diff --git a/crates/display-server/build.sh b/crates/display-server/build.sh index f7429e6b..58554c8d 100755 --- a/crates/display-server/build.sh +++ b/crates/display-server/build.sh @@ -1,14 +1,16 @@ #!/usr/bin/env bash set -ex +cd "$(dirname "$0")" BIN="display-server" TARGET=aarch64-unknown-none-softfloat PROFILE=${PROFILE-"release"} cargo rustc --profile="${PROFILE}" \ - --target=${TARGET} -- \ - -C relocation-model=static + --target="${TARGET}" \ + --bin="${BIN}" \ + -- -C relocation-model=static if test "$PROFILE" = "dev" ; then BINARY=../../target/${TARGET}/debug/${BIN} @@ -17,3 +19,7 @@ else fi cp "${BINARY}" "${BIN}".elf + +if test -n "$DESTDIR" ; then + cp "${BINARY}" "$DESTDIR/" +fi diff --git a/crates/display-server/src/main.rs b/crates/display-server/src/main.rs index ab280be5..9728d74d 100644 --- a/crates/display-server/src/main.rs +++ b/crates/display-server/src/main.rs @@ -795,7 +795,7 @@ fn handle_conns(mut fb: framebuffer::Framebuffer, server_socket: FileDesc) { } fn spawn_console() { - let path = b"/console.elf"; + let path = b"/console"; let file = ulib::sys::openat(3, path, 0, 0).unwrap(); ulib::sys::spawn_elf(&ulib::sys::SpawnArgs { fd: file, diff --git a/crates/doomgeneric/build.sh b/crates/doomgeneric/build.sh new file mode 100755 index 00000000..f671e04f --- /dev/null +++ b/crates/doomgeneric/build.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -ex +cd "$(dirname "$0")" + +BIN="doomgeneric" +TARGET=aarch64-unknown-none-softfloat +PROFILE=${PROFILE-"release"} + +CC=clang cargo rustc --profile="${PROFILE}" \ + --target="${TARGET}" \ + --bin="${BIN}" + +if test "$PROFILE" = "dev" ; then + BINARY=../../target/${TARGET}/debug/${BIN} +else + BINARY=../../target/${TARGET}/${PROFILE}/${BIN} +fi + +cp "${BINARY}" "${BIN}".elf + +if test -n "$DESTDIR" ; then + cp "${BINARY}" "$DESTDIR/" +fi diff --git a/crates/init/build.sh b/crates/init/build.sh index 2cc5376d..2c2c1fc2 100755 --- a/crates/init/build.sh +++ b/crates/init/build.sh @@ -1,28 +1,27 @@ #!/usr/bin/env bash set -ex +cd "$(dirname "$0")" BIN="init" TARGET=aarch64-unknown-none-softfloat PROFILE=${PROFILE-"release"} -mkdir -p fs +FS_PATH="../../disk-image" +mkdir -p "$FS_PATH" -# ./shell.rs -# cp shell.elf fs/ -# ./ls.rs -# cp ls.elf fs/ ./sharedMemTest.rs -cp sharedMemTest.elf fs/ +cp sharedMemTest.elf "$FS_PATH/" -cargo run -q -p initfs --bin util \ - -- create --compress --out fs.arc --root fs fs --verbose +cargo run -q -p initfs --bin util --release \ + -- create --compress --out fs.arc --root "$FS_PATH" "$FS_PATH" --verbose # cargo clean cargo rustc --profile="${PROFILE}" \ - --target=${TARGET} -- \ - -C relocation-model=static + --target="${TARGET}" \ + --bin="${BIN}" \ + -- -C relocation-model=static if test "$PROFILE" = "dev" ; then BINARY=../../target/${TARGET}/debug/${BIN} diff --git a/crates/init/src/main.rs b/crates/init/src/main.rs index 3ecbe300..38cfd9eb 100644 --- a/crates/init/src/main.rs +++ b/crates/init/src/main.rs @@ -21,7 +21,7 @@ pub extern "C" fn main() { let root_fd = 3; - let path = b"display-server.elf"; + let path = b"display-server"; let file = ulib::sys::openat(root_fd, path, 0, 0).unwrap(); spawn_elf(&ulib::sys::SpawnArgs { fd: file, @@ -36,7 +36,7 @@ pub extern "C" fn main() { .unwrap(); for _ in 0..4 { - let console_path = "console.elf".as_bytes(); + let console_path = "console".as_bytes(); let shell_path = "shell".as_bytes(); spawn_elf(&ulib::sys::SpawnArgs { diff --git a/crates/kernel/Cargo.toml b/crates/kernel/Cargo.toml index 585e4121..a611782c 100644 --- a/crates/kernel/Cargo.toml +++ b/crates/kernel/Cargo.toml @@ -15,5 +15,5 @@ log = { version = "0.4", default-features = false } device-tree = { path = "../device-tree" } endian = { path = "../endian" } elf = { path = "../elf" } -initfs = { path = "../initfs"} filesystem = { path = "../filesystem" } +initfs = { path = "../initfs"} diff --git a/crates/kernel/scripts/attach-serial.sh b/crates/kernel/scripts/attach-serial.sh index 83fe5f7d..d573ea33 100755 --- a/crates/kernel/scripts/attach-serial.sh +++ b/crates/kernel/scripts/attach-serial.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env bash + SERIAL_DEV=/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_B0044ASI-if00-port0 LOGFILE=log/$(date -Is).log echo "Logging to $LOGFILE" diff --git a/crates/kernel/scripts/build.sh b/crates/kernel/scripts/build.sh index 8ad44cc7..ab15d0d2 100755 --- a/crates/kernel/scripts/build.sh +++ b/crates/kernel/scripts/build.sh @@ -1,8 +1,9 @@ #!/usr/bin/env bash set -ex +cd "$(dirname "$0")/.." -EXAMPLE=${1-"net"} +EXAMPLE=${1-"user"} TARGET=aarch64-unknown-none-softfloat PROFILE=${PROFILE-"release"} diff --git a/crates/kernel/scripts/compile-init.sh b/crates/kernel/scripts/compile-init.sh index f572a4ee..0121fb55 100755 --- a/crates/kernel/scripts/compile-init.sh +++ b/crates/kernel/scripts/compile-init.sh @@ -1,8 +1,11 @@ #!/usr/bin/env bash set -ex -cd "$(dirname "$0")/../../shell" -./build.sh -cd ../init/ -mv ../shell/bin/* fs/ -./build.sh \ No newline at end of file +cd "$(dirname "$0")/.." + +FS_PATH="../../disk-image" + +DESTDIR="$FS_PATH" ../shell/build.sh +DESTDIR="$FS_PATH" ../console/build.sh +DESTDIR="$FS_PATH" ../display-server/build.sh +../init/build.sh diff --git a/crates/kernel/scripts/run-usb-debug.sh b/crates/kernel/scripts/run-usb-debug.sh new file mode 100755 index 00000000..8b19106e --- /dev/null +++ b/crates/kernel/scripts/run-usb-debug.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -ex +QEMU_DISPLAY=${QEMU_DISPLAY-"default"} \ +QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse + -device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2222-:22 + -object filter-dump,id=f1,netdev=net0,file=net0.pcap" \ + "$(dirname "$0")/run.sh" + +# QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse -device usb-net,netdev=net0 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object filter-dump,id=f1,netdev=net0,file=net0.pcap" "$(dirname "$0")/run.sh" + +# QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse -device usb-net,netdev=net0 -netdev bridge,id=net0,br=br0 -object filter-dump,id=f1,netdev=net0,file=net0.pcap" "$(dirname "$0")/run.sh" +# QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-device usb-hub,id=hub1 -device usb-kbd -device usb-mouse" "$(dirname "$0")/run.sh" +# QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse,pcap=usb-mouse.pcap -device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2222-:22 -object filter-dump,id=f1,netdev=net0,file=net0.pcap" "$(dirname "$0")/run.sh" diff --git a/crates/kernel/scripts/run-usb.sh b/crates/kernel/scripts/run-usb.sh index 6bd83720..8e7c9359 100755 --- a/crates/kernel/scripts/run-usb.sh +++ b/crates/kernel/scripts/run-usb.sh @@ -1,7 +1,11 @@ #!/usr/bin/env bash set -ex -QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse -device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2222-:22 -object filter-dump,id=f1,netdev=net0,file=net0.pcap" "$(dirname "$0")/run.sh" +QEMU_DISPLAY=${QEMU_DISPLAY-"default"} \ +QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse + -device usb-net,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2222-:22" \ + "$(dirname "$0")/run.sh" + # QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse -device usb-net,netdev=net0 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -object filter-dump,id=f1,netdev=net0,file=net0.pcap" "$(dirname "$0")/run.sh" # QEMU_DISPLAY=${QEMU_DISPLAY-"default"} QEMU_DEVICES="-usb -device usb-kbd -device usb-mouse -device usb-net,netdev=net0 -netdev bridge,id=net0,br=br0 -object filter-dump,id=f1,netdev=net0,file=net0.pcap" "$(dirname "$0")/run.sh" diff --git a/crates/kernel/scripts/run.sh b/crates/kernel/scripts/run.sh index d0dab554..33eee2f2 100755 --- a/crates/kernel/scripts/run.sh +++ b/crates/kernel/scripts/run.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -e +cd "$(dirname "$0")/.." # Check if sdcard.img exists, create it if not if [ ! -f sdcard.img ]; then diff --git a/crates/shell/build.sh b/crates/shell/build.sh index 7668623f..3035e6f3 100755 --- a/crates/shell/build.sh +++ b/crates/shell/build.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash set -ex +cd "$(dirname "$0")" TARGET=aarch64-unknown-none-softfloat PROFILE=${PROFILE:-release} @@ -21,4 +22,7 @@ for src in src/bin/*.rs; do fi cp "${BINARY}" "bin/${BIN}" + if test -n "$DESTDIR" ; then + cp "${BINARY}" "$DESTDIR/${BIN}" + fi done diff --git a/crates/init/fs/folder_2/folder.txt b/disk-image/folder_2/folder.txt similarity index 100% rename from crates/init/fs/folder_2/folder.txt rename to disk-image/folder_2/folder.txt diff --git a/crates/init/fs/test.txt b/disk-image/test.txt similarity index 100% rename from crates/init/fs/test.txt rename to disk-image/test.txt diff --git a/crates/init/fs/test2.txt b/disk-image/test2.txt similarity index 100% rename from crates/init/fs/test2.txt rename to disk-image/test2.txt diff --git a/crates/init/fs/testing_folder/file.txt b/disk-image/testing_folder/file.txt similarity index 100% rename from crates/init/fs/testing_folder/file.txt rename to disk-image/testing_folder/file.txt diff --git a/crates/init/fs/testing_folder/file2.txt b/disk-image/testing_folder/file2.txt similarity index 100% rename from crates/init/fs/testing_folder/file2.txt rename to disk-image/testing_folder/file2.txt