site  contact  subhomenews

Puppy Linux without an initrd

March 31, 2021 — BarryK

We know about the 'initrd' file, which is an initramfs that runs first at bootup. EasyOS has this, as do the puppies.

A traditional full installation, occupying an entire partition, may not need an initrd, and can be run directly from the kernel boot parameters. For example, if the full installation is in /dev/sda9, then boot parameters would include root=/dev/sda9, or the PARTUID could be specified.

If an initrd is used, the boot parameters would not have root=, instead would have something like initrd=initrd.gz, where initrd.gz is the name of the file, with perhaps a path.

One of the reasons we have a initrd is to setup the layered filesystem, using overlayfs or aufs, then a switch_root is performed onto the layered filesystem.

However, Dima, forum name 'dimkr' on github and the Puppy Forum, and 'iguleder' on the old Puppy Murga Forum, has come up with a way to load the layered filesystem without requiring an initrd.

It is achieved with a special 'init' executable, written in C and statically linked with musl. The boot parameters would be something like this: root=/dev/sda9 init=/init, which tells the kernel that there is a "full installation" at /dev/sda9 and to run /init.

Except that there isn't really a full installation, there are only SFS files. The init executable does what the initrd used to do, sets up the SFS layers and then switches onto the top of the layers.

Dima has created a new project "frugalify" which has this init executable:

https://github.com/dimkr/frugalify

He has also built a demo Puppy, dpupOS:

https://forum.puppylinux.com/viewtopic.php?f=33&t=2495

It must be emphasized that this is not for end users, only for those who want to play with something new and interesting and provide feedback. I tried it a few days ago, and there are too many issues to be considered as suitable for end users -- but they are details, the guts of it are sound.

A note about iguleder -- he goes way back, about 11 years I think, In the Murga Forum, and has been a fantastic contributor, as well as lots of projects on github. he is active developing woof-CE, which is great. I think that he is a young bloke, compared to me anyway.

If you are interested in compiling it yourself, I uploaded some musl chrootable root filesystems a few years ago, see a blog post here:

https://bkhome.org/news/201704/alpine-x8664-chrootable-rootfs.html

Downloadable from here, x86_64, x86, aarch64, armhf tarballs:

http://distro.ibiblio.org/quirky/alpine/

...I think there are instructions inside the tarballs.     

Tags: linux

puppylinux.com certificate issues

March 11, 2021 — BarryK

The Puppy Linux Forum, at forum.puppylinux.com currently does not work.

This has been reported by ozsouth at one of the alternative Puppy forums:

https://www.linuxquestions.org/questions/puppy-71/puppylinux-main-forum-having-issues-4175691857/

However, this URL works:

https://puppylinux.rockedge.org/

01micko and others are trying to fix it.

EDIT 2021-03-21:
The forum is fixed, this URL now works:

https://forum.puppylinux.com/

Thanks to Erik and Mick for sorting it out. 

Tags: linux

Iceape-UXP an alternative to SeaMonkey

October 06, 2020 — BarryK

I received an email from Luke, advising me of Iceape-UXP, an alternative browser suite, that does not require Rust to compile. Quoting from his email:

I was reading your blog the last several days for minimalist inspiration and noticed you disliked Rust as a dependency as well. There is an alternative with UXP: http://thereisonlyxul.org/

Iceape-UXP has no rust dependency, we maintain it here: https://wiki.hyperbola.info/doku.php?id=en:project:iceape-uxp

I got the latest Iceape and Icedove from the git repository, as well as the recommended thunderbird source, and had a go at compiling Icedove. It requires python2 and I used the same PET of python2 that I had used to compile SM. Unfortunately, got a python error when compiling Icedove, and as it was late at night, left it at that. I was running the EasyOS Dunfell build.

Might take another look sometime, perhaps try on EasyOS 2.4.1, the Buster series, which already has python2. Nice to know that we do have a choice. 

Tags: linux

Murga Forum is up, read-only

August 09, 2020 — BarryK

The Puppy Forum, created and maintained by John Murga until his recent passing away, has been in maintenance-mode for over a month. No one had his login details, not even family members, so the forum stayed down, until today.

The domain murga-linux.com is registered with namecheap.com and the site is hosted with linode.com. I have been in contact with the executor of John's Will and have obtained sufficient information to satisfy Linode tech support, and we were granted login.

We are still waiting on namecheap.com, as we need to be able to renew the registration.

My experience is with conventional shared hosting only (at omnis.com), and Linode's cloud hosting was perplexing when I logged in! I am familiar with having everything setup, nice Control Panel. Linode do things differently. I asked James Budiono (jamesbond in the forums) for help, and wow, he did, got the forum out of maintenance mode, and here it is:

http://murga-linux.com/puppy/

Please treat it as read-only, don't login or post anything.

At this stage, we are uncertain about the future of the Murga Forum. There are so many links to it, that we probably do need to keep it running. I think that it is on a US$5 per month plan with Linode, and then there is the name registration cost. The phpBB forum is running on a very old version of PHP, and maybe it is a bit shaky. We may end up seeking a volunteer who is prepared to look after it. 

Tags: linux

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