#!/usr/bin/env bash # # Copyright (C) 2011-2021 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=e46fad5a6533a7a6221ccfad23140e2c # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 d 0PԣE15Y! m. bqٿ1e*Dw)YRwa>5u֖ 74ŲgplF f fd"#4pL f|hEYcU -V!_^(Ԙւ 1@0cJ;}8P㒅S^,y0 ̄,Z#r[_P,cF@ a^HȄ!C mhZ8>%\X`& `B5L/hoI 42hjh^674RV28W#p4x/w.9 GťJ.4RH߅Ҿ:`mXUH#IQ`DaOtT]Q!*W :6$sr%:>{x.}|0STY L4z/w$ Xn[m lLzr_FP2(tqyGHGD`zK G(Y&6BuT zA"W1/] ߑ~xeE*dd5:f2Ty҈+LD>'{90&e x6E6+)=õwh3cOY ƣavwHJX-ӆmO` Cgb)Ӛ8sX>uT}bѤS}5Q {],wI~ 9} 0iZD![+ 㣣M^l G?nPzYK鿆/*aH,![U+}NΔŰCiPۣ\B0t\ .! ypV,3A:ؑ _tuAP)%)-HSj9iJϸnf@Ʀ.Q@xH2t[$0%#8BT`1+8( I?&Ԧ.Hk[Y#xX݂d'9<@LIlYR_,<`ZV/1<?F1]SZ,|atd ܰLC4 Sj\L;4 9j13b2ywwQ;xA?施?`qā,~F>-{"grTGǭjUIiw"oJ$o8I`Y~9>C X!G,QI{4a` %Qz?uiux4֚Ey.=q'-nٚD7 U)-54ωL!lO]L$ye0f:0ыya\@pgD'mibxhV7/063pR+l$%]w5_/tڢX54.rnz$z})`Nl aɨyo+Z돛Qb^8lDۚESix&k|ڀ!sX6gbR pJE 2hȽP!1w!ոrڏuWöc7R >'cߚ[l/FtUxkXt?[&<$`4POv}0\e:ፃMڶl7 `<NR@9&+4.u FC xl22Wޭf,W8.o\v(=5A7/H#gte1z'"fC*HK3t0 X\,,CK$ϕ"AԚ~z c^C7n)Q!0e@4o0FP1d0̀2.lJ8qN>OIO# c!A` /1t 'oF˔sii$}8{6Oe8;oyZ0Sg8 .g?gi Վd+y)k-ޱQ)gЇvQ:LW[#&mL\[7(z Mf:Wڝ۝۝۝۝۝۝۝۝۝;,fKSer7vVP^N]‗HRP;g5?pZKX--pLĭ}D (<Ρ]wxx"*ܴC(>g+Bՠ+gb0wGV]촜:x'Ej8_z)1чMԛAQ x4uJp" Qс95Dn6py#QG..kzs9zz [q8 !FG#`/ZMZPny5Xv$G,ֶXDž",͐\YOOФ{v1 <\a'@(!]O֬ =2iへ(a=c7OBg;~l)4a%tz򢙗ک6dŢY5 sTm|@')r qx*,k,C]Pw3OŲϟ ˟Dn.4n( S ܗAϏqɍXb0Ru-hYB7edTy=jYJP5pI=9Q"79|Td X'^1ř>@@8ut~ޘWm2@lP>9`[$Z mWIΨ/Mo/X5Ti" `Bb\?v{:{4]Cy k+GxD%hZ! 1OB>Pi E\ܜ½kr0yO V=1=d8P'{/BwQ9ZeӞ~i`}5LkӫZ,U|߿KR¥KזB6h@8[j iLAkV+sB\%}B&p7aw΄;]Pʑp"Aßs$ÄW# 뷱JI (-Nm\WbKPT!!8rK>mbaGtiç?@mщnKfc1zK|xw65l_!"n.M/J&N 4SnTq }&)F6SbNf_ܘA-\0U ^R'Йkn&Qg ErF]q¡O\_=X0AKAMl~^w\ߴPqg6deC֛/f|>g{zI](+ל6eޮg,5ۭέ \?>W8 U+$BHI AA{@Jx>9:n6kv?ngcX!P#*m Xlg0=vr'y}ڢ{wZ%ldN յש~X4kأړnZy0GYi /!SQ3mC/ = k\F *{~aCRn=zʣhUjL$Lm,'bV2ٰGM0l'Q&ëQr!N@|6K`ay}WffkOX]|Bx: %0al3qt"t6JNGivn>kC X%`Rq} :I6J $>ؖs ash5-%`ͬ_Qj s!"8d+u."dtydd*;Cnm]/%8> MA,N;JyI)d| t(ާ!y;rZijWTqkw'f k^4-gZܖRNm4/Z6G{${$Q'xP]!lJ+ME>|-{[` wAY24ud. ;:N_`7ZJ7]mP=` ~ޞF[.vӤqSXg^-8ȂD%p8l1<4&wzxx}#T_YQT"Řtt@eGU +?P6DJQR@U.MLC3< *" BtE9jK#!Zj;C+JjoIȋ&]Tpfы1_1OLW9<:l.t@G$ͦk=?շw=fP3]T4sL ٧>X QȞ{Z|?5`aeREʷR",- 3Ɉjt ~ \a{5VQ[)E#̦P09`e1<_Uj ]@5dlJn?M&v6{gX`2fޛෝ3nEi_~#AZ4NͶ"ZG9{ދn֔w M~51@gA*y?9лVrdi?"ʊg nr2;_U0`vCZdR^du2VlcY|D 1ܲ*՞.vÿTePR8Y޶  ŜrZwue<|MEǪ㭅Jq;0ߖ.5;H9Z[\Ӏ"?dy_9t(9) HtzskgC 5H]L2MeopC7{SMWٙtkGNj.uˈD]HNjB\W0혤,K$\vV+3h's{9*!4- $iܟbʸ`PER86zT.n1U $z?V%Dk$FlcUnXkoeՔӼR#T}<+v(T+$8/[7uT0XL~[8bzc%Vf%>'?=? * (VsZu4:?kKZ/y=*kтuG>p: ԼlJX}l@>3#j4LMYg~Z{7k8?OrZdݾ"L(-' G]89K<6p.0:zFo4uѳ۲(V3auzʹF/t8Q3+g{ϑ:AxO1%PG :=|d!ﶛhp_`wR2%I);'䭔1N5-9HV#G*ݓ%i-2uĠ~ M|3*8QI?ʯQא;a:ݬƱ3Y-:Te2!9s[A5s\M<139p iZM;YnDfJSfI"p>D':Yb Sk BM3@:B 9Y=~K8_2J72Dݘ@T.zB"=~֢V[6!m}jϷ1YUo3+v8AX-e4,Hnf19KdֆaQ@8Vޞ?cD2I'F*Ul3RE=QXOD% R;<t 3@e;ؿnMz َB{u6X'i+Ez钸eQ-եrrTb6'ۻ{?g'* p#SѱWNCB)N9:yhV ˳(gaRD bSwylծ!2|,鰜 mi%غIk#׊)s=nK.uw{Xid {I4߮ {7 (G ǿ_ɑXVKC9*UR(%s>`zQ[ =%Ul`j?42sUf>\$+VM63 t $nAf㹎K1\p9VT_$<# 'r*6oyy2f\ [Kە^#IjUkׁ67:+fC =Gnt` Yc{g:NNClM=@7N'<æueڴ!W$Ej8"fY-똜;=EJU/✭i$kl1j@Imy`U.?_GxVl7k+@|@6?{D 6NX=-ҔV}d =mL_b~?m- ћsm )o (LO|dڔ/0jN*۶LU:&K˴Z~e߰>j}k:~o)yT["RPҘIѲzY *nۙT? PSZ.n棊k~eZnY\Qi+GjhDw #a5B*lL pBpKp h>}4q|16xgLnto vNe*;0鋜9Eȵ/j^hpUX8_Gf"=MؑLQ128Eߞ>>߮{Rr^NCmV<?.>ۄ=?%HX_vt;b\NH٦"}f4#i(iߤ(:]q5BKOkUԘ ^p+!GXa& s3lE xJ(?Uxp)@-迯X(xVL&ri(H'_dXJ-[,{j ryVjz-UxȎIڽ^˙h2tfk#[Hȷ{7ʮSv9Pv}kYLĔ> ت3r0˛MD?`s[e?7J Ù#Gpc0)w6J&4mc.ֽx="(ո h觠½cÈ]ml]AaKc;91V-YFmDUl;L`^h.O3c\q;68lGyYe<;<^gکGӜ_¸Y=dܜ,d̽{9?k3?UMǷZ/ &,#40 3$k!ƈ鵕Q!$oӽg'v|*H=<'gG/뇁Rr-:pG-D%Bj9hx6D D !‰ .u@w딥D |vm~_##Aj8tw[ѿ+ҪZ8v#QH ?ډώv6UqGB.]sJg\m rkT9x?lu'-Y|&;ˏTcq>\.=\tبٽxqr&0~8O`ÞR`z&|mUWFyt1Жo &~4IOwtiaYI03~S$VvØ9[ ?Kxz>v [z$EXl0:p3NaGټ616H\T;`98S…+gM'4M,PjbL ח.Ð+ >,t!\fkll: XFIRbUɁCdډs|PXt ޮx0! T0xV 3O[ n~g}]d}ۖcF1GaߠAnBRB"'f2 AaUHz <T+eh kt:UGЏws]9?m vpC)'P\cʼnK:;eѦ6,dy? v1jCLx0i{g$LҼspڭ1vϢe| 7&6{(]pq%+Ĩ Óe4*N^ˤ| lHW$BHp^p?HOFftHn(fLajL|G(R),݃˵[&C`ndx|dm!PYv62pCDjU׶%nbztq~ 3<]v̛*rF`S=| m6_X )Ob!/H2j'cU yk_[H(D VMރ:}+m@~+ng i^Yn|"ί)DrIޕg]k #B(ЁD<%\\yP~aыLOFr1I&ΏמdHDxؚ]Ay`=̓ .~J>j_KMt@ۑ>S6=GH{:]Íd>{Hh|q-zֺLR뉒@(sH\.DTح5knR,zŞ_{/m2,kzW~;ʖSJ ^k;EL͆)2dZZڜ"2Twuv̇czQ|Y,g3f?Y ttGK/קD#/O+[XKTswRf0pgw$~Ach r2oefӫN& O p).y+0xռ37-aכ4HKU ^[n,Ә9 |X2J㼘 tn!ŰЯICOsuPAIlz4s ]%)x; 5Ң,X . 5@Jty"Y$ )pjB `tl02#TĚ8-S2S82Aq>:xg k)DuVh9Z˧yدK`5/U'@=3Lɶh^NnҹFeODfOKf*.M7!DEI7B|l#m ۄRՈT;G'o~knDP':mR5 c9{ɮ¶ J`vbO<7?5# [Xՙ W+y~[8{K!qb<N𺅐2d891Ӹlb *%qVOphg3J.!ZOUGR4 j'o@Gv݄>O;i3;#nNqti;L Wާ] ͻ(;fdNzg]rw9`y @YyF=$UKk=8G TzkQ\=tf*A$FVo~?arN; OYő1Bۻ.="rիmBvsj/lL|ݘd6~LG|"_X.Vi ƗR+dEm>ޚ) hn9,z0J {=坤C~5LQտw=|'nL@3to__ r7_ .U,Kz=$.?jOW]vk\%coEK*?jQ!q)=l6d [Kp7`UJ^\ґM3U5 Wd$޲|'VGMl/N8g,ZŷuZԮ F[l j>9ص"<AXl%u oHڹܥ1I/+ryG߫ he$=ld{ j^r} ]g{)~ԏ/?U?kg3?g_0Sn$@^noQ FE!m;1}߲wcUM?uޔݓntdT4EZ>sw4V[]̑xU'õy},9e޸OLtGT}A`]]<ťWu{oMUh0'[9Srf eP?\.Qy/ʏpBEfz*OkgEw<5jvj|Dm~L5P7tlC;×N:~#>Oo?|ۦCLxQlLInkyo77p9c+Zy/`IQg9VxTG+t$Ն/ ļ[h3᤹צy^.l)@EHU/o1$ <7913O?mRc+A:WN];_..^1 "eEz>P>Tn-0kzNgzGK:h\Fi q W)i ^5*[}(8,gPn; b|tjF8_Eڀ1RGXp|C橜=GC |*ke '7\S@[E=\e$YVxĮĸڸ{}4hF14NVB[&x|EW/4E֑-W[‡ ֻ10O`Zlћ򝣃3L F-6V/?4Yw4i` 5$r}`(l˹|JIp"q^__wW߉ORDHi;Z;b+"N'bC 8c_-VWh&h-%\wW2 (J!BO&W{oox]'4f]AǯO+p&++1IŀBoco>lޮ5?^?[Vh>Ǖ/~<`HA*=Ew}lнW t Ns6=4?͛GF? qZ/̓=Tb 7\V͹ï9z)k]v_cI'3OCatVne Mdw#oHS4 -/L͜K/tA]ѓ'QD.Yy܂] phN>~]>cQpjG7W*`; lޚqCւkQ 3փBܬ@ZE+,ЫV cXo ~E uVskLR3Cgf ak{Q2?( ɬBOVVVx`V  9p,FsL#-i7)%?akWkVɾ a1%ȄjrLӄ^yINa87J`4v"0-Tvg6#NQa>WNx簭 ’ g&v&/SKºw!.^1%77~uIzPffl_7^R˦dnp8b5>]t6M5ar+]H\(MLCtW%wqs)t)F5oaоp+qXᩮ`^eB'HV;Gtۧ/"TIxÖTDDjBE;xRcN2̣P'yCC6g!)-8o|m@[5^,~feL1+ ?EU&T>mg~ptH2L)9(1 OUĚ.7P@ަ76{(OP_>7.K-RS-=يBV~ zO0\Fj4Y_\~N*}(Kf#A(/i*HY(RvӔ*m'# if%i<`-?׳B01l%й 6;BTdA@9O_7Vk`n_MF*6nk }d5~A"!0rѪR ݎitOS:V<aQt}H[f3;1F(qIPkrVLY"gmJ6A0 Ah~R@#Sc jCpxԃ#6nA!&2;lry+|« 4K7Bof,Bto{$7B\'KqXZUVP| rfvcm8h)-繏%b٫%_ɔ|C=|nu%@tv cy*Yl$ef> 1x5nќI6ZMhxe3)TTՑ"9:Pd27++%>uK'$,ΎH-.ϭDo^WاzybZāI;.1+7Rjo6WX`]_h; ܴ-En9\Po^5 j4W usۊvoQMqyeql);I93Hd-|߸qwT tk\l(aa+v4ꢗ-SDIkYzA}+RK;% +nՖFVq̞ ;1vV9f;ƨڣ"bRJeW;O &TP[ P&ݣuNoZkutзs?B,̶Op &9dN߈)9|ўG'O#> RGu-0$ V)~30"K>qc}v1&oϰK;n4H-X)=g55wK'UOSiQhf%E^yfQqLO[/LA =K/0x[nu/UPuNd@( tl}uisAJ鈟F^g{Ч;q3<~s;O)BՃ N@P"7Q#9'2j z<$㴉5qo|>dR&~IهT'4 @B]:󆽼laܕU|0+F}$\l }֖ 1+8Zu-a-u  -6#$倩g'4ApM8/ћCS/U7L[D.%Q쳥@[6$փ2fZ׵@%8vOT7Hp|v w;z`}ƫ\g?9?v7]}߫kV= ~5BgQ߳Y,{=M*^}z@~Aġwe1? USL2 oԛGlr e%09ܫU9+UȂբKNk*b_'sϩGBNۗ_-%wϩ5qj00{N=緩ISa6Zskz*j 5 ϩ,R8,vpz̝J7fo7>{ysV*KhRɍl (6>ZzIJ&fyQETP8nmti*`)z={󹝃-W/YuwgzQ-g7lJBh'P[lW`H9,{on Ĩ1db$Ϗq?B;بF-AA AѨ Zk?5H,DP‘(}tfBəwZ{37{q $OfoF2y&(NKOUg"K=S|If̨ 밟(B@AEAIC;r֪B qvG ]WXCq3 @#{6>SDۨ:x5{v-ڣ=2.gF ' `3 0ЗK1 ˚jeCWf >.$6@JȖFQ=i`rP6F,%{elAK@GiCԳvt:j"3ԐetPM(K ƉE2ZZۆh`fOX?K?^E>оߕTTdNx*Wq&?q0Cr!r-JCsCyi4yZ[@x T ^^YK8_(ᫌVY[K"1k74)snЙUg~ SaGu*hu"\uIDI6Ň21hc$Sm 'bEY ܜAbO!ʵ0LrߟO,omG׽A d&޳ݵp>b[?" dWi}d@3bj& ^^QrVMBIUb(`fO0VW*ԥ:n /[zWӕ=s1LEE$ATQTY]w,wA J{Br\K†,qD[U痰m`K%\RæuJ%5>{qkﰦJ{ta)._!ڮppо:n5I]n5G(g ϛNGmhm v'O--bvswl>+!<3myB sSܱp=cWMmڹhCM*"I*NpDgI7ê.]#'o|۾jK%϶bE5]KrQ퍫/^/oi9)njSki[>q.a#T&P]/nN{dGWl[FajdEA@4找׭e\ҁxgu'YCD#9/(d:WWd&g+Ívі%ł\DR/-֣?> 10d =$iآ"x`jQPyf=?1F[X/x33/?)XD++Y+?O뢛U@tHE-hc "$nHʩk=dx7:bBg?j=_%]$;,[˝f5.S^ɒ4.[fnuZ.7S"7uw\gH.3:i7"|wxz1|6e2KUQT_.5><ếB2QC3]~Ux)=W.B]j0A'Zz7`jo?pՆ;g 5ڨӏez5&3?gl@s?xGk'z%;~Bj//W>\_?_p|.wy2*/7nQe\VVV~n6&Ƣ&ȱFu܁|o߰[wvj9}޸py \7g8qƵ|npvnxݿ#Gvߑ;qrG>n B\FSR˧;'{g$}SitY~/S4vz݋e{sg?mAaJW}\_Rs|Tߝ:٩s7@$ ~4 ʖ֞.7wqх$f}Pf#fmFT?6hDZ4%5TT-ai(isOqEY;?.n﬜0k[ Op|ٓkqH@u.mbπ$͹7a63iYUVҍ)Ġ-.Lo>Qm|*UӬ˝mZFS-5u.-n#@{ÙVsy\sԇٕg`<`zgׁx{sk/O/}!^*@%:5j޷e{}+Wdb5(EwC.]RĬڝ+˾k⏴G)nU0fŸ}JX|}23b:?2wGkȁ\lSԴmY]BC fvr9ZGA){;S~f?_3^0