Skip to content

Commit 094c5cf

Browse files
authored
Merge pull request #14 from hyperlight-dev/cpiovfs-upstream
feat: switch all examples to cpiovfs (zero-copy initrd)
2 parents 6e0b38e + aac4571 commit 094c5cf

20 files changed

Lines changed: 176 additions & 56 deletions

File tree

.github/workflows/benchmarks.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,14 @@ jobs:
8181
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
8282
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
8383
echo "::warning::kraft didn't clone unikraft sources; cloning manually"
84-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
84+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
85+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
86+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
87+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
8588
mkdir -p .unikraft/apps .unikraft/libs
8689
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
87-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
88-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
90+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
91+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
8992
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
9093
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
9194
fi

.github/workflows/publish-examples.yml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,14 @@ jobs:
121121
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
122122
# Fallback: manual source clone + build
123123
if [ ! -f ".unikraft/build/${{ matrix.example.kernel }}" ]; then
124-
UK_BRANCH=$(grep 'version:' kraft.yaml | head -1 | awk '{print $2}')
124+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
125+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
126+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
127+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
125128
mkdir -p .unikraft/apps .unikraft/libs
126129
rm -rf .unikraft/unikraft .unikraft/apps/elfloader
127-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
128-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
130+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
131+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
129132
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
130133
rm -rf .unikraft/build
131134
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64

.github/workflows/test-examples.yml

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,11 +118,14 @@ jobs:
118118
# Manually clone the components and rebuild with --no-fetch/--no-update.
119119
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
120120
echo "::warning::kraft didn't clone unikraft sources; cloning manually"
121-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
121+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
122+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
123+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
124+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
122125
mkdir -p .unikraft/apps .unikraft/libs
123126
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
124-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
125-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
127+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
128+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
126129
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
127130
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
128131
fi
@@ -299,11 +302,14 @@ jobs:
299302
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
300303
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
301304
echo "::warning::kraft didn't clone unikraft sources; cloning manually"
302-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
305+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
306+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
307+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
308+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
303309
mkdir -p .unikraft/apps .unikraft/libs
304310
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
305-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
306-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
311+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
312+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
307313
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
308314
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
309315
fi
@@ -440,11 +446,14 @@ jobs:
440446
just rootfs
441447
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64 || true
442448
if [ ! -d ".unikraft/unikraft" ] || [ -z "$(ls -A .unikraft/unikraft 2>/dev/null)" ]; then
443-
UK_BRANCH=$(grep -E '^ version:' kraft.yaml | head -1 | awk '{print $2}')
449+
UK_SOURCE=$(awk '/^unikraft:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
450+
UK_BRANCH=$(awk '/^unikraft:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
451+
ELF_SOURCE=$(awk '/app-elfloader:/{f=1} f && /source:/{print $2; exit}' kraft.yaml)
452+
ELF_BRANCH=$(awk '/app-elfloader:/{f=1} f && /version:/{print $2; exit}' kraft.yaml)
444453
mkdir -p .unikraft/apps .unikraft/libs
445454
rm -rf .unikraft/unikraft .unikraft/apps/elfloader .unikraft/libs/libelf .unikraft/build
446-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/unikraft.git .unikraft/unikraft
447-
git clone --branch $UK_BRANCH --depth 1 https://github.com/unikraft/app-elfloader.git .unikraft/apps/elfloader
455+
git clone --branch "$UK_BRANCH" --depth 1 "$UK_SOURCE" .unikraft/unikraft
456+
git clone --branch "$ELF_BRANCH" --depth 1 "$ELF_SOURCE" .unikraft/apps/elfloader
448457
git clone --branch staging --depth 1 https://github.com/unikraft/lib-libelf.git .unikraft/libs/libelf
449458
kraft-hyperlight --no-prompt build --plat hyperlight --arch x86_64
450459
fi

examples/dotnet-nativeaot/kraft.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@ unikraft:
1818
CONFIG_OPTIMIZE_PIE: 'y'
1919
CONFIG_LIBVFSCORE: 'y'
2020
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
21-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
22-
CONFIG_LIBRAMFS: 'y'
21+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
22+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
23+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
24+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
25+
CONFIG_LIBCPIOVFS: 'y'
2326
CONFIG_LIBUKCPIO: 'y'
2427
CONFIG_APPELFLOADER: 'y'
2528
CONFIG_APPELFLOADER_VFSEXEC: 'y'

examples/go/kraft.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ unikraft:
2626
# VFS and initrd support
2727
CONFIG_LIBVFSCORE: 'y'
2828
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
29-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
30-
CONFIG_LIBRAMFS: 'y'
29+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
30+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
32+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
33+
CONFIG_LIBCPIOVFS: 'y'
3134
CONFIG_LIBUKCPIO: 'y'
3235

3336
# ELF loader - Go binary location

examples/helloworld-c/kraft.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ unikraft:
2020
CONFIG_OPTIMIZE_PIE: 'y'
2121
CONFIG_LIBVFSCORE: 'y'
2222
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
23-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
24-
CONFIG_LIBRAMFS: 'y'
23+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
24+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
25+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
26+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
27+
CONFIG_LIBCPIOVFS: 'y'
2528
CONFIG_LIBUKCPIO: 'y'
2629
CONFIG_APPELFLOADER: 'y'
2730
CONFIG_APPELFLOADER_VFSEXEC: 'y'

examples/hostfs-posix-c/kraft.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@ unikraft:
2525
# VFS + initrd as ramfs (for /bin/hello and the ELF loader)
2626
CONFIG_LIBVFSCORE: 'y'
2727
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
28-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
29-
CONFIG_LIBRAMFS: 'y'
28+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
29+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
30+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
32+
CONFIG_LIBCPIOVFS: 'y'
3033
CONFIG_LIBUKCPIO: 'y'
3134

3235
# devfs + /dev/hcall (needed for HYPERLIGHT_HCALL symbol;

examples/hostfs-posix-py/kraft.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@ unikraft:
2525
# VFS + initrd as ramfs (for /usr/local/bin/python3 and the ELF loader)
2626
CONFIG_LIBVFSCORE: 'y'
2727
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
28-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
29-
CONFIG_LIBRAMFS: 'y'
28+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
29+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
30+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
32+
CONFIG_LIBCPIOVFS: 'y'
3033
CONFIG_LIBUKCPIO: 'y'
3134

3235
# devfs + /dev/hcall (needed for HYPERLIGHT_HCALL symbol;

examples/multifn-c/kraft.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,11 @@ unikraft:
1919
CONFIG_OPTIMIZE_PIE: 'y'
2020
CONFIG_LIBVFSCORE: 'y'
2121
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
22-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_INITRD: 'y'
23-
CONFIG_LIBRAMFS: 'y'
22+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
23+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
24+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
25+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
26+
CONFIG_LIBCPIOVFS: 'y'
2427
CONFIG_LIBUKCPIO: 'y'
2528
CONFIG_APPELFLOADER: 'y'
2629
CONFIG_APPELFLOADER_VFSEXEC: 'y'

examples/powershell/kraft.yaml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,15 @@ unikraft:
2222
CONFIG_OPTIMIZE_SIZE: 'y'
2323
CONFIG_OPTIMIZE_PIE: 'y'
2424

25-
# VFS and initrd support - cpiovfs for zero-copy mount, ramfs for /tmp
25+
# VFS and initrd support - cpiovfs for zero-copy mount
2626
CONFIG_LIBVFSCORE: 'y'
2727
CONFIG_LIBVFSCORE_AUTOMOUNT_CI: 'y'
2828
CONFIG_LIBVFSCORE_AUTOMOUNT_CI_CUSTOM: 'y'
29-
CONFIG_LIBCPIOVFS: 'y'
30-
CONFIG_LIBRAMFS: 'y'
3129
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_MP: '/'
3230
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_DRIVER: 'cpiovfs'
33-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI1_MP: '/tmp'
34-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI1_DRIVER: 'ramfs'
35-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI2_MP: '/root'
36-
CONFIG_LIBVFSCORE_AUTOMOUNT_CI2_DRIVER: 'ramfs'
31+
CONFIG_LIBVFSCORE_AUTOMOUNT_CI0_UKOPTS_IFINITRD0: 'y'
32+
CONFIG_LIBCPIOVFS: 'y'
33+
CONFIG_LIBUKCPIO: 'y'
3734

3835
# ELF loader - execute PowerShell binary
3936
CONFIG_APPELFLOADER: 'y'

0 commit comments

Comments
 (0)