Oh dear, Rust again
Back in April 2020, I made a comment about Rust:
https://bkhome.org/news/201904/easyos-forum-closed.html
Which upset at least one person. Today I received an email
suggesting that 'fd' is superior to the 'nnn' file manager. This
is my reply:
Thanks for the suggestion.
Unfortunately, fd is written in Rust. It is very difficult to
create a small binary when written in Rust -- at least, that is
my understanding.
I did a quick search, it is possible to create a fully static
rust executable, linking with musl:
https://doc.rust-lang.org/edition-guide/rust-2018/platform-and-target-support/musl-support-for-fully-static-binaries.html
There is another nice console file manager written in python.
Same problem. too much overhead to run in the initrd.
I should be careful about making assumptions about Rust, so I
found it compiled statically with musl, here:
https://github.com/sharkdp/fd/releases
...the binary is 2.3MB (static, stripped), which would double
the size of the initrd!
I tried it, unfortunately it is not a text-mode GUI app like
'nnn', it is only a CLI replacement for 'find'.
Ha ha ha, replacing the tiny 'find' utility with some more
features, and bumping the size to 2.3MB, please, no! And it
doesn't even provide all of find's capability, quoting from the
'fd' project page:
While it does not seek to mirror all of find's powerful functionality, it provides sensible (opinionated) defaults for 80% of the use cases.
Unfortunately, there are so many people pushing Rust as a systems
programming language.
Tags: linux
EasyDD GUI fixes for Linux Mint
I posted a few days ago about improvements to EasyDD:
https://bkhome.org/news/202006/easydd-works-on-more-distributions.html
I had only tested CLI mode in Linux Mint, however Sebastion has got
GUI mode working. He installed 'gtkdialog', which is not available in
the default repositories, but is available elsewhere, such as here:
https://repology.org/project/gtkdialog/versions
The "MX-19" DEB is here:
http://mxrepo.com/mx/repo/pool/main/g/gtkdialog/gtkdialog_0.8.3-2mx19_amd64.deb
However, Sebastion discovered a couple of bugs. Drag-and-drop of an
image file from the Nemo file manager to EasyDD had some extra text
preppended and appended. I reported to the Puppy Forum:
http://murga-linux.com/puppy/viewtopic.php?p=1061174#1061174
...and MochiMoppel responded with a fix. fantastic, thanks for that!
Another problem was the GUI put up a "finished" message, when it wasn't, it was only just started to write to the drive.
I found the cause. EasyDD will use the embedded "vte" terminal
support of gtkdialog, however, often gtkdialog is compiled without this,
as is the case with the DEB. So then EasyDD looks for 'rxvt', 'urxvt',
'xterm' and 'gnome-terminal', in that order.
Linux Mint has the last one. Unfortunately, "gnome-terminal .... -e
easydd" runs as a separate process and returns immediately, hence the
premature "finished" window. It requires the "--wait" option, which I
have now put into EasyDD.
Haven't tried these fixes in Linux Mint yet, but should be
good-to-go. Ditto for any other Debian-based or Ubuntu-based
distribution. Just find the gtkdialog package. Gtkdialog is so good, it
should be in all official package repositories!
For anyone encountering EasyDD for the first time, see here:
https://bkhome.org/linux/easydd-write-image-file-to-drive.html
gtkdialog source
Most people are getting the source from here:
https://code.google.com/archive/p/gtkdialog/
However, there are various forks that are still active, especially this one, maintained by Mick Amadio:
https://github.com/01micko/gtkdialog
...this would be where Puppy Linux developers are contributing.
EDIT 2020-06-19:
Michael Amadio has contacted me, advised that he has moved the gtkdialog
repository under the umbrella of the Puppy Linux woof-CE repository:
https://github.com/puppylinux-woof-CE/gtkdialog
Tags: linux
EasyDD works on more distributions
I have abandoned EasyDD-portable. Too troublesome. Instead, the
'easydd' script has been enhanced, with more features, refinements, and
should work on just about all Linux distributions.
It should work in both CLI and GUI modes in all Puppy and Puppy-derivatives, including very old versions.
For other Linux distributions that do not have the 'gtkdialog' utility, EasyDD should work in CLI mode.
I have updated the introduction page:
https://bkhome.org/linux/easydd-write-image-file-to-drive.html
...of course, there is the disclaimer, see bottom of linked page. I
have created EasyDD in good faith, but as we can never 100% guarantee
perfect code, nor anticipate peculiarities of some distributions, you
need to use EasyDD entirely at your own risk. I have tried to anticipate
all eventualities, and put sanity checks throughout the script ...but,
you never really know, until you try it on your distro.
Note, 'gtkdialog' is great, but for those distros that don't have it,
and have 'zenity' or 'yad' instead, a future project could be to get
the script to use those. Then EasyDD will be able to run in GUI mode on
many more distros.
Another note: one problem that we had with old puppies was that they
have an older version of the 'dd' uility, or the busybox 'dd', which
lacks real-time progress reporting. EasyDD will now detect this, and can
still use the old 'dd', just without the real-time write-speed
reporting.
EDIT 2020-06-17:
Alfons reported that specifying a target drive in CLI mode, for example
"easydd easy-0.6-amd64.img.gz sdb", exited without doing anything. Hmmm,
yes. Fixed.
EDIT 2020-06-18:
Fixes to run EasyDD in GUI mode in Linux Mint:
https://bkhome.org/news/202006/easydd-gui-fixes-for-linux-mint.html
Tags: linux
EasyDD-portable fixed for Debian, Devuan, Mint, etc
I posted about EasyDD-portable, that is supposed to run on all
Linux distributions. All that they need is a shell interpreter and some
basic utilities such as 'cut', 'grep', 'tr', 'realpath', etc. Here is
the blog post:
https://bkhome.org/news/202005/easydd-portable-runs-on-any-linux.html
Bob, running Devuan, reported a "bad substitution" error in the 'easydd' script, and so did Jonathan, running Linux Mint.
That is because the "shebang line" is "#!/bin/sh" which in Debian and
Debian-derivatives, will run 'dash'. Unfortunately, dash is a very
primitive shell interpreter.
I recall years ago, being annoyed because dash does not understand
"echo -e ..." so cannot interpret terminal commands. That is because
dash is designed to work when there is no terminal.
Hmmm, Busybox ash handles the "-e" and that works everywhere, including direct to the screen in the initrd.
Now onto EasyDD, and I have found that dash does not understand "${var:0:1}" parameter expansion.
Then I found that dash does not understand the simplified if-then "[ "$var" ] && ...".
I am so accustomed to using the far more capable 'ash' in Busybox.
I have fixed it by changing three scripts in EasyDD-portable to use
bash. Presumably, all Linux distributions have bash, and those that are
purely busybox-based will likely have bash as an alias to ash.
EasyDD-portable fixed is uploaded here:
http://distro.ibiblio.org/easyos/project/easydd/
Note, if you are running EasyOS, EasyPup, Puppy, FatDog, or any other
Puppy-derivative, you do not need EasyDD-portable. The small EasyDD
script will work for you:
https://bkhome.org/news/202006/enhancements-for-easydd-script.html
...the only caveat is that very old versions of Puppy Linux (5-6
years ago) may have an old version of the 'dd' utility that will not
work with EasyDD, in which case use EasyDD-portable.
EDIT 2020-06-12:
I have feedback from Jonathan and Tom that the "fixed" EasyDD-portable
tried to write to the wrong drive. So I have taken it down, and will
install Debian, Devuan, or Mint and test EasyDD-portable.
EDIT 2020-06-16:
EasyDD-portable has been abandoned. Instead, the simple EasyDD script
has been enhanced to run on nearly all Linux distributions. There is an
introduction page, with download link:
Tags: linux
EasyDD-portable runs on any Linux
EasyDD is a script for writing an image file to a drive. Users of older Puppy Linuxes had a problem, the 'dd' utility lacked a required feature. Mike Walsh fixed that by bundling a newer version of 'dd', as a PET, self-extracting archive, and an AppImage:
http://www.murga-linux.com/puppy/viewtopic.php?t=116481
Mike's work is really great. All pups and Puppy-derivatives have 'gtkdialog', required for the GUI mode, however, most other distributions don't have it. So, inspired by Mike, I have created a self-extracting archive with everything in it, including 'gtkdialog', maned EasyDD-portable.
I have written a page for EasyDD:
https://bkhome.org/linux/easydd-write-image-file-to-drive.html
...notice the "no liability" disclaimer!
EasyDD-portable download (18MB):
http://distro.ibiblio.org/easyos/project/easydd/easydd.gz
I created the self-extracting archive by a grass-roots method, inspired by this page:
https://coderwall.com/p/y3upqw/creating-a-self-extracting-archive-installer-script
My project tarball is here:
http://distro.ibiblio.org/easyos/project/easydd/easydd-project.tar.gz
The tarball expands to folder 'easydd-project' and inside the is a build script, 'create-easydd'. Here is the script:
#!/bin/sh
#creates a self-extracting archive named 'easydd.run', that will run easydd.
#ref: https://coderwall.com/p/y3upqw/creating-a-self-extracting-archive-installer-script
[ -f easydd.tar.gz ] && rm -f easydd.tar.gz
tar -cvf easydd.tar easydd.dir/
gzip -9 easydd.tar
[ -f easydd ] && rm -f easydd
cat << 'EOF' >> easydd
#!/bin/sh
EXE="$(realpath ${0})"
PARAM1=''; PARAM2=''
if [ "$1" ];then
if [ "${1:0:1}" == "-" ];then
PARAM1="$1" #-h or --help
else
PARAM1="$(realpath $1)"
fi
fi
[ "$2" ] && PARAM2="$2"
mkdir -p /tmp/easydd-portable-run
cd /tmp/easydd-portable-run
tail -n +18 $EXE | gzip -vdc - | tar -xvf - > /dev/null || exit 1
cd easydd.dir
cp -a -f ./easydd.sh /tmp/easydd.sh 2>/dev/null
exec /tmp/easydd.sh ${PARAM1} ${PARAM2}
EOF
cat easydd.tar.gz >> easydd
chmod 755 easydd
It creates a script named 'easydd' with the code that you can see
between the two "EOF" markers. The chrootable 'rootfs' tarball,
easydd.tar.gz, is appended onto 'easydd'. When 'easydd' is executed, the
'rootfs' tarball is expanded at /tmp/easydd-portable-run and a script
'easydd.sh' is run.
EDIT 2020-06-16:
EasyDD-portable has been abandoned. Instead, the simple EasyDD script
has been enhanced to run on nearly all Linux distributions. There is an
introduction page, with download link:
Tags: linux
Ye olde Woof2 Puppy builder
Woof2 was the build system for Puppy, and was online in a Fossil
repository, until 2013 when it was forked to Woof-CE on github, and I
closed down Woof2.
The last pups to be built with Woof2 were Wary and Racy 5.5, see here:
http://distro.ibiblio.org/quirky/racy-5.5/
Woof-CE is a community project, and has changed a lot since 2013.
Today I received an email from Michael, asking if the original Woof2
Wary/Racy builder is still available. Well, it is possible to checkout
the original checkin of Woof-CE, here is the project site:
https://github.com/puppylinux-woof-CE/woof-CE
'dimkr' cloned woof-CE sometime ago, and this link has pretty much the original Woof2:
https://notabug.org/dimkr/woof-CE-libre/src/dfa7ea51c82b6a53dbfe8e167de5e233510db003
...the 0.1 release is very close to Woof2, and is available as a tarball here:
https://notabug.org/dimkr/woof-CE-libre/releases
...most important, one of the commits is '01micko' restored the symlinks that were lost in the original fork from Woof2.
There is an actual Fossil repo of Woof2. Puppy Forum member 'idolse'
created mpdPup, a Puppy Linux music server/jukebox, and to achieve that,
he forked Woof2:
http://chiselapp.com/user/ldolse/repository/mpdPup/home
...if you login as anonymous, go to "Files" and you will see this text:
Files of check-in [edf062515a] in the top-level directory
...in the square-brackets is a link to download the tarball. Ah, here is a direct link, no need to login to the Fossil repo:
http://chiselapp.com/user/ldolse/repository/mpdPup/tarball/edf062515a/mpdPup-edf062515a.tar.gz
...this is dated March 26, 2013, and this would be pure Woof2
as-it-was, though idolse will probably have made some changes, though
looking around, it seems all as I recall Woof2 to be. Yep, has
woof-distro/x86/pet-based/racy and wary, version 5.5.
Oh, for anyone curious about mpdPup:
http://murga-linux.com/puppy/viewtopic.php?t=70052
Tags: linux
Introduction page for EasyPup
I have created an introduction page for EasyPup:
https://bkhome.org/linux/easypup-a-blend-of-classical-puppy-and-easyos.html
A bit premature though, as the download link does not yet have
anything in it. I want to fix a few more things in EasyPup, then will
upload a release ISO, maybe also a USB-stick image.
Then back onto developing EasyOS!
Tags: linux
Raspup Buster 8.2.0 released
Do you have a Raspberry Pi board? Is it neglected? -- well, dust
it off, there is a new Puppy Linux release for the Pi, created by
Michael Amadio (01micko in the Puppy Forum). Mick sent me an email,
quoting:
Hot on the tails of your Easy release I have released Raspup Buster 8.2.0.
Announcement - http://blog.puppylinux.com/raspup-820- released
Website - http://raspup.eezy.xyz/index.php
Official release note - http://distro.ibiblio.org/puppylinux/arm/puppy-raspup-8. 2.0/release-Raspberry-8.2.0. htm
It supports all the main Pi boards but not compute module - well untested at least.
Give it a spin!
You can also get involved, read the experiences of others, provide feedback, in this thread in the Puppy Forum:
http://www.murga-linux.com/puppy/viewtopic.php?t=116841

Mick does state that it is tested on the Pi0, Pi3 and Pi4, and should
probably work on the Pi1 and Pi2. I have a Pi2B and a Pi3B, so will
fire up the latter.
Tags: linux