Replies: 22 comments 9 replies
-
Yes, sure. What would be the CFLAGS parameters tu use (and LDFLAGS also maybe?) |
Beta Was this translation helpful? Give feedback.
-
About half of the Chrome OS ARM devices are using the Rockchip RK3399, which has the following cflags:
Roughly the other half uses the MediaTek MT8173C, which I don't know the cflags for. |
Beta Was this translation helpful? Give feedback.
-
ok, but don't forget box86 is a 32bits apps, and need a 32bits chroot/multiarch/whetever to run on aarch64 linux. That may change at least the |
Beta Was this translation helpful? Give feedback.
-
Yep, so we can substitute I've just quickly tested, and the Crostini runtime does allow you to add the |
Beta Was this translation helpful? Give feedback.
-
I have added support for RK3399 in the CMakeList now. Does the support is enough for this ticket to be closed? |
Beta Was this translation helpful? Give feedback.
-
ChromeOS laptops have regular ARM CPUs that shouldn't be under one
"chromeos" device
I think it'd be a better idea to just add RK3288, RK3399, MT8183 options.
There isn't really anything special in ARM chromebooks to not have them
under same umbrella as "regular" ARM SBCs
|
Beta Was this translation helpful? Give feedback.
-
I'm failing to build with the MT8183. The RK3399 build appears to succeed, but the resulting binary is non-operable. |
Beta Was this translation helpful? Give feedback.
-
MT8183 seems to be Cortex-A73/-A53. How the RK3399 is non-operable? What kind of error do you get? |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Ah ok. You are missing the "armhf" multiarch. If you are on debian/armbian/ubuntu, use "sudo dpk --add-architeture armhf && sudo apt update && sudo apt install libc6:armhf" at least to have box86 running. On other OS, you need to use chroot or something similar... |
Beta Was this translation helpful? Give feedback.
-
Success! Something about the compile instructions gave me the impression that multiarch wouldn't be necessary. Now to fiddle with i386 wine to see if I can get Avernum going. It would be a huge add to this Chromebook. Thanks! |
Beta Was this translation helpful? Give feedback.
-
Good :) You will need a few more armhf libs for wine, like x11 and many other. Unfortunatly, I don't have the list. |
Beta Was this translation helpful? Give feedback.
-
I followed similar instructions to build, but used the Snapdragon 845 target since my Chromebook uses a Snapdragon 7C (which I assume is close enough, it's all ARM64). I did indeed have to enable the armhf architecture. However, for some reason it doesn't seem to have proper binfmt support.
This is after manually copying the box86.conf file into /usr/share/binfmts/box86.conf as per #419 , accounting for the differing format since I'm using a Ubuntu 22.04 container on Chrome OS (the default container they give you is Debian Bullseye). I also had to manually enable mounting namespaces in Chrome OS, which I had to search for as well. OP can be found here, but the necessary component is:
Now, if I try to enable binfmt support, I'm shown the following:
Unfortunately I'm stuck here. Without binfmt support, anything that fork/execs doesn't want to work. Is there something I'm missing? |
Beta Was this translation helpful? Give feedback.
-
I was able to partially fix this issue by doing a few additional things: From Crosh
After modifying lxc configs, it takes a little longer for the virtual machine to start up. Wait a few minutes to finish updating (it should give you a notification that the virtual machine is being updated), then launch Terminal as usual. Now, back in Terminal, update /usr/share/binfmts/box86.conf to read as follows:
Then
However, trying to actually run anything just results in box86 not working. Example:
Trying to run Box86 without binfmt does not seem to work either:
I'll keep digging through GitHub and Chrome OS issues to see if I can find anything, but I'm definitely running out of ideas. ... Additional (important) information: I gave up on Ubuntu 22.04 for the sole reason that it doesn't natively support side-by-side multiarch, meaning I couldn't install libc6:i386 alongside libc6:arm64. I'm now running a custom container with Debian Bookworm (arm64) installed, which is basically just a more up to date version of the default Bullseye container that Terminal sets up by default. If you want to follow along with Ubuntu, you'll need a chroot or proot setup. I'm no expert at that, but there are guides that are relatively easy to follow. You'll still need nesting and virtualization enabled for this to work, as far as I can tell. (For those curious, I wanted a variable sized virtual machine, so I had to build the container myself anyway, and I figured I might as well update to Bookworm while I was at it.) |
Beta Was this translation helpful? Give feedback.
-
Ok, partial success after looking at #465 . I completely forgot to install the armhf version of libc6, which as I understand is the interpreter responsible for loading and running 32 bit arm executables (even on arm64). I feel very close now to getting this fully working on Crostini. I can run simple text based programs now, still yet to run graphical programs. I'm surely only missing one small piece of the puzzle now. Sorry for the... triple post at this point, but I think documenting my experience is worthwhile, and I can make a full writeup when I'm successful in my end goal of launching Steam. |
Beta Was this translation helpful? Give feedback.
-
After some trial and error installing various armhf graphics drivers, I've finally gotten some OpenGL apps to run, including the Linux (Steam) version of VVVVVV! It runs flawlessly, too. I just had to go through steamcmd to download it, but I knew it was one of the few Steam games I own that doesn't actively use the DRM. Others may work by installing a Steam emulator like Goldberg. Will update shortly. UPDATE: Goldberg didn't fix games with broken symbols unfortunately. Also, I still haven't managed to get to the Steam UI at all, it crashes in the terminal, complaining about I'm fairly certain I've installed all the necessary libraries for Steam at this point, with an unhealthy mix of arm64, armhf, i386 and amd64 libs, half of which are probably unnecessary, since box86/64 mostly use native armhf libraries. I think the Global Symbol that's missing is the culprit, but not sure how to go about fixing it. I also tried installing Steam through Wine (
I know that Wine at least partially works because I was able to successfully open notepad.exe and cmd.exe. Would installing Winetricks or PlayOnLinux (or any other Wine helper tool) help at all? Something interesting I noticed is that running glxgears (i386 using box86 or amd64 using box64) runs much faster with the environment variable LIBGL_ALWAYS_SOFTWARE=1, which is odd. This behavior is not unique to box86/64, however, the armhf and arm64 versions also exhibit this weird behavior. ... Full steam output:
EDIT: Clarified on Goldberg Steam emulator, it doesn't fix games with broken Global Symbols |
Beta Was this translation helpful? Give feedback.
-
I'm migrating this ticket to Discussion, that seems more appropriate. |
Beta Was this translation helpful? Give feedback.
-
Hello. I'm using Lenovo Chromebook 10e and tried to install steam on it's crosini container (debian 11,soc mt8183). I've made a lot of progress but stucked at failing to load steamui.so. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
https://gist.github.com/nhobson99/98d1542e542d3aa25faa3c817d3f2a67 I forgot I had an entire writeup about using Box86 to run Steam on Chrome OS. I wanted to write a section about Wine but gave up on it. I hope this helps someone. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Sure after adding that hack:
Allows you to have |
Beta Was this translation helpful? Give feedback.
-
Would it be possible to make a compilation target for ARM-based Chromebooks running the included Linux runtime?
Beta Was this translation helpful? Give feedback.
All reactions