Updating Puppy 4, for learning and nostalgia

an incubator for software projects


Moderator: Forum moderators

Post Reply
s243a
Posts: 501
Joined: Mon Dec 09, 2019 7:29 pm
Has thanked: 90 times
Been thanked: 37 times

Updating Puppy 4, for learning and nostalgia

Post by s243a »

Motivation

As, mentioned in another thread, I'm interested in updating older versions of puppy for the purposes of learning about the history of puppy (how they were done before) and also nostalgia. Also in some cases this may produce smaller systems than more modern systems.

This actually goes back to the roots of puppy because early on in puppies history older versions of software was chosen to help keep down the total size of puppy:

BK: This comes back to the way I built Puppy, file by file. I also made unfashionable choices, like going for Tcl/Tk. If you browse the menu in Puppy, you will find that the selection of programs is somewhat eclectic. A mixture of Xlib, Tcl/Tk, GTK1, GTK2, Ash/Bash apps. If I found a small program that did the job, I used it. Some of the apps seem very dated, for example, I use ROX-Filer version 1.2.2, which was the last GTK1 version, also the last version that used a simple and small mime-type handling system -- very old, but it is rock solid and works fine. Then there is Ical, a very old Tcl/Tk calendar program -- slightly quirky user interface, but still easy to use, and above all quite small.

On the other hand, Puppy has, where we think it necessary, the latest of some applications -- AbiWord for example. Gnumeric is scheduled to be updated to the latest version for Puppy 1.0.7 -- although 1.0.6 is just out the door, we Puppy developers are on a "heroin drip" and are now flat out on the next version -- there are typically 6 - 8 weeks between Puppy releases.

https://distrowatch.com/weekly.php?issue=20051114

With today's computers many of these choices made to keep the size of puppy small seem less relevant but there are still new computers sold with limited ram and storage (e.g. small laptops in the $300 price range) and many of the people on this forum still have older machines that may or may not be their primary computer.

Background

My experiment with revitalizing older puppies started with a relatively new puppy. I found that that could take @wiak wdlgo_focal64 and use it to update Puli/Xenial64. I did this for a chrooted/containerized system (test release here). Wiak's system is nice from a size perspective 20MB without apt/dpkg and 40MB with apt/dpkg (+dependencies) included and I'll likely use it as a reference as a minimal system.

That said, I don't always want a minimal system. In many cases I'm happy with a CLI system in the 100MB range with more full utilities and some extra tools like, perl, strace and midnight commander. CLI type systems form a nice staring point for a base of a distro and are excellent for remote operation of a computer. When graphical interfaces are added more bandwidth is required for remote operation and there will be some tradeoff between bandwidht and security. For instance xforwarding in trusted mode can run quite quickly but a high resolution VNC server may be slow. Additionaly, once we start getting into the world of graphical applications where do draw the line of what software to include vs exclude. While Modern puppies may typicaly range from 80MB to 500MB (just a guess) modern version of linux can start at sizes of 1GB of more (e.g. parrot OS security version).

I understand that the security version of Parrot OS is an application specific version but in 2014 (six years ago) you could by a convertable laptop with 8GB of ram, which had a good size screen for $1000 or less. Therefore, for many modern systems a 1GB OS may not be that large. In this context I don't consider a 100MB CLI system that large and I'm not advocating this as an ideal size but rather as a reference system where one can choose to either trim or expand upon.

Now all that said, I know that puppy 4 was released prior to my above laptop example. For example puppy 4.2.1 was released in 2009 (distro watch page) and I know that puppy is targeted towards older hardware than the release date of a given puppy. However, the amount of machines still in use that puppy 4.2.1 was targeted towards is dwindling and part of my objective here is to provide a way for people with newer machines to appreciate some of the prior puppy development.

Glibc in Lighthouse 4.43 / Puppy 4.3.1 / Attack Pup / Barebones431 / AnitaOS

As best I can tell Attack Pup (see thread) is based on Lighthouse 4.43 (see release notes), which is based on Puppy 4.3.1. Puppy 4 and derivatives typically have a glibc of about 2.6.1, with the exception of phonix, which has a glibc of 2.19, attack pup which has a glibc of 2.9 and Lighthouse 4.43 might have the save version of glibc as attack pup.

There Kernel Dependency of GlibC

Historically, puppy had many application specific versions. Today, this is seldom done. This is likely due to better better package manager support for binary compatible repos and more packages (and sfs files) built specifically for pupy. Attack Pup is one example of an application specific puppy but it is very old (puppy 4). One might wonder how much one can update a puppy from the puppy 4 era and still have compatibility with older libs.

One area of incompatibility could be between the kernel and the glibc library used. However, kernals 3.2 and newer (see can-new-glibc-versions-be-used-with-an-old-kernelthread) might be able to work with a fairly modern vern of glibc when both the kernal and glibc library are compiled with suitable parameters . Further Reading:

murga-linux: How to compile glibc?
kernel compiling in woof-ce
Various glibc and Linux kernel versions compatibility
Various glibc and Linux kernel versions compatibility
What is the relationship between kernel and GLibc?

So how new A GlibC can be Used with Puppy 4

There are two related questions, what's possible and what's a good idea. Given that precise 5.7.1 only has glibc-2.15 and will run the latest version of palemoon, perhaps that is sufficient for a legacy system. The total size of the sfs for percise 5.7.1 is only 151MB which isn't bad for a full system although it isn't as small as TazPup. Given that there is already a version of puppy 4 (i.e. phonex) that has a newer glibc than precise and precise is still usable for at least one modern browser one might wonder, "Why upgrade puppy 4 any further?".

My best answer I suppose, is to see what's possible. Give that I had success upgrading core libs of Puli/Xenial64 I thought, "Why not go back further?". And I was actually thinking about doing this for attack pup when I started using woof-next to build a core CLI system based on the Kali linux base but when I saw that it was a rolling repo, I thought it might be quite current and at first I thought it would be better to update a newer puppy (e.g. upupGG+D) with a rolling release. However, upupGG+D is actually newer than Kali-rolling so the update direction was backwards. One could use select packages in upupGG+D to update kalli-rolling. Kali linux is actually closer to fossaPup than upupGG+D but I already used a FossaPup based distro (i.e. wdlgo_focal64) to update a distro as old as Xenial and I thought, okay let's go older. Lets see if this will work with a puppy 4 distro like attack pup.

It turns out that you can do this but I can't say how well it will work and in what circumstances it will work. So far I've got the the desktop to work in a chroot based system but I'm still working on getting the panel (task bar in windows termination) to work and there is potentially some issues with icons to sort out.

So far I only had to symlink two libraries into the /lib folder. For the other libraries I was able to use the architecture specific folders like in a modern puppy. This is interesting because it gives me some incite into why puppy at one point had a multi-arch symlink hack.

I've only tested this as a chroot system so I can't promise that it would work as an independent system and I only tested the chroot in fatdog64-811 so I don't know how well the system will work as a chroot in older puppies. In some cases a kernal upgrade may be required.

The above was mostly background and in the subsequent posts, I will get more into how to accomplish the tasks mentioned above and what I learned.

User avatar
amethyst
Posts: 2355
Joined: Tue Dec 22, 2020 6:35 am
Has thanked: 55 times
Been thanked: 473 times

Re: Updating Puppy 4, for learning and nostalgia

Post by amethyst »

My Precise version is 79MB (max xz compression, basically only the old browser of the builtin stuff has been removed) and I can do everything with it that I can with Bionic (which is 360MB bigger when uncompressed). I also have a Racy which is 65MB (max compressed, fully functional). One can easily put a very old puppy to good use, running a modern internet browser remains the biggest obstacle. PS: The official releases of older Puppy's like Precise were compressed with gzip which compression ratio is much worse than the new Puppy releases which has been compressed with xz compression. Also as a matter of interest - replacing the older kernel of an old puppy with newer one can add functionality. For instance - swopping the original kernel of Racy with that of Tahr will give you the functionalty of additional drives like the adrv and ydrv. I started off with Pup412, still have it . Can still use it apart from modern internet browsing. Don't know if you are aware of it, but there is a dedicated site for Pup412 here: https://412collection.neocities.org/

User avatar
bigpup
Moderator
Posts: 6271
Joined: Tue Jul 14, 2020 11:19 pm
Location: Earth, South Eastern U.S.
Has thanked: 732 times
Been thanked: 1292 times

Re: Updating Puppy 4, for learning and nostalgia

Post by bigpup »

Please do not miss understand me.

In no way am I saying, do not do this or anything you want to do, for Puppy Linux.
That is what Puppy Linux is all about.
You doing what you want to do.

But, the older versions of Puppy Linux are just that.
The older versions.
The programs are older and have less features and ability.
A lot of core Puppy files and processes, have been greatly improved, from what is in these older Puppy versions.
The whole operation of Puppy, has changed and for the better.
Why go back to using stuff, that did work, but not that well!
One example:
Puppy Package Manager, is much improved, over the older versions.
Sorry, but it takes more code, in the program, to give it those improvements.
So, it is bigger in size, than it was, in the past.

With the Linux kernel being mainly hardware support.
The kernel series, is very important, to what hardware support, is there.
Example:
a 3 or even 4 series kernel, has no support, for very new hardware.
How could it.
The hardware did not exist, when the kernel was developed.
Same for firmware, drivers, kernel modules, etc...., that needs to be in the Puppy version.

Sure, if you have a very, very, old computer.
There is a good chance, the newest Puppy version and the series 5 kernel, in it.
Does not provide support for that very old hardware.
But, Puppy is not directly dropping that support.
It is the Linux kernel doing this.

Taking the newest version of Puppy and changing it to using a series 3 or 4 kernel can bring back older hardware support.
Maybe also putting back firmware needed by the hardware.

This is only some stuff to think about.

Forum Global Moderator
The things you do not tell us, are usually the clue to fixing the problem.
When I was a kid, I wanted to be older.
This is not what I expected :o

User avatar
rockedge
Site Admin
Posts: 5714
Joined: Mon Dec 02, 2019 1:38 am
Location: Connecticut,U.S.A.
Has thanked: 1994 times
Been thanked: 2097 times
Contact:

Re: Updating Puppy 4, for learning and nostalgia

Post by rockedge »

@bigpup The first thing I try is swap out the kernel. I just experienced this with an ethernet card on a recycled blade server. Series 5.4+ and above, no go.
Switch to a 4 series and network connects immediately.

s243a
Posts: 501
Joined: Mon Dec 09, 2019 7:29 pm
Has thanked: 90 times
Been thanked: 37 times

Re: Updating Puppy 4, for learning and nostalgia

Post by s243a »

amethyst wrote: Sun Feb 21, 2021 9:53 am

replacing the older kernel of an old puppy with newer one can add functionality. For instance - swopping the original kernel of Racy with that of Tahr will give you the functionalty of additional drives like the adrv and ydrv.

bigpup wrote: Sun Feb 21, 2021 2:06 pm

Taking the newest version of Puppy and changing it to using a series 3 or 4 kernel can bring back older hardware support.
Maybe also putting back firmware needed by the hardware.

This is only some stuff to think about.

rockedge wrote: Sun Feb 21, 2021 5:22 pm

@bigpup The first thing I try is swap out the kernel. I just experienced this with an ethernet card on a recycled blade server. Series 5.4+ and above, no go.
Switch to a 4 series and network connects immediately.

If I decide to create a bootable ISO (rather than just a chroot or container) then I'll likely use either a series 3 or 4 kernal. It seems to be the best option for this applications. Thankyou people for the above comments :). I'm not sure how new a version of glibc that I can use for these kernals but I suspect that both of them can be compiled to support a fairly new version of glibc.

User avatar
rockedge
Site Admin
Posts: 5714
Joined: Mon Dec 02, 2019 1:38 am
Location: Connecticut,U.S.A.
Has thanked: 1994 times
Been thanked: 2097 times
Contact:

Re: Updating Puppy 4, for learning and nostalgia

Post by rockedge »

@s243a I have switched series 5 kernel's into Tahr and 3 and 4 series into Bionic and in all cases works.

I think earlier kernel versions will run with newer glibc.

dave64
Posts: 2
Joined: Wed Oct 21, 2020 5:45 am

Re: Updating Puppy 4, for learning and nostalgia

Post by dave64 »

amethyst wrote: Sun Feb 21, 2021 9:53 am

I started off with Pup412, still have it. Can still use it apart from modern internet browsing. Don't know if you are aware of it, but there is a dedicated site for Pup412 here: https://412collection.neocities.org/

I'm posting this with Puppy 412 and SeaMonkey 2.26.1 / NoScript 2.9, which we also host at 412 Collection.

If certificate issues prevent you from accessing the main website, use our mirror: http://412collection.indogo.org

User avatar
amethyst
Posts: 2355
Joined: Tue Dec 22, 2020 6:35 am
Has thanked: 55 times
Been thanked: 473 times

Re: Updating Puppy 4, for learning and nostalgia

Post by amethyst »

dave64 wrote: Mon Feb 22, 2021 5:11 am
amethyst wrote: Sun Feb 21, 2021 9:53 am

I started off with Pup412, still have it. Can still use it apart from modern internet browsing. Don't know if you are aware of it, but there is a dedicated site for Pup412 here: https://412collection.neocities.org/

I'm posting this with Puppy 412 and SeaMonkey 2.26.1 / NoScript 2.9, which we also host at 412 Collection.

If certificate issues prevent you from accessing the main website, use our mirror: http://412collection.indogo.org

Are you able to watch youtube videos with that Seamonkey browser and how does it do with secure sites (https)?

dave64
Posts: 2
Joined: Wed Oct 21, 2020 5:45 am

Re: Updating Puppy 4, for learning and nostalgia

Post by dave64 »

amethyst wrote: Mon Feb 22, 2021 8:29 am

Are you able to watch youtube videos with that Seamonkey browser and how does it do with secure sites (https)?

YouTube won't work with that setup (P2 / 350 with dial-up). At this point, SeaMonkey 2.26.1 still loads most https sites.

User avatar
amethyst
Posts: 2355
Joined: Tue Dec 22, 2020 6:35 am
Has thanked: 55 times
Been thanked: 473 times

Re: Updating Puppy 4, for learning and nostalgia

Post by amethyst »

dave64 wrote: Tue Feb 23, 2021 12:15 am
amethyst wrote: Mon Feb 22, 2021 8:29 am

Are you able to watch youtube videos with that Seamonkey browser and how does it do with secure sites (https)?

YouTube won't work with that setup (P2 / 350 with dial-up). At this point, SeaMonkey 2.26.1 still loads most https sites.

Youtube will probably not work anyway because the HTML5 implementation would not be up to standard.

s243a
Posts: 501
Joined: Mon Dec 09, 2019 7:29 pm
Has thanked: 90 times
Been thanked: 37 times

Re: Updating Puppy 4, for learning and nostalgia

Post by s243a »

I noticed that on attackpup that sourcing /etc/profile doesn't add "/usr/local/bin/" to the PATH variable. I'm not sure how this folder gets added to the path in puppy 4 but it is something to watch out for for anyone running puppy 4 in a chroot.

Another thing that I noticed is that updating core libs and cli libs is sufficient when running a chroot on a local machine but doesn't seem to work if you do the chroot over ssh. I think the reason is that the newer .Xauthority file might not be compatible with older systems. One can work around this by using Xephyr.

dancytron
Posts: 653
Joined: Fri Dec 13, 2019 6:26 pm
Has thanked: 422 times
Been thanked: 190 times

Re: Updating Puppy 4, for learning and nostalgia

Post by dancytron »

You probably already know this, but IIRC people have had success running the latest browsers with the Fredx portable versions or application images that otherwise wouldn't run on older Os's.

mistfire
Posts: 650
Joined: Thu Jul 16, 2020 2:16 am
Location: CALABARZON, PH
Has thanked: 3 times
Been thanked: 143 times

Re: Updating Puppy 4, for learning and nostalgia

Post by mistfire »

@s243a

Some questions:
* Did you modify xorgwizard to use xorg-autoconf?
* Did you modify the petget package manager?
* Did you update the puppy core scripts (init, rc.sysinit, rc.update)

Take note one of the biggest problem on updating puppy 4 or lower was icu4c. It was pretty bloated and no backward compatibility. Some newer libs or apps use icu4c

s243a
Posts: 501
Joined: Mon Dec 09, 2019 7:29 pm
Has thanked: 90 times
Been thanked: 37 times

Re: Updating Puppy 4, for learning and nostalgia

Post by s243a »

mistfire wrote: Sun Feb 28, 2021 1:00 am

@s243a

Some questions:
* Did you modify xorgwizard to use xorg-autoconf?
* Did you modify the petget package manager?
* Did you update the puppy core scripts (init, rc.sysinit, rc.update)

Note yet. I plan to make sure the ppm is working but for now, I've just added apt/dpkg in the upgraded version. I will likely look into modifying the repos or upgrading the package manager and/or adding @sc0ttman 's package manager (i.e. pkg).

Take note one of the biggest problem on updating puppy 4 or lower was icu4c. It was pretty bloated and no backward compatibility. Some newer libs or apps use icu4c

I'll take note of that. I don't think though that I have this package installed in my pristine or upgraded version.

darry19662018
Posts: 453
Joined: Sat Dec 14, 2019 12:24 am
Has thanked: 54 times
Been thanked: 65 times

Re: Updating Puppy 4, for learning and nostalgia

Post by darry19662018 »

Nice to see someone still has an interest in this series.. I enjoyed it :thumbup2:

s243a
Posts: 501
Joined: Mon Dec 09, 2019 7:29 pm
Has thanked: 90 times
Been thanked: 37 times

Re: Updating Puppy 4, for learning and nostalgia

Post by s243a »

darry19662018 wrote: Sat Mar 06, 2021 6:03 am

Nice to see someone still has an interest in this series.. I enjoyed it :thumbup2:

I was thinking that your phoenix version of puppy4 might be a good candidate for a chrooted (and/or containerized) version of palemoon. I haven't tried this yet though. I bring this up because on the facebook group someone was asking about a chooted palemoon.

darry19662018
Posts: 453
Joined: Sat Dec 14, 2019 12:24 am
Has thanked: 54 times
Been thanked: 65 times

Re: Updating Puppy 4, for learning and nostalgia

Post by darry19662018 »

It worked with a chrooted Iron Browser - so yeah should work.

Darsh
Posts: 5
Joined: Wed Nov 15, 2023 1:42 pm

Re: Updating Puppy 4, for learning and nostalgia

Post by Darsh »

s243a wrote: Fri Feb 26, 2021 2:39 am

I noticed that on attackpup that sourcing /etc/profile doesn't add "/usr/local/bin/" to the PATH variable. I'm not sure how this folder gets added to the path in puppy 4 but it is something to watch out for for anyone running puppy 4 in a chroot.

Another thing that I noticed is that updating core libs and cli libs is sufficient when running a chroot on a local machine but doesn't seem to work if you do the chroot over ssh. I think the reason is that the newer .Xauthority file might not be compatible with older systems. One can work around this by using Xephyr.

Thank you for your wise remarks! The complexities of AttackPup's PATH variable and the nuances of updating libraries during chroot, particularly via SSH, offer insight on potential concerns. Your workaround option for Xephyr is a useful hint for people dealing with compatibility issues. Great heads-up!original magic 8 ball

Post Reply

Return to “Development”