From 338986037de10f4f1367c60587bb98248f220e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Etienne=20Dubl=C3=A9?= Date: Tue, 5 Jul 2022 14:10:06 +0200 Subject: [PATCH] setup: replace OS-provided conmon tool (fix podman issue) "conmon" is a binary started withing podman containers. The version provided with bullseye has a serious issue sometimes causing the output of "podman [run|exec]" to be truncated. https://github.com/containers/podman/issues/9096 We replace this binary with a more up-to-date version statically compiled using the nix method. https://github.com/containers/conmon#nix (note: nix compilation is very long.) --- server/MANIFEST.in | 1 + server/walt/server/setup/conmon.gz | Bin 0 -> 33338 bytes server/walt/server/setup/ossetup.py | 29 +++++++++++++++++++++++++++- server/walt/server/setup/setup.py | 13 ++++++++----- 4 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 server/walt/server/setup/conmon.gz diff --git a/server/MANIFEST.in b/server/MANIFEST.in index fa52d9d1e..955baca41 100644 --- a/server/MANIFEST.in +++ b/server/MANIFEST.in @@ -2,4 +2,5 @@ include walt/server/processes/main/images/walt-* include walt/server/processes/main/network/walt-*.kpxe include walt/server/processes/main/vpn-proxy-setup.sh include walt/server/setup/*.service +include walt/server/setup/conmon.gz include walt/server/processes/blocking/snmp/mibs/*.mib diff --git a/server/walt/server/setup/conmon.gz b/server/walt/server/setup/conmon.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb42a60b0c1b34719bdcc998671de3ba5f4ed8a8 GIT binary patch literal 33338 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�QgIF7zgCkUM<(n>!nk5{7?gZL8YW;^b?-C#+eW$C&zSg3&KBleB>kL?_Wf z--W{P3m#l?Q>l8Rpjlk+7~$TNGz}?dmjR?T^Le6^G}&z(G!x@^-GKzh*{g((uGa?lSLBGZQ?P(|_z< z^>azAea<)W$f~o3t9^*;!BDW&$7+n&*CY0|Y7W9Qrsg$Xf8Mz#Q#e)CoRDokq2q*N zEc(s6n+m6>MSHwt8l;C(`g&%>H6@8vBr~t1Yy$2KD0RoWj4p)!f$6^s&W^0pe7}=J zPkiIWbX$H^;Id}5slexJj=-C#k#}_P z^@APO+oQPc_Z}B?4}3nj{y{{3Dmox?d}~p~6y}qhetUs~J>}lYhr~3;!83r&2f^m9 zX`K~7oY_*`U#i$-Ekrc1^T@79&X&`l?@smOTzJTu6=S)=XiAz+SvIv-5^U{oxGbb8 zXRb7%s8q}wsUj(#>;Jc9%%Kfe^gCl@Pn~cyT-LmCAeP$4(@}C4*Xkk1)pws;7RrzI zW*gTh=e6I)14ZTAysLNRY+mcYfC^Zj{7CqwOImw*P{pCeA7bDrsK%ZV`8$3YVq{tg zC4_R!Ka2nTo!VMh{}0EWPxBD_%n^>~^f*P$o?a(?$BId|!hs$8v&CwEntE(BNBr`> z8R6C6TbJh=CDK}A7v44QIWPBW!OYn1wH%%547U?kvxU>*(~k-CK9^lA=(RQ$pI(ZK z{&4@rYhAkvKbFw#eyI=17T+M^3v)n0`3TDVv zrE>Vs(5MvsTP#!3RtvoHUl!c`eSBf`37q?5Y-Hz%T1bx>M$w=l*R>I8-BVxeqNU7< zfV$@h&X6DXgAe5~dxhT?qHysoSMCKXk2Gv8LxVeNL_M$*!p947?Y%t!zeG6cD9FxG zwK?LpG>s7^>>U&ZuE-f#Ft}XTCNNWlYHTPyo4=|v`dN|&f*HuTkd*7%g9Y~ghY zc!A<{L#~Rgi~aEVvxJ6sKPX{W`fX_ zPxcC*>dyreKq|QRCGfy3jX5{#*2vZ{>>Xyu*Z@D*@~QT|=4@k=uxGKy=cLdu0aL>G zsi9aGZCRGwQIgiw(V&hV3Ua$8+#gXt4}_Z&^M>o=zqb05!ub+-u63jQv!*kla*<0x zv9NVkaK?5EyY55HVt9loWmM`|ULgMdct<~6FT1C0mYCNZ8A@=;(ZICY><{jy$k*9! zSd|psKw&u0TB66KMoH?}{UcNO^^hs1voq;m5pPk=N}2WPVKE5RLc^j{Go)i?sf~AR z;I0u>C~gO3W$bhLD~%=wmT592k%2WukqyQ#;q*tQ3zuaR72ht{i^gM<6)U1fBX{7aCsuiqJTu6o_xFIl{OqWg42dE7 zS96FuB9obCQWv#t7$yWNW?TR{LUdyx_lS>9P4I<3`HEs(F0<-VAykjxJ13UJ;D)66 zI)oPa@puicRpOe|qQIyl?gQ}M9&gIu!pCvuK8MJmkIZU%d*W^*m&ejjbL;K7`JLLS zO_kO>S$0cw_<+|VRI#_{u7d1x5yO@1u#0qpI6yVL)lnGY)NF^7@~0JD>H_Q=)rOX` zxvgf_FT5G-FZE>nWJ`InUdM!Fk;ccvX!>H7oUV`STDmLwD&@9@1oO#^qn-g3OFtwt=_HN{stDvh(AAGYe;4R8Z6eR~rT>qn}k3Twd?S(^W| zVpvZdAg*H5&qKz&*uO8;=JSG;CQ+X*f__@zFt?Ok8jQI<5g?c_EWM_yCx!B@(#6pS zoa9tbM!+45W=N6&5QrI7UGX z!i5}JwjPU??Clst=q&cc7Tft_7Yu+19pLIH^>oY9wbfeF{vd&?@oB-)$`$FTHK{uQ zx#FJ1s(P%yDzo#}wGHoEb2k%T4itXiYC5M-^kFP7oKz%-m2uPB^p;xvjPV^b+)F(jK|XV=5Uklw3+0 zSE$)9J1wjILt@P%?PVQ>co#h4iQ0s2h6emTcV?fmsTQ%866?i_+ z&3(8v?yjfmBT@*}j~gC#DaHJ_BvxL(x81uN&$?BX22E2?`s+|X>V$RZX?wWDYxmUe zX!}o_k34HFboej-ZrtL_zRwfw8cF?&2=)spAlTH$PI+VSZ@nzVoeql$hMn`t?3c@% zEZhc+G{>wK2(j)UWiIAbSHQ~eJHD~^6FUK-D$_lz(11-^FcnsFiMRrh{P2eO)&;00 z@`XdJ$O<`qk(5${Uc30N6Cgsj$Xpj}XD4Q88%n5v!?Rd9v$2%DD8P-@QDbdE^0l{Y z1syk}8k&c4(y&A(=22*)Qqnkc%wE9Tc*jm9wre0UbnuCL{M^)nUaDc6N4Gssa(ni% z{QJruP98V0SLDaMKi~Ig#;NIhtjC@TF~XZ}^#;WbvXj=>U-9Xr)VUsY+q)iP)Wq$u zJGzoGY$cDx(bu9A{1E0|2{z17=v|8@aHE#_z?=DoETZG8fGQN^;mgNju7Yo@6b#Jm z$AUID3tXbo9^*!;Ql}v4gVU~hcf?w~88q>Sbi7-9Cbmt>BNe~jTAHFBg3&J7t54jf_ZArxYv4t>vl&zCH;uFW zE?Mi*hAjWY#Fry%+PhKHGv$lDfgnp4%Ts8lU+QLZ{ZiI-Ij*t-xYSWDx?!-Nsjva5> zvPeL(CjiqMfXQSnNYapTrVpY|S(-YH`oL1Y_!lQJ(aXp{J48^W_O!$+&*=8U(E`N3Fp#*&Zh~h+AF{Z}8z)vVJr7|5f)DQFR7Ql(@qKg1fsVxVvkR z5Zv9}dAM63xI8QnB)Ge~LvVL@=RKJGBkTE>Gv|DZZ&9b~R4uxz>)u=K`4{T$hqg%3 z3?8~!@^hoxy}t@%sAQ8I%o^zFO3z@Xq{iH>3_CmtF8@eqTj%e{RYy5j=AhVIhuuWTtY>;hz_x5EzsM76+ zPsWcQ8Byf%6j*nwsOo%VYYpvH>Tai*ihQ-n11$UT%QK@QhAi(H0i?mG{kOHMaKT#4 z(LHZlDEvb$``*z>dIY!gm3y5M+a{UX;VdUP698{+BlznKK^!R}#nl1iqaKSm@cVS8 z05G^?myXGMSk^ljCZFI-h$>aHG5ER6&f8f`a!)HNKgk-uo135;zl$<_fFnFE4p%50 zDD$=j{50)AIPE7w7Y^sD0=e3Kg~-~cn$5VrhcB`-!-oSz=}-paLSnwQY^bPlV1@sP z>tkC~H8RI}L_g9-E1)M(gzVv*Zr{?IuQY*jZ>u%^u7|hnTq^H1w=@@+w{I<%-TEqUo5uh7zy@%2(LvEzd?S~>**!?+t}x8kroDnH zsD>pso9bDGs@IP{TC#paNa^%&yNxMihzSp#TXyI!^{b?Ds{v?*itL~>O8Mx2;Cj!i zJEO#PjdiLN?>T>i{B=sgS2IyYNYqd!Oly(sODBJJGTT5u7jV2SBa3#SwUy}RV`888O^pn!-j>8jeWDVn)RDAyg=k}WKri)_Wu`YOpsKn8*l zOEffNv;~jPGYJGyQV1+qV*1ljy#K1WFU!jwJf1?BWJ4t;{aaRTEXp*IKqSbI3ws8c z>zU2rgS9K_P2>H3LxC##fqm$N2rRg_Ys@TP$US4mt=G8RyPI4Wa^60`c_AKiFN)e8 z%ODn$IIMqkQu>)O3S>bsk)4iomwCg;3yPTF0T_3^4WeCZ8`u2P zSPSD_!J)>O@&XN3->Br&rDk3us8Z#s+>(f!!l+*(-Y*-v#QDmZy`5crZu# zO%cWE$c>~XMQBG$4DO*P_eIUz)+$xiczt8CSNC2RU_TcLDh~0)vJQI$({~>6DC&jf z+>s54KVRSvw9nMCS8B>{jKSz`L#)X2EeN3l91_TOS!PvOYcFpAKgJ3a>KMT9$bo|^ ziIlh7E@+p8E@_&MC}GRPfrAUi5xYYW$`qhs*va5ZN{w? zBwG$BNshA+hGmR*Csy2PSFy5~TbN3244&P*pBZK<6LKbgCtsp(t2~6A5K^;V(q?^E zd7}%hFFs>YOmaJ=0hXEzo5^k9RIhdr_3B;1p*e{g_~paCU$wpuC7|FB2S!;{->~a# ztDuqfJrkFD8zXz&tn1P$ggCxf>3#}X8GHYCFS-4~QT8N{#8=LX z$IPamf!q1(YueXxZ-U5A6#dzMb{}ZnH=t$GVQ<=C_5In0CaIknpj!?NwM8Cy*h=1t z0PWzsYZKyhw|XTxs%*b^LZOcb=-iLwaDbmAU45K6#h<(zzK;hy>qj+da^0W6C*kuv z15z=pBOr;Jy_XOHzA8gI*4XeY<=)d)7|%D}nRq9%Z8x+;q?!$N9ipIqt?8Z}gUbfu zbF6e`C@%wnN3}{}{vchS8$r|luT5Q{MMuo!wLS0%zdpsTsyz42Ihe%frHG{mwZrfELmua#(Gyt)Itp!~0tM zkuWTQkPnv1U$bF)3T8n}b_8 zYS)rRkcpn&`DjaIB2{0Wmn4yJ;kg!PF0UOuGwrYa{C$N7N`#*iX6A1bTk@tjXt^Aa zJxV`?r>h_fD;N9WhKv)+LDC%Mo7lEt<)!P$1$))^SWz^5R~rt!!m`=|1}wdnKZ!^l z=Fz~!>r)B2#;|O$_MwCkwL{_isEkLW9=HGSQlm70+DHY+pG940gss&_EsCmAH4Qs| zAO`wSz2OCu8HvU6O4{r_Y_A2O^73E!4S68OkweM6u?azQh)J=gAfI?k#6&U;^|I$e zD4r>_6*+M2GgS+)$%v4X*x5{H=f1vNuI*n4tTmXe>^=$cNHlz?trJW(yg0ZCC8`YA zg3JpZhp&f{4Of^CiTGsSz7o4%L-|0m!>a#jh>q6^Z>CrdS~jg(uAN{<^)`#@o9H#c z1dR?*@qHD`q{y&Y?b=LdP)CnNk3;=w`JMTJF!74VW+nDM{cC;coiBJVb)$-mV1izT z+*r(adx{@teiC8iCvaqocVT|mbFM*1qD|76J3dY*AcqXq;mrhtf=+*e=M!&~ckWMk zwg5x9KZ{q&uO-V(D?MIG?vR^D;ag1;4+6zSfOQl(Y$lk+KrzsVQg;G1p(dC-=@j_A zuYLCGZ|g1E?mM;s#0UJk%>^tHWi^vQ;EzH!`qoN)UMZ_B-J4-zf*j6tVlc-nnjKHj z{si)stJ;svluA_tZSq#{;$2 z89rZB%24ktHKq|Ae9xX*73vicW}8azCb^2{dyTN;)QsQyY_YS!(%_J+pJ6)RRR`tp zMLw@lEn{*7-ke8Rl)~keHahU{IVsUcLhOo|UkIw-bBiC3u@d%B>I1oXOC7f+Jl*{x zs>N#%Jq^Eo`@D{(DZh^Ww_u~ZUx{jGR?wjP==qA4Q6UFT1+Ixbb3}!T`dl*0QNStLswWHSHPJP8J5CdoB}SMuNX|YrgGM<+yNM4mly`M=#+YIR7jL?J7~}b zF6~MbHK4?mNypB~O&L3}0`KDjdbA^CCdni5g2PC3jK*FOhTmtEo=l;8CjQ!Z+w`fP zTGd-lHIUs(Z|t}b$O!=tSw#Dlv#+(tnmSA2bSecIQnqRlryz9vPTO1Isf^PuvI7u_ z#Ql-g#T%6<7d>xPye_Wi46xWG&eP`p14$D04Rt)b4s+7I?<-bBmrTCNi>x$(Zz)Kd zpv|Pp*=BL6mi8FWreqm_pM1mvljbc`6Cb-h8W>`XgjFdIrwx6)7ngq*Md2NSRmoDK z+E@^7uw_!8SZ$z9NEn-a*lcAb`&a{jc8~HHqvmnI2SZ;0W$Ffl$s0=Fj1z)`1^-IB zKTX9+o)%*B9DT;K>xSjyHzpf2yiHiLLAfs%b?+1kt#252RuoI8TfBbgUy(q1lx(HE zhko!?3~Q?+W?PViur;!Jv@P@{>X>TCucAH&ka9U6cnu;?mGKf+EM1Xk_jh%V<5XmI zO%6R3T|=@7+*3oev;?jv!0NL;$yN%Fc7MAnttrVpg2hj$^{GM%fr-(Fn7B=ZkLg^eiN?ji#^m zA4^$05gAKiQw(d7q);aAYt;4X|DhEfX=|zjQ#?r)ehz6Z{GwOSP3*qLVe|? z0!itI-xqTedVJA-SKel0{X#|J>dw35Lh1Pd*Sq1>0^C686$ozOro2WEhJ8lIlE(bjY05|rSy zR*Sn+OGj!Q)KBKjQaM|3T##JH4jJZyesc@My9S&|zQ*q@uRv?%&s2Y`7UWsKQMRh~ zDq%ihSRTwGL=x_wu{3u{zLhXw>%}o#Sj|8BC?{(k1Y<=mtH}@R5Ooap>*7+sp|mi* zfQ9U5=ewi%M;Y7PDW2t=U}_t@A{8%4%!x!l658Q0N;KY--_X}?7#E=)$|rvfc4{{L znQC97TVlvdKpFH{eS%&k6Eug$Xg0&I`?VZXO4>pXO&JOi01)gu?V`hn;o{ z9GQCNjSg0SHPr>Pr8bs}V-_N*AEzDFo+w!NgGsARWtw4I^30Wn+%1QjEPV33Y z5L(6ZHiym}H_k};0p>vFlNR+|Zs>L67=ojY5$*`e6_O1ra2t6CP^k%0v=dcRi6v@~ zoE^viT&b&e^p=j-UU@%qLW7!CX$(ju77ZA{adUt*d{NnR{=NR`jV8|0?BMAzs>_;< z4yQjlaG7M0YOP<|ND62-FGE(`6@@6>gV%hTKdm50mv0y?WOw@XD z_{f4(2Iz<=<+L`lH>kyQ-n7TQ{`F#C9jPUJSA)s%LyiED6qLvTonn;| zK%8AS`w+Z0)N}f|XRCI>)kJ1AENd|)hLek&sU$JxFDHf>LCeyy^(w5BI$s#2*M_%V zdOvoHgq6*~R>UqFaN9-9Cx2rUKw1&IS;T0$UBp1e$5nYRH&Ng%+hZc>Qiww8>~LKE zwtbK{hJsY~o}V;^&>=en z?frQc0Y@vM=5BNlSv(46-GXZq(~wx(7goF=^`OV7k3--$!8D%eXO16B6DGs&-)RIX z7S>0gHb#xfp>8S^%$(7B<}-1|B?j!eYraYLKC@3@;Rc8|sCSK~GB_2Jee$y;Z_ft- zN7O*?;LW}OzM`O&UUjgEiAF3KpC-`ylq3N=5{<_JyZ3Li4d>&mfS)tgep)(nb`ZS# zdgR4?f(W5RZ{YB}-1j%s-v&N#65V`ad3E-E^djZw^1a`hK3h{7=wd~tKVkoQ z=%nf3KBG!vz8V}IHIX{{RQZRvlDO~Sy)Hf9CG}GHq;=^}%9FuWV3DAH$fuhxk%Vh3 z(=c#{*Z?G)(0Qv9m6#YOZ|6<<(|EBQ;s% zx2b$L&id!SNZzcrGeVoF)q|3MI5FU!?RbrNDqsz+j~!1#ymp0$x~W!u$%YbER~sBg z)ij@lPX+FaqZ{s*jkaoSK6!J>BZ{IJA#v#dRB%{! zTd%qKt{e*7Ce*yvKxfxI23S?r?{pmZFV7iNSqnFbcU&K8m!gV3M58CtoFVM; zAVoj}tJCw87_f%hB>rwag|ms$g2xmdp4fu|I&gd~Xg8|Hpn|Pdf5K9RetyvoZxR`iO-#lDF`@O@%(*N7sWl$Vu4UeDEja{ z7Orc`qMl-g5TbX|V#4;noN3}@SL-nTVMM|BX2Z4OrEg)z)M_kH?hwx}0xJugALyUM}!iYhso;cKIdJ2%fke&Cu;$wlq3z1HQX0u(W&` zQKi&wmf!BrU-B6uVDpT3lpWgTB+q{;f~+B3?2nKR@C}-+{I;UOLKewl4pl)O zmfQO2N$BZ`#QESm)583vHfY9)OJXtyW$_FM$tS?H=|xdB)rhl?o>_5%x-C2JLnBBa zqB*{>a77ScZ>v}8EHC~EY+C?0h0pxM&TiDg;6>@Tz9~`exXB$Sps(mW#>N0u-mx~) zF|+q)HF-Ka^G+rs0k)x6n6P@S#uFU^N(iD*Vx zYoy0uORvnCGbC4neKQz#-rDX#!Y-hu3n6uZ3FAR59uUaELYz>h%0?6Uk*j z4Yg)oo!kxf2fD1Q`C31)v(%SZm0&}C{RCF>9C!u;n)3D;*$`3Rh-CtWPpoQ@I6MUg z{ri1m@|)JCi+6>4FY`Tn%}qi(ODS&8qwr3zj21^!|Di5Bg~ieO00kbYPfjicn)VEd zsDDMuqdjS+&}*kZ0H9`p5BGv-#ynllwos0WVR&kFZPDKGEmXckmik{6yK5Sq3(LbLl#225;kV`tko~V?k=r@|7k&qLf5Vz z`BTDZubI;00f~E=-As|{VJOZQ9shv_|6y+-6#$W15Vex!m`>pjhrFibiv(+cRQ{<1 z8CK%zra)5yRzv~$s-R?zjMMe#c}B5&EXuj5+IEb`w&MiKwz4=!KN&BQBEb=9FRW6% zw}d1jsq-MSAxUo|N)#tmTdXiEVF$gwgSt_3EnK7Z-j0$V23}I2h!I6K@%zEnQyyhP zG!7S!>IC$fEqQa^Jb2}TPVrTi4PM1_xuTXWRoS%eb-G7{?&ZTyUOvp=e}nl9=$0JI z{QXh3m`E}9w##8Fe^vA(mC z{i*kLwd^=C>B^fNx!+xBDqD^-Bv(_JxW_)=fCfui=bz38WSXOID&GI1%|}n4M~S^M zGRi|@*O=W@7ccPVz zC)CodLDKpu=2JZDRge$dsH$>M4Dr>o9$7qpaUjgZeH~UhQ1vVaJyC+C`k$Vr-xq-c z(PtU2C$&U2T2#94z3X2$o9NwR&ZSn&F6E+CscdcoC3tur z_~}-|Z}AM%wq=Ltn(6AON{o1)wkJpBN8zI?NrL*Bete#tomF?;y1W^UmT!BPN4`OJ zNnS}-H;$f|9^@JVvA`v&?w31OybZE>-s?ZivT zLghV658tZo>~oOKzmd({tv-3>+}SKd3|xA$p;0d-Fp1jw$MmcvAvu-nKkXNLh%}1< zAvr%Q*Y6w5AIZjC#e-&7e9Fw~T{-o$h(rrDaBW9OLF!3w`t;-)zhk%>*oz!^eo08~ z!%n}v_`u`g$fXz=f5~=beJV7@qh>mU2_+<|Dkn)<$w@Ym*arWEsbu}GT#@ycYu?%p z;Rv@(D{*8Jp-kND-=rqS2@zYxncC@W!X=$kBl`I7oqzp+K-VQ z1xtTX=J;hhWTo>ZoT`4pxIhQbp8D9A=(L6Hq6B~c012|G!3k@h@9WI_3BDwbh4VY^ zgKdeKGM)R$c{vNHQ&pAPGC#A8IPUdSK%_?5xCo`P^*B+Cw}`BANn0zWY_a|*D!o$v zYANM1d|{y~!Y*BJyip9m16^YyfyX#!3Lh)?=5_gj4x4m2{UQ(hsjn&~4e+k-?f_W4 z6#VX8(O)m!`^(RJ{B%J*03GmPJnS`E2u*yU8IGqPxJ@=aW8dq(7hW56!I(5@EzyVsY%EMYR0n|fVw{v&^McKBTl{q6K}{dmrcC?5DI`DSYfJvQ#m zIrMPzJKN!6pB8Puq|!x=K2~rQ+`%%y#LX?M<9aJ>U~S@9PAAA7dS4tY!^~lFzRNlA zZMOWS>g!?!z0Vp_xH#K6fS}>|+btKPYPu+PFrP3gYFv~;JwLpIr2 z*;&6X10GyPhn_`TR+}6IYD&p&hWP%pQZ#y$|DqtAG4FvQOhvhRr8$AB0lLD3wcQAq z)rpxi)?^jel1}_6cBOXC`<4`b!-<-DJ7n=IbFPpJc7jgXoQ5K9LbcXhA-CgP0>{p^ z(h|=s9zlA4Uk{~%Gv?GTsB}b8HJyTmOa6t?vYxh{Vmj-`i8MPmEq=xK;8L7;_|uu| zOXxp4$#xWVCbi#!ZE~1Vi0u~R#ua912A?kSGH{GYV?VT`gEY-??vrhwH7a+a-tfD~71lbbdPkk5;A~NgRCV*JksDm`T_w{PsIufwWuo=brR>{F zjG#!TYzivhKXw%BMPMPPHo^C6%P2)r=1>Xcy%n7xv#Br;?qu~0OP zGNbi!AV*t-LM*6Xm?VhHAM{geo<0*HJQ(v(8$%luXJqNJ>a6IbNf>5Z<@O}8=#6^%fR^z0k+ zL{^Wn-_u1(4#85V-_|DbXuxZT2S8qh1LK%*i+&dOYfAke6l4&Lw@#2Yt@R9xF7ixG zRFSV)ixKx?iwgs#a}tU~GF|x*YAV*KI5pOS+anT>kVrLDI+~EFbSIxaNv`{WMWM~aFpSJ(5bmflmL6RABJICn(VysdEJ?U2 zsRpesCtp1im)z@jm457}^b8e0a}f~b?`$Mh;T@jF?Yq*qRB{b=qW^fqmC&si<|5J0E;{6(VIEieoJx-JT9ara}m*N?iJ)^Wiee}(dpCM@S z>1k=cmg1B1Vuf5p&hVQXT*Fxoqhr&Sq+1g;r3GbLX3kxF+^iHiyxBoF zTyBbn!WBJ=#_8xqIsW0@>66Tr?rOxU%vzJ;YRYp}3oMqM1Wl_1Q z)5&#e(3u~6cjNjVG;|z;g2_ZJ=;W^8`Ow1=>88cu#{*C~`VOMf+ksAtY&4CdKDiq) zyM746LCXohuo=oiK^@3SO7D!)jS>{K)6b)ArC^_iaj~RH_)AcWgk;Tijj;Vk#5M0O)sf(W&8*7(z9qggjt(! zX3=fGUJjB?rWR1l{}f0o$$)u<7Ql&ge<}l>sDIsbjZWxILW=l`rNzYrgiz>z9swQ< zg=3rIsQ$dRu2NCITqOH$I+}wJk(O#mFp4MCkt1%Iw=zdUVyR0LiWN)6B`y=$ug&@c zwfe{KhOc1-qh%R;8-krk1HFSi5~aT4^(K>aXu2Us=4}~C`dI)1U>#O0F*_?0zToOu z0&lhW?uL&YKSaZ=fKU+U6@U_PBR>z*PBti0M#vF7rpkLqzPu-vACji7?>KgBuTKc` zHYtDSv!S2?Wovp?+q#e#?GhaO(0DE(Pya1S%&>kmD-A#MCl`%EN?5|;&pa5`;2-k7 z3OsS^%OovC?-F?K9sqcCQ7>L{#Q7Fs9~`gzk&q~anH7yVkmKYOUVpI&pj3uqe2O;D z+W*elp}ItZE|{B)w6r8B&a%KiXnJf!+AengTj*58Tlu1>@GzqLP0j1dOzPPpY4}Fv9;4NByILT6bIA72wx?5;enF zar);!b(>IEWp;Wx^-C3x1R=4Hkd;)YGXJqhEA(s#^}Pv?Fur?*K}A5)m3r zH06=J=={8Y!3>ooYgq$qIDr9_k@}C}CwmtVj`b%|1!+OfG(Ip`rX)J+aB7>Nx zyFYa&^x)O)+>!odmo!@Lm+QEf_JoONR2V39c^!0)*%Do)LilpLTP%N|wWOB#lpb;= zl!ltyJW)Re{UwiLa6|oIzBsLcLjBXr*rdXXYS7#ljlv4!s~YP)UZfXwn*l!TY55V| zOZ7@`-9}QE!eFcB#*IF_SHU8J_G`<|lD9*!?JmUq2Eq7tS;K0kFA?`s?x-uuh*hkC%QX7B82J{(v4(NJD;`E%`p zPoN_`eA5%nEcC%mEs`o^mL;bj5=*2sYIh!fgS)~Ugp5U6S!@1n@Yj(z-7OTy(fBm8 z9JJNW*Lsx59lc!QY+hg0q7?ttc+!~PS@>O^$?1NgzrMj=a@XW%>5AqvZjeiJD_>nO zu4ve$Nt>8xeT90&h*eZAWUJzR&cFMe z{k%nSL#PzcJijyiG1ebSdArkZJT^8mu&8MFi|}WvWv8iyV{+((F-ub>DKSc|}&k&Hp<(p%T|hFcqLCUQy+B)hbIQ z(U6s1$iO#ao5jn`dsP`7Qmz|REpiKaDt}Vim&R=l<<#NmxD%#^P&hyP1O=HzYAYQs zgjD)x6v^c^O?(?L$*L583aXy?)Tt>(TWPcx!E(1ilB(vn`2=nRl%&Fb8l4Yg+uPrzD0$(F9_Ulf^1@x4Z zFKO2vypQq3BukLs>(>R7V;2hses1cC3JYC z7wfc*$aS^ikK)%+4^onYQ&Wc$3S>%pQwG(MKFF1ithZ$y4QVdc>Oq)zGPj+93_bl~ z_RK6_zAz*D{`8jPoTbw@H|I{_uWQFygq9jF#WD9*cDv%2&^CaNpDzC~ovEd7+>yv> z3ia{&67m#5nlJ|-8Pe8jT!r^tWG!Ez2eZ>*0wRX3+%ciaKGqR-8AH6BMtC~6_!|&^ z2Z(Z~R8%Ez*_QG=$w998{BhVta?0y4URmei6g|wzi`kN3-IS*k!+V2*Y3u(ru~(AQ zuRb~ZT&&lf6h~U$?|jobs;$548IieBO}?}{c?!9kCMmc4n$vSv%qS9snSBMmu8mfq znPC%j(D)Smc73~*-^!jiv7CIP)HHhDsk=WK&ByGJB_{hzRv5GC4f(p8y1V-OeL+q- zmsAE3AYi-u_miRVRi5?*mvYUGsM3776f`8itd%=oetIm5$ZYBkERsxKKd`-3!HjD= zFpDU!E_}N6(gdQ358Fa^$W;mLrink@bw898!M**HWQFD|ptq1xoE)rT#U}*h8ac^< z|M!lP%2D(CGa^C0kXZ7BWR8mPzABoV0KHfj$}RQ?F`AbEyF{07*!;`)e40+4)sq}_ zAK$ilAIw{lk!guQi^}l2W(N`(J%jjxa{7B*`>2 zlH*=_$oIQ5bEkTfjKbDoUeHIZ#6|w1_)8e_Y@Yn2oCY1cH=!mMA2U+W?;n*4$89)qh3pdhj-_xaM&CqoQS~gNwM$!`2ZMK}z*P2vg85Z4a=9@k7 zAKH8SDBq!F4Cz;#Rk31N4#B}*rKagfZ<~6~FPpoI7ZBaxDUAMI9SL+rJmw_xzF}kT zpb}*nJvoo_!atFauzDQ~4_gC!P!fF*Xvy*YJeIhg)9skUzj8?o3M3pjBi8XQjF4?sohKpn%)Mtz%%@!W%M3pC#n(Cx{}FFq*Q2CD~3P-2lKzJ|KEAya5Um zDx7IUB4iz$6Asi1CXb|fJ_!fkqh*%g5+C&fHbwC^Ax;i-TL88k3ITFZwhkosZ2m_ZWldiJ& zLst0qw*dzk@u4laGaoG2eyiMuqbl%Req_PKa`m^>%gf%q?rYf^2XDVx51`~+<6IWto zqQ}-=>Zq?8KzIQ9^qsbJBH;`saVsNdDju)W}0$)q3 z<{gNcj*3-nw|BJ}#H4lznAI&C+4Bzdp&LAj)3^MG~5ynWh@;B7VP`DAqZp_Ybh zQLpcMnn5c2mI%wgCn2$?4{^Zjag4aBi3CNe=tEdnyZ?Z+y^5NQ5Ir9IGg{}a4Ay}(~FS#n1vZr1D?1&*c26rmOIXuaHRlaEVlFyKuDqqsH*rm+Ilp-Yus zaVybSV8|CRY`Z$S_FAyPvvM^l_GS^zY849&LzPO0wX8G2`qW26+p0tl#q#WuMzhfXe zI=&gKjasK*y?ffChyPHAdFt*P{Z!P&05Y<@_=136%uJni24%_C<9|>m+s&RtS?q(k z$(_6JzNqmzP`|14ru|#Ce3MH= zE$Qa*5KSCTLZcea%f3Pe@*0QDu5|D^m^-lx04Sqjm*ol#E^TO$}iqPD{+jDnE zU(Z0u+Ob5u*}?04<0ndAk=u{as~SNHEu8is;_JOC(p~;k_v!B&lYaVh;qDJxMJOjT zMddEA55^7H5LoQQq(ip&Fg=*a9q7x#T8Q0V|1QV8JF!I#9Z#v{i=3 zz5*&E1uckQo;a}yCGrdBPvO0bd0~&`zuh~XBBUSKy4VY(kdpZqJ=`W~m;BzMEBfc| zKjj8mTZt7#)pXymgsNZ#{0`fPm;AiXk%hW`m)GSwiEYpu=Y@Z6Tln5>smly{Qr8g*JSaKI%VX%5Zg^=6Bv-=TuNh{8RXFC%s8R zhn>N#&EE)cPCjD=QRvaRM?t=b-tAP=^G4NV|A^j`#+)Fw>qHmn#|0A1JRM7cXV>W8 z#qwO(R^JUu?R8S3Uui23QR}b9;%6q{%X&oEHWkvYKpqD>h~k=xQe~< zGtT~ApzQA9+uss-SD?BBS-RdlCj#v~Kcl_RlFb!5$+@EtDmu!=wj^0|Lh?xF3W0L> z6klMDDf&=kpkvm8u5^SaXbn7dF9^c1l!`tURa`0w;X@Z=Ih>{?GOgL>QyOCtas@T$ zS8rK@-iWs63@%FDPPVFnTGTvte)sa(lFO?>E5Ee6@o$7*^USWRF5Xm12UVZRI+?3t zpRR=sAa8G42Yw9ik>WfLu-BzgKq)zEp$>7-0{oa!$nBSO)!XPdsOBx(tINn|7Paa{ z?2K`@+ayWf{uTqr}3mWbLz z>SN}r+G0Us#kN-?wXb4_C~r3U2~encjXBe@8=kw5R=$Zo-bm!+C=~-sPGkyGaGhC*RS)0iEh(LbWTJp>5rB-Is-|HY{N>}9Gi9b^a z=AI3haQKi5*17ihA^I_i1?~qO$$ea@FgKJljjwrG_yF<%`#u8G!#DnP(?@sygwxtL z9dSo*K7lbuOWuZ(!?%&%n{h`MKAWLOus(THcP>Jp(YqHRqoF%3A@;qOz&z0I3wPeq z@zBX#2jTSET?gVc;;m5b(Vn+R%F&%qSKLvBx8cwoL`Zb-&Q7R$Hh2EWhcmDF=>O(; z`oCKbYxuvjn+^T%{1(xdPTyGyIZfY@36YQ7x#uPBy(r~PAH96ZtKRh?oPN3k<4jlI zbVLOIck5B-{ZG5M5?tTI(j5Qjt&@~6{5#ey=MG!{tX6xtmCHLr?NF25{%SiC(up0_ z*B-?8!COu8XJnGDMWfAY%Vz*>x1VqV1fZ$J_Piu+7Q;;UaPk zYpY2L(%*kh@!$5-g565k1O7z}yeVS}qD*xLgI+sCCqYFo_4#Q%H%2$XP6sAiOedS~ z6`~jDq6rq|pzh${HJwcyR z{Q&?k{mY2MA=v+)y)O54J^#C)$kmyfAJ1El*Y@>StB&!#$NKeM*zTnM?11g9qiK1t z&U1e^|HpX1wqgaL>K5+%7UKJ9=D&afMsF(oSBEu~{r+rUv%hp0X`_QpF}jD3Ai!+f zT#HsG{TpDG|IM4rI<2VR+n@5zjO3sHXUq6UVEBLjx17o1>6?~L*FJe#`ou%KQ$XcK z*g|6>=uBr{%k10#4-x!_C-T42+-2kJgnPgQy1jb831mC+Sz3ZHc=;CRZM1vMHOyqo zSp5eOE&Rt18I)>r8U@;{N;OAECqzf56*IV%tf(8y6S7KM9Ox>+zo=_E<_+Sc{;-QD za+n-biJef`lWudo`H}V$Eqc?UB!lzU?}k2oHxrC;R`~NtK8;|0X7;5sO2SRtj5-a> zq>r)bCW=v(XHjt6*hnZj-aOnhP~azwnxSqCt#r&63%XML;{A+d&Uut|)k<4e1#xi& z$_mOr*zlh@m72((zfhq~Ti5HvC`^uzem>BBXK&OX-INIg`-FqM-ZKClPJTQ=KyKkv zr^mY~YX5Cm|Gey%g>*=V+hq5G6XHh|f38nqU{bf&W4^R4?(e*NWO90k_}`jbUscIMj%7Aq z(v!1+z!SrlVL7GJ!uNmYkJDL@^|rGXM1UV-MWfA6JV6WJkuHd_I2 zPa_{``y0StxtlNS2IYrF#Q^`)tICSoF{d}5{Xke#g2yRHMgSaZR~3W z$m-!+vt{d!(ecNnhSBMmpg-3*{wu?J^ShDA1O8bn_~LtDVOsO>?DMrouS@IclL-vI w@bIn9M(0kz8R+P~C}2z)awu|8&g2R_*}O-t26kq>Qb9y1L~jFr%fLYW51>3Hn*aa+ literal 0 HcmV?d00001 diff --git a/server/walt/server/setup/ossetup.py b/server/walt/server/setup/ossetup.py index d196e9391..5e471845d 100644 --- a/server/walt/server/setup/ossetup.py +++ b/server/walt/server/setup/ossetup.py @@ -1,5 +1,6 @@ -import shlex, datetime, requests, subprocess, json, sys +import shlex, datetime, requests, subprocess, json, sys, gzip from pathlib import Path +from pkg_resources import resource_filename from walt.common.version import __version__ as WALT_VERSION from walt.server.setup.pip import install_pip, pip from walt.server.setup.apt import fix_dpkg_options, package_is_installed, get_debconf_selection, \ @@ -203,3 +204,29 @@ def install_os_on_image(): fix_docker_keyring() fix_dpkg_options() fix_packets(upgrade_packets = True) # have up-to-date packets on image + +def has_diversion(path): + diversion = subprocess.run(f'dpkg-divert --list {path}'.split(), + stdout=subprocess.PIPE).stdout.strip() + return len(diversion) > 0 + +def divert(path, diverted_path): + subprocess.run(f'dpkg-divert --divert {diverted_path} --rename {path}'.split(), + check=True, stdout=subprocess.PIPE) + +# 'conmon' binary distributed in bullseye has a serious issue +# causing possibly truncated stdout in podman [run|exec]). +# we replace it with a more up-to-date binary statically compiled +# using the nix-based method. +def fix_conmon(): + if not has_diversion('/usr/bin/conmon'): + print('Fixing issue with conmon tool... ', end=''); sys.stdout.flush() + divert('/usr/bin/conmon', '/usr/bin/conmon.distrib') + conmon_gz_path = resource_filename(__name__, 'conmon.gz') + conmon_gz_content = Path(conmon_gz_path).read_bytes() + conmon_content = gzip.decompress(conmon_gz_content) + conmon_fixed_path = Path('/usr/bin/conmon.fixed') + conmon_fixed_path.write_bytes(conmon_content) + conmon_fixed_path.chmod(0o755) + print('done') + Path('/usr/bin/conmon').symlink_to('/usr/bin/conmon.fixed') diff --git a/server/walt/server/setup/setup.py b/server/walt/server/setup/setup.py index 19dca1e6c..55e9e3683 100644 --- a/server/walt/server/setup/setup.py +++ b/server/walt/server/setup/setup.py @@ -4,7 +4,7 @@ from walt.common import systemd from walt.common.setup import WaltGenericSetup from walt.common.tools import verify_root_login_shell -from walt.server.setup.ossetup import get_os_codename, upgrade_os, install_os, fix_os, install_os_on_image +from walt.server.setup.ossetup import get_os_codename, upgrade_os, install_os, fix_os, fix_conmon, install_os_on_image from walt.server.setup.conf import fix_other_conf_files, setup_default_server_conf, ask_server_conf WALT_SERVICES = [ @@ -29,18 +29,18 @@ OS_ACTIONS = { 'image-install': { - 'bullseye': ('install_os_on_image', 'disable_os_services', 'setup_walt_services', + 'bullseye': ('install_os_on_image', 'fix_conmon', 'disable_os_services', 'setup_walt_services', 'fix_other_conf_files', 'setup_default_server_conf', 'update_completion'), }, 'install': { - 'bullseye': ('install_os', 'disable_os_services', 'setup_walt_services', + 'bullseye': ('install_os', 'fix_conmon', 'disable_os_services', 'setup_walt_services', 'fix_other_conf_files', 'ask_server_conf', 'systemd_reload', 'start_walt_services', 'update_completion', 'msg_ready'), }, 'upgrade': { - 'buster': ('stop_services', 'upgrade_os', 'disable_os_services', 'setup_walt_services', + 'buster': ('stop_services', 'upgrade_os', 'fix_conmon', 'disable_os_services', 'setup_walt_services', 'fix_other_conf_files', 'update_completion', 'msg_reboot'), - 'bullseye': ('stop_services', 'fix_os', 'disable_os_services', 'setup_walt_services', + 'bullseye': ('stop_services', 'fix_os', 'fix_conmon', 'disable_os_services', 'setup_walt_services', 'fix_other_conf_files', 'may_ask_server_conf', 'systemd_reload', 'start_walt_services', 'update_completion', 'msg_ready'), } @@ -135,6 +135,9 @@ def install_os(self): def fix_os(self): fix_os() + def fix_conmon(self): + fix_conmon() + def install_os_on_image(self): install_os_on_image()