-
-
Save mattisz/269c243b9ec9c3e9a501e13d0dfd3672 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
set -e | |
sudo -v | |
sudo apt-get update | |
sudo apt-get dist-upgrade -y | |
sudo apt-get autoremove -y | |
sudo usermod $USER -a -G video | |
sudo usermod $USER -a -G tty | |
sudo usermod $USER -a -G render | |
sudo usermod $USER -a -G audio | |
# XRDP Build Pre-reqs Part 1 | |
sudo apt-get install -y git autoconf libtool pkg-config gcc g++ make libssl-dev libpam0g-dev \ | |
libjpeg-dev libx11-dev libxfixes-dev libxrandr-dev flex bison libxml2-dev intltool xsltproc \ | |
xutils-dev python3-libxml2 g++ xutils libfuse-dev libmp3lame-dev nasm libpixman-1-dev \ | |
xserver-xorg-dev libjson-c-dev libsndfile1-dev libspeex-dev libspeexdsp-dev libpulse-dev \ | |
libpulse0 autopoint \*turbojpeg\* libfdk-aac-dev libopus-dev libgbm-dev libx264\* \ | |
libx264-dev build-essential dpkg-dev #xfce4 firefox-esr #optional | |
#XRDP Build Pre-reqs Part 2 (For some reason apt needs this to be separate) | |
sudo apt-get install -y libepoxy-dev | |
BUILD_DIR=$(mktemp -d) | |
echo "Building Intel YAMI and Media Driver" | |
sudo mkdir -p /usr/local/lib/x86_64-linux-gnu | |
git clone https://github.com/Nexarian/builders.git --branch update-to-media-driver "$BUILD_DIR/builders" | |
cd "$BUILD_DIR/builders/yami/omatic" | |
sed -i 's/cmake/cmake libx11-xcb-dev libxcb-dri3-dev/' buildyami.sh | |
sed -i 's|INSTALL_PATH=/opt/yami|INSTALL_PATH=/usr/local|' buildyami.sh | |
sed -i 's|LIBRARY_INSTALLATION_DIR=.*|LIBRARY_INSTALLATION_DIR=\$INSTALL_PATH/lib/x86_64-linux-gnu|' buildyami.sh | |
sed -i 's/2\.4\.114/2\.4\.116/' buildyami.sh | |
sed -i 's/2\.16\.0/2\.19\.0/' buildyami.sh | |
sed -i 's/2\.15\.0/2\.19\.0/' buildyami.sh | |
sed -i 's/22\.6\.2/23\.2\.4/' buildyami.sh | |
sed -i 's/22\.3\.1/22\.3\.7/' buildyami.sh | |
sed -i 's/media-driver-$INTEL_MEDIA_DRIVER_SRC_NAME$/--branch $INTEL_MEDIA_DRIVER_SRC_NAME media-driver-$INTEL_MEDIA_DRIVER_SRC_NAME/' buildyami.sh | |
sed -i 's|prefix=/opt/yami|prefix=/usr/local|' buildyami.sh | |
sed -i 's|rm -r \$INSTALL_PATH/\*|#rm -r \$INSTALL_PATH/\*|' buildyami.sh | |
sed -i 's/nproc/(`nproc` - 1)/' buildyami.sh | |
sed -i 's/-O2 -Wall/-O2 -Wall -Wno-array-compare/g' buildyami.sh | |
./buildyami.sh --prefix=/usr/local --disable-x11 | |
sudo ln -s /usr/local/lib/x86_64-linux-gnu/dri/i965_drv_video.so /usr/local/lib/x86_64-linux-gnu/ | |
sudo ln -s /usr/local/lib/x86_64-linux-gnu/dri/iHD_drv_video.so /usr/local/lib/x86_64-linux-gnu/ | |
sudo ln -s /usr/local/lib/x86_64-linux-gnu/dri/ /usr/local/lib/dri | |
echo "Building xrdp..." | |
git clone https://github.com/Nexarian/xrdp.git --branch mainline_merge "$BUILD_DIR/xrdp" | |
cd "$BUILD_DIR/xrdp" | |
sed -i 's|/opt/yami|/usr/local|g' ./sesman/Makefile.am | |
sed -i 's|/opt/yami|/usr/local|g' ./xorgxrdp_helper/xorgxrdp_helper_yami.c | |
./bootstrap | |
XRDP_YAMI_CFLAGS="-I/usr/local/include" XRDP_YAMI_LIBS="-I/usr/local/lib" ./configure \ | |
--enable-fuse --enable-rfxcodec --enable-pixman --enable-mp3lame \ | |
--enable-sound --enable-opus --enable-fdkaac --enable-x264 --enable-yami | |
make -j $((`nproc` - 1)) clean all | |
sudo make install | |
echo "Building xorgxrdp..." | |
git clone https://github.com/Nexarian/xorgxrdp.git --branch mainline_merge "$BUILD_DIR/xorgxrdp" | |
cd "$BUILD_DIR/xorgxrdp" | |
# sed -i 's/#define MIN_MS_BETWEEN_FRAMES 40/#define MIN_MS_BETWEEN_FRAMES 16/' module/rdpClientCon.c | |
./bootstrap | |
./configure --with-simd --enable-glamor | |
make -j $((`nproc` - 1)) clean all | |
sudo make install | |
#Pulseaudio xrdp module | |
PULSE_MODULE_VER="0.7" | |
cd $BUILD_DIR | |
wget https://github.com/neutrinolabs/pulseaudio-module-xrdp/archive/v$PULSE_MODULE_VER.tar.gz \ | |
-O pulseaudio-module-xrdp.tar.gz | |
tar xvzf pulseaudio-module-xrdp.tar.gz | |
rm pulseaudio-module-xrdp.tar.gz | |
cd pulseaudio-module-xrdp-$PULSE_MODULE_VER | |
./scripts/install_pulseaudio_sources_apt.sh -d $BUILD_DIR/pulseaudio.src | |
./bootstrap | |
./configure PULSE_DIR=$BUILD_DIR/pulseaudio.src | |
make | |
sudo make install | |
#Allow permission to connect | |
sudo tee /etc/X11/Xwrapper.config > /dev/null << EOL | |
# Xwrapper.config (Debian X Window System server wrapper configuration file) | |
# | |
# This file was generated by the post-installation script of the | |
# xserver-xorg-legacy package using values from the debconf database. | |
# | |
# See the Xwrapper.config(5) manual page for more information. | |
# | |
# This file is automatically updated on upgrades of the xserver-xorg-legacy | |
# package *only* if it has not been modified since the last upgrade of that | |
# package. | |
# | |
# If you have edited this file but would like it to be automatically updated | |
# again, run the following command as root: | |
# dpkg-reconfigure xserver-xorg-legacy | |
needs_root_rights=no | |
allowed_users=anybody | |
EOL | |
#Disable nvidia | |
sudo sed -i -E 's#param=xrdp/xorg_nvidia.conf#param=xrdp/xorg.conf#' /etc/xrdp/sesman.ini | |
sudo sed -i 's/XRDP_USE_HELPER=1/XRDP_USE_HELPER=0/' /etc/xrdp/sesman.ini | |
echo "Starting the server..." | |
sudo systemctl enable xrdp | |
sudo service xrdp start |
Hi, thank you for the script. When running the script I get the following error -- any idea, how to get rid of it? I am running Ubuntu 24.04.1 with an Intel HD 620. Thank you.
Making all in decoder
make[2]: Entering directory '/tmp/tmp.8Xye3Uphj2/builders/yami/omatic/libyami/decoder'
CXX libyami_decoder_la-vaapidecoder_host.lo
CXX libyami_decoder_la-vaapidecoder_base.lo
CXX libyami_decoder_la-vaapidecsurfacepool.lo
In file included from vaapidecoder_h264.h:22,
from vaapidecoder_host.cpp:32:
vaapidecoder_base.h:73:24: error: 'virtual YamiStatus YamiMediaCodec::VaapiDecoderBase::createPicture(PicturePtr&, int64_t)' was hidden [-Werror=overloaded-virtual=]
73 | virtual YamiStatus createPicture(PicturePtr& picture, int64_t timeStamp /* , VaapiPictureStructure structure = VAAPI_PICTURE_STRUCTURE_FRAME /);
| ^~~~~~~~~~~~~
vaapidecoder_h264.h:154:16: note: by 'YamiStatus YamiMediaCodec::VaapiDecoderH264::createPicture(const SliceHeader, const NalUnit*)'
154 | YamiStatus createPicture(const SliceHeader* const,
| ^~~~~~~~~~~~~
vaapidecoder_base.h:73:24: error: 'virtual YamiStatus YamiMediaCodec::VaapiDecoderBase::createPicture(PicturePtr&, int64_t)' was hidden [-Werror=overloaded-virtual=]
73 | virtual YamiStatus createPicture(PicturePtr& picture, int64_t timeStamp /* , VaapiPictureStructure structure = VAAPI_PICTURE_STRUCTURE_FRAME */);
| ^~~~~~~~~~~~~
In file included from vaapidecoder_host.cpp:46:
vaapidecoder_mpeg2.h:105:16: note: by 'YamiStatus YamiMediaCodec::VaapiDecoderMPEG2::createPicture()'
105 | YamiStatus createPicture();
| ^~~~~~~~~~~~~
CXX libyami_decoder_la-vaapidecpicture.lo
cc1plus: all warnings being treated as errors
make[2]: *** [Makefile:725: libyami_decoder_la-vaapidecoder_host.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/tmp/tmp.8Xye3Uphj2/builders/yami/omatic/libyami/decoder'
make[1]: *** [Makefile:695: all-recursive] Error 1
make[1]: Leaving directory '/tmp/tmp.8Xye3Uphj2/builders/yami/omatic/libyami'
make: *** [Makefile:516: all] Error 2
error make libyami
Everything works, but cmake produces this warning:
CMake Warning:
Ignoring extra path from command line:
"yami/omatic/drivers_build/intel-media-25.1.3/_build/libx11-xcb-dev libxcb-dri3-dev"
This is caused by your use of cmake libx11-xcb-dev libxcb-dri3-dev
.
I manually installed libx11-xcb-dev libxcb-dri3-dev
but the warning still pops up. Any idea what's missing?
Hello @mattisz
Thank you 👍 its working now :D thanks for your help and amazing script.