-
Notifications
You must be signed in to change notification settings - Fork 34
Chrome OS w/ Android + Vulkan works on regular PC #153
Comments
Hi @XaeroVincent, |
Hi @oscarbg, Yes! Vulkan works on ChromeOS's Android container on my Dell Inspiron 5559. It was broken in the previous ChromeOS build but appears to be working in v10176.76.0 / 64.0.3282.190. I tested the GPU with 3DMark, VulkanCapsViewer and OpenGL ES CapsViewer. It appears ChromeOS 64 is using Mesa 17.3 RC5, which on the Intel i915 driver exposes Vulkan 1.0.57 and OpenGL ES 3.1 in the Android 7.1.1 container. As of now, the Intel OpenGL ES driver seems to be more optimized than their Vulkan driver. I would love to be able to get it working in VMware on my gaming laptop with a GTX 1070. I'm able to recompile the Linux 4.4 kernel with the VMware SVGA3D graphics driver (VMWGX), however the VMware just reboots at the splash screen. With the newer 4.14 ChromeOS kernel, VMware will boot into ChromiumOS desktop but Android support breaks whenever not using the official 4.4 kernel, which defeats the point of wanting to use it. I've also tried making kernel headers from the 4.4.96 kernel and manually compiling the driver in a chroot but for whatever reason the symbols still don't match and I'm not able to modprobe nor insmod 'vmwgfx.ko'. It's seems pretty clear that the magic bits to make Android / ARC++ work on ChromeOS is secretive. I have been unsuccessful at getting the Play Store / Android to work with anything except the official bundled ChromeOS 4.4.96 kernel, even when testing bare-metal on my Dell laptop. :( [cries a long time] I've tried compiling several different ChromeOS kernels, making sure the Android kernel features were enabled in base.conf and even extracting the base.conf from the binary, official ChromeOS kernel, but still no dice. When I click the Play Store icon when running on other kernels, it just spins--no window ever pops up and the ARC container doesn't mount properly in '/run'. It should mount the Android root to something like "/run/containers/android_5oNjIR/". ChromeOS in QEMU w/ GVT + DMA-BUF may work, but as I've mentioned on the Intel forum, I was only able to get DMA-BUF working with SeaBIOS. ChromeOS at best would only support TianoCore UEFI, as Chrome OS will not work with SeaBIOS or any legacy BIOS / CSM from what I can tell. Chrome OS appears to require an EFI system with some special ChromeOS EFI extensions and a GPT partition table. Your best bet is to just run an Android x86 Oreo build directly on-top of QEMU w/ SeaBIOS as we already know that DMA-BUF works that way. The filesystem layout (comprising of several different partitions) is very strange compared to normal Linux distros. |
Hi @XaeroVincent , can you give me a hint on what you mean with
I searched, but didn't found somthing. |
Hi there @mploetne, There are no official guides. The gist of it is you first need to install a Chromium OS build then download an official recovery image listed in recovery.conf, copy it to a flash drive then use gparted to resize the resulting the sda1 and sda3 partitions. Afterwards, boot into Chromium OS and use 'dd' to overwrite the data in the sda1 and sda3 partitions from the respective partitions on the flash drive. I recommend using an x86-64 branch that uses the Linux 4.4 kernel, such as 'eve' or 'coral' https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices After this, you should be able to boot into official chrome OS (if you have integrated Intel graphics). Almost no chance of it working with Radeon or GeForce GPUs because the driver modules for those aren't included with the official builds. However there will still be problems. You'll very likely need to download the Linux binary firmware files for and place them in /lib for Intel / Realtek WiFi + Bluetooth to work then remove the blacklisted module in /etc/modprobe for audio to work. It's quite an involved process and you definitely need to be comfortable with a Linux environment and have 'close-enough' laptop hardware. Now of course it's possible to recompile the kernel with more features and driver modules for broader hardware support (I've done just that multiple times) but for whatever reason, it breaks Android support, which is the only reason anyone would want to try an official image in the first place. What might be another interesting scenario is if it's possible to get an Android OS image to run on-top of the KVM-based Crosvm virtual machine. I know Google is working to port QEMU's Virtio GPU drivers to Crossvm to provide accelerated graphics output on Chrome OS's built-in Wayland compositor. I'll have to check and see if the Crossvm bits have landed in vanilla Chromium OS 67 developer builds that Arnold The Bat hosts. I have managed to get QEMU w/ an Android guest to appear on Chrome OS's Wayland compistor with GTK and SDL QEMU windows (when I recompiled the kernel with KVM and VirtIO support enabled), by using Crouton chroot but only with software rendering enabled. The QEMU window freezes on the Chrome OS's Ash desktop when '-vga virtio' + 'gl=on' is enabled but works fine with software rendering but that sucks for playing Android games. Anyway, it's a lot of fun to play with but honestly the best Android support I've seen outside of Official Chrome OS is running Android as a VM guest on-top of QEMU on Archlinux or Ubuntu w/ DMA-BUF enabled (Intel GVT-g shared GPU pass-through technology). Virtio GPU may work on bleeding-edge Android x86 builds as well but I haven't tried that yet. |
@XaeroVincent, Just out of curiosity, Chrome OS uses some kernel modules(namely |
@Thisuu, Yeah the kernel base.conf has some modules that are compiled in and I made sure those were enabled my kernel config: CONFIG_ANDROID=y However, even if I compile the same exact release kernel https://chromium.googlesource.com/chromiumos/third_party/kernel/+/release-R64-10176.B-chromeos-4.4 ...with the exact base.conf extracted from the backup kernel via: cat /proc/config.gz | gunzip > base.config, Android apps still won't run with the freshly compiled kernel. However, I did notice something interesting, which might explain it? I've been using the latest GCC 7.x toolchain in my chroot or VM to compile the kernel. It appears Google is using the GCC 4.9 Android compiler toolchain to build the official ChromeOS kernels. |
@XaeroVincent Not sure if that's causing the issue.. may be try with GCC 4.9? Also make sure support for cgroups and user namespace etc are enabled, see https://www.funtoo.org/Linux_Containers#Kernel_configuration And please ping me if you find a workaround/reason causing that delayed login :) |
@XaeroVincent So it seems like some dbus services are causing the login process hang, Try removing |
@Thisuu Thanks for the suggestion! 'org.chromium.Trunks.conf' does indeed contain a 4 minute timeout to halt the login process relating to the TPM and taking ownership of it. Because this Dell laptop isn't a chromebook it doesn't recognize it's TPM chip, which just causes the various TPM related processes to fail and spawn error messages in dmesg, which is probably the reason for the long delay--before Chrome's login manager finally gives up trying to query info from the unrecognized TPM. Lowering the value or deleting these or other files does have an impact, however not the one I was expecting. Instead of the long pause before logging in, it just quickly just rejects the login authentication and just loops back to the login screen and I'm never able to login. Deleting other files like tpm_manager, cryptohome, trunks, attestation, etc will just break the login manager and never log the user in. The log files shown it was cryptohome daemon rejecting the credentials when timeout is set really low. Trusted Platform Module chip authentications and SELinux enforced policies are very heavily ingrained in the the official ChromeOS images. Google isn't joking when they say they focus on security with Chrome OS. That said, I managed to get another Chrome OS image to work without the login lag (after a fair bit of fiddling) and is based on the new Meltdown/Spectre-patched Chrome 65. This image came with kernel 3.18, which works with Android too. I swapped that kernel out from the image for another image's 4.4.111 kernel and that is working just fine too with Android's Google Play. The images are missing a lot of proprietary firmware blobs, so I just merged my Archlinux VM's /lib/firmware directory with that on Chrome OS and suddenly WiFi and Bluetooth started working. @Thisuu Have you tried making an official Chrome OS w/ Android support working on a standard PC too? You should try it...it's plenty of fun and Chrome OS is quite a nice operating system w/ an added Linux chroot and far more interesting with container-based Android support because most Chrome Web Apps and games are laughable garbage compared to the Play Store and the Chrome App platform has been deprecated by Google in favor of WebAssembly and other web technologies. I won't try redistributing my PC-fixed official Chrome OS images as I'm sure Google's lawyers would unleash their wrath on me but I doubt Google cares if you you're geeky enough to make them work on your whitebox PCs for the purpose of personal use. :) I will see if I can get the Android 4.9.x GCC stack and build 4.14 with Android support enabled and see if that makes it work. That said, simply recompiling the kernel with RadeonSI/AMDGPU and Nouveau modules enabled aren't enough (I tried) because the ChromeOS's Mesa stack is missing the OpenGL drivers for AMD and Nvidia cards too, which means Mesa will need to be recompiled with those drivers. This would probably require a full ChromeOS rebuild? |
@XaeroVincent Yeah,I already have :D Did a I had a 4-5 minutes login lag before and it was reduced to 2mins after removing Welll i have no idea tbh. I really needed to give it a try building an img and see how it goes,my my HD is full of personal stuff right now. So may be i'll have to do a clean up first :) Also what's ur Arch's kernel version? I'm using Solus as primary OS,so I'll see if copying over firmware from that works. |
Well, I'm gonna try do this too, TRY! |
Hi everone, I also installed Chromium OS (Special build from Arnold) and replaced the content of the sd*3 partition with the asuka recovery build. I did not replace the /boot and the /lib folder. Furthermore I also commented the entry in alsa-sld.conf for audio support. Everything works fine except Google Playstore. Accepting the licenses results in an error. |
Can anybody publish step by step instructions on how to get chrome os on desktop pc, with working playstore for extra dummy? |
Do you have a working Chromium OS installation from https://arnoldthebat.co.uk/wordpress/2018/02/11/chromiumos-enhanced-special-build-r64-10176-b/ on your PC? |
Yes, i do. Latest Arnold's chromium os 64 special |
fine. then you need to download a recovery image, which is is fitting for your architecture/platform you have here a list for all supported devices here you can find your chosen image: https://dl.google.com/dl/edgedl/chromeos/recovery/recovery.conf after downloading please use following commands to open the third partition of the image (be sure to be root) losetup -fP {path_to}/chromeos_10323.62.0_asuka_recovery_stable-channel_mp.bin mkfs.ext4 /dev/sda5 mount /dev/sda5 /home/chronos/local type losetup to get a list, search for loop{number}p3 mount /dev/loop{number}p3 /home/chronos/image -o loop,ro cp -av /home/chronos/image/* /home/chronos/local rm -rf /home/chronos/local/lib/firmware cp -av /lib/firmware /home/chronos/local/lib/modules/ rm -rf /home/chronos/local/etc/modprobe/alsa-skl.conf change in /home/chronos/local/etc/selinux/config the word enforcing to permissive type in the command sync to ensure everything is stored and then reboot. after that you need to change the bootloader to set root=/dev/sda5 to see if everything has worked out fine. just type e on the black bootloader screen, change the root entry as described above and press F10. you should now see the Chrome OS image instead of Chromium OS. i am not sure if you will lose any data, so be sure to backup everything needed. |
localhost / # mount /dev/loop1p3 /home/chronos/image -o loop,ro In /dev are:
Then
ls gives localhost / # ls /lib/modules/ Then: localhost / # cp -av /lib/modules/4.14.3 /home/chronos/image/lib/modules/ |
I updated my description / mistakes. Thank you for your feedback. In your case the required partition seems to be loop2p3. Try that for the losetup command. |
losetup show's:
But ls /dev, show's loop1p3, so i used it:
Command's seem's to be worked fine. After reboot i pressed e, and added to boot string root=/dev/sda5 and i got chrome logo, but it goest to reboot, probably downloaded incompatible image or probably due to using nvidia gpu as main. I'm gonna try asuka too. |
Thanks for the guidance! @ggy7 I simply chose local image B to boot into chrome OS, as in the boot entries there is no 'root=/dev/sdX' text but instead UUIDs for the different partitions. @XaeroVincent Can you tell me how you resized the sda1 and sda3 partitions? With GParted I get the error that e2fsck needs to be updated. (I'm using a version from 22-Mar-2018, so that shouldn't be the case) |
Local image B doesn't work for me, i just changed UUID to root=/dev/sda5 in Local image A boot string |
Ok, system boot's. Can you tell me, how can i permanently save boot entry root=/dev/sda5 in Grub? How can i find and mount boot partition to edit grub.cfg, if i understand properly. Thnx. And look like i don't have sound. |
@ggy7 On the 12th partition (/dev/sda12) is the boot loader (efi and syslinux). You can find the files to change there. |
Thanks, done with it. But i've noticed that i don't have a sound. Sound control show's only one output UVC cam, USB... Alsamixer show's only this variant too. Any ideas? |
@ggy7 did you remove this file: /home/chronos/local/etc/modprobe/alsa-skl.conf it prevents loading the kernel module for sound |
look like i skipped this command. I tried this command again and it say's done, it doesn't helped. When i checked where is alsa-skl.conf, using find / -name alsa-skl.conf it say's /etc/modprobe.d/alsa-skl.conf and it's in read-only mode, i can't remove it. |
I used Gparted Live CD to resize them. @ggy7 ChromeOS by default boots with the root partition in read only mode. Do "sudo mount -o remount, rw /" to fix that. |
Thanks. Fixed! |
Any idea how to get Qualcomm Atheros QCA61X4a working? |
I have an Ivy Bridge processor, so basically my only chance is an image that will not receive any more updates ? |
@DiogoSilva48, you can try the chromebook pixel (2015) or FydeOS (https://fydeos.com/download/). |
FydeOS works really well except that my laptop is optimus and overheats with this and sometimes it just turns off. |
@volram I tried the FydeOS image and then used this tutorial and his script ( http://zzsethzz.blogspot.com/2015/09/install-chromium-upgrade-it-to-chrome.html ) to install the Chromebook Pixel (2015) image and it booted fine but the problem is that trackpad, external mouse and even WIFI don't work, so I can't make the initial setup. I can use the tab to navigate so I know it's not frozen. The trackpad is recognized because when the screen dims when moving trackpad it lights up again, so maybe something mouse related. EDIT: The other mouse I used had a problem, external mouse working fine, just not trackpad. |
You have to copy the folder /lib/firmware to the new upgraded system. This folder contains the drivers. You can try even change the folder of the kernel (lib/modules) and the folder in sda12. |
@volram I replaced the whole lib folder from the Chromium special edition and still got the same problem, you think it didn't install correctly?? |
I am almost certain that is the kernel folder. In other words, you have to change the sda 12 partition with the content with sda12 of the special edition or from FydeOs. |
@volram I really don't understand that well but I will try to figure it out, thanks. I changed that on the sda5 partition, I think sda12 doesn't show up on ubuntu live cd. btw, I made the installation of chromeos on top of FydeOS. |
@DiogoSilva48, I have Linux Mint and mount the partitions with "disk" app. I think is the same proc. in Ubuntu. |
@volram I tried again with this guide http://www.rojter.tech/?p=39 and the special image, using pixelbook (2015) image, worked really well the only problem is that Google play store gives error, you try again takes a long time and then the same error. |
Try with the kernel of FydeOS (lib/modules) and sda12. |
i was able to get this working.
I am still concerned from a security perspective of fydeos. |
I got the Arnold the bat chromium version working with the play store. It is awesome. I now need to get the drivers from flintos in Arnold the bat. |
"cp -rf /lib/firmware /home/chronos/local/lib" worked on Fydeos, but copying the flintos "lib/firmware" doesn't fix the wifi for arnoldthebat. Any ideas. |
@volram if I open the fydeos image with 7zip which one of the IMG inside corresponds to the sda12 partition ? |
@volram like this |
EFI-SYSTEM.img. |
@volram when using FydeOS never boots, just using special build, even with Asuka build my device boots, works no problem but I still have the same play store problem and I can't figure out why. Anyway I created a telegram group, it's probably easier for us to talk about this http://t.me/chromeosforpc/ |
Try with this commands in Grub: iommu=soft (or iommu=off); acpi=force; acpi_osi=. |
@dnim0ecaep how did you manage to make the google play store work with Arnold the bat chromium version? |
@vincenzo697 I did. Though I had to use a usb network card. |
@dnim0ecaep how? Because Arnold's special build works for me but I don't have the play store/ android apps. Can you help me with a guide what you did? |
@allanin Hi Thanks for the tutorial. I'm currently on Arnold's latest 69 special build, and I managed to boot Chrome OS up but the only issue i'm having is wifi, and since my ethernet port is broken I have no choice. I have a dell inspiron 5520 with ivy bridge i5 3210m. Is there a workaround? |
I tried your tutorial, it seems to work in most builds, but not the chrome OS 69 builds where crostini support is present. I'm able to boot them, but it hangs at login/signup until it fails |
Does anyone have a 32 bit working image with the play store? I've been trying to use the Arnold special build and following the commands with different recovery builds but none of them are working on a 32 bit Dell Mini 9. Using the regular Arnold special build, I can still use the Dell Mini to watch HD videos on youtube so it would be great if someone could help me to get the play store with some light gaming for this old reliable laptop. |
@allanin Thank you for your tutorial. I followed it and booted my pc with the pixelbook (2015) image. But i cant find a way to enable developer mode. I would like to enable crostini support on my device. Any idea what to do ? Also my chrome://flags page is empty |
For everyone following this issue, there is a GitHub page with an updated process (and a shell script); BTW most of the code is from @allanin |
I am new in this area(Experiment with OSs'). |
Could this work for the raspberry pi |
Has anyone here tried to run the official Chrome OS images work, rather than Chromium OS, which lacks Android, Google Assistant, and Flash support?
It appears with some fiddling around, it's possible to get the genuine Chrome OS images to work on an ordinary Windows laptop. Mine is a Dell Inspiron 15 5000 series with a touch screen. At first, audio and wireless didn't work but after copying over the firmware directory from Arnoldthebat's Special Build and removing a kernel module blacklist, everything started working. 3D acceleration, sound, touch screen, web cam, touch pad, Android, etc. all work and installed to the hard drive.
It's not perfect, however. For some odd reason it takes like 3 minutes or so to login with my user account at the login screen, whereas on Chromium OS, I log in instantly. Once booted, everything is fine, though. Furthermore, laptop suspend/sleep (S3 power state) doesn't function properly (probably due to the older 4.4 kernel with newer ones having better laptop ACPI support), so I made sure to turn that off in the ChromeOS power settings. Lastly, automatic updates won't work. It sees the Omaha update server but the logs are showing that it refuses to connect because the update tool doesn't detect valid Chromebook BIOS firmware and/or hardware security module.
Out of curiosity, I replaced the 4.4.86 kernel with Arnoldthebat's Special Build 4.14 kernel and March 2nd 4.4.118 daily build kernel with the ChromeOS image and it booted fine and showed up in uname, however, the Android container wouldn't start but some of the ARC++ container mount points were still be made via df. ARC++ error messages in /var/log showed permission denied and file not found messages when using the other kernels. So it appears there is some special code compiled into with the official ChromeOS kernels that aren't included with the FOSS Chromium kernel sources?
Anyway, here is a screenshot:
The text was updated successfully, but these errors were encountered: