mirror of
https://github.com/kasmtech/workspaces-images.git
synced 2024-11-24 17:13:10 +01:00
Merge branch 'feature/KASM-5433_redroid_ashmem' into 'develop'
KASM-5433 Remove ashmem check Closes KASM-5433 See merge request kasm-technologies/internal/workspaces-images!162
This commit is contained in:
commit
25b2f27dcb
@ -1,15 +1,48 @@
|
|||||||
# About This Image
|
# About This Image
|
||||||
|
|
||||||
This Image contains a browser-accessible version of [Redroid](https://github.com/remote-android/redroid-doc).
|
This experimental image contains a browser-accessible version of [Redroid](https://github.com/remote-android/redroid-doc).
|
||||||
redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution.
|
redroid (Remote-Android) is a multi-arch, GPU enabled, Android in Cloud solution.
|
||||||
|
|
||||||
|
The image utilizes Docker in Docker (DinD) to automate launching Redroid and [scrcpy docs](https://github.com/Genymobile/scrcpy).
|
||||||
|
|
||||||
![Screenshot][Image_Screenshot]
|
![Screenshot][Image_Screenshot]
|
||||||
|
|
||||||
[Image_Screenshot]: https://f.hubspotusercontent30.net/hubfs/5856039/dockerhub/image-screenshots/redroid.png "Image Screenshot"
|
[Image_Screenshot]: https://f.hubspotusercontent30.net/hubfs/5856039/dockerhub/image-screenshots/redroid.png "Image Screenshot"
|
||||||
## Important !!
|
## Host Dependencies
|
||||||
|
|
||||||
|
This image requires the "binder_linux" host level kernel modules installed and enabled.
|
||||||
|
|
||||||
|
Below is an example for installing binder_linux on Ubuntu 22.04 LTS host
|
||||||
|
```
|
||||||
|
sudo apt install linux-modules-extra-`uname -r`
|
||||||
|
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
|
||||||
|
```
|
||||||
|
See [Redroid Docs](https://github.com/remote-android/redroid-doc?tab=readme-ov-file#getting-started) for more details.
|
||||||
|
|
||||||
|
|
||||||
|
## Container Permissions
|
||||||
|
|
||||||
|
Using this container requires the `--privileged` flag to power both the Docker in Docker processes and the permissions
|
||||||
|
needed by the redroid containers
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo docker run --rm -it --privileged --shm-size=512m -p 6901:6901 -e VNC_PW=password kasmweb/redroid:develop
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example for installing binder_linux on Ubuntu 22.04 LTS host
|
||||||
|
```
|
||||||
|
sudo apt install linux-modules-extra-`uname -r`
|
||||||
|
sudo modprobe binder_linux devices="binder,hwbinder,vndbinder"
|
||||||
|
```
|
||||||
|
|
||||||
|
The left ALT key is mapped as the hotkey for scrcpy
|
||||||
|
|
||||||
|
- Alt+R - rotate the android device
|
||||||
|
- Alt+F - fullscreen the android device
|
||||||
|
- Alt+Up/Alt+Down - Increase the volume of the device
|
||||||
|
|
||||||
|
See [scrcpy docs](https://github.com/Genymobile/scrcpy) for more details.
|
||||||
|
|
||||||
This image requires host level kernel modules to be installed and loaded.
|
|
||||||
See [Redroid Docs](https://github.com/remote-android/redroid-doc?tab=readme-ov-file#getting-started) for more details
|
|
||||||
|
|
||||||
|
|
||||||
# Environment Variables
|
# Environment Variables
|
||||||
@ -22,3 +55,4 @@ See [Redroid Docs](https://github.com/remote-android/redroid-doc?tab=readme-ov-f
|
|||||||
* `REDROID_SHOW_CONSOLE` - Display the scrcpy console after launching the redroid device.
|
* `REDROID_SHOW_CONSOLE` - Display the scrcpy console after launching the redroid device.
|
||||||
* `REDROID_DISABLE_AUTOSTART` - If set to "1", the container will not automatically pull and start the redroid container and scrcpy.
|
* `REDROID_DISABLE_AUTOSTART` - If set to "1", the container will not automatically pull and start the redroid container and scrcpy.
|
||||||
* `REDROID_DISABLE_HOST_CHECKS` - If set to "1", the container will not check for the presence of required host level kernel modules.
|
* `REDROID_DISABLE_HOST_CHECKS` - If set to "1", the container will not check for the presence of required host level kernel modules.
|
||||||
|
* `ANDROID_VERSION` - The version of android (redroid) image to automatically load. Options are `14.0.0`, `13.0.0` (Default), `12.0.0`, `11.0.0`, `10.0.0`, `9.0.0`, `8.1.0`.
|
||||||
|
@ -34,16 +34,6 @@ function check_modules() {
|
|||||||
notify-send -u critical -t 0 -i "${ICON_ERROR}" "Redroid Error" "${msg}"
|
notify-send -u critical -t 0 -i "${ICON_ERROR}" "Redroid Error" "${msg}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for ashmem_linux module
|
|
||||||
if lsmod | grep -q ashmem_linux; then
|
|
||||||
echo "ashmem_linux module is loaded."
|
|
||||||
else
|
|
||||||
msg="Host level module ashmem_linux is not loaded. Cannot continue.\nSee https://github.com/remote-android/redroid-doc?tab=readme-ov-file#getting-started for more details."
|
|
||||||
echo msg
|
|
||||||
notify-send -u critical -t 0 -i "${ICON_ERROR}" "Redroid Error" "${msg}"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
start_android() {
|
start_android() {
|
||||||
@ -63,6 +53,7 @@ start_android() {
|
|||||||
adb connect localhost:5555
|
adb connect localhost:5555
|
||||||
sleep 5
|
sleep 5
|
||||||
}
|
}
|
||||||
|
|
||||||
start_scrcpy() {
|
start_scrcpy() {
|
||||||
|
|
||||||
if [ "$REDROID_SHOW_CONSOLE" == "1" ]; then
|
if [ "$REDROID_SHOW_CONSOLE" == "1" ]; then
|
||||||
@ -71,7 +62,32 @@ start_scrcpy() {
|
|||||||
scrcpy --audio-codec=aac -s localhost:5555 --shortcut-mod=lalt --print-fps --max-fps=${REDROID_FPS}
|
scrcpy --audio-codec=aac -s localhost:5555 --shortcut-mod=lalt --print-fps --max-fps=${REDROID_FPS}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
wait_for_process $SCRCPY_PGREP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wait_for_process() {
|
||||||
|
process_match=$1
|
||||||
|
timeout=60
|
||||||
|
interval=1
|
||||||
|
elapsed_time=0
|
||||||
|
|
||||||
|
echo "Waiting for $process_match..."
|
||||||
|
while [[ $elapsed_time -lt $timeout ]]; do
|
||||||
|
if pgrep -x $process_match > /dev/null; then
|
||||||
|
echo "$process_match is running, continuing..."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep $interval
|
||||||
|
elapsed_time=$((elapsed_time + interval))
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! pgrep -x $process_match > /dev/null
|
||||||
|
then
|
||||||
|
echo "Did not find process $process_match"
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
kasm_startup() {
|
kasm_startup() {
|
||||||
if [ -n "$KASM_URL" ] ; then
|
if [ -n "$KASM_URL" ] ; then
|
||||||
URL=$KASM_URL
|
URL=$KASM_URL
|
||||||
|
Loading…
Reference in New Issue
Block a user