Release notes for Puppy Linux version 3.00
The live-CD iso file is 'puppy-3.00-seamonkey.iso' and is 97.6MB. There is also a "retro" live-CD, 'puppy-3.00retro-k2.6.18.1-seamonkey.iso' that is the same except uses an older kernel -- it is also smaller, at 93.8MB.This time I have not created a detailed release-notes page, instead, for further information please go to my Developer News Blog: http://www.puppylinux.com/news/.
This Puppy is a massive upgrade from the previous (v2.17.1). I decided to aim for close binary compatibility with Slackware 12, with the objective of being able to install Slackware packages and have all or most of the required dependencies already in place. To that end, I used all the building block packages from Slackware 12, such as glibc 2.5, gcc 4.1.2 and gtk 2.10.13. Most of the libraries in Puppy are now from Slackware. Note, though, this does not in any way make Puppy a clone of Slackware -- apart from aiming for binary compatibility, Puppy is fundamentally unique from the foundations upward.
Another major thing that I have done is totally rewritten the key scripts that control how Puppy boots up, is configured, and shuts down. This covers such things as pup_save file custom naming, frugal install into a subdirectory, pup_save file resizing and correct recognition of multiple pup_save files at bootup.
Then there are some major breakthroughs, such as finally getting periodic flushing of RAM to Flash drive working properly -- this is part of a mechanism that constrains writes to Flash drives so that they don't burn out.
Release notes (summary):
- All base packages upgraded, including glibc v2.5, gcc v4.1.2, GTK v2.10.13.
- Application upgrades (incomplete list): pptp v1.7.1,
Isomaster
v1.1, KP2 v0.2 (gray), Pbdict (zigbert), pure-ftpd
(getnikar), trashcan (disciple), Pbackup
v3.0.0 (zigbert), Network Wizard (Dougal, tempestuous,
BarryK), JWM v2.0.1, Xvesa Wizard
(gray, BarryK), Burniso2cd (BarryK), Busybox v1.6.1, TkDVD
v4.0.6, various small utilities (gray), Pidgin v2.0.2, SeaMonkey v1.1.2,
Xorg v7.2, Unionfs v2.1.2, Pfind v2.4 (zigbert), PDF-printer v0.8
(jcoder24), WakePup2 (john doe, dgi), NoteCase v1.6.9pre7, HomeBank v3.5,
Universal Installer (BarryK), Pmirror v0.2 (zigbert), PRename v0.6 (plinej), partview (PaulBx1).
- Massive improvements achieved with new boot and shutdown scripts, including pup_save file custom naming, frugal install into a subdirectory, correct recognition of multiple pup_save files at bootup, pup_save file resizing.
- New kernel: 2.6.21.7, configured with 'tickless' option. Initrd.gz is now a cpio archive.
- NetSurf web browser v1.1 as our internal HTML viewer.
- True flushing for Flash drives (andrei, BarryK). Finally.
- Also a great number of bugfixes.
True flushing to Flash drive. If you install Puppy to a USB Flash drive, Puppy will run in RAM and save periodically (every 30 minutes) to the 'pup_save' file. This batch saving is to limit writes and thus prolong the life of the Flash drive. The saving is copy-down meaning that the RAM does not get flushed -- so if you have a PC with say only 128MB RAM, no swap partition or swap file, and say a 512MB 'pup_save' file, you can only fill up the free RAM space, then you have to reboot -- at shutdown the RAM is flushed to the 'pup_save'. The free space is shown in the taskbar so you will always know when space is running low.
However, Puppy 3.00 has something new. PETget, the PET package manager installs packages direct to the 'pup_save' file, not into RAM. Thus, you can install big packages and they will not chew up RAM space and you won't have to reboot.
Other package installation systems (such as for DotPup packages) do not yet have this feature.
Note, kirk is developing a Gslapt package manager package for Puppy, see this link: http://www.murga-linux.com/puppy/viewtopic.php?t=21908. This is also supporting direct flushing to Flash drive. You are welcome to experiment with this package and help kirk with its development.
Boot parameters. The 'init' script should now correctly handle the boot parameters 'psubdir', 'pdev1'.
The 'init' bootup script now has rigorous handling of 'psubdir', so a frugal install of vmlinuz, initrd.gz, pup_300.sfs and zdrv_300.sfs in a folder, say 'puppy300', will be recognised. Puppy will automatically search partitions one-deep, however the 'psubdir=puppy300' boot parameter can be given to prevent Puppy from searching anywhere else. I have updated the Universal Installer to offer to install to a folder when doing a frugal install. I also modified the shutdown script rc.shutdown so that it recognises that Puppy has booted from a folder and on first shutdown will create the pup_save.2fs file (personal storage file) in that folder.
These are all optional. you use them to narrow down the search as much as you want. for example, booting from a usb flash drive, use 'pmedia=usbflash' so that puppy won't waste time probing the cd drives and other drives (CD probing especially is slow). Or, for a frugal ide hd install, use 'psubdir=puppy300 pmedia=idehd' so that puppy will only probe the ide hd's and will only search inside folder 'puppy300' -- this is particularly good for multiple frugal installations that want to keep themselves apart.
This is all good news for those who like to have multiple Puppy installations in their PC. More examples:
pmedia=usbflash #choices: usbflash|usbhd|usbcd|ideflash|idehd|idecd|idezip|satacd|satahd|scsihd|scsicd|cd
pdev1=hda7 #partition puppy is installed on.
psubdir=pup220 #folder containing all the puppy files. even pup_save.2fs will be here.
initrd.gz cpio archive. The 'initrd' file no longer has a filesystem inside it, so cannot be mounted with a loop device. It is now a cpio archive, so has to be extracted somehing like this:
# gunzip initrd.gzTo go the other way, that is, to create a initrd.gz file:
# mkdir puppy-init
# cd puppy-init
# cat ../initrd | cpio -d -i
# cd puppy-init"Retro" Puppy. Puppy 2.16 (and earlier) uses the 2.6.18.1 kernel. Puppy 2.17 uses the 2.6.21.5 kernel, whereas Puppy 3.00 uses the 2.6.21.7 kernel. The problem is that the kernel underwent major structural changes between the 2.6.18.x and 2.6.21.x series and some people find that Puppy will not boot (or had other hardware-related issues) with the later series. Well, a couple of people anyway. Although this is a small group, I decided to support them by offering the latest Puppy but with the older kernel.
# find . | cpio -o -H newc | gzip -9 > ../initrd.gz
Puppy 3.00retro has exactly the same kernel used in Puppy 2.16.1 and earlier, thus any extra modules compiled for those puppies will work.
Warning: be careful with mixing the normal and retro puppies. The 'zdrv_300.sfs' and 'pup_300.sfs' files have the same name for both puppies. This is an issue if these files are located anywhere on the hard drive where Puppy might find the wrong one at bootup.
Note: for 3.01 I plan to use the 2.6.18.8 kernel for the retro, and recompile it with gcc 4.1.2. The old 2.6.18.1 kernel was compiled with an earlier gcc, which means that modules cannot be compiled for that kernel in Puppy 3.00. Also, the old kernel has an old version of Unionfs driver that does not support the true flushing to Flash drives.
Upgrading from earlier version of Puppy. No problem. If you run Puppy from live-CD, just boot the new CD and Puppy will automatically perform any required upgrading of your personal storage file/partition (usually pup_save.2fs file).
For USB or frugal-hd installations, just copy the latest files (vmlinuz, initrd.gz, pup_300.sfs and zdrv_300.sfs) to the USB or hd boot media.
Download. If you want to obtain the latest Puppy live-CD, or the "devx" module, that turns Puppy into a complete C/C++ compiler environment, or the patched 2.6.21.7 kernel source, please go to the Puppy download page for links:
http://www.puppylinux.com/download/downpage.htm
Note, file 'devx_300.sfs' is what we call a SFS module, which is a "combo-pack" of applications in a single file. It can be loaded at bootup and you instantly have all the apps "installed". Or, not load it at bootup and all the apps are immediately "uninstalled". Normally, you just download a SFS file to /mnt/home then reboot Puppy, and it automatically loads. Note: it is reported on the Puppy Forum that SLAX .mo modules work with Puppy -- just rename the '.mo' file extension to '.sfs' -- no guarantees though!
A note on the kernel source: If you want to compile a module, or a package that needs to reference the kernel source, we have the kernel source available as an SFS file. Download 'devx_300.sfs' and 'kernel_300.sfs' to /mnt/home then reboot Puppy and you're in business (that's how simple SFS files are to use, but note you can manage loading of SFS files by running the BootManager (System menu)). Get the official SFS files from here:
http://distro.ibiblio.org/pub/linux/distributions/puppylinux/sfs_modules-3/
History. To get a better sense of how Puppy has evolved, it is helpful to read the release notes for earlier versions.
Puppy v2.17: http://www.puppylinux.com/download/release-2.17.htm
Puppy v2.16: http://www.puppylinux.com/download/release-2.16.htm
Puppy v2.14: http://www.puppylinux.com/download/release-2.14.htm
Puppy v2.13: http://www.puppylinux.com/download/release-2.13.htm
Puppy v2.12: http://www.puppylinux.com/download/release-2.12.htm
Puppy v2.11: http://www.puppylinux.com/download/release-2.11.htm
Earlier: http://www.puppylinux.com/news.htm
Best regards,
Barry Kauler and the Puppy Team
October 2007