From 309b3d7dce139c280954dc02b91a3b85fe1d857c Mon Sep 17 00:00:00 2001 From: Stefan Saraev Date: Sun, 3 Nov 2013 16:45:49 +0200 Subject: [PATCH] get rid of vesamenu/livemode from now on create_livestick.* will create pure installer sticks. (TODO: cosmetics. rename to create_installstick) - syslinux/vesamenu is pain with some boards. syslinux 4.x is even more pain - now we provide images which have the shiny menu/live thingie. make image. - initramfs/init: FILE=xxx is not needed anymore. images have two ext4 partitions side note: be very careful when adding features to installer / installer scripts, --- .../sysutils/busybox-initramfs/scripts/init | 52 -------- .../tools/syslinux/files/create_livestick | 65 +--------- .../tools/syslinux/files/create_livestick.bat | 39 +----- .../tools/syslinux/files/create_livestick.exe | Bin 111036 -> 110041 bytes packages/tools/syslinux/release | 6 - tools/nsis-installer/oeinstaller.nsi | 115 +----------------- 6 files changed, 7 insertions(+), 270 deletions(-) diff --git a/packages/initramfs/sysutils/busybox-initramfs/scripts/init b/packages/initramfs/sysutils/busybox-initramfs/scripts/init index 126ccf2926..72e4535e98 100755 --- a/packages/initramfs/sysutils/busybox-initramfs/scripts/init +++ b/packages/initramfs/sysutils/busybox-initramfs/scripts/init @@ -300,9 +300,6 @@ NFS=*) MOUNT_CMD="mount_nfs" ;; - FILE=*) - MOUNT_CMD="mount_common" - ;; *) error "mount_part" "Unknown filesystem $1" ;; @@ -417,55 +414,6 @@ progress "Mounting storage" if [ -n "$disk" ]; then - if [ "${disk%%=*}" = "FILE" ]; then - target="${disk%%,*}" - storage_loop_file="/flash/${target#*=}" - mount -o remount,rw /flash - - if [ ! -f "$storage_loop_file" ]; then - echo "Creating storage loopback file: $storage_loop_file..." - STORAGE_USE=$(df /flash/ | awk '/[0-9]%/{print $4}') - STORAGE_USE=$(($STORAGE_USE / 1024 - $LIVE_FLASH_FREE_MIN)) - - options="${disk#*,}" - if [ "$options" = "$disk" ]; then - echo "No size specified, using all available space..." - if [ $STORAGE_USE -gt 0 ]; then - echo "Size obtain: $STORAGE_USE MB..." - else - error "size check" "Not enough free space (at least $LIVE_FLASH_FREE_MIN MB)..." - fi - else - if [ $options -le $STORAGE_USE ]; then - STORAGE_USE=$options - echo "Size specified: $STORAGE_USE MB..." - else - echo "Incorrect specified size: $options MB > $STORAGE_USE MB..." - if [ $STORAGE_USE -gt 0 ]; then - echo "Size trimmed: $STORAGE_USE MB..." - else - error "size check" "Not enough free space (at least $LIVE_FLASH_FREE_MIN MB)..." - fi - fi - fi - - mount_part "/flash/$IMAGE_SYSTEM" "/sysroot" "ro,loop" - echo "Creating empty file, this can take a long time..." - dd if=/dev/zero of="$storage_loop_file" bs=1M count=$STORAGE_USE &>/dev/null - echo "Formating to EXT4 filesystem, this can take a long time..." - # use mkfs.ext4 from SYSTEM - LD_LIBRARY_PATH=/sysroot/usr/lib /sysroot/sbin/mkfs.ext4 -F -L StorageLive "$storage_loop_file" &>/dev/null - sync - umount /sysroot - - echo "Done..." - usleep 2000000 - fi - - mount_part "FILE=$storage_loop_file" "/storage" "loop,rw,noatime" - return - fi - if [ -n "$OVERLAY" ]; then OVERLAY_DIR=`cat /sys/class/net/eth0/address | tr -d :` diff --git a/packages/tools/syslinux/files/create_livestick b/packages/tools/syslinux/files/create_livestick index cee907955c..5c59e23181 100755 --- a/packages/tools/syslinux/files/create_livestick +++ b/packages/tools/syslinux/files/create_livestick @@ -198,44 +198,12 @@ echo "#########################################################" echo "creating bootloader configuration..." cat >/tmp/usb_install/syslinux.cfg << EOF -UI vesamenu.c32 PROMPT 0 -MENU TITLE Boot Menu -MENU BACKGROUND splash.png -TIMEOUT 50 -DEFAULT live - -MENU WIDTH 70 -MENU MARGIN 15 -MENU ROWS 2 -MENU HSHIFT 4 -MENU VSHIFT 13 -MENU TIMEOUTROW 10 -MENU TABMSGROW 8 -MENU CMDLINEROW 8 -MENU HELPMSGROW 13 -MENU HELPMSGENDROW 26 -MENU CLEAR - -MENU COLOR border 30;44 #40ffffff #00000000 std -MENU COLOR title 1;36;44 #ff8bbfe3 #00000000 std -MENU COLOR sel 7;37;40 #80f0f0f0 #ff606060 all -MENU COLOR unsel 37;44 #50ffffff #00000000 std -MENU COLOR help 37;40 #c0ffffff #a0000000 std -MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std -MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std -MENU COLOR msg07 37;40 #90ffffff #a0000000 std -MENU COLOR tabmsg 31;40 #ff868787 #00000000 std +DEFAULT installer LABEL installer - MENU LABEL Run OpenELEC Installer KERNEL /KERNEL - APPEND boot=UUID=$UUID installer quiet vga=current - -LABEL live - MENU LABEL Run OpenELEC Live - KERNEL /KERNEL - APPEND boot=UUID=$UUID disk=FILE=STORAGE,512 quiet vga=current + APPEND boot=UUID=$UUID installer quiet tty EOF @@ -252,35 +220,6 @@ EOF cp README.md /tmp/usb_install cp RELEASE /tmp/usb_install - cp splash.png /tmp/usb_install - - if [ -f /usr/lib/syslinux/vesamenu.c32 ]; then - cp /usr/lib/syslinux/vesamenu.c32 /tmp/usb_install - elif [ -f /usr/share/syslinux/vesamenu.c32 ]; then - cp /usr/share/syslinux/vesamenu.c32 /tmp/usb_install - elif [ -f /usr/lib/syslinux/bios/vesamenu.c32 ]; then - cp /usr/lib/syslinux/bios/vesamenu.c32 /tmp/usb_install - else - echo "ERROR: Can't find syslinux's vesamenu.c32 on Host OS" >&2 - sed 's|^UI vesamenu.c32|#UI vesamenu.c32|g' /tmp/usb_install/syslinux.cfg - fi - - if [ -f /usr/lib/syslinux/libcom32.c32 ]; then - cp /usr/lib/syslinux/libcom32.c32 /tmp/usb_install - elif [ -f /usr/share/syslinux/libcom32.c32 ]; then - cp /usr/share/syslinux/libcom32.c32 /tmp/usb_install - elif [ -f /usr/lib/syslinux/bios/libcom32.c32 ]; then - cp /usr/lib/syslinux/bios/libcom32.c32 /tmp/usb_install - fi - - if [ -f /usr/lib/syslinux/libutil.c32 ]; then - cp /usr/lib/syslinux/libutil.c32 /tmp/usb_install - elif [ -f /usr/share/syslinux/libutil.c32 ]; then - cp /usr/share/syslinux/libutil.c32 /tmp/usb_install - elif [ -f /usr/lib/syslinux/bios/libutil.c32 ]; then - cp /usr/lib/syslinux/bios/libutil.c32 /tmp/usb_install - fi - # sync disk echo "syncing disk..." sync diff --git a/packages/tools/syslinux/files/create_livestick.bat b/packages/tools/syslinux/files/create_livestick.bat index 016820c314..fb8176b864 100644 --- a/packages/tools/syslinux/files/create_livestick.bat +++ b/packages/tools/syslinux/files/create_livestick.bat @@ -97,50 +97,15 @@ IF ERRORLEVEL 1 goto InvalidDrive >NUL copy README.md %DRIVE% >NUL copy RELEASE %DRIVE% >NUL copy openelec.ico %DRIVE% ->NUL copy 3rdparty\syslinux\vesamenu.c32 %DRIVE% ->NUL copy 3rdparty\syslinux\libcom32.c32 %DRIVE% ->NUL copy 3rdparty\syslinux\libutil.c32 %DRIVE% ->NUL copy splash.png %DRIVE% FOR /F "tokens=5" %%G IN ('vol %DRIVE% ^|find "-"') DO SET DRIVEUUID=%%G -ECHO UI vesamenu.c32 > %DRIVE%\syslinux.cfg ECHO PROMPT 0 >> %DRIVE%\syslinux.cfg -ECHO MENU TITLE Boot Menu >> %DRIVE%\syslinux.cfg -ECHO MENU BACKGROUND splash.png >> %DRIVE%\syslinux.cfg -ECHO TIMEOUT 50 >> %DRIVE%\syslinux.cfg -ECHO DEFAULT live >> %DRIVE%\syslinux.cfg +ECHO DEFAULT installer >> %DRIVE%\syslinux.cfg ECHO. >> %DRIVE%\syslinux.cfg -ECHO MENU WIDTH 70 >> %DRIVE%\syslinux.cfg -ECHO MENU MARGIN 15 >> %DRIVE%\syslinux.cfg -ECHO MENU ROWS 2 >> %DRIVE%\syslinux.cfg -ECHO MENU HSHIFT 4 >> %DRIVE%\syslinux.cfg -ECHO MENU VSHIFT 13 >> %DRIVE%\syslinux.cfg -ECHO MENU TIMEOUTROW 10 >> %DRIVE%\syslinux.cfg -ECHO MENU TABMSGROW 8 >> %DRIVE%\syslinux.cfg -ECHO MENU CMDLINEROW 8 >> %DRIVE%\syslinux.cfg -ECHO MENU HELPMSGROW 13 >> %DRIVE%\syslinux.cfg -ECHO MENU HELPMSGENDROW 26 >> %DRIVE%\syslinux.cfg -ECHO MENU CLEAR >> %DRIVE%\syslinux.cfg -ECHO. >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR border 30;44 #40ffffff #00000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR title 1;36;44 #ff8bbfe3 #00000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR sel 7;37;40 #80f0f0f0 #ff606060 all >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR unsel 37;44 #50ffffff #00000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR help 37;40 #c0ffffff #a0000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR msg07 37;40 #90ffffff #a0000000 std >> %DRIVE%\syslinux.cfg -ECHO MENU COLOR tabmsg 31;40 #ff868787 #00000000 std >> %DRIVE%\syslinux.cfg -ECHO. >> %DRIVE%\syslinux.cfg ECHO LABEL installer >> %DRIVE%\syslinux.cfg -ECHO MENU LABEL Run OpenELEC Installer >> %DRIVE%\syslinux.cfg ECHO KERNEL /KERNEL >> %DRIVE%\syslinux.cfg -ECHO APPEND boot=LABEL=OPENELEC installer quiet vga=current >> %DRIVE%\syslinux.cfg +ECHO APPEND boot=LABEL=OPENELEC installer quiet tty >> %DRIVE%\syslinux.cfg ECHO. >> %DRIVE%\syslinux.cfg -ECHO LABEL live >> %DRIVE%\syslinux.cfg -ECHO MENU LABEL Run OpenELEC Live >> %DRIVE%\syslinux.cfg -ECHO KERNEL /KERNEL >> %DRIVE%\syslinux.cfg -ECHO APPEND boot=LABEL=OPENELEC disk=FILE=STORAGE,512 quiet vga=current >> %DRIVE%\syslinux.cfg GOTO END :InvalidDrive diff --git a/packages/tools/syslinux/files/create_livestick.exe b/packages/tools/syslinux/files/create_livestick.exe index 6d6ee6948c3483eccb39cecc5991e699f07212e0..98b30994800d15f03f105eb95b25f0f74b1f3232 100644 GIT binary patch delta 11059 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 V|NeXWAh#3>L*cll;J{>REVkf0;*|Ck3K z5=0C39~%)sf|~wAkSZ=ABnbR}bRZ>$1U>x^2V4?J(8d2?Skiw1{|A5n$BYpFHRMw? z;`{Q&;K0VWf&TZrSXn_JFc2)L3>gGcmg;V`g$FB#0lrp%K%IFYkPj2c|J)adr_}T{ zyo6)r9PKMv9ztQ@q$yY%YAkwp>QO?Uy!gEy%lW!%VR6~^UF&Z0?ySY(r}xptN*B~f zHdftNWm;1cdPRCV{#eWr%9=JY74t}CNLt;#2nxRp*fa&d_{iM~%zCvk5;B-)pPtLE zizSYAz{SJ#T$>&LC@aVBz5DX@Uw-v9Je>+P#{7x6i}mzj8HNY};2RFc84hed=5jx| zObcT@0(VO>1b*Fl*Uub(KbgCMYvs9(zRj$#hCJ?%K;dZ{9@^|~7nL`^5cf~fb8g=c zqKkK3y-y)aWTNMH)EaZW!|%S3!M?~#mj%GIr6!X2{U_?jM^L#6F6YKsGVUj^{TjB< z@#oXS$=7=FDQ>$10!M_vwr$a=YfgHYWcYJ)>otQ+r_;wOM&a#)$j9=2`UUl)Hs!QC zz)_9hv(>z(^F!sU&wR4Jo*}EjOXr=}@omsY#=t#m4PTAN_7C+F*sgQI8xM`O=4_xP zZtDk0P26FVZ>+1KDeU!2nN<)QP7V8*PYwr=e<%F1L9K>O>wcISnb_<2-)b@K^A z&tvB?N7Cf>ZaRxH&de8nuGUlbloKeq|HT5Mnfch0jz4Yr=VPpV){md}-Kwf}>xKH@ zR@d`@W7Wkm^|qwjaPXejUg7TA?-6^r=vk28?R8Of_QjUBiObnau;zT4;ZjMF_W!GO z-Q>q|wo`7mBwK!Y4tW*CGu+aUL_zemFSCZ$pv~i$a1A) zh%zCkmjnbdIg0$eJXHy{pC7^;S#mG4QK#3}q7OH7K+{3}`)Vwtdfgx3{rgIWB5j>7 z2{_2iQU)Sz$^QiT&*XOx6+EE{kYvcyd`?R>I6bTA)m9$7B666n-n`8I-Q*oc;dKMC zrXhn4h9La$2tkv1LZI~Bw^12mzbDYuTM2~!vn>qhHtC;k|7qf%*8T|~0Zo$Vcz+mo zZ-b0}S9kI3y-$K|;Sqx-mHv(K=?r4sZ2Nc{sQTxILIMINS^l+N*7We~Svl=Khqe2F zSX)s*2MaMcBlzzJU|Y`_IDPnC0VdHgW_f$v<(!j_g44Sy(qA~JS$r-J5b_KSoU$Io zeq<$`hX|0p9yeoM4!lo0{}JwuOKDizs#*!(#-5-7V=VtDp`0eo5r&lUG4n2z@ir;j{Z?I^l&YbZRs zs)~Fy7IBX{#XUbmx6B`oMPXmzg6;PKTh&lQ70_(c?4}i^+g9h_TU;nTLq- zSuQFRC9~0kS;F<(dbT$)))WCB9*Bcd>frLdZHj*}1Ajv}5Yr7i zV{X2CoG*GEOA5{Me4Y($t)W);q`5EyK`&i4(T0!XZ1%Od^A9&{_ACVR?jz|f;-;(A zHjJ2T=2E+Ibpah1v151N@JW+-=kYL ztKbASEzMee`7H%(C3AI)jcW`rT5%>gxx6+ zNe5SX|4hiAUrJ-Fo=5Nid$oHX9ksPqm*FC={@ZW&XaCACy!OF|wzsR!RtokKr;M5F zREJl?KiqY5?Kb|^rU=u$e0$+ zLLBV3&RO#r)TVvmo<0}^)V+cFTokpjQe?Fu_HiK}kI^tc7eMhNDRt|W7vtFpF6plK zagXCfx9`p7e9@@FPuoTFR*jv_!Ow$Gc0fSB{ow}}Gt2aL2|aiJ_MhdzyFt^i;j{a_-oEs|Z{H2OHJ%T`k)Xj}!f_YH z3_@SSyFN33XW-J?BGOZNrAPZr6u|0n%PM-ADmp)B0G_Tl;x@1QdLF!;gq!0O&wund z*;bwg)^2rZ>$56uj9d>+J@7B3S8eWM#4e2=Kl1G^nz`upRQ-st*&Vjj1fn0PtbF&q zK$^Sl{M38vK^0JKInOssaT&X(l=ck=JlO*|_<_$2Y-~##>FIms=u5_3_q#XULL)Ss zz(+hb;N9tK<(OvWZZO`jgfv8X*SIk{do#mMmCw3lqDBu+3Rx{ z%nGPJyox|idT`%(6{c`(Tok;mHaXcV5#k$iBo93TXkM3xx<4J&=YKwoZl)yk__;?5 zJMQhxrNsJZ%qPUH2ghdr!QL$SZDx5jVY^QVsOK8ZwDES7T{oOShSv%g_j#SnOjU2@ zNb*fPHM%H2S7=(?dEcjBADw;9hoOIv96WRH-Q^^w`9&Yw;{p7p$Shei!+2Q%Jw(f0 zjSfq2ntyw>gnYF(8lG~myYimVOjj=NeOUaUTbZMDPclm5@Z4x3^&I&*7h(JlT-OSK zdMmw8?+8J+SDi}4lOx*t%aF6?Gst%M?Qg%#?u&4DsNUFHfBo)L zmuK_`ujprXF`&3jB9<{mCH40RL)N%{{Tx4Ew+S5lWo`Jr6zsdP1Mw#=&A|Z>eX0a@ zvC!WB60l<(jv(+dPM%HqExAqPe|Uy_!+CZT$4U!P*>P<`I=1 z)TY%!K@k|q6n3-O;H)<9=^<%b<4^d~B@mQFqlDEq#z(*t`|Xi`mUz@C=N`r&t6Uev zq&pO7O;luQcPYDcFQP6$gw+d3=2(sJt=+%p8!n1jU^F*F37EmO>jgOtN$rt-JvM^)pf#j{?DF{kSFY(?L}7P@;916 z$m;Bfc2tA1kez6A{lHXf(VQ8*N2UM-H3M=&6ENRA?bDsuU2Sh5-*&UU7L_f%3_bz; z3!2yry&~$2od~Gi4{ArPk;KSH{<~>>m^M%UkC((%G`5g-)5}Px#dPr`8Zt?WC++z} zw?O*?$Ru+_iPfQ*)HP$@Ux%Um93h^xlO_9YzaY&}n_xNb*we#dTh2v3$kp5+r*}#h zQ*slcGfgC2VJ@|S-g>G!O48hYUT<*2ua6voVVG?Uxji@o_KkgTaO^AW205Wh`V^&D zaAU^RI5!oZv62(LWU|d#_6S#`lJoXiTi;Z*CFDoe(hkC)(c)p9c8;zht!}KpfhVr{ z)6nM9XClqge1WIrJ6lDAaO4#=Gwt^*jFW6Vc3&S&u?Z&y5F#@(7%J2nL~vzp9^YEl z$R5m9v%dzpEL`0G@{|@zfMX_Xa%a>{AZ%K7l0K1ti`2_yt3<5a1);`q_~S3TQ+)>T z>-pb^5UMi3VWrnlN@8Ezs7T{I5}8=Ku2_OG3|9TD$I(%UxdoL%riNdWLdZ_vVRH1& z#lxGF1sY!gX$0vu*3zLljLcx012td0wdO~U!%C}?)+sp8_%(;IYj z5}_OjxWLE#A^VDCtJD;2BN4^RPP{f>VYRNpsUK zhn)4Y?ZbnT@t5|%X4P_To0JkJn;n=XE)9B1h6$<;QSskcD^cUlS(J|K`)owp^JmX} z09HBmsN5ia=uZV#a`C^HtBGE`2N7;Fv71zK7^|;ykLP^^L+F&U#rDW1rj)Q1gvWM< zMYM}sbW^KPhTBqnn!45 zlELj|2)YtI5@+N0Fb zUpo(=7tv`4v#er>ou^44MUJn@rRxY8_etOwj3Cv=h@_3DcH|a^;iXIfI#-lLvhEPQ zlVz&Pyr8V-0?<6^W$VYBvd3HF_D6%=jiW0PaMqN5ZM5`HZC|aU{d4>iU&Ajfx3vS??h&_B4 z0eDFTc-AE9U39hpCKF~AHYvO+dYm(b20dv~MH8zGWIeIR5~yM1=m$F4I5(8N z)~bIKlvG6TZz?JhV5YEFg*+7dZO>~Iv6*ljU6x`}EMd-5dOP#YU;gPYx)sUqqifI|nt^7STA*@OV*%7SVC}@rpFx9OVi7GQHy1Co^EZqL8A;*!P!!XHHO!N_$s7OMOx72aku0%+ z@XQfb#E7Ij(+fr3mlR{Hk>5l$ z>5;yc8=IY2QwmTA{_=Mh*n(tjAgA*`{H>)`LKI7oSisZ4mQ$%nDrTG_f#F3iYw5}n zQ9Yz2eb9mm#$U~o3C|%2Hrc+TVzwQblS@p;=k1+UmV8!aElRIKg%HnsW>fFCmt{(r zfcIh#=>GEa5PAOhUSe=Y3Kd>iEUR=tqqivm_XVQlgYztS(Jc2TDb@TaQ|#lPuu|4& z!LRZCsq~jH5yI)TJ9EtMq;Pl>*R@fouJCg|+l-c3z${~F z6{0U)%jN=ZYcMUw4nv5M|8_6yQ3u)6zkVHUXIB_@h@;J|a~mPcK(lC%4B4bA1d<#r zLkn3$Ol-C%uq6+Qq7WP(6Bgo+c~)0;WBPgKFFR~Sk*|D@Nn zC&Vc>jJ;&ZK@M(Tz$Nns>rD=tBOn^2$ecVCU}zA)v&G*C#R6 zz}jU>tsq80mL-7hC1H&DH!**Z-^JB)QPN8>6Lnu;r+x4{Qyyk(ow=EWp3cZ0Y%6FT z3&zmM?mf}l59KP|ufvfM1@3>n+{Q#`VH74{hjpDQ!uyaC#jj*Ip$uJ%%4THLxm{KJnHWway zO9wT7mc*80ef^A?An0jr+;Qly+gHEC%K8iZmo!ARdtcr7%aFn)3W>AGt|hypF{BPD zwt8EhniOJ8a05`ua&KzGR3GQryVA2v^3ckOR=w?p^eBc~&1JcphXJ(L+9p$lXUT8h zT^YQ6z;|(dUBbh~(PFE9@EBnJqLuFCpA*JAJl-@KE`JFn152D#LTgBrESZ&WE@jk} zm<>nWaivySJJs|Q?a;>h+SGWycNSG)17Du2hYOw2dWHzTQ7yZWJBrFEQ%+L9qosDD zQ4UJ46^$g?*rLz0mH`rn==){FjG_SDCdCNIaU?1Qf?I)5@CJ;p#a6-khj#E1oEtc# z1pfK&^`hQc9A5oWvw>>$@6pZ$$asWOf`1ZD%iU3E^-UF`Vh(c|{D z?TS5wWW-Lw4)V`8V1`mt)dlX3Aj1`!fB9ZmZke3%vrsr(h7urp_Y5b)qYIznBAYN{ zroETh9ZqHIsV(b{FH!!ZKYjE%hlf(`4|9gq(ItvwauQxmUhfM=(7?1lE^(Um@-s%G zHS7c}!Dp#MW3Tkz7U%U2+l#Ibe^DV1wdEUMxQk2T4s>i%$gSUR~aaV&$`H4Pg?o$8)_p!6Pp zlt8k>;Zr>|o%pH}%Ba=Q3aP;!+Ythe;@S<~nAG+(QALrvAR2<2N)Ao%oH313x&gFk z|1!R-%J8f+g!)`)RdYzF?drNj2tS`^HT41}uS|1RAu%w=MHOnJWzJMWqc!>`tmJ)O zmVS4U1hT4+UDZJ=BcN&eO-{N?BOIOjD^~IWOy$MI9-if?`c$s`LPTc(!TCfNX_Cvz z&KSpWpNAdZ%*+`l;sS9VV?}|CBMf?B#i;zw=^u22ydKn2O@%bAJkAK#YhRV@g0`M% zI4|;a^J?Ilk54F9slsK_zT(7R3!$1KEP~=%aJ3i36DAS^!iw@X4PQ^wV)8g(X2Q=JeeHEz!*MmmewDO&v}^qR7AjkVZ;6C`UBZ9uk>fxx6a6B|I8Y#)HB zFeCkvtg}@t8MoXwX%v>wPP2v=2>Yr{iMvX^7Kfnavwu*@jG1X+n&ieK{)cG_E9J7R zLgmY`k*0C+Q!v7I@XNxfig>$sTH+R2p3ZlCN7STnUh7+ZXmhLHPiimXaH1>q>(b{7Q4%#uld<4V^}Mw{JAROmeDICKiEVZCkHq zb$(6e8JA{u!GeLp3T-4%?&{X&z6a;{DUvNlN=u3)#7ru)cFB|ih=u9fghsO~8YOd& zX?y2N9dk|U(i9RnP!H~N5`*qmR;7z$TQ;RHJOV1`Y}MdxU9HpLu3*^5U%K3gn{6*@ z)~@(Mzuy5Tz^tw@m&B)60Rfy3EDp(6|CpP(-7k?skou0Ke0iIn@%KzIb&x zpO!hT5mY@VJ@j-I$8U1!gBtcOMFu~!krPlwM6Ps7KEl6MWF^)ewgR$jq{=v~i?XK^ zoyy_}GV{&M_I3$$eVvsIcmCzXq+%)6DK{%O&PC2(6Hzp5^1im!jK}(ptN|6@Y`Z!U zedLnr8nPLl!M=>Ex1-oDswG{^ow>8V58`%c8dtqH5-(yERG+xvgRQw zlH!)QY;lqQY`HiXf(M{WvG5Jvz&%988=lg7B?)-aJY|w?3=_}5ICpg}I5qw0&@UL7 z>`{?Y{gpyy!O101bqZ7FbdL4f4OmU7w+hU?y!t8}Q_~pkU{?EnXq{H%!xtaDVONto zNRw*7O~|NG2qnu&vP*Zi)ObRgqD<_&vOl1Hq8X}lpA6dJ76U2`xTZcVDaXe;UPN~$ zPV`JHjtitZcaZlWu6rg}UGp5Aq2lKTPE8vI+1&Ksiz})n9p4DH*`hna(9xw2nmt7^ zlNJ)xD2VImE!qCuROksZP&KDjePbL_#fwYPU{;sD4R?|s73(6mZXhF*<~y+FpG@_( z#C$6Cu8K6NKnJ9%$uZW9q`<7R--i4~#T(c5wP?aSQFm;sY0$i5(F(Y9wrPT)->-)#rn`Tjm*@bq+@8!xV z%iKLVH`Fw&CEdamOB{+uQ~A{*P_WY8US4wPdHD$0Ljd=%pOUyEUEU|gHQ;;Iv^EL4 zY)t{UBrI5A8WQGY0ulO_h7R_96DTFZX~~o>B`5(VxI74wa5xX3Zz>@E*D%wbZB{}+ z>1S)a*0yp4gL~UX91S087KRULA|VJ>#(4=sLg}Iw9)S~lYcNWRKpULX<{M%1LNk%> zAHtPMC_s<@19d<)Z_Ljh9-Fuy7BTQI#6v7G`mXa^MGmiQ^<&19h?z}FNLF?>4Tf8) zio1%{;>upJAHO_rx|4!ow^RyYD{ATN0_lR;d~|_)scpHXB+ zaaAWrI96&SX@xB6Gi{Jkqzv9W$2Bifd(o)%7Ql>yUD2=Pxd&;o>>kv{ZQOB+d>esB zB0e7R!rJem-qc_`qy`->b=nbD8XQC(V&6Rs&G z^&ny6ZUfQltf@(Tv#g(@++eQjm}3$vk*vy!gz>{c=&Hk`I30GlPExuGB`av}olqP; zkZcq~)2UEq$ieb%TSv-OBC@dG+_Far4IsM=qiWuU7ak_NVB*yxT2#mpm4V7`Fa5*C z*9k@8p^$j(8O2*{cO+ykX5|>`5sNnCL@&lqo)VEMa81enQU#{$y&x{RkYNuN#E=ap z8i=i%H_8{<*jPNldx8v8vkVq%h(S7?IXdQyM3Q54AXQhsdH*bwZS#6-=BemAivt~2dWTISHc_rOmeo|Zxu)d-G^lV;5UKKKe{ZL+58)?U|)&1in80)#xQ$2U;k4LQ@`2&pazw6sIi7lhU4m&W})GW2Ca`AW_PBgHV1 zqt$Nk@?;wW3H|Is3^85l=gwv#=7b zKNi|DR}+paQI4mMXxSCTGVAX}lLd%2(e zuRKgRk?ZnKf3>SW7jSeSpfr-vpJPJOl$w0ls=rNB?Yq=Ev~A^!mA>NltkZB-{kx_9 zTm4-*Zg}@nyhaws;&}XvWJ!Pzv}n`fRd8Fox{lwTp1mmonsZ>tY*|&xm|^!vTn*kR zVoFN|lJss3#fx5573rujSziqqUAX$x8{752b4Yz`YtZ#(C2+qmz7p!D{?WL^2H`&zrO-H9PuZW*!C}zJog}woOHD|%uO--l>G^QK=bbQh8w1PEZm;^YeZpgx-_hu@kBkpE0<@O z;VEWo3pgDd0oiWTW9`VFaioNKMV|@Q3$F!l9LF+UxYMTGgBVm`zH*n`QtvuW!u%e7 zp1LEXKbmkHY~K|(Aobe}<#E`07Li_!v)eH!JaaqPa@~_uFy9Z%g{uaxlV}ukaq(+) zbm%p|mDFS4Vh$v1@2)imJb<@HK1@>VY#wYsS@ln|dU+nMX z0-_pj`hATh)g8w5auI$Efw!A|>LktcNk6G~f_=Uu^A8nV-$x*!#i?19Pr6Lc0+Ep3GYE+Xa##1cpLn5C6n@(v!i0$JbC| zbnCGkuZZ~BcY%VFwwSx-lc~(`z;J&y+b^ED5!BzfOTs==`Ma zp8&no(dza~EIE<4aYd!kzifh*f}<({u%fT(LorrH_7UOJr`~^fI;F2P)Bq)JCFrN21kSh9gX&v#62VlN~ZbEwKmq9SDVONDGXzd6+M= zSyMf-7gK%$3p{Rj}cvh%U*aM}!%Lm-h<6^nrhpi@-I6rp2>@H`ch4K&I z)6}9R^x_Jeo3*7Z`<9}ky){yT!DmO{Me2b>rhZxocRH!1V!znZf zvL@6uSh6pJw=g>+&8n97A1uVNeR@MXS7m9A8=JTMr zt%|kf!+(CCfdqT^t3CEmdmJO_j{&g4lsZw9sC#_IL(!R>qS#7ubS1LXH$~+AeNvJ3 z3M!y|6C{$O9=M)1(5QUNie4s+VS_V%6p+XSCseu0f$`;F?%p3W2Gn2Z5?r!I!-MSygs^P;6{CzmDL!gEY7~H^i;AG9oBJ z#woI`c5S8mDb_VgO&5U$#7*3bjo?*8Iwv}>6eg%{P2994_96PSGDa)0HkT*TV7C*cN9~j>O>ecgZeJ4V3DxN93CEmT zI=zeQeL^lZwtXBGrf-rMMt_RamgA(&1DrdxqqefYlvr#&K3m)Q!3dop=U+u3{ui*j BPDua& diff --git a/packages/tools/syslinux/release b/packages/tools/syslinux/release index 6424b96fab..02f1fc5433 100755 --- a/packages/tools/syslinux/release +++ b/packages/tools/syslinux/release @@ -25,16 +25,10 @@ mkdir -p $RELEASE_DIR/3rdparty/syslinux cp -PR $BUILD/syslinux-*/NEWS $RELEASE_DIR/3rdparty/syslinux cp -PR $BUILD/syslinux-*/README $RELEASE_DIR/3rdparty/syslinux - cp -PR $BUILD/syslinux-*/com32/menu/vesamenu.c32 $RELEASE_DIR/3rdparty/syslinux - cp -PR $BUILD/syslinux-*/com32/lib/libcom32.c32 $RELEASE_DIR/3rdparty/syslinux - cp -PR $BUILD/syslinux-*/com32/libutil/libutil.c32 $RELEASE_DIR/3rdparty/syslinux mkdir -p $RELEASE_DIR/3rdparty/syslinux/doc cp -PR $BUILD/syslinux-*/doc/* $RELEASE_DIR/3rdparty/syslinux/doc -mkdir -p $RELEASE_DIR/3rdparty/syslinux/dos - cp -PR $BUILD/syslinux-*/dos/syslinux.com $RELEASE_DIR/3rdparty/syslinux/dos - mkdir -p $RELEASE_DIR/3rdparty/syslinux/win32 cp -PR $BUILD/syslinux-*/win32/syslinux.exe $RELEASE_DIR/3rdparty/syslinux/win32 diff --git a/tools/nsis-installer/oeinstaller.nsi b/tools/nsis-installer/oeinstaller.nsi index b156aa2829..d5dccb94f7 100644 --- a/tools/nsis-installer/oeinstaller.nsi +++ b/tools/nsis-installer/oeinstaller.nsi @@ -15,9 +15,6 @@ VIAddVersionKey InternalName "OpenELEC USB Stick Creator" BrandingText " " Var "DRIVE_LETTER" -Var "STORAGE_SIZE" -Var "BOOT_TIME" -Var "SSH_PARAM" !include "MUI.nsh" !include LogicLib.nsh @@ -49,7 +46,7 @@ Var "SSH_PARAM" !insertmacro MUI_PAGE_LICENSE "gpl-2.0.txt" Name "${PRODUCT_NAME}" -OutFile 'create_livestick.exe' +OutFile 'create_installerstick.exe' ShowInstDetails show AllowRootDirInstall true RequestExecutionLevel admin @@ -107,58 +104,16 @@ Section "oeusbstart" nsExec::Exec `"$0" /c copy INSTALL $DRIVE_LETTER` nsExec::Exec `"$0" /c copy README.md $DRIVE_LETTER` nsExec::Exec `"$0" /c copy RELEASE $DRIVE_LETTER` - nsExec::Exec `"$0" /c copy 3rdparty\syslinux\vesamenu.c32 $DRIVE_LETTER` - nsExec::Exec `"$0" /c copy 3rdparty\syslinux\libcom32.c32 $DRIVE_LETTER` - nsExec::Exec `"$0" /c copy 3rdparty\syslinux\libutil.c32 $DRIVE_LETTER` - nsExec::Exec `"$0" /c copy splash.png $DRIVE_LETTER` DetailPrint "- Creating Bootloader configuration ..." Delete '$DRIVE_LETTER\syslinux.cfg' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'UI vesamenu.c32' ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'PROMPT 0' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU TITLE Boot Menu' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU BACKGROUND splash.png' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'TIMEOUT $BOOT_TIME' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'DEFAULT live' + ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'DEFAULT installer' ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' '' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU WIDTH 70' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU MARGIN 15' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU ROWS 2' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU HSHIFT 4' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU VSHIFT 13' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU TIMEOUTROW 10' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU TABMSGROW 8' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU CMDLINEROW 8' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU HELPMSGROW 13' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU HELPMSGENDROW 26' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU CLEAR' - - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' '' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR border 30;44 #40ffffff #00000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR title 1;36;44 #ff8bbfe3 #00000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR sel 7;37;40 #80f0f0f0 #ff606060 all' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR unsel 37;44 #50ffffff #00000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR help 37;40 #c0ffffff #a0000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR msg07 37;40 #90ffffff #a0000000 std' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'MENU COLOR tabmsg 31;40 #ff868787 #00000000 std' - - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' '' ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'LABEL installer' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' MENU LABEL Run OpenELEC Installer' ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' KERNEL /KERNEL' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' APPEND boot=LABEL=OPENELEC installer quiet vga=current' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' '' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' 'LABEL live' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' MENU LABEL Run OpenELEC Live' - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' KERNEL /KERNEL' - ${If} $STORAGE_SIZE == "0" - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' APPEND boot=LABEL=OPENELEC disk=FILE=STORAGE quiet vga=current $SSH_PARAM' - ${Else} - ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' APPEND boot=LABEL=OPENELEC disk=FILE=STORAGE,$STORAGE_SIZE quiet vga=current $SSH_PARAM' - ${EndIf} + ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' ' APPEND boot=LABEL=OPENELEC installer quiet tty' ${WriteToFile} '$DRIVE_LETTER\syslinux.cfg' '' DetailPrint "" SectionEnd @@ -194,46 +149,6 @@ Function CustomCreate WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'State' '$R1' WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 2' 'ListItems' '$R0' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Type' 'Label' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Left' '5' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Top' '45' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Right' '200' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Bottom' '55' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 3' 'Text' \ - 'Storage file size for Live USB stick (0 = all free space in MB):' - - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "Type" "Text" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "Left" "200" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "Top" "43" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "Right" "240" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "Bottom" "55" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "Flags" "ONLY_NUMBERS" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 4" "State" "512" - - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Type' 'Label' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Left' '5' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Top' '65' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Right' '90' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Bottom' '75' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 5' 'Text' \ - 'Boot menu timeout (sec):' - - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "Type" "Text" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "Left" "90" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "Top" "64" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "Right" "110" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "Bottom" "76" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "Flags" "ONLY_NUMBERS" - WriteIniStr "$PLUGINSDIR\custom.ini" "Field 6" "State" "5" - - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'Type' 'Checkbox' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'Left' '30' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'Top' '85' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'Right' '200' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'Bottom' '95' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'Text' 'Enable SSH (only for debugging purposes)' - WriteIniStr '$PLUGINSDIR\custom.ini' 'Field 7' 'State' '0' - push $0 InstallOptions::Dialog '$PLUGINSDIR\custom.ini' pop $0 @@ -244,30 +159,6 @@ Function CustomLeave ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 2' 'State' StrCpy '$INSTDIR' '$0' StrCpy '$DRIVE_LETTER' '$INSTDIR' - - ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 4' 'State' - ${If} $0 == "0" - StrCpy '$STORAGE_SIZE' '0' - ${ElseIf} $0 < 512 - StrCpy '$STORAGE_SIZE' '512' - ${Else} - StrCpy '$STORAGE_SIZE' '$0' - ${EndIf} - - ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 6' 'State' - ${If} $0 == "0" - StrCpy '$BOOT_TIME' '50' - ${Else} - IntOp $0 $0 * 10 - StrCpy '$BOOT_TIME' '$0' - ${EndIf} - - ReadIniStr $0 '$PLUGINSDIR\custom.ini' 'Field 7' 'State' - ${If} $0 == "1" - StrCpy '$SSH_PARAM' 'ssh' - ${Else} - StrCpy '$SSH_PARAM' '' - ${EndIf} FunctionEnd Function GetDrivesCallBack