Project Zomboid
Arm64 Server Binaries - A Small Big Request
What is this post about?

We are attempting to run a Project Zomboid Server natively on an ARM64 Linux Server.
Throughout this forum, since my original posting, we discussed and detailed our efforts and difficulties in doing so, specifically regarding the lack of ARM64 native support in SteamCMD (Which has proven to be the greatest point of failure on this endeavor) and some Java-specific issues which we can't control due being more related to the devs side (Not trying to throw them under the bus in any way).

Small 03/03/25 Note:
Although there are various ways to make this work on the ARM VPS, I must address that this is far from effective in hosting your game server. There is no much troubleshooting we can do regarding its instability (specially with mods added) and malfunctions - Project Zomboid`s Server Binaries were *NOT* made to be run under ARM to 86-64x emulated environment and SteamCMD definitely wasn`t either. Experiment, try it out, fix it if you can, but remember that this is currently not a solution - but still, a request.

Key Insights

1) SteamCMD Dependency
- That cute little thing has zero support for ARM64, which forces users to either use x86/x64 processor architectures or rely on emulation (Sometimes, nested emulation) - Which results in EXTREMELY degraded performance and compatibility issues.
- We have done a few Proof of Concepts which demonstrated feasibility, but their setups are overly-complex, error-prone and very unstable.

But it runs. The computing power exists.
I wish Valve would aim a bit for Arm64 environments, we could embed a lot.

2) Java Compatibility
- Project Zomboid relies on Java (which was designed for portability) - but its current server execution is tied to x86/x86_64-specific checks and dependencies in its scripts (start-server.sh and some other moments during execution)
- Editing these scripts and using ARM-Compatible Java Versions (OpenJDK 19 for example) works but it has not been seamless.

But it also runs. The computing power is more than capable of.
I wish PZ Devs would release a Arm64 compatible version of their server - although I believe that they can't do that, unless SteamCMD is included (We all know why)

3) Efforts with Docker/VMs
- Running the server within emulated environments like QEMU is possible but resource-intensive and impractical for robust usage.
- Dockerized approaches with ARM64 layers are promising, but there are challenges with Java's architecture determination. There is a lot that needs to be improved in these tries.

But it does run. Played quite a bit and experimented a lot with 300+ mods - taking a LONG time to bootstrap, running quite well but eventually crashing or constantly freezing when loading too many locations at once.

4) Community Attempts:

We have been trying to experiment with various solutions: symlinking folders, modifying scripts, manual tweaks and lots of odds and ends - Dyarven even posted a script in GitHub which automatizes the entire implementation. And it works quite well.

5) Devs response so far:

- Official Support for ARM64 Binaries for PZServer from the developers or SteamCMD from vale is UNLIKELY in the near term.

- SteamCMD is a SIGNIFICANT roadblock here, as multiplayer servers rely on Steam for player/license authentication and visibility.

Show your Support!

The more people we get to comment here, to test and try, to invent and modify - the more we can get responsible attention.

I truly believe that this can be beneficial for Project Zomboid and its community as a whole - although I lack the technical dexterity at the moment to find solutions myself, I will continue to advocate for ARM64 support and try to engage people on this effort.

Thank you all! You've been the BEST!


Автор сообщения: My Original Post

-- Re-posting this on the correct category --
(If anyone is willing to help me make this work, I'm eager to learn and experiment!)

First of all: I KNOW! Project Zomboid _currently_ does not run under ARM Processors and therefore mimimi

The thing is:

The ARM architecture is getting more and more capable by the day - after I went to Oracle's presentation the other day on a business connect event in my city, I glanced and glimmered on the future possibilities for all kinds of people using low-cost and low-carbon-footprint solutions.

We live in an incredible era where people with no income like me can actually have a pretty decent computing power FOR FREE (or at low cost) - For example, you can get a Quad-Core 24GB RAM 200GB SSD with GIGABIT connection Server for ZERO COST in Oracle Cloud, this can be used for anything you want and scalability is at hand when you have something to make money with - just being creative.

In the last week I've spent entire days trying to figure out some sort of way of running a Project Zomboid Server on my ARM64-based server - and I've hit the same walls many others did:

SteamCMD has no ARM candidate (And apparently there are few to none discussions on this, and I wonder Valve don't give much of a crap to it anyways - at least not until it can be profitable) henceforth it cannot be used under ARM64 environment to get game's files.

Project Zomboid is in Java (yaaay!) but apparently it depends on stuff or it works in ways that whenever trying to run it on Arm64, Java can't define the architecture.

The only form that I can think of this working is via emulated x86 or x86_64/AMD64 environment inside the ARM64 (degraded performance expected - or not so much) using Box32 (I don't even consider 32-bit because of 4GB limitations) or Box64 (or even CHROOT - which I tried but my limited knowledge only took me to successfully emulate a Debian 64bit or 32bit environments which bugs out on SteamCMD because of errors I can't understand).

SO!

I've seen various people that want to have a private server to play on with their families or friends - or even a big server at reasonable cost - but they simply can't.

And I really don't understand why something that can stupendously run Forge/Fabric heavily modded Minecraft and even Valheims servers (And they done that on Raspberry Pis) to not be able to run a vanilla or even a modded Project Zomboid server.

I was able to run a Project Zomboid server on a late 2008 low-end Celeron notebook I had, and it fricking worked (slow as hell because of low CPU GHz and low RAM at 32-bit) and even on a early 2006 MacBook (A1181 if Im not mistaken) that also had struggles due low speed and memory - but the thing is: It worked. It could load mods, I could log in and kill zombies - the only big issue was chunk loading that was terrible due technical limitations of almost 20yo machines.

I am currently using all my spare time in Zomboid Modding and learning everything I can in order to contribute with the community and even some day get to do something nice for this incredible game. But I feel like I reached my patience limit on the ARM64 server issue - and my ignorance leaves me no other choice if not come here and hear so many reasons for "why not".

But I truly believe that incredible things can come when we look at those that most don't - and free servers that are given to the people, if capable, can generate more servers from the people for the people. I can see myself using my only free server and dedicating it to run a PZ server to test out my mods, maps, concepts and even running my own community with friends. I wonder if others would do the same, as I'm not the only one that enjoy this game so much.

So, if this ever reach out to the ones that are willing to help to make this possible - or even the ones that can make this possible - I hope that someday PZ can get to be run under Arm64 environment - even though I understand that the conglomerate of STEAM will need to make their platform to be there first, I know that many play this through GOG - I really wish PZ's devs would make this effort - even if its to explain the reasons "why not".

I believe in ARM as part of our current time and as an ideal ally in the future of computing - and therefore, in the future of gaming.

Until then, I ask: Why not?
Отредактировано DOOMGUY; 2 мар в 22:35
Автор сообщения: makosski52:
I managed to run zomboid server on same Oracle's Ampere VM.Standard.A1.Flex shape (4 cores , 24Gb ram) server. And it is running pretty stable with ~230 mods.

I used Docker for running SteamCMD for ARM : https://hub.docker.com/r/teriyakigod/steamcmd
then after installing zomboid server files i ran "start-server.sh" file using FEXBash included in docker container.
I can make more detailed guide if anyone is interrested.

I am pretty sure it can be done without docker, just by installing FEX-emu but i haven't tried that.

Edit: i am gonna make it anyway: :praisesun:

1) You need to install docker: https://www.docker.com/blog/getting-started-with-docker-for-arm-on-linux/

2) After installing Docker, use this command to pull docker image of SteamCMD i talked about earlier:
docker pull teriyakigod/steamcmd:arm64

3) After image has installed, you need to create docker container using that command:
docker run --entrypoint "/bin/sh" -p 16261:16261/udp -p 16262:16262/udp -it -u root teriyakigod/steamcmd:arm64

4) In that container you are logged as root, so you can install some text editor if you want it can be handy. And forward required ports:
# Open the ports sudo ufw allow 16261/udp sudo ufw allow 16262/udp # Reload the firewall to make the added rules go into effect sudo ufw reload
Then you login as user 'steam' and launch "steamcmd.sh" using:
FEXBash ./steamcmd.sh
and proceed to install zomboid server files using:
login anonymous app_update 380870 validate

5) After installation you can go to server files directory and run "start-server.sh" also using FEXBash.

If something is unclear or does not work then let me know.

Edit2: Common issues and fixes:

1)While trying to run SteamCMD.
"Unable to determine CPU Frequency. Try defining CPU_MHZ."
Open steamcmd.sh in text editor and add this line before
"cd "$STEAMROOT".
(2000 = 2 GHz) export CPU_MHZ=2000

2)If you have simillar error like here (server does not start) https://theindiestone.com/forums/index.php?/topic/47417-dedicated-server-on-linux-vps-jre-crashes/
Try editing the ProjectZomboid64.json file
Change the "UseZGC" line to "UseG1GC"
Then start the server again.
< >
Сообщения 3145 из 82
Автор сообщения: Dyarven
Hello, I know I'm late but I got this server working through Box64 & Box86 emulation and solved the java error. I left a script in my Github, you can just follow it step by step (and remove the "> /dev/null" from the steamcmd commands to see output) and use it as a guide which is my advice. This was on oracle cloud's ampere a1 instance, on an ubuntu 2204 and I'm running as root user because reasons.
I am using openjdk19.

If you decide to just run the script instead please keep in mind that I haven't tested it this way yet but it should work.

https://github.com/Dyarven/bash_scripts/blob/main/arm64_zomboid_server.sh

As you can read on the script, I am installing the server on /opt/zomboid-server and running steamcmd there so I download the latest server version with the command I provide.

But when you run the start_server.sh script it will start to generate some other server files and folders in /root/ (haven't been able to fix this).

You can edit the parameters on every file regardless of the dir and it will work just as if it was all in the same folder. The server will run no problem so don't worry about that. If you want to have it all in one folder I'd make the symbolic links to /opt/zomboid-server and go on.

The server performs pretty well.

If you find a way to fix that part so that when you run start-server.sh the files are put on a folder of your choice please get back to me and I will update the script.

I reproduced your java error when I downloaded everything on /root/ with steamcmd and then run the server from there instead of /opt/zomboid-server. This is kind of my workaround.

If this helped you please star my github repository :winter2019happyyul:
Good luck with it!

Regarding the issue with files being created under /root, the Zomboid folder is always created under the home directory of the user that starts the server. If you want to avoid it you just need to create a service user with, e.g., useradd pz and then specify that user in your systemd service file.
Отредактировано DMN; 8 июл. 2023 г. в 5:36
Haven't tested it but you're probably corrrect.
I added some stuff on the script so that the files on the user home are symlinked to the server folder so we can access it all at the same time.
Plus the script has been changed so it should set up the server for the user than runs it (i.e. zomboid user)
Отредактировано Dyarven; 8 июл. 2023 г. в 11:28
Автор сообщения: Stann0x
Автор сообщения: Dyarven
Hello, I know I'm late but I got this server working through Box64 & Box86 emulation and solved the java error. I left a script in my Github, you can just follow it step by step (and remove the "> /dev/null" from the steamcmd commands to see output) and use it as a guide which is my advice. This was on oracle cloud's ampere a1 instance, on an ubuntu 2204 and I'm running as root user because reasons.
I am using openjdk19.

If you decide to just run the script instead please keep in mind that I haven't tested it this way yet but it should work.

https://github.com/Dyarven/bash_scripts/blob/main/arm64_zomboid_server.sh

As you can read on the script, I am installing the server on /opt/zomboid-server and running steamcmd there so I download the latest server version with the command I provide.

But when you run the start_server.sh script it will start to generate some other server files and folders in /root/ (haven't been able to fix this).

You can edit the parameters on every file regardless of the dir and it will work just as if it was all in the same folder. The server will run no problem so don't worry about that. If you want to have it all in one folder I'd make the symbolic links to /opt/zomboid-server and go on.

The server performs pretty well.

If you find a way to fix that part so that when you run start-server.sh the files are put on a folder of your choice please get back to me and I will update the script.

I reproduced your java error when I downloaded everything on /root/ with steamcmd and then run the server from there instead of /opt/zomboid-server. This is kind of my workaround.

If this helped you please star my github repository :winter2019happyyul:
Good luck with it!

You`re incredible.
I haven`t tried, but I totally believe it! I really gotta fix my Oracle Account (I accidentally deleted my Tenant now I just can`t use that anymore LOL)

Thats awesome! Great work indeed! Looking forward to experiment with it!

May I add you to have some chats?
finaly thx :steamhappy::steamhappy::steamhappy::steamhappy:
Here it didn't work, and I received the following errors:

steamcmd.sh
linux32/steamcmd
linux32/steamerrorreporter
linux32/libstdc++.so.6
linux32/crashhandler.so
./steamcmd.sh: line 37: /home/ubuntu/pz/steamcmd/linux32/steamcmd: No such file or directory
./steamcmd.sh: line 37: /home/ubuntu/pz/steamcmd/linux32/steamcmd: No such file or directory

after running the script: arm64_zomboid_server.sh

EDIT:
I was able to resolve it by removing the i386 architecture (which I had previously installed) with the command: sudo dpkg --remove-architecture i386, and then running again: sudo apt install -y libc6:armhf libncurses5:armhf libstdc++6:armhf.
Отредактировано mega; 18 сен. 2023 г. в 14:26
With all of the above help from everyone, especially Dyarven, I've almost got this running. The server launches, seems to be running. Players can even make their characters, but then it craps out as soon as it finishes loading:

Warning, root node parent is always null.
GameServer.mainLoopDealWithNetData> Error with packet of type: PlayerConnect for
java.lang.NullPointerException: Cannot read field "name" because "<local3>" is null
Автор сообщения: Dyarven
Hello, I know I'm late but I got this server working through Box64 & Box86 emulation and solved the java error. I left a script in my Github, you can just follow it step by step (and remove the "> /dev/null" from the steamcmd commands to see output) and use it as a guide which is my advice. This was on oracle cloud's ampere a1 instance, on an ubuntu 2204 and I'm running as root user because reasons.
I am using openjdk19.

If you decide to just run the script instead please keep in mind that I haven't tested it this way yet but it should work.

https://github.com/Dyarven/bash_scripts/blob/main/arm64_zomboid_server.sh

As you can read on the script, I am installing the server on /opt/zomboid-server and running steamcmd there so I download the latest server version with the command I provide.

But when you run the start_server.sh script it will start to generate some other server files and folders in /root/ (haven't been able to fix this).

You can edit the parameters on every file regardless of the dir and it will work just as if it was all in the same folder. The server will run no problem so don't worry about that. If you want to have it all in one folder I'd make the symbolic links to /opt/zomboid-server and go on.

The server performs pretty well.

If you find a way to fix that part so that when you run start-server.sh the files are put on a folder of your choice please get back to me and I will update the script.

I reproduced your java error when I downloaded everything on /root/ with steamcmd and then run the server from there instead of /opt/zomboid-server. This is kind of my workaround.

If this helped you please star my github repository :winter2019happyyul:
Good luck with it!

Hey, I have some trouble with getting this to work, also on a oracle cloud's ampere a1 instance. Can you add me to have some chats? I really would appreciate some help with this. Thanks.
Автор сообщения: Kami420
Hey, I have some trouble with getting this to work, also on a oracle cloud's ampere a1 instance. Can you add me to have some chats? I really would appreciate some help with this. Thanks.

Sure! Just ping me up and I'll help any way I can.
Автор сообщения: Dyarven
Haven't tested it but you're probably corrrect.
I added some stuff on the script so that the files on the user home are symlinked to the server folder so we can access it all at the same time.
Plus the script has been changed so it should set up the server for the user than runs it (i.e. zomboid user)




Автор сообщения: Stanke
Автор сообщения: Kami420
Hey, I have some trouble with getting this to work, also on a oracle cloud's ampere a1 instance. Can you add me to have some chats? I really would appreciate some help with this. Thanks.

Sure! Just ping me up and I'll help any way I can.


Hello, help please, i have a error :(

I have a OrangePi 5 Plus

[0.179s][error][gc] Failed to reserve enough address space for Java heap Failed to create Java VM

ram 16gb
root@orangepi5plus:/opt/zomboid-server# free total used free shared buff/cache available Mem: 16096328 4383520 1984532 174912 9728276 11377672 Swap: 8048160 6656 8041504

In console.
root@orangepi5plus:/opt/zomboid-server# sudo ./start-server.sh 64-bit java detected Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS PageSize:4096 Running on Cortex-A55 Cortex-A76 with 8 Cores Params database has 30 entries Box64 with Dynarec v0.2.5 a31c0371 built on Oct 29 2023 07:47:43 Counted 24 Env var BOX64 try to Preload libjsig.so BOX64 LIB PATH: /opt/zomboid-server/linux64/:/opt/zomboid-server/natives/:/opt/zomboid-server/:/opt/zomboid-server/jre64/lib/amd64/:./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/ BOX64 BIN PATH: ./:bin/:/opt/zomboid-server/jre64/bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/:/snap/bin/ Looking for ./ProjectZomboid64 Apply RC params for ProjectZomboid64 Applying BOX64_DYNAREC_STRONGMEM=3 Applying BOX64_DYNAREC_SAFEFLAGS=2 Applying BOX64_DYNAREC_JVM=0 Applying BOX64_DYNAREC_ALIGNED_ATOMICS=1 Rename process to "ProjectZomboid64" Error loading needed lib libjsig.so Warning, cannot pre-load of libjsig.so Using emulated /opt/zomboid-server/linux64/libsteam_api.so Using native(wrapped) libdl.so.2 Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6 Using native(wrapped) libm.so.6 Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1 Using native(wrapped) libc.so.6 Using native(wrapped) ld-linux-x86-64.so.2 Using native(wrapped) libpthread.so.0 Using native(wrapped) libutil.so.1 Using native(wrapped) librt.so.1 pzexe: looking for PZXInitThreads.so Using emulated /opt/zomboid-server/natives/libPZXInitThreads64.so Using native(wrapped) libSM.so.6 Using native(wrapped) libICE.so.6 Using native(wrapped) libX11.so.6 Using native(wrapped) libXext.so.6 Using native(wrapped) libxcb.so.1 Using native(wrapped) libXau.so.6 Using native(wrapped) libXdmcp.so.6 Warning: Weak Symbol __gmon_start__ not found, cannot apply R_X86_64_JUMP_SLOT @0x100cb0aa0 (0x5e6) XInitThreads.cpp: calling XInitThreads() pzexe: libPZXInitThreads64.so loaded successfully. pzexe: about to run java hack to locate libjvm.so... pzexe: executing "java -classpath pzexe.jar -Djava.library.path=. zombie.pzexe" pzexe.java: loading shared library "pzexe_jni64" JVM=/opt/zomboid-server/jre64/lib/server/libjvm.so pxexe: /proc/self/exe=/opt/zomboid-server/ProjectZomboid64 pzexe config file: /opt/zomboid-server/ProjectZomboid64.json pzexe: mainClass: zombie/network/GameServer pzexe: classpath: -Djava.class.path=java/.:java/istack-commons-runtime.jar:java/jassimp.jar:java/javacord-2.0.17-shaded.jar:java/javax.activation-api.jar:java/jaxb-api.jar:java/jaxb-runtime.jar:java/lwjgl.jar:java/lwjgl-natives-linux.jar:java/lwjgl-glfw.jar:java/lwjgl-glfw-natives-linux.jar:java/lwjgl-jemalloc.jar:java/lwjgl-jemalloc-natives-linux.jar:java/lwjgl-opengl.jar:java/lwjgl-opengl-natives-linux.jar:java/lwjgl_util.jar:java/sqlite-jdbc-3.27.2.1.jar:java/trove-3.0.3.jar:java/uncommons-maths-1.2.3.jar:java/commons-compress-1.18.jar pzexe: vmArg (json) 1: -Djava.awt.headless=true pzexe: vmArg (json) 2: -Xmx4096M pzexe: vmArg (json) 3: -Dzomboid.steam=1 pzexe: vmArg (json) 4: -Dzomboid.znetlog=1 pzexe: vmArg (json) 5: -Djava.library.path=linux64/:natives/ pzexe: vmArg (json) 6: -Djava.security.egd=file:/dev/urandom pzexe: vmArg (json) 7: -XX:+UseZGC pzexe: vmArg (json) 8: -XX:-OmitStackTraceInFastThrow pzexe: using jvm "/opt/zomboid-server/jre64/lib/server/libjvm.so" Using emulated /opt/zomboid-server/jre64/lib/server/libjvm.so Using emulated /opt/zomboid-server/jre64/lib/libjimage.so Using emulated /opt/zomboid-server/jre64/lib/libjava.so [0.179s][error][gc] Failed to reserve enough address space for Java heap Failed to create Java VM

in ProjectZomboid64.json
{ "mainClass": "zombie/network/GameServer", "classpath": [ "java/.", "java/istack-commons-runtime.jar", "java/jassimp.jar", "java/javacord-2.0.17-shaded.jar", "java/javax.activation-api.jar", "java/jaxb-api.jar", "java/jaxb-runtime.jar", "java/lwjgl.jar", "java/lwjgl-natives-linux.jar", "java/lwjgl-glfw.jar", "java/lwjgl-glfw-natives-linux.jar", "java/lwjgl-jemalloc.jar", "java/lwjgl-jemalloc-natives-linux.jar", "java/lwjgl-opengl.jar", "java/lwjgl-opengl-natives-linux.jar", "java/lwjgl_util.jar", "java/sqlite-jdbc-3.27.2.1.jar", "java/trove-3.0.3.jar", "java/uncommons-maths-1.2.3.jar", "java/commons-compress-1.18.jar" ], "vmArgs": [ "-Djava.awt.headless=true", "-Xmx4096M", "-Dzomboid.steam=1", "-Dzomboid.znetlog=1", "-Djava.library.path=linux64/:natives/", "-Djava.security.egd=file:/dev/urandom", "-XX:+UseZGC", "-XX:-OmitStackTraceInFastThrow" ] }
Автор сообщения: CeiC
Автор сообщения: Dyarven
Haven't tested it but you're probably corrrect.
I added some stuff on the script so that the files on the user home are symlinked to the server folder so we can access it all at the same time.
Plus the script has been changed so it should set up the server for the user than runs it (i.e. zomboid user)




Автор сообщения: Stanke

Sure! Just ping me up and I'll help any way I can.


Hello, help please, i have a error :(

I have a OrangePi 5 Plus

[0.179s][error][gc] Failed to reserve enough address space for Java heap Failed to create Java VM

ram 16gb
root@orangepi5plus:/opt/zomboid-server# free total used free shared buff/cache available Mem: 16096328 4383520 1984532 174912 9728276 11377672 Swap: 8048160 6656 8041504

In console.
root@orangepi5plus:/opt/zomboid-server# sudo ./start-server.sh 64-bit java detected Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL ATOMICS PageSize:4096 Running on Cortex-A55 Cortex-A76 with 8 Cores Params database has 30 entries Box64 with Dynarec v0.2.5 a31c0371 built on Oct 29 2023 07:47:43 Counted 24 Env var BOX64 try to Preload libjsig.so BOX64 LIB PATH: /opt/zomboid-server/linux64/:/opt/zomboid-server/natives/:/opt/zomboid-server/:/opt/zomboid-server/jre64/lib/amd64/:./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/ BOX64 BIN PATH: ./:bin/:/opt/zomboid-server/jre64/bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/:/snap/bin/ Looking for ./ProjectZomboid64 Apply RC params for ProjectZomboid64 Applying BOX64_DYNAREC_STRONGMEM=3 Applying BOX64_DYNAREC_SAFEFLAGS=2 Applying BOX64_DYNAREC_JVM=0 Applying BOX64_DYNAREC_ALIGNED_ATOMICS=1 Rename process to "ProjectZomboid64" Error loading needed lib libjsig.so Warning, cannot pre-load of libjsig.so Using emulated /opt/zomboid-server/linux64/libsteam_api.so Using native(wrapped) libdl.so.2 Using emulated /lib/x86_64-linux-gnu/libstdc++.so.6 Using native(wrapped) libm.so.6 Using emulated /lib/x86_64-linux-gnu/libgcc_s.so.1 Using native(wrapped) libc.so.6 Using native(wrapped) ld-linux-x86-64.so.2 Using native(wrapped) libpthread.so.0 Using native(wrapped) libutil.so.1 Using native(wrapped) librt.so.1 pzexe: looking for PZXInitThreads.so Using emulated /opt/zomboid-server/natives/libPZXInitThreads64.so Using native(wrapped) libSM.so.6 Using native(wrapped) libICE.so.6 Using native(wrapped) libX11.so.6 Using native(wrapped) libXext.so.6 Using native(wrapped) libxcb.so.1 Using native(wrapped) libXau.so.6 Using native(wrapped) libXdmcp.so.6 Warning: Weak Symbol __gmon_start__ not found, cannot apply R_X86_64_JUMP_SLOT @0x100cb0aa0 (0x5e6) XInitThreads.cpp: calling XInitThreads() pzexe: libPZXInitThreads64.so loaded successfully. pzexe: about to run java hack to locate libjvm.so... pzexe: executing "java -classpath pzexe.jar -Djava.library.path=. zombie.pzexe" pzexe.java: loading shared library "pzexe_jni64" JVM=/opt/zomboid-server/jre64/lib/server/libjvm.so pxexe: /proc/self/exe=/opt/zomboid-server/ProjectZomboid64 pzexe config file: /opt/zomboid-server/ProjectZomboid64.json pzexe: mainClass: zombie/network/GameServer pzexe: classpath: -Djava.class.path=java/.:java/istack-commons-runtime.jar:java/jassimp.jar:java/javacord-2.0.17-shaded.jar:java/javax.activation-api.jar:java/jaxb-api.jar:java/jaxb-runtime.jar:java/lwjgl.jar:java/lwjgl-natives-linux.jar:java/lwjgl-glfw.jar:java/lwjgl-glfw-natives-linux.jar:java/lwjgl-jemalloc.jar:java/lwjgl-jemalloc-natives-linux.jar:java/lwjgl-opengl.jar:java/lwjgl-opengl-natives-linux.jar:java/lwjgl_util.jar:java/sqlite-jdbc-3.27.2.1.jar:java/trove-3.0.3.jar:java/uncommons-maths-1.2.3.jar:java/commons-compress-1.18.jar pzexe: vmArg (json) 1: -Djava.awt.headless=true pzexe: vmArg (json) 2: -Xmx4096M pzexe: vmArg (json) 3: -Dzomboid.steam=1 pzexe: vmArg (json) 4: -Dzomboid.znetlog=1 pzexe: vmArg (json) 5: -Djava.library.path=linux64/:natives/ pzexe: vmArg (json) 6: -Djava.security.egd=file:/dev/urandom pzexe: vmArg (json) 7: -XX:+UseZGC pzexe: vmArg (json) 8: -XX:-OmitStackTraceInFastThrow pzexe: using jvm "/opt/zomboid-server/jre64/lib/server/libjvm.so" Using emulated /opt/zomboid-server/jre64/lib/server/libjvm.so Using emulated /opt/zomboid-server/jre64/lib/libjimage.so Using emulated /opt/zomboid-server/jre64/lib/libjava.so [0.179s][error][gc] Failed to reserve enough address space for Java heap Failed to create Java VM

in ProjectZomboid64.json
{ "mainClass": "zombie/network/GameServer", "classpath": [ "java/.", "java/istack-commons-runtime.jar", "java/jassimp.jar", "java/javacord-2.0.17-shaded.jar", "java/javax.activation-api.jar", "java/jaxb-api.jar", "java/jaxb-runtime.jar", "java/lwjgl.jar", "java/lwjgl-natives-linux.jar", "java/lwjgl-glfw.jar", "java/lwjgl-glfw-natives-linux.jar", "java/lwjgl-jemalloc.jar", "java/lwjgl-jemalloc-natives-linux.jar", "java/lwjgl-opengl.jar", "java/lwjgl-opengl-natives-linux.jar", "java/lwjgl_util.jar", "java/sqlite-jdbc-3.27.2.1.jar", "java/trove-3.0.3.jar", "java/uncommons-maths-1.2.3.jar", "java/commons-compress-1.18.jar" ], "vmArgs": [ "-Djava.awt.headless=true", "-Xmx4096M", "-Dzomboid.steam=1", "-Dzomboid.znetlog=1", "-Djava.library.path=linux64/:natives/", "-Djava.security.egd=file:/dev/urandom", "-XX:+UseZGC", "-XX:-OmitStackTraceInFastThrow" ] }


I don't really understand what could be going on, but you should note that the script was made to create PZ server on a Oracle's Cloud Ampere Arm64 VM, I'm not so sure about the Orange Pi will react to it, unfortunately I don't have one to experiment.

Try running HTOP/BTOP on another terminal to check at which point things start to go off - maybe its a memory leak going on in BOX, but I have no idea really. Sorry mate.
Hi, first of all thank you for your script, @Dyarven. I am not being able to run the server, each time I do a start-serversh It fails with a different error. Let me please copy it just in case it sounds familiar to all of you who are trying to run the server on Oracle. I have seen "Server running" one time, but it is pretty random for me. Thanks.

# # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00000001018735e0, pid=5924, tid=6552 # # JRE version: OpenJDK Runtime Environment Zulu17.30+15-CA (17.0.1+12) (build 17.0.1+12-LTS) # Java VM: OpenJDK 64-Bit Server VM Zulu17.30+15-CA (17.0.1+12-LTS, mixed mode, sharing, tiered, compressed class ptrs, z gc, linux-amd64) # Problematic frame: # V [libjvm.so+0xbb35e0] Method::bcp_from(unsigned char*) const+0x0 # # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /opt/zomboid-server/core.5924) # # An error report file with more information is saved as: # /opt/zomboid-server/hs_err_pid5924.log [thread 6556 also had an error] Sigfault/Segbus while quitting, exiting silently Sigfault/Segbus while quitting, exiting silently

# # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x0000000108601f40 (sent by kill), pid=6810, tid=6810 # # JRE version: OpenJDK Runtime Environment Zulu17.30+15-CA (17.0.1+12) (build 17.0.1+12-LTS) # Java VM: OpenJDK 64-Bit Server VM Zulu17.30+15-CA (17.0.1+12-LTS, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, serial gc, linux-amd64) # Problematic frame: # J 6640 c1 se.krka.kahlua.converter.KahluaConverterManager.fromLuaToJava(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object; (113 bytes) @ 0x0000000108601f40 [0x00000001086012a0+0x0000000000000ca0] # # Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E" (or dumping to /opt/zomboid-server/core.6810) # # An error report file with more information is saved as: # /opt/zomboid-server/hs_err_pid6810.log Compiled method (c1) 152724 6673 3 gnu.trove.list.array.TIntArrayList::add (29 bytes) total in heap [0x0000000108036390,0x0000000108036838] = 1192 relocation [0x00000001080364f0,0x0000000108036530] = 64 main code [0x0000000108036540,0x0000000108036720] = 480 stub code [0x0000000108036720,0x0000000108036760] = 64 oops [0x0000000108036760,0x0000000108036768] = 8 metadata [0x0000000108036768,0x0000000108036780] = 24 scopes data [0x0000000108036780,0x00000001080367a8] = 40 scopes pcs [0x00000001080367a8,0x0000000108036818] = 112 dependencies [0x0000000108036818,0x0000000108036820] = 8 nul chk table [0x0000000108036820,0x0000000108036838] = 24 Compiled method (c1) 152730 6674 3 gnu.trove.list.array.TIntArrayList::ensureCapacity (46 bytes) total in heap [0x0000000108606f90,0x0000000108607580] = 1520 relocation [0x00000001086070f0,0x0000000108607140] = 80 main code [0x0000000108607140,0x0000000108607440] = 768 stub code [0x0000000108607440,0x0000000108607480] = 64 oops [0x0000000108607480,0x0000000108607488] = 8 metadata [0x0000000108607488,0x0000000108607498] = 16 scopes data [0x0000000108607498,0x00000001086074f8] = 96 scopes pcs [0x00000001086074f8,0x0000000108607568] = 112 dependencies [0x0000000108607568,0x0000000108607570] = 8 nul chk table [0x0000000108607570,0x0000000108607580] = 16 Error loading needed lib hsdis-amd64.so Warning: Cannot dlopen("hsdis-amd64.so"/0x1007f94b8, 1) # # If you would like to submit a bug report, please visit: # http://www.azul.com/support/ # NativeBT: ./ProjectZomboid64() [0x34a0c184] NativeBT: linux-vdso.so.1(__kernel_rt_sigreturn+0) [0xffff8173d7dc] NativeBT: /lib/aarch64-linux-gnu/libc.so.6(+0x7f200) [0xffff815cf200] NativeBT: /lib/aarch64-linux-gnu/libc.so.6(raise+0x1c) [0xffff8158a67c] NativeBT: /lib/aarch64-linux-gnu/libc.so.6(abort+0xe4) [0xffff81577130] NativeBT: [0xffff12a4767c] EmulatedBT: ??? [0x609e0] EmulatedBT: /opt/zomboid-server/jre64/lib/server/libjvm.so(_ZN7VMError14report_and_dieEiPKcS1_P13__va_list_tagP6ThreadPhPvS7_S1_im+2a0) [0x101c3d6b0] EmulatedBT: /opt/zomboid-server/jre64/lib/server/libjvm.so(_ZN7VMError14report_and_dieEP6ThreadjPhPvS3_PKcz+8b) [0x101c3e18b] EmulatedBT: ??? [0x1007fade8] EmulatedBT: ??? [(nil)] 6810|SIGABRT @0xffff815cf200 (???(/lib/aarch64-linux-gnu/libc.so.6+0xffff815cf200)) (x64pc=0x609e0/???:"???", rsp=0x1007faa60, stack=0x100000000:0x100800000 own=(nil) fp=0x1007faa78), for accessing 0x1a9a (code=-6/prot=0), db=(nil)((nil):(nil)/(nil):(nil)/???:clean, hash:0/0) handler=(nil) RSP-0x20:0x0000000000000001 RSP-0x18:0x0000000000000000 RSP-0x10:0x0000000051dc2dc0 RSP-0x08:0x0000000000000083 RSP+0x00:0x0000000101908c35 RSP+0x08:0x0000000000000000 RSP+0x10:0x00000001007faad8 RSP+0x18:0x00000001007faca8 RAX:0x0000000000000000 RCX:0x0000000101d0cb9f RDX:0x000000010250c060 RBX:0x0000000000000001 RSP:0x00000001007faa60 RBP:0x00000001007faa78 RSI:0x0000000000000001 RDI:0x000000010250c060 R8:0x0000000000000001 R9:0x00000001007fa8b8 R10:0x0000000000007656 R11:0xffffffffffffff88 R12:0x0000000000000000 R13:0x000000000000000b R14:0x00000001007fab18 R15:0x00000001007fabe8 ES:0x002b CS:0x0033 SS:0x002b DS:0x002b FS:0x0043 GS:0x0053 /opt/zomboid-server/start-server.sh: line 26: 6810 Aborted (core dumped) LD_PRELOAD="${LD_PRELOAD}:${JSIG}" ./ProjectZomboid64 "$@"
Отредактировано Soumynon; 31 окт. 2023 г. в 1:54
You are getting an out of memory error, I'm not familiar with the orange PI, but it seems you're trying to use more RAM than you have available at the moment to run the VM and it crashes.

Since you're in Linux your system would free some of the RAM allocated for buffering for the java process so this shouldn't be an issue, as you said you have 16GB.

It might be that there is some sort of fragmentation occurring or that you have a limit on virtual memory available on the system, I don't really know as I'm not familiar with those machines.
You might want to look inside /var/log/syslog or /var/log/messages.

I would try to run the server with as little memory as possible to see if it starts and works and then look further into the issue.
I hope this helps!

For everyone that's adding me on Steam:
I'm so sorry, I would like to help you all but I don't have the time to add and help each one of you individually and it stresses me out a little bit seeing all those requests so please, kindly stop.
I try my best to check this thread when I have a moment so I can help a little bit but that's about as much as I can do. Hope you understand.:lunar2019piginablanket:
Автор сообщения: Alphanoobmeric
With all of the above help from everyone, especially Dyarven, I've almost got this running. The server launches, seems to be running. Players can even make their characters, but then it craps out as soon as it finishes loading:

Warning, root node parent is always null.
GameServer.mainLoopDealWithNetData> Error with packet of type: PlayerConnect for
java.lang.NullPointerException: Cannot read field "name" because "<local3>" is null

I'm not sure if this is an issue with ARM/Java emulation or the server itself bugging out as I found many posts online about it. If it only happens to a specific player you might wanna try creating a new character from scratch and leaving that one
First of all, thank you @Dyarven for keeping your eye on this, I really appreciate - and I understand what you mean with all the friends requests.

Second of all, people: Remember that although we had success on running the Project Zomboid server via multiple forms on ARM64 servers, it is nothing more than a Proof of Concept at this point, there are several issues that WILL happen due the nature of how we are doing this.

This is nested emulation and we are forcing an Reduced Instructions Set Processor (which is simple, single-clock cycles and makes heavy use of RAM) to emulate a 32-bit and ALSO a 64-bit Complete Instructions Set Processors (Which are very complex, needs multiple clock cycles and uses RAM very differently).

Java is Java, it is meant to be WORA (Write Once, Run Anywhere) - that means that anything programmed in Java could, in theory, be run in any platform that supports Java - That being said, we could also understand this as Java being an engine that can be used in any type of machine that needs a motor - however, you can't make a plane out of everything, even though it has a motor.

Project Zomboid as a client, for example, would need a graphics accelerator (a graphics card) so that it can aid the CPU to do all the awesome isometric visuals. Even though its Java, an ARM Processor wouldn't be able to do all that a CPU + GPU can do (At least, nowdays with the available free technology). We even have "ARM GPU", such as the ones found on your smartphone.

If you want to understand a little bit more on RISC vs CISC, read this article[www.per-international.com]

PZ's Server would, supposedly, be completely able to run off an ARM Server - but we don't know all the Java Libraries it uses and also if these libraries have compatibles or similars in ARM versions - so it wouldn't be a simple re-compile to ARM64 Binaries, there would be work and experimentation envolved.
(And btw: Project Zomboid is not Open Source<<)

Another very important thing: Project Zomboid Server OFFICIALLY requires Steam to work!
SteamCMD at least is needed so that the PZ Server can communicate with Steam Servers and be broadcasted to players and use their IDS, eventually VAC, etc...
And SteamCMD has ZERO ARM Support for now, and no matter how simple its steams blows inside, we also don't know how much complexity on libraries it uses.

I know that Valve has been kinda something ish moving towards ARM architecture thanks to the Steam Deck and etc... But thats not really related and its another subject.

ANYWAYS

The server do work, the script works BUT - I would recommend you reading through @Dyarven bash script and try to do it manually so that you can get a grasp of what we are doing in practice - this way will make you waaay much better at troubleshooting errors.

AND FINALLY:

I kept a server running like this and experimented alot with it, here is what I know:

Vanilla = Takes a medium time to start the server, intermittent crashing (Everytime it crashes, you MUST reboot the VM), and once its up, it works good for a SMALL amount of players (considering that they won't take a car and move fastly crossing too many cells, the server takes a long time to generate spawns and new cells, so it will take some moments to load new areas if you move too fast).
That being said, No Cars gameplay is recommended for a good experience

With Mods = Takes a long time to start the server (I mean 100+ MODS here). Crashes often depending on the mods installed, and once its up: Same as before, as long as we don't mess around too much with cells, you're good to go - except that with mods, cells takes even longer to generate.

Thats that, thanks everyone envolved, sorry for not being able to help more.
The Devs already had their say in this and its a no-no for now.
my error in server-console.txt
ERROR: General , 1701572182892> 715,978,243> java.util.NoSuchElementException: No line found
ERROR: General , 1701572182894> 715,978,245> at java.base/java.util.Scanner.nextLine(Unknown Source)
ERROR: General , 1701572182895> 715,978,246> at zombie.network.ServerWorldDatabase.create(ServerWorldDatabase.java:507)
ERROR: General , 1701572182895> 715,978,246> at zombie.network.GameServer.main(GameServer.java:644)
idk that wrong :/
Hi everyone. I'm trying to run the server on Raspberry Pi 4. I managed to run steamcmd and download server files by using steamcmd/steamcmd:latest docker image and passing the following script to steamcmd command:

@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once @NoPromptForPassword 1 force_install_dir /SteamCMD login anonymous app_update 380870 validate quit

The "SteamCMD" directory has a docker volume set up.

Now (to bypass "couldn't determine 32/64 bit of java") I'm trying to run start-server.sh from a container, again created from the steamcmd/steamcmd:latest image.

Unfortunately, it gets stuck at
pzexe: using jvm "/SteamCMD/jre64/lib/server/libjvm.so"
and just hangs, without any errors.

Full output of start-server-sh:
64-bit java detected ERROR: ld.so: object 'libjsig.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. pzexe: looking for PZXInitThreads.so pzexe: libPZXInitThreads64.so was not found. This is ok for a server, but multi-core rendering won't work on a client without it. pzexe: about to run java hack to locate libjvm.so... pzexe: executing "java -classpath pzexe.jar -Djava.library.path=. zombie.pzexe" ERROR: ld.so: object 'libjsig.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored. pzexe.java: loading shared library "pzexe_jni64" JVM=/SteamCMD/jre64/lib/server/libjvm.so pxexe: /proc/self/exe=/SteamCMD/ProjectZomboid64 pzexe config file: /SteamCMD/ProjectZomboid64.json pzexe: mainClass: zombie/network/GameServer pzexe: classpath: -Djava.class.path=java/.:java/istack-commons-runtime.jar:java/jassimp.jar:java/javacord-2.0.17-shaded.jar:java/javax.activation-api.jar:java/jaxb-api.jar:java/jaxb-runtime.jar:java/lwjgl.jar:java/lwjgl-natives-linux.jar:java/lwjgl-glfw.jar:java/lwjgl-glfw-natives-linux.jar:java/lwjgl-jemalloc.jar:java/lwjgl-jemalloc-natives-linux.jar:java/lwjgl-opengl.jar:java/lwjgl-opengl-natives-linux.jar:java/lwjgl_util.jar:java/sqlite-jdbc-3.27.2.1.jar:java/trove-3.0.3.jar:java/uncommons-maths-1.2.3.jar:java/commons-compress-1.18.jar pzexe: vmArg (json) 1: -Djava.awt.headless=true pzexe: vmArg (json) 2: -Xmx8g pzexe: vmArg (json) 3: -Dzomboid.steam=1 pzexe: vmArg (json) 4: -Dzomboid.znetlog=1 pzexe: vmArg (json) 5: -Djava.library.path=linux64/:natives/ pzexe: vmArg (json) 6: -Djava.security.egd=file:/dev/urandom pzexe: vmArg (json) 7: -XX:+UseZGC pzexe: vmArg (json) 8: -XX:-OmitStackTraceInFastThrow pzexe: using jvm "/SteamCMD/jre64/lib/server/libjvm.so"

Has anyone encountered this issue or might have a possible solution to it?
< >
Сообщения 3145 из 82
Показывать на странице: 1530 50

Дата создания: 29 июн. 2022 г. в 7:19
Сообщений: 82