Professional Documents
Culture Documents
User Guide
1of16
Contents
1Introduction
2ExaGearforUbuntu,Debian,Raspbian
2.1Prerequisites
2.2InstallingExaGear
2.3RunningtheGuestSystem
2.4InstallingLinuxx86Applications
2.5RunningLinuxx86Applications
2.6InstallingandRunningWindowsx86Applications
2.7AdministrationofExaGear
SUIDandSGIDbinariesunderExaGear
Directoriessharedbetweenthehostandguestsystems
IntegrationofguestSysVstyleinitscriptsandUpstartjobsintothehost
Integrationofguestcronjobsintothehost
Integrationofguestudevservicesintothehost
2.8UpdateExaGear
2.9RemovingExaGear
3Errata
4Support
5ExaGearConcepts
2of16
1 Introduction
EltechsExaGearDesktop
enablesARMbaseddeviceswithARMGNU/Linuxoperatingsystem
torunpracticallyanykindofx8632bitGNU/Linuxsoftwaredesignedforstandarddesktops.
Moreover,youcanrunWindowsapplicationsusing
Wine
ontopofExaGear.
Thisguidedescribeshowtoinstall,configureandworkwithExaGearalongwithconceptual
viewofhowitworks.
Inthisdocumenttheterm
hostsystem
isusedtorefertoARMbasedGNU/Linuxandtheterm
guestsystem
isusedtorefertothex86GNU/Linuxrunningontopofthehostsystem.
Notethatfollowingformattingconventionsareusedinexamplesinthisdocument:
monospace
identifiescommandstobeperformedinthehostsystem
monospacebold
identifiescommandstobeperformedintheguestsystem
<version>identifiesvariableversionwithdifferentvalues.
Followingguestsystemimagesarecurrentlyavailable:Ubuntu12.04,Ubuntu14.04,Ubuntu
15.04,Debian7,Debian8.Notethattheguestsystemimageshavetocorrespondtothehost
systemversion.Thus,westronglyrecommendfollowingconfiguration:
hostsystemisUbuntu12.04andguestsystemisUbuntu12.04
hostsystemisUbuntu14.04andguestsystemisUbuntu14.04
hostsystemisUbuntu15.04andguestsystemisUbuntu15.04
hostsystemisDebian7andguestsystemisDebian7
hostsystemisDebian8andguestsystemisDebian8
hostsystemisRaspbianWheezyandguestsystemisDebian7
hostsystemisRaspbianJessieandguestsystemisDebian8.
SupportforotherGNU/Linuxdistributionsisindevelopment.
2.1Prerequisites
Notethatthehostsystemshouldmeetfollowingrequirements:
CPU:
ARMv6architectureforRaspberryPi1
ARMv7architectureforotherARMdevices
supportofVFPv3D32
forx86applicationsthatuseMMX/SSEsupportofNEONisalsorequired
RAM:512MBormore
3of16
DiskSpace:600MB(includingbasicx86systemthatisprovidedaspartofExaGear
installationpackages).Notethatextraspaceisrequiredforinstallationofx86
applications.
OS:ARMLinux32bitUbuntu12.04,Ubuntu14.04,Debian7,Raspbian.Additionally
binfmt_misckernelmoduleisrequired.
NotethatExaGearonlysupports32bitx86applications.
2.2InstallingExaGear
ExaGeardistributionconsistsoftwopackagesthatcontainavirtualizationenginewithsupport
utilitiesandasetofx86binaryfiles,libsanddata,thatformminimalx86environment.Also
installationscriptisprovidedforautomatedinstallation.ExaGearrequiresactivationusinga
licensekey.
Priortotheinstallationcheckif
/opt/exagear
directoryofthehostsystemdoesntexist.In
casethedirectoryexistsyoushouldfollowtheinstructionsinchapter2.8UpdateExaGear.
Automatedinstallation
InordertoinstallandactivateExaGearrun
installexagear.sh
scriptinthedirectorywith
exagear.debpackagesandonelicensekey:
$lsl
exagearguest
<package_version>.deb
exagear_<package_version>.deb
installexagear.sh
pk_<num>.key
$sudo./installexagear.sh
Manualinstallation
Toproceedwithinstallationperformfollowingactions:
1. Ensurethatyouhavethenecessaryprivilegesneededforpackageinstallation.
2. EnsureExaGeardependencies:
$sudoaptgetinstallbashcoreutilsfindutilsrealpathcurl
binfmtsupportcron
3. IdentifyversionsofExaGearpackagesbestsuitableforyourhostsystem.
a. CheckthearchitectureofyourARMdevice:
$arch
b. Checkuser/kernelvirtualmemorysplitofthehostsystem(executetheholeline
incommandlineterminalandseetheoutput):
[$((`cat/proc/self/maps|grepstack|awkF'''{print"0x"$1}'`))gt
$((0x80000000))]&&echo3g/1g||echo2g/2g
c. Checktheversionofthehostoperatingsystem:
$sudocat/etc/issue
d. FindversionsofExaGearpackagestoinstallinthetablebelow:
4of16
Arch
User/kernel Operating
split
system
ExaGearpackagestoinstall
armv7
2g/2g
Raspbian
Wheezy7
exagearmem2g_*.deb
exagearguestdebian7wine2g_*.deb
armv7
2g/2g
Raspbian
Jessie8
exagearmem2g_*.deb
exagearguestdebian8wine2g_*.deb
armv7
2g/2g
Ubuntu
14.xx
exagearmem2g_*.deb
exagearguestubuntu1404ltswine2g_*.deb
armv7
2g/2g
Ubuntu
15.xx
exagearmem2g_*.deb
exagearguestubuntu1504wine2g_*.deb
armv7
3g/1g
Debian
Wheezy7
exagear_*.deb
exagearguestdebian7_*.deb
armv7
3g/1g
Debian
Jessie8
exagear_*.deb
exagearguestdebian8_*.deb
armv7
3g/1g
Ubuntu
12.xx
exagear_*.deb
exagearguestubuntu1204lts_*.deb
armv7
3g/1g
Ubuntu
14.xx
exagear_*.deb
exagearguestubuntu1404lts_*.deb
armv7
3g/1g
Ubuntu
15.xx
exagear_*.deb
exagearguestubuntu1504_*.deb
armv6
2g/2g
Raspbian
Wheezy7
exagearlegacymem2g_*.deb
exagearguestdebian7wine2g_*.deb
armv6
2g/2g
Raspbian
Jessie8
exagearlegacymem2g_*.deb
exagearguestdebian8wine2g_*.deb
armv6
3g/1g
Raspbian
Wheezy7
exagearlegacy_*.deb
exagearguestdebian7_*.deb
armv6
3g/1g
Raspbian
Jessie8
exagearlegacy_*.deb
exagearguestdebian8_*.deb
4. Use
dpkg
toinstallExaGearpackages.Forexample:
$sudodpkgiexagearmem2g_*.deb
$sudodpkgiexagearguestdebian7wine2g_*.deb
5. UselicensekeytoactivateExaGear
5of16
$sudocppk*.key/opt/exagear/lic
$sudo/opt/exagear/bin/actool
Nowthex86worldiscreatedandyoucanstartrunningtheguestsystem.
2.3RunningtheGuestSystem
Youcanprinttheguestsystemversionbyusing
exagearls
command:
user@armserver:$exagearls
Installedguestimages:
ubuntu1204lts
Tostartaguestshelluse
exagear
utility.Forexample:
user@armserver:$exagear
Startingtheshellintheguestimage/opt/exagear/images/ubuntu1204lts
user@armserver@x86:$unamea
Linuxarmserver.company.com3.2.27#1SMPPREEMPTWedFeb1305:57:57UTC
2013i686i686i386GNU/Linux
user@armserver@x86:$
Youarenowinsidethex86world.Hereyourroot(/)directoryis
/opt/exagear/images/<guest_system_version>
(similartotheresultof
chroot
/opt/exagear/images/<guest_system_version>
).Youcanusethisguestshellasifit
wererunningonanx86machine.
Notethatuseraccountsaresharedbetweenthehostandguestsystems.Whenauserisadded
orremovedintheguestsystem,themodificationismadetothehost.
/home
directoriesare
sharedbetweenthehostandguestsystemsaswell.
Toexitfromtheguestsessionuse
exit
:
user@armserver@x86:$exit
user@armserver:$
Nowyouarebackinthehostsystem:
user@armserver:$unamea
Linuxarmserver.company.com3.2.27#1SMPPREEMPTWedFeb1305:57:57UTC
2013armv7larmv7larmv7GNU/Linux
NotethatitisalsopossibletouseyourpreferredshellintheguestsystembysettingupSHELL
environmentvariablepriortocallto
exagear
.
2.4InstallingLinuxx86Applications
Installationofanx86applicationshouldbeperformedinsidethex86guestenvironment.Invoke
exagear
commandtobeginaguestsession.Beforeproceedingwithinstallationofguest
applicationsensurethatyouhavethenecessaryprivilegesforpackagesinstallation.For
6of16
example:
user@armserver:$exagear
Startingtheshellintheguestimage/opt/exagear/images/ubuntu1204lts
user@armserver@x86:$sudoaptgetupdate
user@armserver@x86:$sudoaptgetinstallnginx
Thex86applicationbinaryisinstalledintheguestimage
/opt/exagear/images/<guest_system_version>
.
Ifinstalledapplicationincludescronjobsorudevrulesyouneedtorebootyourhostsystemto
finalizetheirregistrationonthehostsystem.Otherwiseitispossibletoregisterthemmanually
byexecutingthefollowingcommand:
fromthehostUbuntusystem
user@armserver:$sudoinitctlstartupdateexagearguest<guest_system_version>
fromthehostDebianorRaspbiansystem
user@armserver:$sudoserviceexagearguest
<guest_system_version>
start
Guestjobswillbeplacedin
/etc/cron.d
directoryonyourhostsystem.Bydefault
crondaemonupdatesitsconfigurationeachminute,sojobswillbequeuedautomatically.
Incaseifyouarealteringyourjobsintheguestsystemyoushouldregisterthemagaininthe
host.
Guestudevruleswillbeplacedin
/etc/udev/rules.d
directoryonyourhostsystem.
Committedguestsystemsudevrulesalwaysrunafterallofthehostsystemsruleshavebeen
run.
2.5RunningLinuxx86Applications
Aftertheinstallationofanx86applicationiscompleteitcanberunbothfromtheguestandhost
sessions.
Insidethehostsessionyouneedtoenterthefullpathtothebinaryofx86applicationbecauseit
islocatedunderaparticulardirectory
/opt/exagear/images/<guest_system_version>
calledthex86world.Forexample:
user@armserver:$/opt/exagear/images/ubuntu1204lts/usr/sbin/nginxh
Alsoyoucanusethecommand
exagear
tostarttheshelloftheguestsessionandthenrun
anyx86applicationthesamewayasonanx86system.Forexample:
user@armserver:$exagear
Startingtheshellintheguestimage/opt/exagear/images/ubuntu1204lts
user@armserver@x86:$/usr/sbin/nginxh
7of16
Onlythex86worldisvisibleforanx86application.Sometimesitisnecessarytoaccessfiles
thatarelocatedoutsidethex86worldonthehostsystem.Inthiscaseyoucanmountanew
hostdirectorytoamountpointinsidethex86worldbyusingcoreutils.Forexample,ifyouneed
tomakevisible
/newdir
hostdirectoryfromtheguestsystemperformthefollowingactions.
Createmountpointinsidethex86world
$sudomkdir/opt/exagear/images/ubuntu1204lts/shareddir
andthenmount
newdir
tothemountpoint
shareddir
$sudomountbind/newdir/opt/exagear/images/ubuntu1204lts/shareddir
Note
thatitisprohibitedtohavex86andARMversionsofthesameserviceinstalled
simultaneouslyonthesamemachine.Alsowestronglyrecommenddonotrunhostservices
fromtheguestsystemasitisnottestedandnotsupported.
Note
thatdoing
aptgetdistupgrade
intheguestsystemisnotsupported.
2.6InstallingandRunningWindowsx86Applications
InstallingandrunningofWindowsx86applicationscanbedoneusingWine,acompatibility
layercapableofrunningWindowsapplicationsonLinux(http://www.winehq.org).
For3g/1gsplitsystemsyoucaninstalWineusing
aptget
intheguestsystem.
user@armserver:$
[$((`cat/proc/self/maps|grepstack|awkF'''{print
"0x"$1}'`))gt$((0x80000000))]&&echo3g/1g||echo2g/2g
3g/1g
user@armserver:$exagear
Startingtheshellintheguestimage/opt/exagear/images/debian7
user@armserver@x86:$sudoaptgetinstallwine
user@armserver@x86:$wineversion
UnfortunatelyWinedoesnotsupport2g/2gsplitsystemsandfailsonthosekernels.Wepatched
Winetosupport2g/2gsplitsystems,builtitandpreinstalleditintheguestsystem.Sofor2g/2g
splitsystemsyoushouldusepreinstalledWineintheguestsystem.
user@armserver:$
[$((`cat/proc/self/maps|grepstack|awkF'''{print
"0x"$1}'`))gt$((0x80000000))]&&echo3g/1g||echo2g/2g
2g/2g
user@armserver:$exagear
Startingtheshellintheguestimage/opt/exagear/images/debian7wine2g
user@armserver@x86:$wineversion
8of16
2.7AdministrationofExaGear
Beforeproceedingwithadministrationensurethatyourusercanelevateprivilegesneeded.
SUIDandSGIDbinariesunder
ExaGear
BydefaultsupportforSUIDandSGIDguestbinariesisenabledinExaGear.Todisablethis
supportswitch
ENABLE_SUID
valueto
N
inthefile
/etc/binfmtx86.confonthehost
system:
user@armserver:$sudocat/etc/binfmtx86.conf
#
ENABLE_SUID=N
Thenrestart
exagear
service:
user@armserver:$sudoserviceexagearrestart
Note
thatSUIDandSGIDguestbinarieswontrunassudouserif
exagear
serviceisnot
enabled.Normally
exagear
serviceisautomaticallystartedrightafterinstallationofExaGear
andautomaticallyrestarteduponstartupofthehostmachine:
user@armserver:$sudoserviceexagearstatus
x86_guestisenabled
Aslongas
exagear
serviceis
binfmt_misc
wrapperthelackof
binfmt_misc
kernel
moduleonthehostsystemleadstotheimpossibilitytorunSUIDandSGIDguestbinariesas
sudouser.InthiscaseyouwillbeabletorunSUIDandSGIDguestbinariesonlyasroot.
Directoriessharedbetweenthehostandguestsystems
Configurationfile
/opt/exagear/images/<guest_system_version>/.exagear/vpathslist
containsthelistofdirectoriesandfilesthataresharedbetweenthehostandguestsystems.For
example,useraccountsand
/home
directoriesaresharedbetweenthehostandguest
systems.
Sysctlandnetworkconfiguration
Sysctlandnetworkconfigurationsaresharedbetweenthehostandguestsystems.
Theguestsystemhasaccesstofilesthatdescribethenetworkconfiguration,like
/etc/resolv.conf
.Theguest,however,isnotsupposedtomodifythenetworksettings,so
thedirectory
/etc/network
ispurposelyemptyintheguestsystem.Configurationofnetwork
settingsshouldbedoneonthehostsystem.
Theguestsystemcanaccesssysctlsettingsin
/proc/sys/
butcannotupdate
/etc/sysctl.conf
or
/etc/sysctl.d/
.Configurationofsysctlparametersshouldbe
9of16
doneonthehostsystem.
IntegrationofguestSysVstyleinitscriptsandUpstartjobsintothehost
Debian7,RaspbianusesSysVstyleinitscriptsastheinitsystem.Ubuntu12.04,Ubuntu14.04
usesupstartjobsandSysVstyleinitscriptsastheinitsystem.Manysoftwarepackagesprovide
configurationfortheseservices.
Bydefault,thefullyautomaticintegrationmechanismisemployedtorepresentguestservices
ashostones.Guestservicesareregisteredasthehostonesunderthesamename.Thusyou
canmanageguestservicesbothfromtheguestandhostshell(inthelastcasehostservice
delegatesallstart/stop/testconfig/etc.requeststotherespectiveguestservice).Forexample:
user@armserver:$exagear
Startingtheshellintheguestimage/opt/exagear/images/ubuntu1204lts
user@armserver@x86:$sudoaptgetupdate
user@armserver@x86:$sudoaptgetinstallnginx
user@armserver@x86:$sudoservicenginxstatus
*nginxisrunning
user@armserver@x86:$exit
user@armserver:$sudoservicenginxstatus
*nginxisrunning
Youcanseewhichservicesareregisteredintheguestsystembylistingfilesunderthe
/opt/exagear/images/<guest_system_version>/etc/init.d/
and
/opt/exagear/images/<guest_system_version>/etc/init/
directoriesofthe
guest.
Afteruninstallationofguestapplicationsexecutethefollowingcommandfromthehostsystem
todeleterespectiveconfigurationfilesinthehostsystem:
fromthehostUbuntusystem
user@armserver:$sudoinitctlstartupdateexagearguest<guest_system_version>
fromthehostDebian,Raspbiansystem:
user@armserver:$sudoserviceexagearguest
<guest_system_version>
start
Note
thatitisprohibitedtohavex86andARMversionsofthesameserviceinstalled
simultaneouslyonthesamemachine.Alsowestronglyrecommenddonotrunhostservices
fromtheguestsystemasitisnottestedandnotsupported.
Integrationofguestcronjobsintothehost
Bydefaultallguestcronjobsareregisteredtothehostuponstartupofthehostmachine.
Otherwiseitispossibletoregisterthemmanuallybyexecutingthefollowingcommand:
fromthehostUbuntusystem
user@armserver:$sudoinitctlstartupdateexagearguest<guest_system_version>
fromthehostDebian,Raspbiansystem:
10of16
user@armserver:$sudoserviceexagearguest
<guest_system_version>
start
/etc/crontab
configurationfile,cronjobslocatedin
/etc/cron.d
directoryand
userspecificcronjobslocatedin
/var/spool/cron/crontabs/
directoryoftheguest
systemareconvertedtohostcronjobsinto
/etc/cron.d/
directory.Guestjobsnamesin
thehostareprefixedwithEG_.Thiswayyoucandistinguishhostandguestjobs.
Notethatcronjobsin
/etc/cron.{hourly,daily,weekly,monthly}
oftheguest
systemarenotconvertedtohostcronjobssincetheyareautomaticallyhandledbythe
convertedversionoftheguests
/etc/crontab
.Consideranexample:
Guestsystem:Hostsystem:
/etc/etc
/crontab/crontab
/cron.d/cron.d
/myrecurrentjob
/cron.hourly/cron.hourly
/cron.daily/cron.daily
/cron.weekly/cron.weekly
/myweeklyjob
/cron.monthly/cron.weekly
/var/spool/cron/crontabs/joe/var/spool/cron/crontabs/
Asaresultofguestcronjobsregistrationthefollowingchangestothehostsystemwillbe
committed:
Guestsystem:Hostsystem:
/etc/etc
/crontab+/crontab
/cron.d|/cron.d
+>/EG_<guest_system_version>_crontab
(handlesguests
cron.hourly,cron.daily,
cron.weekly,cron.monthly)
/myjob>/EG_<guest_system_version>_myjob
+>/EG_<guest_system_version>_peruser_jo
/cron.hourly|/cron.hourly
/cron.daily|/cron.daily
/cron.weekly|/cron.weekly
/myweeklyjob|
/cron.monthly|/cron.weekly
|
/var/spool/cron/crontabs/jo+
Bydefaultcrondaemonupdatesitsconfigurationeachminute,sojobsarequeued
11of16
automatically.Incaseifyourealteringyourjobsinaguestsystemyoushouldregisterthem
againinthehost.
Youcanrestrictregistrationofguestcronjobstothehostbysetting
DELEGATE_CRONTABS_AUTOMATICALLY=N
intheconfigurationfile
/etc/exagearguest<guest_system_version>.conf
.
Integrationofguestudevservicesintothehost
Toprovideuserwiththeabilityofhandlingdeviceeventsstraightfromtheguestsystem,
ExaGearincorporatesintegrationofudevsubsystem.Thisisrequiredincaseifaguest
applicationprovidesfacilitiestoworkwithsomeencryptedUSBdevicessuchasHASPkeysetc.
andusesudevrulestosubscribeondevicetreechanges.Inthiscaseapplicationspecificrules
shouldbecommittedtothehostsystem,otherwiseapplicationwillremainunnotifiedondevice
treechanges.
Bydefaultallguestrulesareregisteredtothehostuponstartupofthehostmachine.Otherwise
itispossibletoregisterthemmanuallybyexecutingthefollowingcommand:
fromthehostUbuntusystem
user@armserver:$sudoinitctlstartupdateexagearguest<guest_system_version>
fromthehostDebian,Raspbiansystem:
user@armserver:$sudoserviceexagearguest
<guest_system_version>
start
Allapplicationspecificudevruleslocatedin
/opt/exagear/images/<guest_system_version>/etc/udev/rules.d/
directoryof
theguestsystemareconvertedtohostudevrulesinto
/etc/udev/rules.d/
directory.
GuestrulesnamesinthehostareprefixedwithEG_.Thiswayyoucandistinguishhostand
guestrules.Registeredguestsystemudevrulesalwaysrunafterallrulesofthehostsystem.
Afteruninstallationofguestapplicationwithregisteredudevruletosynchronizeguestsystem
udevrulesdatabasewiththehostoneexecute:
fromthehostUbuntusystem
user@armserver:$sudoinitctlstartupdateexagearguest<guest_system_version>
fromthehostDebian,Raspbiansystem:
user@armserver:$sudoserviceexagearguest
<guest_system_version>
start
2.8UpdateExaGear
ToupdatetheversionofExaGearyoushouldperformfollowingactions:
1. Ensurethatyouhavethenecessaryprivilegestoperformfollowingactions
2. Ensurethatallofthepreviouslyinstalledguestapplicationsarestoppedandremoved
fromtheguestsystem
12of16
3. Removepreviousversionpackages:
$sudoaptgetpurgeexagearexagearmem2gexagearlegacyexagearlegacymem2g
4. EnsureExaGeardependencies:
$sudoaptgetinstallbashcoreutilsfindutilsrealpathcurl
binfmtsupportcron
6. IdentifyversionsofExaGearpackagesbestsuitableforyourhostsystem.
a. CheckthearchitectureofyourARMdevice:
$arch
b. Checkuser/kernelvirtualmemorysplitofthehostsystem(executetheholeline
incommandlineterminalandseetheoutput):
[$((`cat/proc/self/maps|grepstack|awkF'''{print"0x"$1}'`))gt
$((0x80000000))]&&echo3g/1g||echo2g/2g
c. Checktheversionofthehostoperatingsystem:
$sudocat/etc/issue
d. FindversionsofExaGearpackagestoinstallinthetablebelow:
Arch
User/kernel Operating
split
system
ExaGearpackagestoinstall
armv7
2g/2g
Raspbian
Wheezy7
exagearmem2g_*.deb
exagearguestdebian7wine2g_*.deb
armv7
2g/2g
Raspbian
Jessie8
exagearmem2g_*.deb
exagearguestdebian8wine2g_*.deb
armv7
2g/2g
Ubuntu
14.xx
exagearmem2g_*.deb
exagearguestubuntu1404ltswine2g_*.deb
armv7
2g/2g
Ubuntu
15.xx
exagearmem2g_*.deb
exagearguestubuntu1504wine2g_*.deb
armv7
3g/1g
Debian
Wheezy7
exagear_*.deb
exagearguestdebian7_*.deb
armv7
3g/1g
Debian
Jessie8
exagear_*.deb
exagearguestdebian8_*.deb
armv7
3g/1g
Ubuntu
12.xx
exagear_*.deb
exagearguestubuntu1204lts_*.deb
armv7
3g/1g
Ubuntu
14.xx
exagear_*.deb
exagearguestubuntu1404lts_*.deb
armv7
3g/1g
Ubuntu
15.xx
exagear_*.deb
exagearguestubuntu1504_*.deb
13of16
armv6
2g/2g
Raspbian
Wheezy7
exagearlegacymem2g_*.deb
exagearguestdebian7wine2g_*.deb
armv6
2g/2g
Raspbian
Jessie8
exagearlegacymem2g_*.deb
exagearguestdebian8wine2g_*.deb
armv6
3g/1g
Raspbian
Wheezy7
exagearlegacy_*.deb
exagearguestdebian7_*.deb
armv6
3g/1g
Raspbian
Jessie8
exagearlegacy_*.deb
exagearguestdebian8_*.deb
7. Use
dpkg
toinstallExaGearpackages.Forexample:
$sudodpkgiexagearmem2g_*.deb
$sudodpkgiexagearguestdebian7wine2g_*.deb
8. UselicensekeytoactivateExaGear
$sudocppk*.key/opt/exagear/lic
$sudo/opt/exagear/bin/actool
2.9RemovingExaGear
BeforeyouproceedwithremovalofExaGearyoushouldensurethatallofthepreviously
installedguestapplicationsarestoppedandremovedfromtheguestsystem.
ToremoveExaGearuse
aptgetpurge
:
$sudoaptgetpurgeexagearexagearmem2gexagearlegacyexagearlegacymem2g
Asaresultthevirtualizationengineandsupporttoolswillberemoveddirectoriesandfilesof
theguestfilesysteminstalledwithinthepackagewillberemoved.
Note
that
aptgetremove
and
aptgetpurge
donotdifferforthepackagewiththe
guestfilesystem.Inbothcasesallfilesintheguestfilesystem(filesinstalledwithExaGearand
thosethatwerelatercreatedbyuser)aredeleted.
3 Errata
1. ThelengthofabsolutepathsthatExaGearcanuseislimitedto4KiB.
2. x87(floatingpoint)80bitprecisionsupportislimited.
a. 80bitoperandsareconvertedto64bitones.
b. TherearediscrepanciesincaseofNaNoperand
c. Therearediscrepanciesincaseofraisingfloatingpointexceptions
3. Weprovidelimitedsupportfor
/dev/mem
and
/proc
.
14of16
4 Support
Reportissuestotheemailaddress
support@eltechs.com
.Pleaseprovidethelogfilesand
detaileddescriptionoftheproblem.
5 ExaGear Concepts
ThischaptergivesthegeneralviewonhowExaGearworks.
TherearetwomaincomponentsofExaGearvirtualizationengineandx86world.ExaGear
virtualizationengineallowstorunx86LinuxapplicationsontopofARMbaseddeviceswith
ARMLinuxoperatingsystemwithoutportingorrecompilingapplications.ExaGearcreatesan
x86worldthatcontainsallstandardlibraries,utilitiesandconfigurationalfiles.Thisapproach
ensuresavailabilityofcomponentsofinfrastructurerequiredbyx86applicationstorun.
Virtualizationengine.
ExaGearvirtualizationengineisamiddlewaresoftwaresolution,positionedatthegap
betweenthex86applicationandtheARMbasedserver(seefigure5.1).WithintheExaGearthe
userseesnodifferencebetweenrunningnativeARMandx86applicationsExaGear
virtualizationengineinterceptsx86applicationsfromtheverystart,convertstheminruntime
intoARMcompatiblecodeusingbinarytranslationtechnology,andexecutesthem.Theentire
processiseasy,andtransparenttotheenduser.
Figure5.1:TheConceptualRepresentationofExaGear
x86world.
Technicallyx86worldisaparticularfiledirectorythatcontainsthex86libraries,commands,
utilitiesandothersystemfiles(seefigure5.2).x86applicationsbinariesmustbelocatedinx86
worldaswell.
15of16
Figure5.2:Theconceptualrepresentationofx86world
Bothvirtualizationengineandminimalx86systemareprovidedinExaGearinstallation
packages.
16of16