Read the statement by Michael Teeuw here.
CALL FOR TESTERS: New install script
-
Hey everyone,
There’s a new install script in town.
It’s designed to have as small a footprint in disk usage and system resources as possible and provide a fire-and-forget hands-off install from a fresh system to a running MM. It can easily install on an SD card as small as 8GB and works well on older and smaller Pi’s, so long as they can handle a current OS.
It’s available for your perusal at https://github.com/tfischer4765/mm-install/ .
The script is currently in beta, and I’d be very grateful if everyone who has the time tested it and tried their best to break it.
Thanks for your help!
pi@mmtest:~ $ mpstat Linux 6.6.31+rpt-rpi-v8 (mmtest) 02/09/24 _aarch64_ (4 CPU) 22:02:38 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 22:02:38 all 0.09 0.00 0.07 0.04 0.00 0.01 0.00 0.00 0.00 99.80 pi@mmtest:~ $ free -h total used free shared buff/cache available Mem: 907Mi 378Mi 175Mi 32Mi 437Mi 528Mi Swap: 199Mi 2.5Mi 197Mi pi@mmtest:~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 318M 0 318M 0% /dev tmpfs 91M 1016K 90M 2% /run /dev/mmcblk0p2 6.9G 3.1G 3.4G 48% / tmpfs 454M 17M 438M 4% /dev/shm tmpfs 5.0M 12K 5.0M 1% /run/lock /dev/mmcblk0p1 510M 64M 447M 13% /boot/firmware tmpfs 91M 0 91M 0% /run/user/1000
-
@drdeath I’m a bit sceptical about trying it out as it contains a few hundred encoded lines and the comments don’t clearly describe what it does and why it’s encoded.
-
@KristjanESPERANTO Encoded lines? Oh hell no.
Don’t care if it’s fully documented, if I’m not able to at least look at the code, then it’s a hell no for me.
-
@KristjanESPERANTO What are you talking about, the listing of those config files is right there in the comments, and the purpose of that binary is quite obvious if you have a basic knowledge of Linux and Xorg. Also the file name the binary gets stored under is a dead giveaway. Don’t expect me to spoon-feed you obvious information.
-
@BKeyport @KristjanESPERANTO Turns out I owe you some thanks, if only because you got me thinking and questioning my assumptions.
I had previously assumed the anchor process of an X server needed to be an X application, but that turned out to be not the case, so the whole blackpixel executable could be removed entirely, eliminating a major contributor to the script size and a maintenance headache for me.
It does make the script even more obscure and alien though. That’s easily the strangest X config I’ve ever created.
Code is updated.
-
@drdeath I think what the guys were saying or are trying to say, is that for the standard MM user, looking at the script and seeing “coded” code they may be hesitant to test the script. Although it can easily be decoded with
echo 'base64 string' | base64 -d
which would reveal the coded strings, the normal user does not know this.It does make the script so much smaller but for a newb looking at that would scare them away.
Just my 2pence.
-
@mumblebaj AND there is no practical need for encoding anything
-
@sdetweil said in CALL FOR TESTERS: New install script:
@mumblebaj AND there is no practical need for encoding anything
there was a need for the binary which was removed meanwhile, but not for the text files …
so e.g. this
base64 -d > /tmp/mm-install/xinitrc <<< 'IyEvYmluL3NoCgp4c2V0IHMgb2ZmICAgICAgICAgIyBkb24ndCBhY3RpdmF0ZSBzY3JlZW5zYXZl cgp4c2V0IC1kcG1zICAgICAgICAgIyBkaXNhYmxlIERQTVMgKEVuZXJneSBTdGFyKSBmZWF0dXJl cy4KeHNldCBzIG5vYmxhbmsgICAgICMgZG9uJ3QgYmxhbmsgdGhlIHZpZGVvIGRldmljZQoKaWYg WyAtciAiL2V0Yy9tYWdpY21pcnJvci94cmFuZHJfb3B0cyIgXTsgdGhlbgogICAgICAgZWNobyAi cnVubmluZyB4cmFuZHIgd2l0aCBhcmd1bWVudHMgXCIkKGNhdCAvZXRjL21hZ2ljbWlycm9yL3hy YW5kcl9vcHRzKVwiIgogICAgICAgRElTUExBWT06MCB4cmFuZHIgJChjYXQgL2V0Yy9tYWdpY21p cnJvci94cmFuZHJfb3B0cykKZWxzZQoJZWNobyAibm90IHJ1bm5pbmcgeHJhbmRyIgpmaQoKeHNl dHJvb3QgLXNvbGlkIGJsYWNrCgppZiBbIC1yICIvZXRjL21hZ2ljbWlycm9yL3hfYmFja2dyb3Vu ZF9pbWFnZSIgXSAmJiBbIC1yICIkKGNhdCAvZXRjL21hZ2ljbWlycm9yL3hfYmFja2dyb3VuZF9p bWFnZSkiIF07IHRoZW4KCXhsaSAtb25yb290ICQoY2F0IC9ldGMvbWFnaWNtaXJyb3IveF9iYWNr Z3JvdW5kX2ltYWdlKQpmaQoKd2hpbGUgOjsgZG8gc2xlZXAgMTAwMDA7IGRvbmUKCg=='
could be replaced by
cat > /tmp/mm-install/xinitrc <<"EOF" #!/bin/sh xset s off # don't activate screensaver xset -dpms # disable DPMS (Energy Star) features. xset s noblank # don't blank the video device if [ -r "/etc/magicmirror/xrandr_opts" ]; then echo "running xrandr with arguments \"$(cat /etc/magicmirror/xrandr_opts)\"" DISPLAY=:0 xrandr $(cat /etc/magicmirror/xrandr_opts) else echo "not running xrandr" fi xsetroot -solid black if [ -r "/etc/magicmirror/x_background_image" ] && [ -r "$(cat /etc/magicmirror/x_background_image)" ]; then xli -onroot $(cat /etc/magicmirror/x_background_image) fi while :; do sleep 10000; done EOF
-
@karsten13 I tried here-docs initially, and it caused all kinds of problems, from missing newlines to empty files, although at least some of that probably was due to me writing the string to variables instead of directly to files and causing problems with the shell’s variable space.
Using base64 may not strictly necessary, but it’s robust and portable, and not in the least harmful. It’s also relatively easy to fact-check if you have a basic working knowledge of Linux. If you don’t, well then any software is a total black box to you and you just have to trust the person providing it. See the recent kerfuffle around obscured malicious code in ssh. I wouldn’t have been able to find it.
The way it works is, people who have the knowing fact-check and give the thumbs-up for those who don’t.
I’d also like to point out that
a) the contents of the files are listed as comments
b) if you were looking at a binary instead of a script, you’d be no wiser if you had it in binary rather than base64,
c) if I had made the pivot to makeself instead of encoding the files in b64, you’d see even less of the script before you executed it
d) most of the software you have on your system right now was provided in binary form, and
e) unless you are a closet uber-geek, you probably wouldn’t understand half of it if you had the source code, and
f) even if you are, a single human lifetime wouldn’t be nearly enough to fact-check the software on even a basic Linux install.I feel you are blowing the fact that I’m using base64 to encode those files WAY out of proportion. As it is, it’s working as intended, and I’m not going running that gauntlet of trying to get here-docs to work again without better reason than people getting queasy over seeing base64 strings in a file.
If you want to modify it, you’re welcome to do so and provide a well-tested pull request. If on the other hand you wish to reject my work on a technicality like that, that’s a shame, but it hurts the community WAY more than it hurts me.
-
@drdeath sure couldn’t tell from this chain. Feels like a solution in search of a problem.