Skip to content

Run any OS on modern Chromebooks using chroots and para-virtualization.

License

Notifications You must be signed in to change notification settings

MilkyDeveloper/Campfire2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 

Repository files navigation

This project has been deprecated in favor of another project of mine, Breath. All future work will be done there. However, there is nothing stopping Campfire2 fom still working as an alternative to the older Crouton.

Campfire2.Demo.mp4

About Campfire2

Hardware Support Campfire2 Crouton Crostini
Internal Display Yes Yes (sommelier is not working) Yes
External Display Yes Mostly Yes
Touchpad Yes Mostly Yes
Touchscreen Yes Mostly Yes
WiFi Yes Yes Yes
3D Acceleration Yes (Can be used for gaming!) Mostly Yes (but using slower VirGL)
Audio Mostly Mostly Mostly
Camera Yes Yes Yes
Microphone No Sometimes Yes
USB Yes Yes No direct USB Access
Suspending/Resuming No (sommelier does not persist when suspending) Yes Yes
KVM Virtualization Yes Yes No (Not available on all chromebooks and slow)

Performance

Campfire2 and Crouton's performance are similar. The only reason to change from Crouton are Quality-of-Life improvements and maintenance. Basically, Campfire2 has the performance of Crouton but the reliability and GUI (known as Sommelier) of Crostini.

Crostini gets around ~17.5 FPS on default Minecraft using the (still very impressive!) VirGL drivers. On the other hand, using i965 and Mesa gives ~25 fps. Chromebooks released in 2019 can utilize a newer kernel and the new Gallium3d drivers, which would probably offer around ~30 fps.

Installing Campfire2

  1. Install Chromebrew: sudo rm -rf /usr/local > /dev/null; curl -Ls git.io/vddgY | bash
  2. Download/extract/configure the Ubuntu (20.04) Chroot:
crew install xterm xhost libunwind && echo "Downloading Ubuntu RootFS..." && curl --verbose -o /usr/local/ubuntu.tar.xz "https://cloud-images.ubuntu.com/minimal/releases/jammy/release/ubuntu-22.04-minimal-cloudimg-amd64-root.tar.xz" && sudo rm -rf /usr/local/ubuntu; mkdir /usr/local/ubuntu && sudo tar -xvf /usr/local/ubuntu.tar.xz -C /usr/local/ubuntu && sudo rm /usr/local/ubuntu.tar.xz /usr/local/ubuntu/etc/resolv.conf && sudo mkdir /usr/local/ubuntu/root/Downloads && sudo cp /etc/resolv.conf /usr/local/ubuntu/etc/resolv.conf && sudo curl https://raw.githubusercontent.com/MilkyDeveloper/Campfire2/main/startubuntu -o /usr/local/bin/startubuntu && sudo chmod 755 /usr/local/bin/startubuntu && startsommelier && echo "Done! Run sudo startubuntu to start the chroot."

Run sudo startubuntu to start the chroot.

Extras

3d Acceleration

3d Acceleration under the chroot requires a few steps. This is because Google ships a kernel made in 2016 on some flagship chromebooks.

  1. Install MESA: sudo apt update && sudo apt install mesa-utils
  2. Verify 3d Acceleration is not working: glxinfo -B | grep Device:
    • If it returns LLVMPipe, 3d Acceleration is not working. Otherwise, 3d Acceleration is already working and you can stop following this section.)
  3. Use i965 instead of Gallium3d/Iris: echo -e "# Fix 3d Acceleration on Kernel 4.4\nexport MESA_LOADER_DRIVER_OVERRIDE=i965" >> ~/.bashrc && source ~/.bashrc

Run glxinfo -b again and search for LLVMPipe. It should be gone and replaced with Mesa DRI Intel(R) UHD Graphics 🎉.

Audio

  1. Install Pulseaudio and Apulse: apt update && apt upgrade && apt install alsa alsa-tools apulse
  2. # Replace PulseAudio libraries with Apulse, which makes PulseAudio apps work with ALSA
    for lib in libpulse-mainloop-glib.so libpulse-simple.so libpulse.so; do
    
        set +e
       sudo rm -f /usr/lib/${lib} /usr/lib/${lib}.0 /usr/lib/x86_64-linux-gnu/${lib} /usr/lib/x86_64-linux-gnu/${lib}.0
        set -e
    
       sudo ln -s /usr/lib/x86_64-linux-gnu/apulse/${lib}   "/usr/lib/${lib}"
       sudo ln -s /usr/lib/x86_64-linux-gnu/apulse/${lib}.0 "/usr/lib/${lib}.0"
       sudo ln -s /usr/lib/x86_64-linux-gnu/apulse/${lib}   "/usr/lib/x86_64-linux-gnu/${lib}"
       sudo ln -s /usr/lib/x86_64-linux-gnu/apulse/${lib}.0 "/usr/lib/x86_64-linux-gnu/${lib}.0"
    
    done
    
  3. Run speaker-test (you may need to run it twice for it to work)

PulseAudio is complicated and is often considered bloated. A tool called Apulse is a much better alternative, creating a compatibility layer between PulseAudio libraries and ALSA. 99% of PulseAudio apps will work with Apulse. Apulse is automatically used; no special invocation is needed.

About

Run any OS on modern Chromebooks using chroots and para-virtualization.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages