Emulator brings x86 Linux apps to ARM devices


Faust

Very Active Member
Joined
Feb 5, 2006
Messages
530
Location
France
Hi there is a newer Exagear Version out.
I installed it with Ubuntu14.04 and the Sound Problem is still there.
Will try that 3D Part with Glshim Remote these Days.
Yesterday i startet the first little Things like:
- a RpgmakerVX Game(slow because Sound Error)
- YugiOh for PC(good Playable)
- Tirtanium3D Benchmark(not working yet)
-WindowsVersion of Steam(had connect Error for now)

Next Steps are to try:
-get the Sound better working again
-get the 3D System up with Glshim
-try the Linux X86 Steam Version
-when 3D work then a fresh compile of the latest X86Wine
-then try Ragnarok and Descent3 again :)

@lunixbochs
@Ptitdeb
Is there a Way to zoom Games from 800x600 to the Pandora Display with 800x480 with Glshim?

The Sound Error in. Exagear is with the Dmix again and an Error about Audio Timing.
Maybe you have a Hint here for me?
Google helped me not much here.

:)
Ragnarok

I put some informations on the ragnarok thread, it seems that we can use some way to make it Linux friendly. We can also set a local serveur to play alone without Internet.
 
Last edited:

ingoreis

Advanced Member
Staff member
Joined
Jan 18, 2010
Messages
8,134
Age
39
Location
49.491276,8.423518
But i want to play on the Official Servers :)

A Local Server is not realy a Solution for me because the Ragnarok Online Data Files are Copyrighted.

First i have to try to solve that Audio Error again.
I made that in the Past with an older Exagear Version but unfortunaly i do not renember how i did solved this.
 

Faust

Very Active Member
Joined
Feb 5, 2006
Messages
530
Location
France
But i want to play on the Official Servers :)

A Local Server is not realy a Solution for me because the Ragnarok Online Data Files are Copyrighted.

First i have to try to solve that Audio Error again.
I made that in the Past with an older Exagear Version but unfortunaly i do not renember how i did solved this.
I see! To me, the best thing to do is to find a client launcher that allows you to connect to every server (iRO client) in case official RO server closes.

It would be really sad not to be able to connect to another server and to be obliged to download data again, with an other client launcher.
 

ElPoco

Very Active Member
Joined
Feb 16, 2012
Messages
877
Age
36
Location
Paris, France
@ingoreis: I could use steamcmd with Exagear (I don't remember if it was linux or windows version, I think it was the Windows one). I've used that to retrieve the Jedi Outcast files.
If you compile the glshim stuff, could you provide the binaries ?
I still haven't updated exagear, and I'm not sure when I'll have time to do it, but if I get time I could do some tests on my side.
 

ElPoco

Very Active Member
Joined
Feb 16, 2012
Messages
877
Age
36
Location
Paris, France
I enjoyed playing King of Dragon Pass, and it allowed me to install Gog and Steam games that don't have a Linux version but can run on the Pandora.
 

ElPoco

Very Active Member
Joined
Feb 16, 2012
Messages
877
Age
36
Location
Paris, France
As far as games are concerned, the list of non D3D/OpenGL games that don't have a port and can't be run through Dosbox is pretty limited. I guess it's the best way to run Fallout 1 and 2, though I haven't tried. With the 3D support it might get a bit more interesting.
 

ekianjo

Hardcore Member
Joined
May 7, 2012
Messages
8,261
Location
神戸市、日本 (Japan)
As far as games are concerned, the list of non D3D/OpenGL games that don't have a port and can't be run through Dosbox is pretty limited. I guess it's the best way to run Fallout 1 and 2, though I haven't tried. With the 3D support it might get a bit more interesting.
So nobody has tried Fallout so far?
 

Faust

Very Active Member
Joined
Feb 5, 2006
Messages
530
Location
France
I found a custom version of wine called CrossOver on the web, maybe it could works, but it has to be ported first.
 

Faust

Very Active Member
Joined
Feb 5, 2006
Messages
530
Location
France
CrossOver is not really a custom version of Wine, it's the dev branch of WINE - the developers of WINE (most of them) develop CrossOver.
Oh, I see! It seems to work on some softwares that don't work with wine. They released the version 15.0.1's code source. Maybe we can have it ported on Pandora /Pyra.
 
Last edited:

_jr_

Advanced Member
Joined
May 5, 2013
Messages
1,170
CrossOver is the version of wine that comes with paid support by CodeWeavers (the company that employs several key wine developers). It is not the development branch. Even though it contains several (suitably licensed) changes on top of upstream wine to make supported apps work better, these are usually not adopted directly by wine, because of their hacky nature. Buying CrossOver is probably a good method to support the wine project.
 

zoidberg51

Still Fresh
Joined
Sep 13, 2015
Messages
8
Hi,

I installed exagear using the pandora-inst.sh script. Everything went fine.

But when i run exagear now I'm getting an error /usr/sbin/service: No such file or directory.

Would anyone have any ideas or suggestions as to what might be going on.

Any help would be very much appreciated. Thanks, Shaun.
 
Last edited:

Eight Bit

Hardcore Member
Joined
Nov 16, 2008
Messages
1,843
Age
46
Location
Amsterdam, Netherlands
Website
Visit site
Hi all, sorry to revive this thread..
I had to make some effort to get me a new download for exagear as the old one I had and never installed had an error in it.
The latest version is 2.1 and it came out on the 12th of april. There should have been an email about it from eltech but I never got that, now I do ;)

But anyway, the Pandora installer by @dimag0g is not good anymore. I edited some stuff in the script to represent the right filenames that came with the latest exagear and it installed fine but exagear doesn't run as it says the installation is corrupted and I need to re-install. I then simply tried the install script that came with exagear but that says I need to uninstall the old version first. I'm lost now, can some one tell me how to undo this
Code:
#!/bin/bash

UBT_PACKAGE_NAME="exagear_*-1_armhf.deb"
GUEST_IMAGE_PACKAGE_NAME="exagear-guest-ubuntu-1404lts_*_all.deb"
PK_FILE_NAME="pk-*.key"

function file_exists {
    stat $1 &> /dev/null
}

uid=$(id -u)
if [ "$uid" != "0" ] ; then
    echo "Must be root"
    exit 1
fi

if ! file_exists "$UBT_PACKAGE_NAME" ; then
    echo "Put the translator package to the current directory."
    echo "The package is named ${UBT_PACKAGE_NAME/\*/NNNN}."
    exit 1
fi

if ! file_exists "$GUEST_IMAGE_PACKAGE_NAME" ; then
    echo "Put the guest image package to the current directory."
    echo "The package is named ${GUEST_IMAGE_PACKAGE_NAME/\*/N}."
    exit 1
fi

if ! file_exists "$PK_FILE_NAME" ; then
    echo "Put a primary key file to the current directory."
    echo "Primary key files are named ${PK_FILE_NAME/\*/NNNNNN}"
    exit 1
fi

echo "Installing prerequisites..."
#apt-get update
for prereq in bash coreutils findutils realpath curl binfmt-support ; do
#    apt-get -y install $prereq || exit 1
    opkg list-installed|grep $prereq
done

echo "Installing the binary translator..."
#dpkg -i $UBT_PACKAGE_NAME || exit 1
ar p $UBT_PACKAGE_NAME data.tar.gz | tar zx

echo "Installing the guest image..."
#dpkg -i $GUEST_IMAGE_PACKAGE_NAME || exit 1
ar p $GUEST_IMAGE_PACKAGE_NAME data.tar.gz | tar zx

cp etc/*.conf /etc/
cp usr/bin/* /usr/bin/
ln -s $(pwd)/opt /

echo "Installing the primary key..."
mv $PK_FILE_NAME /opt/exagear/lic/ || exit 1

echo "Activating the copy of ExaGear..."
/opt/exagear/bin/actool || exit 1

echo "Done!"

echo "Fixing"
vpaths_list=`ls /opt/exagear/images/*/.exagear/vpaths-list`
sed s/\\/etc\\/resolvconf\\/// -i $vpaths_list
sed s/\\/etc\\/ldap\\/// -i $vpaths_list
sed s/\\/etc\\/fstab.d\\/// -i $vpaths_list
sed s/\\/etc\\/ca-certificates\\/// -i $vpaths_list
sed s/\\/etc\\/modprobe.d\\/// -i $vpaths_list
sed s/\\/etc\\/pulse\\/// -i $vpaths_list
sed s/\\/usr\\/share\\/alsa-base\\/// -i $vpaths_list
sed s/\\/root\\/// -i $vpaths_list
sed s/\\/tmp\\/// -i $vpaths_list
sed s/\\/run\\/// -i $vpaths_list
sed s/\\/var\\/log\\/// -i $vpaths_list
rm /opt/exagear/images/*/var/lib/dpkg/statoverride
chmod a+w /opt/exagear/images/*/tmp
And make this work:

Code:
#!/bin/bash

function retback {
    popd > /dev/null
}
trap retback EXIT

pushd `dirname $0` > /dev/null


UBT_PACKAGE_NAME_2G="exagear-mem2g_*-1_armhf.deb"
UBT_PACKAGE_NAME_3G="exagear_*-1_armhf.deb"
UBT_PACKAGE_NAME_LEGACY_2G="exagear-legacy-mem2g_*-1_armhf.deb"
UBT_PACKAGE_NAME_LEGACY_3G="exagear-legacy_*-1_armhf.deb"
UBT_PACKAGE_NAME_ARM7_8="exagear-armv8_*-1_arm64.deb"

GUEST_IMAGE_PACKAGE_NAME_DEBIAN_7="exagear-guest-debian-7_*_all.deb"
GUEST_IMAGE_PACKAGE_NAME_DEBIAN_7_WINE2G="exagear-guest-debian-7-wine2g_*_all.deb"
GUEST_IMAGE_PACKAGE_NAME_DEBIAN_8="exagear-guest-debian-8_*_all.deb"
GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1204="exagear-guest-ubuntu-1204lts_*_all.deb"
GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1404="exagear-guest-ubuntu-1404lts_*_all.deb"
GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1504="exagear-guest-ubuntu-1504_*_all.deb"
GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1604="exagear-guest-ubuntu-1604_*_all.deb"

PK_FILE_NAME="pk-*.key"

function file_exists {
    stat $1 &> /dev/null
}

function get_host_system_type {

    HOST_OS=`cat /etc/lsb-release 2>/dev/null | egrep "^DISTRIB_ID\=" | awk -F= '{print $2}' |  tr '[:upper:]' '[:lower:]'`
    if [ -n "$HOST_OS" ] ; then
        return
    fi

    HOST_OS=`cat /etc/os-release | egrep "^ID\=" | awk -F= '{print $2}' |  tr '[:upper:]' '[:lower:]'`
    if [ -n "$HOST_OS" ] ; then
        if [ "$HOST_OS" == "debian" -o "$HOST_OS" == "ubuntu" ] ; then
            return
        fi
    fi

    HOST_OS=`cat /etc/os-release | egrep "^ID_LIKE\=" | awk -F= '{print $2}' |  tr '[:upper:]' '[:lower:]'`
    if [ -n "$HOST_OS" ] ; then
        return
    fi

    HOST_OS="default"
}

function check_if_raspbian_23 {
    RASPBIAN=`cat /etc/issue | tr '[:upper:]' '[:lower:]' | grep 'raspbian'`
    if ! [ -z "$RASPBIAN" ] && [ "$ARCH" == 'armv7l' ]; then
    RASPBIAN23='y'
    fi
}

function get_host_system_version {
    if [ "$HOST_OS" == "debian"  ] ; then
        HOST_OS_VERSION=`cat /etc/*-release | egrep "^VERSION_ID\=" | awk -F= '{print $2}' | tr '[:upper:]' '[:lower:]' | tr -d "\"" `
        if [ -z "$HOST_OS_VERSION" ] ; then
            if grep "jessie" /etc/*-release; then
            HOST_OS_VERSION="8"
            fi
        fi

    elif [ "$HOST_OS" == "ubuntu" ] ; then
        HOST_OS_VERSION=`cat /etc/*-release | egrep "^DISTRIB_RELEASE\=" | awk -F= '{print $2}' |  awk -F. '{print $1}' | tr '[:upper:]' '[:lower:]'`
    fi

    if [ -z "$HOST_OS_VERSION" ] ; then
        HOST_OS_VERSION="default"
    fi
}

function get_arch {
    ARCH=`arch`
    echo "ARCH=$ARCH"
}

function check_guest_image_already_installed {
    INSTALLED_GUEST_IMAGE=`ls /opt/exagear/images/ 2>/dev/null | head -n 1`
    
    if [ ! -z "$INSTALLED_GUEST_IMAGE" ]; then
    echo "It is not possible to install guest image package as you already have guest image package installed."
    echo "Installed guest image package name is exagear-guest-$INSTALLED_GUEST_IMAGE. "
    echo "To uninstall current guest image package use ' sudo apt-get purge exagear-guest-$INSTALLED_GUEST_IMAGE '"
    echo "Note that all x86 applications installed inside the current guest image will be also deleted."
    exit 1
    fi
}

function check_free_space {
    FREE_SPACE_MB=`df -m /opt/ | awk 'NR==2 {print $4}'`
    INSTALL_BLOCKDEV=`df -m /opt/ | awk 'NR==2 {print $1}'`
    if [ $FREE_SPACE_MB -lt 1500 ]; then
        echo "No enough space on your $INSTALL_BLOCKDEV file system. 1500M is required for exagear. You got only ${FREE_SPACE_MB}M. Please perform some cleanup or resize partition and try again."
        exit 1
    fi
}

while test ${#} -gt 0
do
    if [ "$1" == "ubuntu-1404" ]
    then
    UBUNTU_14_FORCED='y'
    elif [ "$1" == "--without-opengl" ]
    then
    WITHOUT_GL_FORCED='y'
    else
    echo "Invalid arument: $1"
    exit 1
    fi
    shift
done

uid=$(id -u)
if [ "$uid" != "0" ] ; then
    echo "Must be root"
    exit 1
fi

test_binary=$(mktemp)
echo f0VMRgEBAQAAAAAAAAAAAAIAKAABAAAAVIAAADQAAADIAAAAAAIABTQAIAABACgABgADAAEAAAAAAAAAAIAAAACAAACAAAAAgAAAAAUAAAAAgAAACgKg4wEaoOMAIKDjMjCg48BwoOMAAADvCgJQ4wAAoAMBAKATAXCg4wAAAO9BEwAAAGFlYWJpAAEJAAAABgEIAQAuc3ltdGFiAC5zdHJ0YWIALnNoc3RydGFiAC50ZXh0AC5BUk0uYXR0cmlidXRlcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAGAAAAVIAAAFQAAAAsAAAAAAAAAAAAAAAEAAAAAAAAACEAAAADAABwAAAAAAAAAACAAAAAFAAAAAAAAAAAAAAAAQAAAAAAAAARAAAAAwAAAAAAAAAAAAAAlAAAADEAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAIAAAAAAAAAAAAAALgBAADgAAAABQAAAAYAAAAEAAAAEAAAAAkAAAADAAAAAAAAAAAAAACYAgAAWwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFSAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAMAAgABAAAAAAAAAAAAAAAEAPH/DAAAAFSAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAQA8f8PAAAAgAABAAAAAAAQAAEAGgAAAIAAAQAAAAAAEAABACgAAACAAAEAAAAAABAAAQA0AAAAVIAAAAAAAAAQAAEAOwAAAIAAAQAAAAAAEAABAEcAAACAAAEAAAAAABAAAQBPAAAAgAABAAAAAAAQAAEAVgAAAIAAAQAAAAAAEAABAABtZW1fdGVzdC5vACRhAF9ic3NfZW5kX18AX19ic3Nfc3RhcnRfXwBfX2Jzc19lbmRfXwBfc3RhcnQAX19ic3Nfc3RhcnQAX19lbmRfXwBfZWRhdGEAX2VuZAA= | base64 --decode > $test_binary
chmod +x $test_binary
$test_binary
test_bin_ret=$?
rm -f $test_binary

if [ "$test_bin_ret" -eq  '0' ]; then
    is_3g="1"
    echo "System memory configuration is determined as 3g/1g"
else
    is_3g="0"
    echo "System memory configuration is determined as 2g/2g"
fi

get_host_system_type
get_host_system_version
get_arch
check_guest_image_already_installed
check_free_space
check_if_raspbian_23

if ! [ "$ARCH" == "armv6l" ]; then
    export USE_DSOUND_SERVER='y'
fi

if [ "$RASPBIAN23" == 'y' ]
then
    if ! [ "$WITHOUT_GL_FORCED" == 'y' ]
    then
    export USE_GL='y'
    fi
fi

if [ "$is_3g" == "1" ]; then
    if [ "$ARCH" ==  "armv6l" ] ; then
        UBT_PACKAGE_NAME=$UBT_PACKAGE_NAME_LEGACY_3G
    elif [ "$ARCH" == "armv7l" ] ; then
        UBT_PACKAGE_NAME=$UBT_PACKAGE_NAME_3G
    elif [ "$ARCH" == "aarch64" ] ; then
    UBT_PACKAGE_NAME=$UBT_PACKAGE_NAME_ARM7_8
    elif [ "$ARCH" == "armv8l" ] ; then
        UBT_PACKAGE_NAME=$UBT_PACKAGE_NAME_ARM7_8
    else
        echo "Only armv7, aarch64 and armv6 host arch are supported for 3g/1g memory split"
        exit 1
    fi
else
    if [ "$ARCH" ==  "armv6l" ] ; then
        UBT_PACKAGE_NAME=$UBT_PACKAGE_NAME_LEGACY_2G
    elif [ "$ARCH" == "armv7l" ] ; then
        UBT_PACKAGE_NAME=$UBT_PACKAGE_NAME_2G
    else
        echo "Only armv7 and armv6 arch are supported for 2g/2g memory split"
        exit 1
    fi   
fi

if [ "$UBUNTU_14_FORCED" == 'y' ] ; then
    # ubuntu-1404 is able to be forced to install via './install-exagear.sh ubuntu-1404'
    GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1404
else
    if [ "$HOST_OS" == "debian" ] ; then
        if [ "$HOST_OS_VERSION" == "7" ] ; then
            if [ "$is_3g" == "1" ]; then
                GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_DEBIAN_7
            else
                GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_DEBIAN_7_WINE2G
            fi
        else
            GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_DEBIAN_8
        fi
    elif [ "$HOST_OS" == "ubuntu" ] ; then
        if [ "$HOST_OS_VERSION" == "12" ] ; then
            GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1204
        elif [ "$HOST_OS_VERSION" == "14" ] ; then
            GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1404
        elif [ "$HOST_OS_VERSION" == "15" ] ; then
            GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1504
        else
            GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1604
        fi
    else
        GUEST_IMAGE_PACKAGE_NAME=$GUEST_IMAGE_PACKAGE_NAME_UBUNTU_1404
    fi
fi

echo "HOST OS: $HOST_OS"
echo "HOST OS VERSION: $HOST_OS_VERSION"
echo "EXAGEAR package: $UBT_PACKAGE_NAME"
echo "EXAGEAR guest image package: '$GUEST_IMAGE_PACKAGE_NAME'"

if ! file_exists "$UBT_PACKAGE_NAME" ; then
    echo "Put the translator package to the current directory."
    echo "The package is named ${UBT_PACKAGE_NAME/\*/NNNN}."
    exit 1
fi

if ! file_exists "$GUEST_IMAGE_PACKAGE_NAME" ; then
    echo "Put the guest image package to the current directory."
    echo "The package is named ${GUEST_IMAGE_PACKAGE_NAME/\*/N}."
    exit 1
fi

if ! file_exists "$PK_FILE_NAME" ; then
    echo "Put a primary key file to the current directory."
    echo "Primary key files are named ${PK_FILE_NAME/\*/NNNNNN}"
    exit 1
fi

echo "Installing prerequisites..."
apt-get update
for prereq in bash coreutils findutils realpath curl binfmt-support cron alsa-base; do
    apt-get -y install $prereq || exit 1
done

echo "Installing the binary translator..."
dpkg -i $UBT_PACKAGE_NAME || exit 1

echo "Installing the guest image..."
dpkg -i $GUEST_IMAGE_PACKAGE_NAME || exit 1

if [ "$USE_DSOUND_SERVER" == "y" ]
then
    dpkg -i exagear-dsound-server_*_armhf.deb
fi

echo "Installing the primary key..."
mv $PK_FILE_NAME /opt/exagear/lic/ || exit 1

echo "Activating the copy of ExaGear..."
/opt/exagear/bin/actool || exit 1

echo "Done!"

I hope someone can help me :)
 
Top