From 0825447ea55406a7a5e49a1bade03445afe8cff6 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 15:33:08 +0800 Subject: [PATCH 01/12] update github ci --- .github/workflows/ci.yml | 52 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc163339..bd288133 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,9 +1,15 @@ -on: push +name: Test CI + +on: [push, pull_request] concurrency: group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }} cancel-in-progress: true +env: + qemu-version: 10.0.2 + rust-toolchain: nightly-2025-05-20 + jobs: build: runs-on: ubuntu-latest @@ -36,3 +42,47 @@ jobs: - name: Build run: make ARCH=${{ matrix.arch }} build + + test: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest] + arch: [riscv64] + env: + RUSTUP_TOOLCHAIN: nightly-2025-05-20 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.rust-toolchain }} + components: rust-src, llvm-tools + targets: riscv64gc-unknown-none-elf + - uses: Swatinem/rust-cache@v2 + with: + shared-key: cargo-bin-cache-${{ env.rust-toolchain }} + cache-targets: false + - uses: arceos-org/setup-qemu@v1 + with: + version: ${{ env.qemu-version }} + arch_list: riscv64 + - uses: arceos-org/setup-musl@v1 + with: + arch: ${{ matrix.arch }} + - name: Run alpine linux fs image + timeout-minutes: 5 + run: | + LOG=qemu-${{ matrix.arch }}.log + make ARCH=${{ matrix.arch }} build + make ARCH=${{ matrix.arch }} img + make ARCH=${{ matrix.arch }} run > $LOG 2>&1 + sleep 25 + pkill qemu || true + if grep -qE "sh-.*#|/#" $LOG; then + echo "✅ Kernel booted to BusyBox shell" + else + echo "❌ Boot failed, QEMU log:" + cat $LOG + exit 1 + fi \ No newline at end of file From c3a5d6e5b7804c53b00d7dde203735e49ba659c1 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 15:38:23 +0800 Subject: [PATCH 02/12] update CI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bd288133..839513bb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: Test CI +name: StarryOS CI on: [push, pull_request] From 54e154ad7f4e254e235cf3a0830fc3d762eba031 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 15:54:28 +0800 Subject: [PATCH 03/12] update CI --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 839513bb..80356ac4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,6 +70,12 @@ jobs: - uses: arceos-org/setup-musl@v1 with: arch: ${{ matrix.arch }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: "recursive" + - name: Run alpine linux fs image timeout-minutes: 5 run: | From 75a89c5d4942a6bc7db8cc3db3ab3cdde5375de6 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:15:25 +0800 Subject: [PATCH 04/12] update ci --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80356ac4..1b47294e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,6 +67,7 @@ jobs: with: version: ${{ env.qemu-version }} arch_list: riscv64 + - uses: arceos-org/setup-musl@v1 with: arch: ${{ matrix.arch }} @@ -80,12 +81,13 @@ jobs: timeout-minutes: 5 run: | LOG=qemu-${{ matrix.arch }}.log + ${{ matrix.arch }}-linux-musl-gcc --version make ARCH=${{ matrix.arch }} build make ARCH=${{ matrix.arch }} img make ARCH=${{ matrix.arch }} run > $LOG 2>&1 sleep 25 pkill qemu || true - if grep -qE "sh-.*#|/#" $LOG; then + if grep -qE 'starry:~#' $LOG; then echo "✅ Kernel booted to BusyBox shell" else echo "❌ Boot failed, QEMU log:" From 86b87d290e99de0d753eab34e935ff4f32e2024a Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:24:30 +0800 Subject: [PATCH 05/12] update ci --- .github/workflows/ci.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b47294e..9e0eb32c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,23 +54,23 @@ jobs: RUSTUP_TOOLCHAIN: nightly-2025-05-20 steps: - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ env.rust-toolchain }} components: rust-src, llvm-tools targets: riscv64gc-unknown-none-elf + - uses: Swatinem/rust-cache@v2 with: shared-key: cargo-bin-cache-${{ env.rust-toolchain }} cache-targets: false + - uses: arceos-org/setup-qemu@v1 with: version: ${{ env.qemu-version }} arch_list: riscv64 - - - uses: arceos-org/setup-musl@v1 - with: - arch: ${{ matrix.arch }} + - name: Checkout repository uses: actions/checkout@v4 @@ -79,7 +79,11 @@ jobs: - name: Run alpine linux fs image timeout-minutes: 5 - run: | + uses: arceos-org/setup-musl@v1 + with: + arch: ${{ matrix.arch }} + + - run: | LOG=qemu-${{ matrix.arch }}.log ${{ matrix.arch }}-linux-musl-gcc --version make ARCH=${{ matrix.arch }} build From 1e788263b98eb4b2b1297e7609cac25e3cb77930 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:36:06 +0800 Subject: [PATCH 06/12] update ci --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9e0eb32c..dfa0bc93 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,6 +88,9 @@ jobs: ${{ matrix.arch }}-linux-musl-gcc --version make ARCH=${{ matrix.arch }} build make ARCH=${{ matrix.arch }} img + curl -f -L https://github.com/Starry-OS/StarryOS/releases/download/rootfs-250905/rootfs-${{ matrix.arch }}.img.xz -O + xz -d rootfs-${{ matrix.arch }}.img.xz + cp rootfs-${{ matrix.arch }}.img arceos/disk.img make ARCH=${{ matrix.arch }} run > $LOG 2>&1 sleep 25 pkill qemu || true From 02677f31a987c1c2829c9974751b22c5f5913d56 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:36:28 +0800 Subject: [PATCH 07/12] update ci --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dfa0bc93..822cbabf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,7 +87,6 @@ jobs: LOG=qemu-${{ matrix.arch }}.log ${{ matrix.arch }}-linux-musl-gcc --version make ARCH=${{ matrix.arch }} build - make ARCH=${{ matrix.arch }} img curl -f -L https://github.com/Starry-OS/StarryOS/releases/download/rootfs-250905/rootfs-${{ matrix.arch }}.img.xz -O xz -d rootfs-${{ matrix.arch }}.img.xz cp rootfs-${{ matrix.arch }}.img arceos/disk.img From 7ea4de72bb3fb73a8a34c7b0be4749b43f96e9bc Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:45:02 +0800 Subject: [PATCH 08/12] update ci --- .github/workflows/ci.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 822cbabf..e16e1b08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,9 +87,18 @@ jobs: LOG=qemu-${{ matrix.arch }}.log ${{ matrix.arch }}-linux-musl-gcc --version make ARCH=${{ matrix.arch }} build - curl -f -L https://github.com/Starry-OS/StarryOS/releases/download/rootfs-250905/rootfs-${{ matrix.arch }}.img.xz -O - xz -d rootfs-${{ matrix.arch }}.img.xz - cp rootfs-${{ matrix.arch }}.img arceos/disk.img + wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/${{ matrix.arch }}/alpine-minirootfs-3.22.1-${{ matrix.arch }}.tar.gz + mkdir rootfs + sudo tar -C rootfs -xzf alpine-minirootfs-3.22.1-${{ matrix.arch }}.tar.gz + dd if=/dev/zero of=disk.img bs=1M count=256 + mkfs.ext4 disk.img + mkdir mnt + sudo mount -o loop disk.img mnt + sudo cp -a rootfs/* mnt/ + sudo umount mnt + sudo rm -rf rootfs mnt + cp disk.img arceos/disk.img + mv disk.img rootfs-${{ matrix.arch }}.img make ARCH=${{ matrix.arch }} run > $LOG 2>&1 sleep 25 pkill qemu || true From 1d8ac24a0ee3eac282afb0a0cc3f6760a5b29089 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:46:19 +0800 Subject: [PATCH 09/12] update ci --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e16e1b08..c404f4d5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,7 +86,6 @@ jobs: - run: | LOG=qemu-${{ matrix.arch }}.log ${{ matrix.arch }}-linux-musl-gcc --version - make ARCH=${{ matrix.arch }} build wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/${{ matrix.arch }}/alpine-minirootfs-3.22.1-${{ matrix.arch }}.tar.gz mkdir rootfs sudo tar -C rootfs -xzf alpine-minirootfs-3.22.1-${{ matrix.arch }}.tar.gz @@ -99,6 +98,7 @@ jobs: sudo rm -rf rootfs mnt cp disk.img arceos/disk.img mv disk.img rootfs-${{ matrix.arch }}.img + make ARCH=${{ matrix.arch }} build make ARCH=${{ matrix.arch }} run > $LOG 2>&1 sleep 25 pkill qemu || true From dc443cad38a4ff99f68737c76367426b0d54a692 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:53:26 +0800 Subject: [PATCH 10/12] update ci --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c404f4d5..4ce6b570 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -85,6 +85,7 @@ jobs: - run: | LOG=qemu-${{ matrix.arch }}.log + qemu-system-${{ matrix.arch }} --version ${{ matrix.arch }}-linux-musl-gcc --version wget https://dl-cdn.alpinelinux.org/alpine/latest-stable/releases/${{ matrix.arch }}/alpine-minirootfs-3.22.1-${{ matrix.arch }}.tar.gz mkdir rootfs From 85e084e3080389b881416cbb7432ceaf0a623fb2 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 16:56:19 +0800 Subject: [PATCH 11/12] update ci --- .github/workflows/ci.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ce6b570..e98e1770 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,12 +65,6 @@ jobs: with: shared-key: cargo-bin-cache-${{ env.rust-toolchain }} cache-targets: false - - - uses: arceos-org/setup-qemu@v1 - with: - version: ${{ env.qemu-version }} - arch_list: riscv64 - - name: Checkout repository uses: actions/checkout@v4 @@ -82,7 +76,13 @@ jobs: uses: arceos-org/setup-musl@v1 with: arch: ${{ matrix.arch }} - + + - name: Setup QEMU + uses: arceos-org/setup-qemu@v1 + with: + version: ${{ env.qemu-version }} + arch_list: riscv64 + - run: | LOG=qemu-${{ matrix.arch }}.log qemu-system-${{ matrix.arch }} --version From 4ca52e3bb26586a169a0f73c1660653c14897a49 Mon Sep 17 00:00:00 2001 From: yuchen Date: Sun, 7 Sep 2025 17:05:36 +0800 Subject: [PATCH 12/12] update ci --- .github/workflows/ci.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e98e1770..6ece9f69 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -71,8 +71,7 @@ jobs: with: submodules: "recursive" - - name: Run alpine linux fs image - timeout-minutes: 5 + - name: setup musl uses: arceos-org/setup-musl@v1 with: arch: ${{ matrix.arch }} @@ -82,8 +81,8 @@ jobs: with: version: ${{ env.qemu-version }} arch_list: riscv64 - - - run: | + - name: build and run + run: | LOG=qemu-${{ matrix.arch }}.log qemu-system-${{ matrix.arch }} --version ${{ matrix.arch }}-linux-musl-gcc --version @@ -100,8 +99,7 @@ jobs: cp disk.img arceos/disk.img mv disk.img rootfs-${{ matrix.arch }}.img make ARCH=${{ matrix.arch }} build - make ARCH=${{ matrix.arch }} run > $LOG 2>&1 - sleep 25 + timeout 20s make ARCH=${{ matrix.arch }} run 2>&1 | tee $LOG pkill qemu || true if grep -qE 'starry:~#' $LOG; then echo "✅ Kernel booted to BusyBox shell"