site  contact  subhomenews

Oh dear, Rust again

August 04, 2020 — BarryK

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

June 18, 2020 — BarryK

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

June 15, 2020 — BarryK

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

June 11, 2020 — BarryK

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:

https://bkhome.org/linux/easydd-write-image-file-to-drive.html 

 

Tags: linux

EasyDD-portable runs on any Linux

May 28, 2020 — BarryK

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:

https://bkhome.org/linux/easydd-write-image-file-to-drive.html 

 

Tags: linux

Ye olde Woof2 Puppy builder

April 01, 2020 — BarryK

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

February 01, 2020 — BarryK

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

January 01, 2020 — BarryK

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.




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

img1

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