Botspot / pi-apps

Raspberry Pi App Store for Open Source Projects
GNU General Public License v3.0
2.01k stars 205 forks source link

Google crostini does not have active kernel module information available #2432

Closed aldjplay closed 1 year ago

aldjplay commented 1 year ago

Confirmations

What happened?

'MuseScore' won't install. 'Minecraft Bedrock' won't install

Description

When I attempt to download Musescore 4 from the Pi-Apps store, it always gives me the error: User error: Failed to load the 'fuse' kernel module because you upgraded the kernel and have not rebooted yet. Please reboot to load the new kernel, then try again. I am using ChromeOS (Lenovo Chromebook Duet 3) with an ARM processor (Qualcomm 7180 (8 threads, 1.99GHz)

Steps to reproduce:

  1. Open Pi-Apps
  2. Select "All Apps"
  3. Find and click on "MuseScore" or "Minecraft Bedrock"
  4. Click "Install"

Expected Behavior: "MuseScore" or "Minecraft Bedrock" installs

Actual Result: an Error occurs

User error: Failed to load the 'fuse' kernel module because you upgraded the kernel and have not rebooted yet. Please reboot to load the new kernel, then try again. image image

Extra Info:

I have attempted to install MuseScore more than 5 times with the same result, along with Minecraft Bedrock about 3 times. I have reproduced it on the original Lenovo Chromebook Duet as well. I have restarted Crostini(the Linux container within ChromeOS) and have restarted my Chromebook multiple times. The error always pops up. However, I was able to install other applications like Audacity and the Minecraft Prism Launcher. Something about "fuse"

The log file provided is for MuseScore. For Minecraft Bedrock, see here(https://github.com/Botspot/pi-apps/files/12414614/install-fail-Minecraft.Bedrock.log)

What are your system specs (run the following command in your terminal)?

OS: Debian GNU/Linux 11 (bullseye)
OS architecture: 64-bit
Last updated Pi-Apps on: 08/20/2023
Latest Pi-Apps version: 08/22/2023
Kernel: aarch64 5.15.112-19404-g55fe7e355056
Device model:  
Cpu name: 
Ram size: 2.76 GB
Language: en_US.UTF-8

(Recommended) Error log? Terminal output? Debug messages?

OS: Debian GNU/Linux 11 (bullseye)
OS architecture: 64-bit
Last updated Pi-Apps on: 08/20/2023
Latest Pi-Apps version: 08/20/2023
Kernel: aarch64 5.15.112-19404-g55fe7e355056
Device model:  
Cpu name: 
Ram size: 2.76 GB
Language: en_US.UTF-8

BEGINNING OF LOG FILE:
-----------------------

Will install these packages: fuse3 libfuse2 
Creating an empty apt-package to install the necessary apt packages...
It will be named: pi-apps-b8e94dcf
Depends: fuse3, libfuse2
Running sudo apt update...
Hit:1 https://deb.debian.org/debian bullseye InRelease
Hit:2 https://deb.debian.org/debian bullseye-backports InRelease
Ign:3 https://storage.googleapis.com/cros-packages/115 bullseye InRelease
Hit:4 https://security.debian.org bullseye-security InRelease
Hit:5 https://storage.googleapis.com/cros-packages/115 bullseye Release
Hit:6 https://adoptium.jfrog.io/artifactory/deb bullseye InRelease
All packages are up to date.
apt update complete.
Installing the pi-apps-b8e94dcf package...
The following additional packages will be installed:
  fuse3
The following packages will be REMOVED:
  fuse
The following NEW packages will be installed:
  fuse3 pi-apps-b8e94dcf
0 upgraded, 2 newly installed, 1 to remove and 0 not upgraded.
After this operation, 34.8 kB disk space will be freed.
Get:1 /home/aldjplay/pi-apps-b8e94dcf.deb pi-apps-b8e94dcf all 1.0 [752 B]
dpkg: fuse: dependency problems, but removing anyway as you requested:

 xdg-desktop-portal depends on fuse; however:

  Package fuse is to be removed.

  Package fuse3 which provides fuse is not installed.

(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 51124 files and directories currently installed.)

Removing fuse (2.9.9-5) ...

(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 51113 files and directories currently installed.)

Unpacking fuse3 (3.10.3-2) ...

Unpacking pi-apps-b8e94dcf (1.0) ...

Installing new version of config file /etc/fuse.conf ...

Apt finished.
Package installation complete.
environment: line 30: lsmod: command not found

User error: Failed to load the 'fuse' kernel module because you upgraded the kernel and have not rebooted yet.
Please reboot to load the new kernel, then try again.

Running purge_packages...
Allowing packages required by the MuseScore app to be uninstalled
These packages were: fuse3, libfuse2
Purging the pi-apps-b8e94dcf package...
The following packages will be REMOVED:
  pi-apps-b8e94dcf*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 0 B of additional disk space will be used.
(Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 51126 files and directories currently installed.)

Removing pi-apps-b8e94dcf (1.0) ...

Apt finished.
All packages have been purged successfully.

Failed to install MuseScore!
◢◣Need help? Copy the ENTIRE terminal output or take a screenshot.
Please ask on Github: https://github.com/Botspot/pi-apps/issues/new/choose
Or on Discord: https://discord.gg/RXSTvaUvuu
github-actions[bot] commented 1 year ago

Hello there 👋 Thanks for submitting your first issue to the Pi-Apps project! We'll try to get back to you as soon as possible. In the meantime, we encourage you join our Discord server, where you can ask any questions you might have.

Please respond as soon as possible if a Pi-Apps maintainer requests more information from you. Stale issues will be closed after a lengthy period of time with no response.

Botspot commented 1 year ago

ChromeOS is not completely compatible with Pi-Apps, so expect to see errors for some apps. Thanks for reporting this though. If there is something we can do to help ChromeOS users, we'd be glad to help. I suggest you research how to get AppImages running under Crostini. That is what the fuse kernel module is necessary for in this case. If the internet says there's no way to run appimages, then there's your answer. But maybe there is a way. I don't have the time right now to do that research myself.

aldjplay commented 1 year ago

Hey! Sorry I accidentally sent the bug report before I finished. I updated it. About your suggestion: As far as I'm aware, AppImages definitely run under Crostini. I have a few apps that do work like an unofficial build of MuseScore 3.6.2 for ARM and a few others. However, the AppImage must be compatible with the architecture that the device(in this case, Chromebook) uses (ARM vs x86_64?). As for the fuse kernel module, I'll have to look more into that. (fyi, I'm not very familiar with most of this technical stuff)

Botspot commented 1 year ago

Pi-Apps correctly detects compatible system architecture. For MuseScore, we install either an armv7l or arm64 appimage. Try removing this line from MuseScore's install script: enable_module fuse || exit 1, then try installing Musescore again. It should install now. See if it runs. If it does, I'd be curious if @theofficialgman knows of a clean way to detect when kernel modules are necessary, or if a hacky workaround needs to be added for ChromeOS devices when trying to enable the fuse kernel module.

theofficialgman commented 1 year ago

@Botspot I think you missed the simple issue

environment: line 30: lsmod: command not found
  #load the module now if not already loaded
  if ! lsmod | awk '{print $1}' | grep -qxF "$module" ;then
    errors="$(sudo modprobe "$module" 2>&1)"
    if [ $? != 0 ];then
      #if modprobe fails, the module may be missing because user upgraded the kernel and has not rebooted yet.
      if [ ! -d "/lib/modules/$(uname -r)" ];then
        error "\nUser error: Failed to load the '$module' kernel module because you upgraded the kernel and have not rebooted yet.
Please reboot to load the new kernel, then try again."
      else
        #other modprobe error: exit now and display modprobe output
        error "$errors"
      fi
    fi
  fi

lsmod shows ALL kernel modules currently ACTIVE, whether builtinto the kernel (=y) or loaded in as a module (=m)

the user does not not have the lsmod binary or the modprobe binary so it results in an error, triggering our error check.

lsmod and modprobe are from the debian package kmod. I was not aware of any distros NOT shipping kmod by default but it appears chromeOS crostini does not as we can see.

@aldjplay don't try what botspot says yet. first try doing a sudo apt install kmod -y and then try installing again from pi-apps without any changes.

theofficialgman commented 1 year ago

also @aldjplay since your device model and CPU info are empty. do you know of any way that we can obtain relevant information from crostini about it being crostini?

we already try a lot of common files but it appears none of these are available in crostini on your chromebook

  if [[ -d /system/app/ && -d /system/priv-app ]]; then
    model="$(getprop ro.product.brand) $(getprop ro.product.model)"
  fi
  if [[ -z "$model" ]] && [[ -f /sys/devices/virtual/dmi/id/product_name ||
          -f /sys/devices/virtual/dmi/id/product_version ]]; then
    model="$(tr -d '\0' < /sys/devices/virtual/dmi/id/product_name)"
    model+=" $(tr -d '\0' < /sys/devices/virtual/dmi/id/product_version)"
  fi
  if [[ -z "$model" ]] && [[ -f /sys/firmware/devicetree/base/model ]]; then
    model="$(tr -d '\0' < /sys/firmware/devicetree/base/model)"
  fi
  if [[ -z "$model" ]] && [[ -f /tmp/sysinfo/model ]]; then
      model="$(tr -d '\0' < /tmp/sysinfo/model)"
  fi

maybe google is using a non-standard devicetree location? does this have any contents? cat /proc/device-tree/base/model

aldjplay commented 1 year ago

@aldjplay don't try what botspot says yet. first try doing a sudo apt install kmod -y and then try installing again from pi-apps without any changes.

The same error message appears appears, but it does seem that kmod wasn't installed Screenshot 2023-08-23 2 41 58 PM Here's a log file from Pi-Apps. install-fail-MuseScore.log

does this have any contents? cat /proc/device-tree/base/model

Here's the result: cat: /proc/device-tree/base/model: No such file or directory I looked through the file system with Dolphin and I got to /proc/device-tree, but I couldn't find a folder named 'base'.

As for your question @theofficialgman, I am not aware of any way to check the cpu info and that stuff from crostini. However, here's the cpu info from the Diagnostics app on ChromeOS: Qualcomm 7180 (8 threads, 1.99GHz) My device model name from the back of my chromebook says: IP Duet 3 Chrome 11Q727 Its a Lenovo Chromebook Duet 3

theofficialgman commented 1 year ago

The same error message appears appears, but it does seem that kmod wasn't installed

actually the error is different. firstly, kmod is the name of the package, not any individual binary. the binaries lsmod and modprobe did get installed.

libkmod: ERROR ../libkmod/libkmod-module.c:1668 kmod_module_new_from_loaded: could not open /proc/modules: No such file or directory
Error: could not get list of modules: No such file or directory

This error comes from lsmod which is a wrapper designed to format the contents of /proc/modules.

Unforunately it looks like crostini is bad and does not make the list of active kernel modules available. That pretty much breaks linux kernel spec and is not helpful. A bit more information from other users who discovered that is here -> https://github.com/adrienverge/openfortivpn/issues/335#issuecomment-397394994

While it makes sense that google would not allow you to load your own kernel modules (that could be a security issue) it doesn't make sense that they don't mount the directory to show you the active kernel modules.

There really is nothing we can do here to get the actual information we need to determine if the fuse module is active since crostini does not provide this information anywhere. In addition, there is no way for us to even hackily disable that check for all crostini users since we can't determine if the user is running crostini as previously mentioned.

@aldjplay if you are able to look through all the /proc/device-tree files and find any information in there that could be used to differentiate crostini from any other linux system let me know. I will consider this an upsream (google crostini) bug and mark it as such.

aldjplay commented 1 year ago

Alright. Thanks for the help! I will add, the MuseScore 4.0.2 AppImage on your large-files release page does work. https://github.com/Pi-Apps-Coders/files/releases/tag/large-files, although it does appear small for an 11" screen. Here's a screenshot of that. (https://github.com/Botspot/pi-apps/assets/142936250/587892a4-7687-41ae-a576-840cebbd58d5)

As for your final request, I'll try my best. 👍

theofficialgman commented 1 year ago

@aldjplay does this have any output? zcat /proc/config.gz or this cat /boot/config or this cat /boot/config-$(uname -r)

If presend we can use these as an absolute fallback for checking if FUSE =y in the kernel config

aldjplay commented 1 year ago

Here's the output from running cat /boot/config and cat /boot/config-$ (uname -r) Screenshot 2023-09-01 12 29 14 PM I do have to ask, was I supposed to include my username in cat /boot/config-$ (uname -r) somewhere?

As for zcat /proc/config.gz the output was so long, I only have part of it. Do you know of anyway to see the whole output? Here's the text file of like 1048 lines: partialoutput.txt

theofficialgman commented 1 year ago

I can see the output contains CONFIG_FUSE_FS=y in zcat /proc/config.gz

that is enough information, thanks

aldjplay commented 1 year ago

Alright. You're welcome!

theofficialgman commented 1 year ago

@aldjplay one more thing is there any output from this?

modinfo fuse
aldjplay commented 1 year ago

It appears no. image

theofficialgman commented 1 year ago

modinfo is from the kmod package that I had you install earlier did you remove it?

sudo apt install kmod

then try again

aldjplay commented 1 year ago

Yeah I restored an backup from before I installed the kmod package. My bad. image **the first two lines are from earlier

theofficialgman commented 1 year ago

it should be there. maybe /sbin isn't in PATH use the full directory

/sbin/modinfo fuse

sometimes you also have to reload the current list of files in PATH with

hash -r

after installing stuff

aldjplay commented 1 year ago

Here's the output. (It's still on the same terminal window with everything & stuff so it's all at the bottom) image

theofficialgman commented 1 year ago

is there any output from ls -l /sys/module

aldjplay commented 1 year ago

Here's the output: output.txt

theofficialgman commented 1 year ago

Here's the output: output.txt

perfect. I will use this as a fallback to check for currently loaded/active modules

drwxr-xr-x 3 nobody nogroup 0 Sep  1 12:26 fuse

This issue will close automatically when I commit something that does that to pi-apps.

aldjplay commented 1 year ago

Alright! Glad to help!