Open chrisruk opened 6 years ago
I am also wondering if there is any update on rumprun rpi or aarch64 support?
Hi @chrisruk, @zatkh,
we have a port of https://github.com/nabla-containers for aarch64. Maybe you'll find that useful:
https://github.com/cloudkernels/rumprun (branch solo5-tests-aarch64).
You can also find some info at https://blog.cloudkernels.net
cheers, Tassos
That's great @ananos ,thanks, exactly was looking for aarch64 support of nabla to test with my solo5 backend extension! will try now
Hi @ananos, I am testing this, it seems the blog post is not a match with current version of solo5 and nabla. (for example install solo5.o-->libsolo5_ukvm is before adding spt), so not sure what is solo5_stock and why you need two solo5 repos?
Hi @zatkh,
our aarch64 support has been accepted upstream so you should be able to build for a 64-bit RPi3 using the https://github.com/nabla-containers/rumprun
We are in the process of updating the blog posts to point to the updated repos. I'll ping you when we manage to do that.
In any case, please try using the Nabla version (we have tested hvt & spt on aarch64) and let us know how it goes!
Hi @zatkh,
we have updated the posts to point to the latest versions of the repos (nabla/solo5/cloudkernels). Please have a look and let us know if you manage to get something running, or if we missed something in the update process.
thanks!
Hi @ananos ,
Sorry for the delay (I'm traveling), and thanks for letting me know. I quickly tested basic packages (hello,python3) on both my aarch64 server and rpi3 and didn't have time to fix some of the problems yet.
sqlite3: In function
sqlite3VXPrintf':
/home/zahra/git/rumprun-packages/sqlite/build/sqlite3.c:22563: undefined reference to __lttf2' /home/zahra/git/rumprun-packages/sqlite/build/sqlite3.c:22582: undefined reference to
gttf2'
/home/zahra/git/rumprun-packages/sqlite/build/sqlite3.c:22605: undefined reference to `getf2'`
compile rumpkern/atomic_add_16.o /home/pi/git/rumprun/src-netbsd/sys/rump/librump/rumpkern/../../../lib/libkern/../../../common/lib/libc/arch/arm/atomic/atomic_add_16.S:78: Error: selected processor does not support `strexh r2,r0,[ip]' in ARM mode
*** [atomic_add_16.o] Error code 1
nbmake[5]: stopped in /home/pi/git/rumprun/src-netbsd/sys/rump/librump/rumpkern 1 error
Hi @zatkh,
regarding the pi rumprun issue, I'm using the following and the build completes:
root@pi:/build/rumprun# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/6/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18+deb9u1' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-arm64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-arm64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-arm64 --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-multiarch --enable-fix-cortex-a53-843419 --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
root@pi:/build/rumprun# uname -a
Linux pi 4.16.18-v8+ #1 SMP PREEMPT Sat Sep 15 19:33:42 EEST 2018 aarch64 GNU/Linux
root@pi:/build/rumprun# dpkg -l |grep gcc
ii gcc 4:6.3.0-4 arm64 GNU C compiler
ii gcc-6 6.3.0-18+deb9u1 arm64 GNU C compiler
ii gcc-6-base:arm64 6.3.0-18+deb9u1 arm64 GCC, the GNU Compiler Collection (base package)
ii libgcc-6-dev:arm64 6.3.0-18+deb9u1 arm64 GCC support library (development files)
ii libgcc1:arm64 1:6.3.0-18+deb9u1 arm64 GCC support library
BTW on an arm server, the build completes using the following:
# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/5/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.10' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-arm64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-arm64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-arm64 --with-arch-directory=aarch64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.10)
root@kmaxgw-arm64:~# uname -a
Linux arm64 4.17.0-00001-g010275f #2 SMP PREEMPT Sun Jul 22 12:33:44 EEST 2018 aarch64 aarch64 aarch64 GNU/Linux
root@kmaxgw-arm64:~# dpkg -l |grep gcc
ii gcc-5 5.4.0-6ubuntu1~16.04.10 arm64 GNU C compiler
ii gcc-5-base:arm64 5.4.0-6ubuntu1~16.04.10 arm64 GCC, the GNU Compiler Collection (base package)
ii libgcc-5-dev:arm64 5.4.0-6ubuntu1~16.04.10 arm64 GCC support library (development files)
ii libgcc1:arm64 1:8.1.0-12ubuntu1 arm64 GCC support library
regarding the python3 issue, we are working on trying to understand why this happens. My initial assumption is that the long double type assumes it's 128-bit and the processor needs to use sw emulation for these built-in operations. If we manually link -lgcc from the system we're able to build python3 -- but we need to figure it out as this approach is far from clean ;-)
Will let you know as soon as we have something -- please do let us know if you manage to figure it out!
thanks!
Hi @ananos When I tried to run unikernel on Raspberry pi 3B + following the instructions in your bloghere.
When I enter the following command/build/solo5/tenders/spt/solo5-spt --mem=32 --net=tap0 --disk=dummy ./bin/hello.spt
.
I met an errorsolo5-spt: ./bin/hello.spt: No Solo5 ABI information found in executable
I don’t know what went wrong, do you have any suggestion? Thanks a lot, I'm looking forward to your reply. I'm very interested in your project.
just for reference, as the question was already answered offline -- rumprun over solo5 works with solo5 v0.4.1, so the solution to this question is to use tender binaries built from version v0.4.1
I wonder if there is a way to run microkernels directly on the Pi without the use of Docker/firecracker/...
Hi,
I'm just wondering if anyone has managed to build rumprun for the Pi?
I'm trying the following so far:
Then in the docker:
Modify:
adding:
I also commented out
In platform/Makefile.inc.
Then ran:
Which gave:
I then did:
Created file rumprun-bake2.conf:
However no output is produced either graphically or via the serial output (I listed the command for the serial version above). And it seems to give high CPU usage on all cores.
Without the custom conf file I get:
Any suggestions would be most appreciated!
Cheers Chris