logoPuppy developer news:

first half of 2006

left-arrow Older news

arrow-rightLater news

June 24, 2006

The gpm package, version 1.20.1, that provides mouse support for console applications, is now in Puppy.

I compiled Elinks version 0.11.1. To obtain Javascript support, I had to download the Spidermonkey javascript library (v1.5) from ftp://ftp.mozilla.org/pub/mozilla.org/js/ and expand it inside the Elinks source then patch it with a patch file supplied with the Elinks source. I then compiled and installed Spidermonkey first.
After configuring Elinks, it reports:

gpm ............................. yes
zlib ............................ yes
bzlib ........................... yes
idn ............................. yes
Bookmarks ....................... yes
XBEL bookmarks .................. yes
ECMAScript (JavaScript) ......... SpiderMonkey
Browser scripting ............... Perl, SpiderMonkey
SSL ............................. OpenSSL
Native Language Support ......... yes
Cookies ......................... yes
Form history .................... yes
Global history .................. yes
Mailcap ......................... yes
Mimetypes files ................. yes
IPv6 ............................ yes
BitTorrent protocol ............. yes
Data protocol ................... yes
URI rewriting ................... yes
Local CGI ....................... yes
Finger protocol ................. yes
FSP protocol .................... no
FTP protocol .................... yes
Gopher protocol ................. no
NNTP protocol ................... yes
SMB protocol .................... yes
Mouse handling .................. yes
BSD sysmouse .................... no
88 colors ....................... no
256 colors ...................... yes
Exmode interface ................ no
LEDs ............................ yes
Marks ........................... yes
Cascading Style Sheets .......... yes
HTML highlighting ............... yes
DOM engine ...................... HTML highlighting
Backtrace ....................... yes

Midnight Commander version 4.6.1 has been compiled. Configure reports:

  File system:                Midnight Commander Virtual File System
cpiofs, extfs, tarfs, ftpfs, fish
Screen library: ncurses library
Mouse support: gpm and xterm
X11 events support: no
With subshell support: yes
Internal editor: yes
Support for charset: no

Elinks and gpm packages are expected to be in the next OneBone. Perhaps not Midnight Commander, but it can be a PupGet pkg.

I'll put this news into my experimental News blog http://www.puppylinux.com/blog/ as well.

June 23

Yippee, my Puppy2 Developer Forum is working again! My host, netfirms.com finally fixed it. Here is their email, dated June 22:

We have reviewed your request it appears your table had been corrupted. We have
repaired your table. In the further if you encounter this issue.

1. Log into CP
2. Log into phpmyadmin for the db in question.
3. Click on DB name
4. Click the SQL tab
5. In the box, enter the following query:

repair table table_name

replace the table name listed in the error. Once you do this you table should be
repaired and the error will no longer display.

June 21

My Puppy2 Developer Forum is still broken. I have had communications with customer support at netfirms.com (my host) and they say the forum works for them. At first, they told me to clear my browser cache, then they told me to test the forum via an indirect url. Nothing works, yet they insist it is working. I can see the main index page of the forum, but cannot browse nor login. It seems that others are browsing, but I see that there have been no posts since June 17th.

My Developer Forum is here: http://www.puppylinux.com/nfphpbb/

I would like to get feedback, whether you can browse the forum, see if it is a location problem. I've posted a topic to my experimental News blog: http://www.puppylinux.com/blog/  -- kindly post a feedback comment there.

Simple PHP Blog is looking good. I may migrate to it as the permanent Developer News page. But, still in the testing/evaluation phase.

June 20

Simplephpblog has been recommended to me, so I set it up. This one also has flat file storage, no SQL database. Gee, it sure is nice. Excellent security features. This is also for evaluation. URL:

June 20

I have setup a blog. It's not the official Puppy News blog, just a plaything for now. It is an ultra-simple blog, as I'm fed up with these sophisticated forums and SQL databases that are so complicated to configure and just aren't reliable. Okay, I'm probably over-reacting! Anyway, I like this blog. Stop by and play with it:

UPDATE: My Puppy2 Developer Forum is still down. John Murga's forum is back up (for now).

June 19

Puppy version 2.01 is released. The live-CD is puppy-2.01-seamonkey.iso and is 70.8M. Release notes:

There is still a lot to-do, which has to hold-over until v2.02. The Universal Installer still needs work, as does hardware detection at bootup and booting from media such as PCMCIA and SATA. NTFS support needs attention also.

Please read news for June 1st for download URLs.
The latest Unleashed and devx_201.sfs files are also available.

Discussion forums status
My Puppy2 Developer forum isn't working. I've been waiting almost two days for Netfirms customer support to reply.
Since yesterday I have not been able to post anything to John Murga's Puppy forum, which is our main forum.

Other Puppy flavours
I intend to upload OneBone and BareBones in a couple of days.
OneBone: Puppy with CLI apps only, no X.
BareBones: A very small Puppy with X and lightweight apps.
John Murga will be releasing MeanPuppy soon, a 50M Opera-based Puppy.

June 18

I've taken a step toward improving performance in RAM-challenged PCs, the 32 - 128M PC without any Linux swap partition. The boot script /etc/rc.d/rc.sysinit will, under certain circumstances, create and activate a swap file.

To explain this more clearly:

  1. You boot the live-CD for the first time on a RAM-challenged PC. If the PC has 128M RAM, then the pup_xxx.sfs file (the single file which contains all of Puppy) loads into RAM, with less RAM the file instead mounts from the CD. In the former case, there's barely enough room in the RAM to run big applications like SeaMonkey. In the latter case (<128M), much CD-drive activity. In both cases, sluggish performance.
  2. You shutdown/reboot, during which you are asked where you want to create the pup_save.3fs file in which the session will be saved. You choose a suitable hard drive or USB drive (even floppy).
  3. At next bootup, if you had chosen to create the pup_save.3fs file on a fast internal non-NTFS partition, then Puppy will automatically create a swap file and activate it.
    You will also notice a lot of free space showing in the blue box in the right side of the taskbar, but note that this only shows the free space in the pup_save.3fs file.
    So, now you have lots of space for saving personal files (the pup_save.3fs file) and the RAM working space in which the applications run and the kernel does all of its file management is now effectively much bigger due to the swap file.
Testing on my PC with 1GHz Celeron CPU and 128M RAM, the speed improvement with the swap file is enormous. SeaMonkey starts in 6 seonds the first time, about 2 seconds subsequently.
The swap file is going to improve performance, however there is one more thing that can be done that will improve performance even more. In the case of the 128M PC, Puppy does manage to load the pup_xxx.sfs file (the 'guts' of Puppy) into RAM, but for PCs with less RAM it has to be mounted from the CD. Either way results in slow performance: the former due to less free RAM, the latter due to frequent CD reads. Solution:
  1. Use Rox file manager to copy pup_xxx.sfs off the CD to /initrd/mnt/dev_save. The latter is the mount point of the partition that has the pup_save.3fs file.
  2. Reboot, and you will get a very fast boot, the CD drive is freed for other uses, and performance is snappy.
After doing this, my 128M 1GHz PC boots from the Isolinux boot menu to desktop fully loaded in an amazing 18 seconds.

The above does not apply to a NTFS partition!
Note, the end result of all of the above is, in a hard drive partition you will have three files together, pup_save.3fs, pup_xxx.sfs (example: pup_201.sfs) and pupswap.swp (swap file).

June 17

Improvements to /etc/rc.d/rc.update script. In particular, if there are changes to the modules, the latest modules and 'depmod' files must be 'on top' in the unionfs layered system.

libstdc++-6.0.3 Unleashed package is now part of the 'standard' live-CD. I figured, so many DotPups and other binary installable applications need it, so best to have it in beforehand. Opera for example.

Puppy has embraced Perl, a very small Perl, cutdown by John Murga and then by Mark Ulrich.
Having Perl in Puppy means that ndiswrapper, the tool for installing Windows wireless network drivers into Linux, is available in Puppy. The latest Perl Unleashed package also has GTK modules, so we can have GTK-Perl applications. So, we now have one, GPRename, a very interesting batch file renamer. It will be in the "File managers" menu in Puppy 2.01.
The Unleashed package is gprename-1.7.
I wonder what other GTK-Perl applications are out there?...

Rarsa (Raul) has been very patient... he has developed a great little applet for the window manager taskbar, mini-volume, a very convenient way to control the speaker volume. He just released version 0.2, then I asked, please rewrite it as I am taking Snack out of Puppy. Without grumbling, he did so, and we now have version 0.3.

MU (Mark) has improved the Puppybackgroundsetter. He brought out a service pack for Puppy 2.00, and I have incorporated the pack into the Unleashed package, and it is now named puppybackground-2.0.

Jesse has done some great work improving MUT (Media Utility Tool). He wrote disks.tcl, a program to help with distinguishing between the different type of drives, like SATA and USB. He has incorporated disks.tcl into MUT and released version 0.0.9.
I made a slight change for MUT to work with Tcl/Tk 8.5 and also changed the load_drivers.sh script, and have made this version 0.0.9a.

Jesse wrote disks.tcl in response to our ongoing agonizing over how to distinguish between types of drives at bootup. SATA and USB drives use the SCSI-emulation layer, so their drive letters are the same. I want to look further at disks.tcl and the other contributions on the forums to improve booting from SATA/SCSI/USB drives, however have to hold that over for v2.02.
Version 2.01 is now "frozen" and I'm just doing minor changes and bug fixes. It is urgent to get v2.01 out as soon as possible, as it has some major bug fixes, especially regarding hard drive installation.

June 16

I converted MU's Perl-midi DotPup package into an Unleashed package, named perl-5.8.6midi. This replaces the perl-5.8.0 Unleashed package. There was a clash of Perl versions, as devx_xxx.sfs (also the usr_devx.sfs for Puppy1) has Perl 5.8.6 (taken from Vector) whereas the Unleashed package was 5.8.0. Now, they are the same versions, so there should be no problem if the devx_xxx.sfs file is used.
Mark created Perl-midi with just the modules he needed, including GTK modules, and it is somewhat smaller than the previous Unleashed package.

ALSA drivers, library and utilities has been upgraded to version 1.0.11. Previously, the drivers were those that came with the kernel and the asound library and utilities were version 1.0.8.
We had a couple of reports of sound hardware not working, including my own new PC, and we found that ALSA 1.0.11 has the fix.

The application 'iwpriv' has been added to the Wireless Tools v28 Unleashed package.

I've just tested Mark's Perl-midi with ndiswrapper. It only needed a few extra Perl modules and it works. That's fantastic!

Yippee! I found the bug that caused autodetection of network driver etc. to not work after a hard drive install. Just a simple little logical error in /etc/rc.d/rc.modules.

Note, Puppy 2.01 is expected to be released early next week, about 19 - 20th. Who cares about a beta release! -- it's looking good, but I'll fire it up on 4 - 5 different machines to be sure.

June 15

I recompiled the calendar application Ical, to work with Tcl/Tk 8.5. The Unleashed package is still the same name, ical-2.3.1patched.

The LAME package has been upgraded from version 3.93.1 to 3.96.1. This package has the 'lame' executable, and previously I had compiled it without the shared library file libmp3lame.so. However, another application needs the shared library file, so recompiled and took the opportunity to upgrade. LAME is for encoding (creating) MP3 audio files, and is used by many applications, including RipperX and SOX.

The sound conversion library and utilities package libsndfile, version 1.0.16, is now in Puppy. The reason for this is I like the mhWaveEdit sound recorder/editor much more than the XS application provided with the Snack package, and mhWaveEdit can use libsndfile for opening and saving in all the file formats that libsndfile supports. Libsndfile also has utilities sndfile-info, sndfile-convert, sndfile-play, sndfile-request and sndfile-regtest. The Unleashed package is libsndfile-1.0.16.
Actually, I'm in two minds about whether the extra 400K of libsndfile is really necessary, so I have created two Unleashed packages of mhWaveEdit, compiled with and without support for libsndfile. For the next release of Puppy I'll go for the 'without', to save space.

June 14

I have upgraded the Tcl/Tk libraries from version 8.4.2 to 8.5a4. My main reason for doing this is to get font antialiasing, which gets automatically applied to all the Tcl/Tk GUI apps and gives them a more modern appearance.
I am working through testing the Tcl/Tk apps for compatibility with the new library. Mostly okay, some apps have issues.

PHV (Puppy HTML Viewer), the HTML file viewer that I was working on over a year ago, looks real nice with the antialiased fonts. It is available as a PupGet package and you also need the Tkhtml2.0 PupGet package.
Klhrevolutionist mentioned on the Forum that there is now Tkhtml3.0, but I found it is not compatible with my PHV program. probably easy enough to fix. Note, the Tkhtml3.0 source package dontains a "HV" demo HTML file viewer, but it it not as good as mine! -- it also has more dependencies, such as the Snit library.
In some respects, my PHV program is better than Dillo. Yeah, maybe I'll work on it again!

June 13

Jesse's MUT (Media Utility Tool) is upgraded from version 0.0.8 to 0.0.8a. It is a little hack to fix a problem with incorrect recognition of a swap partition in Puppy2.

As reported in the News for June 11, rerwin discovered a solution to the SmartLink modem "grab" problem. But, it still didn't work. Our conversation is to be found in the developer's forum:
After examining error messages from the Modem Wizard and googling, rerwin found another issue and how to fix it -- it turns out that the readme file supplied with the source tarball has wrong information, and it was only by googling and chancing upon a conversation between someone from Smartlink and someone from Fedora that the fix has been found ...sigh.
Anyway, much thanks to rerwin. I'm implementing the fix, so hopefully v2.01 will be fine. I had to edit /etc/rc.d/rc.network, /usr/sbin/modem-wizard, the pinstall.sh script in the slmodem-2.9.11patched-k2.6.16.7 Unleashed package and used mknod to recreate the slamr0-3 and slusb0-3 devices.

Note that the SmartLink drivers can be used for other (non-SmartLink) modems. I did read somewhere that SmartLink have put a restriction in their latest drivers so that they only work with actual SmartLink modems, but rerwin posted an example of one workaround, for the NetoDragon modem.

Jesse reported that USB drivers were not getting loaded on his PC and he found the fault in 'init' script in the initial ramdisk. Our discussion is on the Developers' Forum:
I have improved the script.

While on the subject of USB, I found out what went wrong with USB detection when the Universal Installer is used to install Puppy to hard drive, full installation (what we call 'option 2').

June 12

I compiled Xfmedia media player. This uses the Xine library, same as Gxine, and is very similar in features and performance, except doesn't seem to have full-screen video. Gxine has more configuration options and overall seems more polished -- but Xfmedia is an on-going project, part of the Xfce window manager suite, and will steadily improve. Anyway, it is nice to have a choice, and I have made it into an Unleashed package, xfmedia-0.9.1, and it will be a PupGet package installable when Puppy 2.01 is released.

I also compiled the latest mhWaveEdit, a audio recorder and editor. Due to limited available libraries in Puppy, it only handles mp3 and wav files, but it could be expanded in the future. I did test mhWaveEdit a couple of years ago, and if my memory serves me right, it was buggy. This latest version works well.
I'm contemplating using mhWaveEdit in place of the Snack-based XS audio recorder/editor, although the latter does have the advantage that it handles many audio file formats and can be used to convert between file formats.
This also is an Unleashed package, mhwaveedit-1.4.8.

June 11

It has been reported on the Forum that the SmartLink modem driver does not work. There are two drivers, slamr and slusb, the former for serial modems, the latter for usb modems, and the only feedback so far is about the slamr driver.
rerwin (forum name) has helped out here by doing some detective work. This is a known bug. Apparently the winmodem identifies itself to the Linux kernel as a true modem (which it isn't) and this causes the kernel to assign it to a serial port. When the slamr driver is loaded, it finds the modem is already "grabbed" and is unavailable. A program has been written, called ungrab-winmodem, which is a kernel module that has to be loaded just before slamr is loaded.
I have compiled ungrab-winmodem and edited /etc/rc.d/rc.network so that it gets loaded before slamr. I don't have a serial SmartLink modem to test, but this fix will be in v2.01 so you guys with SmartLink modems can give it a spin.

...well, why not test it right now. I have uploaded rc.network and ungrab-winmodem.ko to ibiblio:
Download them to these locations:
Then run these commands:

# depmod
then either reboot (if session is saved) or do this...
# rmmod slusb
# rmmod slamr
# modprobe ungrab-winmodem
# modprobe slamr

Just had an interesting thought... I wonder if the people who have a SmartLink serial modem are also the same people who reported a problem with puppyserialdetect? (see News for June 8)

June 11

Puppy v2.01 will have unclutter, a tiny utility application that auto-hides the mouse cursor when it isn't moving. I was told about this ages ago then forgot, and only now remembered it. It is an old application, last updated in 1996, but it is still very useful. People using Puppy for kiosk type of displays would like the cursor to be hidden, but the most popular reason is when using a text editor or wordprocessor (or web browser, etc.,) where the mouse cursor is sometimes in the way. It is launched from ~/.xinitrc every time X starts. I set the idle time to 3 seconds. The Unleashed package is unclutter-0.8-11 and I got the source from a Debian package archive.

But then I thought, some people might not like the mouse cursor disappearing from view after a few seconds idle, so have made it optional. The Mouse Wizard now has an extra checkbox to turn it on or off, default is off. The Keyboard/Mouse Wizard script is /usr/sbin/input-wizard. The effect is immediate, does not require a restart of X.

June 10

John Murga's popular 50M Opera-Puppy, that fits on a business-card-size-CD and is easy for those on dialup to download, is now in its first beta based on Puppy 2.00.
Look here: http://www.murga.org/~puppy/viewtopic.php?t=8557

Nyu has create a Chinese Puppy based on Puppy 2.00:

June 10

So much great stuff gets posted on the Puppy Forum! I don't mention most of it, as a lot gets reported in the Wiki Community-supported News page: http://www.puppylinux.org/wikka/LatestNews
Just a couple of recent really interesting items:

Bash-diff (in Puppy2) is Bash on steroids. Interested persons invited to get stuck into it: http://www.murga.org/~puppy/viewtopic.php?t=7531

Need wireless driver? http://www.murga.org/~puppy/viewtopic.php?t=8488

Hacao Linux, our Vietnamese flavoured Puppy, is now at beta1 based on Puppy2: http://www.murga.org/~puppy/viewtopic.php?t=8534

Regarding OneBone, could it be smaller? Definitely yes. I left in lots of packages that may not be required in a text-mode only system. You could probably sift through the packages.txt file and find more candidates for removal -- then use Unleashed to build your own OneBone. Note, sound support is still there (Alsa, Snack, wavplay), so OneBone can play music, but I did remove Xine.

June 9

OneBone Puppy version 2.00rev.1 is released. The live-CD iso file is puppy-onebone-2.00r1.iso and is 26.4M. This is a play-thing, requested by a few people on the forum, and definitely not for the average user. In other words, Linux commandline nerds only! Download from ibiblio.org.

OneBone does not have any X GUI applications. It does have Elinks web browser, Ytree file manager and MP text editor. The Lucent and SmartLink modem drivers are included (though there is an issue with the latter, see forum). The full list of packages is to be found in /root/.packages/packages.txt.

OneBone is a one-off from me, but it would be an interesting ongoing project for someone so inclined. There are lots of text-mode applications out there and a very interesting flavour of Puppy could be created, based on this starting point. Note that currently Puppy does not have mouse support in text-mode, but I found Elinks quite usable with the keyboard -- there is no text-mode Network Wizard, but I just ran "dhcpcd eth0" and I was connected to the Internet. For dialup, there are the text-mode wvdial and eznet.

Note also that the version of OneBone is 2.00 revision 1, as it includes the bugfixes mentioned below since the release of v2.00.

June 8

There has been some discussion on the Puppy forums about the missing 'bcm5700' network driver, that was present in the Puppy 1.xx series. We found that the 'tg3' driver works. This is currently not included in v2.00, but will be in 2.01. Quoting from http://www.broadcom.com/support/ethernet_nic/faq_drivers.php#tg3:

To better support users, Broadcom has been actively supporting, maintaining, and testing the in-kernel tg3 driver for well over a year. Broadcom has officially released the tg3 driver as a package, and the tg3 driver is now the Linux driver that Broadcom will support for the NetXtreme product line. Accordingly, Broadcom will discontinue support for the bcm5700 driver and no longer provide updates.
If you are really desparate to use the tg3 driver right now, it is in the 'all-modules' package at http://www.puppylinux.com/test/.

puppyserialdetect is a small program that detects the presence of serial mouse and modem. I posted this on the forum awhile back and invited testers, and all reports were that it works. However, after releasing Puppy 2.00 there have been two reports that puppyserialdetect hangs.
puppyserialdetect is called during bootup by /etc/rc.d/rc.local0, so if it hangs so does the bootup. I have modified the script to launch puppyserialdetect as a separate process and kill it if it doesn't complete after four seconds.

Puppy version 2.00 with Opera web browser is released. The live-CD iso file is puppy-2.00-opera.iso and is 70.1M. release notes:
If you bootup on a PC with an existing pup_save.3fs file (saved-sessions file from another Puppy2 release), then the desktop will be incorrect. As this is not a version update, no corrections are applied to an existing desktop layout or menu. Therefore, bootup on a PC without any pup_save.3fs file, or bootup with boot option "puppy pfix=ram" to run totally in RAM.

This is still version 2.00. Fixes, like the abovementioned 'tg3' driver, are not in it. But, the Modem Wizard fix did get in. If you have a PC with only 128M RAM and no Linux swap partition, tweaks for improving performance are still not there, and scheduled for v2.01 -- this release will load totally into RAM, freeing up the CD drive, but loading and running of Opera is a bit sluggish. The problem is that there is not quite enough free RAM and the kernel has to do a lot of juggling, which slows things down. What would improve speed is a swap file, which is what I might do for 2.01. At 70.1M, this is not the slimmer Opera-Puppy I was earlier contemplating.

June 7

Lior's great little freememapplet in the taskbar displays free memory and has a menu -- just left-click and there it is. One of the menu entries is "Help: what does this mean?", but as was pointed out in the forum, this just opens Dillo with an empty page. I fixed it, created a page that explains exactly what the value in the taskbar is showing, and what to do if it gets too low.

r_hughes reported that the wrong network driver got loaded, 'tulip' instead of 'dmfe'. The file /lib/modules/ shows that both drivers are suitable for the 1282:9102 chip (which is what r_hughes has), and Puppy just loads the first one, the tulip driver.
To fix this problem, I've created a little "cheat table" in /etc/rc.d/rc.modules. The first and so far only entry in this table has this:

dmfe 0x00001282 0x00009102 #r_hughes reports tulip module not work.

which will cause Puppy to use the dmfe driver instead.

If you are getting the wrong module loaded, or the module is not loaded at all although it is present, send me the vendor:chip numbers, a brief description of the chip model name and function, and the correct module.

How to find out the vendor:chip numbers? These are two four-digit numbers that uniquely identify the chip used in the PCI interface (video, network, pcmcia, or whatever). If you open a terminal window and type this:

# lspci -n

you will see all the vendor:chip numbers, but no identification as to what they do. For that, go to http://pciids.sourceforge.net and either look online or download the 'pci.ids' file. That should enable you to identify the network chip or whatever is the troublesome one. Then post the info to me, preferably via the forum.

June 5

I have compiled the latest stable release of Scribus, version Scribus is a superb desktop publishing application, however the print-preview in version 1.2.1 used in Puppy does not work. In the latest version, print-preview works nicely. I've made this into a Unleashed package and it will be available as a PupGet package with the next version of Puppy (2.01).

There was a report on the forum that the Modem Wizard is not working. I found out why. I had placed a little program into it called modem-stats (see news for May 19 below), which worked fine with the original modem I tested on. Testing on another modem however, is not so good.
Sending an "AT" command to the modem, modem-stats just hangs, which means that the Modem Wizard hangs. However, sending "ATZ" does produce an "OK" response. But, turn off the modem and try it, modem-stats hangs.
I need to find something better than modem-stats (or improve its source code), but in the meantime, if you are one of those experiencing trouble with the Modem Wizard, use a text editor to open /usr/sbin/modem-wizard and find the line with "modem-stats" then edit it:

#the above method used to work k2.4, not k2.6. now do it like this...
#no, with one modem at least, it hangs, also only works with atz...
#also hangs if modem unplugged or turned off (contrary to what docs say)...
#modem-stats -c "AT" $1 > /tmp/answer.txt
modem-stats -c "ATZ" $1 > /tmp/answer.txt &
sleep 2
killall modem-stats

Even if the Modem wizard does work with your modem, it is a good idea to try this code change to make sure that it still works, considering that I've made this change in the original source and it may be in the next Puppy release.

June 4

eSvn is a GUI frontend for the svn program, a subversion control system. I have made it into an Unleashed package, esvn-0.6.11-1 and have uploaded it to the pupgets folder at ibiblio.org. For the standard and BareBones Puppies, and all earlier Puppies, you will need to download it first and then use the PupGet package manager to install it as an alien package. It will not appear in the menu (not until the next release of Puppy with updated menus). The executable is 'esvn'.
It requires the 'svn' and 'qt' Pupget packages to be pre-installed.

June 2

BareBones Puppy version 2.00 is released. The live-CD iso file is puppy-barebones-2.00.iso and is only 39.9M. Download from ibiblio, see link in June 1 news below.

BareBones is especially for people on slow dialup Internet connection. What you get is a cutdown Puppy, with Dillo web browser only and Xvesa Kdrive X server only. The major applications such as Abiword and Gnumeric are removed. However, most small applications and utilities, plus the entire infrastructure and libraries, are present. After creating a pup_save.3fs personal storage file, get connected to the Internet and use the PupGet package manager to download whatever extra applications you need. Dillo for example is a pathetic web browser, but you can use PupGet to download Opera, Firefox or SeaMonkey. If the PupGet package manager does not have what you want, there may be a DotPup package that has what you want, such as a later version of Firefox. Though, in the cases of Firefox and Opera, you should be able to download the latest binary tarballs from their home download sites -- look in the Puppy Wiki for help on this.

I've got an idea for a tweak to further improve BareBones and other small Puppy iso's to run fast in less RAM, so I might release a 2.00-revision1 soon, rather than wait until 2.01.

I really love the new Opera version 9.0 beta2. Superb support for SVG. I like the 'fit to window' feature -- as I run 800x600, sites like distrowatch are too wide, but Opera can squeeze it to fit the window. Many other nice things. So, I created a live-CD with Opera and Amaya to replace SeaMonkey, and I'm running it right now, typing in Amaya.
But, I would like a bit more time before releasing a iso file. I would like to work on it for a few days, perhaps upload it by next Thursday or Friday (8th - 9th). I intend this iso to be slightly slimmer and well-suited to 128M PCs. I think John Murga is going to create an Opera-based 50M iso and I won't compete with that -- I'm aiming for around 65 - 68M.

June 1

Puppy version 2.00 is released. The 'standard' live-CD iso file is puppy-2.00-seamonkey.iso and is 70.0M. Smaller iso files, such as our "BareBones Puppy" will be released very soon. This is a major upgrade from the 1.xx series. How to summarise five months work? The graphical user interface is much the same, as most work has been on the underlying architecture. In a nutshell, the fundamental architecture and bootup-shutdown scripts are a total rewrite, from scratch, no relationship to any other distro. Release notes:

The files in Puppy2
Users of Puppy1 will have to become accustomed to new file names:
This is the persistent storage, where all your data, settings, email, installed packages, etc., get saved permanently. The ".3fs" means that the file contains a ext3 filesystem.
Puppy1 approx. equivalent: pup001
This is Puppy. The builtin applications, window manager, scripts, everything. The ".sfs" means the file contains a squashfs compressed filesystem. The "xxx" is the Puppy version number without the dots, for example "200".
Puppy1 approx. equivalent: usr_cram.fs
The initial ramdisk. This is a small filesystem that loads into ram and is executed first at bootup.
Puppy1 approx. equivalent: image.gz
This table is an extract from "How Puppy works", a webpage that explains the architecture of Puppy2 in some depth. Srongly recommended that you read it:

RAM-challenged PCs
The 'standard' live-CD has become a bit fat and for PCs with 128M or less RAM (and no Linux swap partition) one file (pup_200.sfs) is mounted from the CD, not copied to RAM. This means that the CD/DVD drive is not free for other uses and also Puppy will run a bit slower.
However, there is a simple solution, that will result in very fast boot time, frees up the CD/DVD drive after bootup, and causes Puppy to run very fast! See the notes below, dated May 31.
This simple fix is recommended for PCs with any amount of RAM, even if you have oodles, like 1G, as it speeds the bootup time from CD.

Hardware detection
We are getting close to rivalling the likes of Knoppix for automatic hardware detection. The intention is that if you install Puppy to a portable media such as USB Flash pen drive, or save sessions to a multisession-CD, you will be able to take that media to another PC and have the new hardware autodetected -- in other words, it won't be statically set for the hardware of just one PC. We are getting there... sound, mouse, network are just about there. Currently you would need to choose Xvesa Kdrive X server for portability.

Burning to CD
The iso file can be burnt to CD-R or CD-RW using most Windows or Linux CD-burner programs. If you want to use it in multisession mode (sessions get saved back to CD-R), then be sure the CD-burner program supports multi-session burning (leaves CD "open" for further tracks to be burnt later).

Burning to DVD
You need a Linux DVD-burner program, such as Burniso2cd in Puppy -- this program burns the DVD "open", so that it can be used normally or as multisession. There was a report on the forum that DVDDecypter (www.mrbass.org/dvdrip) works okay in Windows, but beware, many Windows DVD-burner programs will not burn the iso file correctly.

Multisession CD/DVD
Now works extremely well, but note that DVD still is the superior choice. See note above for burning CD and DVD 'open'.
For the multisession-CD, there is one problem with laptop drives. Sometimes at shutdown, when the session is being saved back to CD, the drive tray opens then closes before the actual save -- or rather, that is what happens with normal drives. The laptop drive can only be closed manually, so if the tray opens just before the actual save, you have to manually close it. I will try to determine why this happens and fix it.

If you have a pre-existing pup_save.3fs file, from using earlier alpha-releases of Puppy2, it will now be upgraded automatically. However, I recommend that you first boot up the new CD totally in RAM, by the boot parameters "puppy pfix=ram" to get a feel for how the new Puppy2 works, and you can then try a normal reboot and see if the upgrade works and gives you a correctly updated working environment.
If you want to upgrade from Puppy1, that is, you have a 'pup001' file somewhere, there is a script for importing from it. Open a terminal window and type "importfrompuppy1". This script is pretty bare-bones and I would like help with improving it.

You can find the 'standard' Puppy version 2.00 iso file, puppy-2.00-seamonkey.iso, via the Puppy Download page:
Download the complete set of modules for the kernel, patched kernel source, also the latest devx_200.sfs compiler file: http://www.puppylinux.com/test/

Puppy Unleashed
The complete Unleashed tarball (247M), as well as the 'core' tarball (11M), is available at:
For further information on Puppy Unleashed:
Mark Ulrich has kindly provided this fast mirror: http://dotpups.de/puppy-releases/2.00/

May 31

As mentioned in the release notes for the May 24 beta1 release, the standard Puppy iso is getting too fat to run properly in a PC with only 128M RAM (and no Linux swap partition). If the guts of Puppy, the pup_xxx.sfs file, is loaded from CD to ramdisk, there isn't enough free RAM for Mozilla to run. So, the beta1 release leaves pup_xxx.sfs on the CD and mounts it from there -- meaning that you can't use the CD/DVD drive for anything else, and Puppy will run a bit slow due to the continual CD accesses.
We plan a couple of slimmer releases of Puppy2 that will load totally into RAM on a PC with only 128M total RAM space. However, the standard release now has a workaround:

When you boot from CD, it remains mounted and the mount-point is /initrd/mnt/dev_ro1. The hard drive partition that has the saved personal file pup_save.3fs is mounted at /mnt/home, or if this is the very first boot of Puppy, use Pmount or MUT to mount the partition where you intend to create the pup_save.3fs file. Using ROX-Filer, drag pup_xxx.sfs from the CD to the hard drive partition. Then unmount the hard drive partition if you had mounted it.
At next boot, pup_xxx.sfs on the hard drive partition will be discovered and used instead of the copy on the CD.
It's not too difficult to do, and you only have to do it once, and the reward will be the CD drive becomes free and Puppy will run faster.

Here's a new review of Puppy and interview:

May 31

I fixed a bug with the Ethernet/Network Wizard. It was not displaying loaded drivers. I found that I had corrupted the format of /etc/networkmodules (there should not be any space character in column 1).

I've tracked down some modem bugs. There is a bug in the Modem Wizard that caused the 'ttyLT0' button not to display after the Lucent driver PupGet package was loaded. Fixed.

May 31

My new PC (see May 25 news below) has some compatibility problems. Neither sound nor SATA work.

The sound chip is ADI AD1986A and ALSA does have a driver for it, which Puppy Loads at bootup. Puppy then executes the 'aplay' program to play a sound, however 'aplay' hangs, thus bootup hangs. This problem was reported by a couple of people on the forum and it is good that I have got the same bug as I have now devised a workaround. For those of you using the May 24 Puppy2 and have this bug, type ctrl-c to quit aplay and then booting will continue. I have modified the boot script so that even if aplay hangs, bootup will not.
The very latest version of ALSA fixes this bug, but Puppy2 is at the "freeze" stage and I will hold the upgrade of ALSA over to v2.01.

The ASUS P5V800-MX motherboard has the VIA VT8251 Southbridge chip and there is no Linux distro out there that will work with its SATA interface. There is a kernel patch available, which apparently needs a bit more work, and it seems the patch is targetted to be part of the official kernel for v2.6.18. So, probably we will have to target that fix for Puppy v2.01 or 2.02.

May 31

As we are currently having "forum problems", I decided to setup another "emergency" forum. This one is very interesting, it's E-Blah, written in Perl, with a flat file database (that is, doesn't use any SQL database). I like being independent of any SQL database, but is E-Blah up to the task? From all reports I could find, it seems so.
This one is for Puppy version 2 only, to avoid confusion and clutter. For users of 1.09CE, Grafpup, etc. who stumble onto this Puppy2 forum, I'll put links from it, to the appropriate forum.

Puppy 2 Discussion Forum: http://www.puppylinux.com/forum/

This forum requires registration to post, and registration activation requires email confirmation. This is for security reasons. E-Blah also supports GD::SecurityImage, which displays a raster image with characters that the user has to type in, deterring robots, however it seems my host's Apache server isn't setup right (I shall have to lobby them).

May 29

Tracked down some bugs in the remaster-CD script. The most serious caused essential files, such as vmlinuz, to be missing from the remastered CD.

On first boot, the assumption is now that you do have a scrollwheel mouse. There was at least one report that enabling the scrollwheel in Xvesa or Xorg for a non-scrollwheel mouse caused mouse malfunction, but this was a very small percentage of cases.

May 28

At bootup, if sound is successfully detected, the 'aplay' program is used to play '2barks.au', that barks twice. This happens at every bootup. There are two problems with this. One is that some people do not want to draw attention to the fact that they are booting Puppy. Second, it seems that some laptops get stuck in the 'aplay' program, barking forever, preventing the boot script from continuing.
The compromise is that the two barks will only happen at the very first boot, when the welcome splash window is put up. Subsequent boots, when you have created a permanent storage file, you will not get the splash window nor the barks. For those troublesome laptops, the barking will be continuous but only until you kill the welcome window -- at least Puppy won't hang.

May 28

The jwmconfig background-setter scripts in /root/.jwm/themes/ are wrong. I thought they had been fixed, but I must have overwritten them with the jwmconfig-0.2 package designed for 1.09ce, or something. They still use xli and write to /etc/background, also refer to images that aren't there. Fixed. I named the Unleashed package jwmconfig-0.2.1.

Lior has added more features to his nifty freememapplet, and it is now version 1.2.
('nifty' is a slang word, defined as "[slang] attractive, smart, stylish, enjoyable" in my Collins Australian Pocket English Dictionary)

May 28

The 'splash window' on first boot of Puppy2 beta1 (yes, the May 24 alpha has been promoted) was fairly basic. I've simplified it and made it look nicer with some graphics. Dillo's rendering is primitive and inaccurate, so had to take that into account.

May 27

MU has fixed a bug in Dillo, that caused the forward and back buttons not to work. I have compiled his latest source, but left the Unleashed package at the same name, dillo-0.8.6teki-mu.

Rarsa has written a great little volume control for the taskbar. I've named the Unleashed package mini_volume-0.1. This is great, this is something most useful.

May 26

Geany text editor is now upgraded to version 0.7 beta1. V0.6 has a bug: all files inside /proc open as empty. Also, the implementation of code folding was only partially implemented for Bash/Ash scripts: only for comment lines. Enrico has now implemented folding for functions in Bash/Ash scripts.
I asked Enrico if he could implement color syntax highlighting for Tcl/Tk and he has done that also, but requests feedback as he knows nothing about Tcl/Tk.
I expect this beta version will be in the next release of Puppy, Puppy2 beta2.

Lior Tubi has greatly improved the taskbar applet that displays free memory, and named it freememapplet. As reported in the forum, the reported size is not always accurate, in particular when running from a USB pen drive, as the applet reports the sum of temporary storage in tmpfs ramdisk and permanent storage in the pup_save.3fs file. So, I created a script, /usr/sbin/calcfreespace.sh, that performs a more accurate calculation and modified Lior's program to execute that. The Unleashed package is now freememapplet-1.1.

May 25

Today I placed an order for a "barebones" PC with 160G SATA2 hard drive. Will pick it up on Tuesday, so will be able to do some SATA testing for Puppy2 beta2 (followed by Puppy2 final hopefully shortly after). Thanks to people who have purchased CDs and made donations -- I've now got enough for this system, plus plan to buy more stuff for testing a bit later.

The specs: Celeron-D 2.66GHz, Asus P5V800-MX motherboard, 512M DDR RAM, Western Digital 160G SATA2, LiteOn DVD burner, Dpc CX0756R case. Total price assembled and tested A$473.

My apologies to people who have recently ordered a CD. Let's see, five orders since May 18, have not yet been processed, as I was waiting on releasing Puppy2 -- as well as Pup1 CD you will be getting a bonus Pup2 beta CD gratis. I'll force myself to sit down tomorrow morning and burn CDs...

May 25

Billstclair has a mirror of Puppy2 alpha May 24:
"My mirror is up at http://s3.amazonaws.com/puppy/puppy2.html . Amazon is usually fast. If people use the torrents, it will save me some bandwidth cost."

MU also has a fast mirror site:
The link to the md5sum of the developper-addon is wrong, here is the correct one:
I also uploaded a modified devx_004.sfs, where I renamed /usr/lib/qt to /usr/lib/qt-renamed.
Like that it should be possible to use it together with megapup003.
http://dotpups.de/isos/devx-qt-renamed_004.sfs.md5.txt "

May 24

Puppy2alpha-24may06 is released (70.1M). This is not an official release, it is for Puppy testers.
This release may be upgraded to 'beta' if it looks fairly solid. Release notes:

Download the iso from here: http://www.pupweb.org/test/
Download the complete set of modules for the kernel, patched kernel source, also the latest pup_004.sfs compiler file: http://www.puppylinux.com/test/

There is a special forum for puppy2 development. Report here any bugs, I also want to know about success stories!
Forum URL: http://www.puppylinux.com/nfphpbb/
Puppy2 discussion also takes place on the regular forum: http://www.murga.org/~puppy

If you have a pre-existing pup_save.3fs file, from using earlier alpha-releases of Puppy2, it will now be upgraded automatically. However, I recommend that you first boot up the new CD totally in RAM, by the boot parameters "puppy pfix=ram" to get a feel for how the new Puppy2 works, and you can then try a normal reboot and see if the upgrade works and gives you a correctly updated working environment.
If you want to upgrade from Puppy1, that is, you have a 'pup001' file somewhere, there is a script for importing from it. Open a terminal window and type "importfrompuppy1". This script is pretty bare-bones and I would like help with improving it.

RAM problem
On the subject of bare-bones, there will be a BareBones Puppy2 released along with the standard one, maybe even a Chubby Puppy.
There is a problem, Standard Puppy is becoming too fat, and although it can all load into RAM on a PC with only 128M RAM (and no Linux swap partition), Mozilla is very slow. So, I'm forced to leave a file on the boot CD to give enough working space in the RAM. Most people into using Linux will have a swap partition, so won't have this problem. For those for whom it is, the solution will be to use BareBones. There is another solution, which is to copy the pup_004.sfs file off the CD to the hard drive and mount it from there -- this could be done automatically and it is on my to-do list, high priority.

Feature freeze
It's just about frozen now. There's lots happening, such as Pakt's work on booting from PCMCIA, etc., but time is dragging on and yesterday I decided to freeze it and just fix bugs. The next lot of exciting things are targetted for v2.01. Though, the above-mentioned improvement for a 128M PC will be in v2.00.

May 22

The uClibc root filesystem used to compile the initial ramdisk has been uploaded to http://www.puppylinux.com/test/. The file is 27M and expands to a 295M ext2 filesystem that can be mounted with a loop device. Once mounted, it can be 'chrooted' into.

May 22

A major rewrite of hardware detection and module loading. I have thrown out the 'scanmodule' program and the 'libhardware' module database. Most of the changes have taken place in the /etc/rc.d/rc.modules script.
Detection of the correct sound module is now very fast and fully automatic -- in fact, it is also portable and the correct driver will load when the CD/DVD or Flash drive is booted on different PCs. However, this autodetection is only for PCI sound interfaces, not legacy ISA-bus sound cards for which the Alsa Wizard will have to be run after bootup.
Detection and loading of the correct network driver is also improved.

May 21

Rarsa created an Unleashed package for the client application of SVN, named subversion_client-1.3.1. As we are moving toward using SVN for Puppy development, I have made this package an official member of the Unleashed suite, meaning that it will be installable using the PupGet package manager. I tidied up the package slightly, adding a small help file and a keyword file, plus a couple other small changes.

Lobster has created a new Puppy2 home page for the web browser, based on that in Puppy 1.09CE. I've placed this in /usr/share/doc/home.htm and set Seamonkey to start with this page.

I created an Unleashed package for MU's pb_debianinstaller-alpha09. As I had compiled Dillo with "--sysconfdir=/etc", the config files dillorc and dpidrc are located in /etc. For consistency I also placed debianinstallerrc into /etc, which meant that I had to edit /usr/local/PB-Debian-installer/pb-debianinstaller script.

May 20

Dillo v0.8.6 has been patched for Xft (antialiased fonts) and i18n (internationalisation) support by Kiyo (see link further down) and MU has added further patches to support the Debian Installer. I have compiled it and created Unleashed package dillo-0.8.6teki-mu.

Thanks to pop-pop who got his trackball working in Puppy2. It required a simple change in /etc/rc.d/rc.local0.

The following modules have been added to /etc/networkmodules: atp, hamachi, sb1000, sis190, axnet_cs, de2104x, uli526x, airo_cs, atmel, atmel_cs, atmel_pci, ipw2100, ipw2200, orinoco, orinoco_pci, spectrum_cs, wl3501_cs, hostap_pci, hostap_cs, prism54.

/etc/networkmodules is used by the Network Wizard, however the 2.6 kernel has better information that may enable loading of the correct driver without needing this part of the Wizard. Or, the Wizard can be redesigned without needing the /etc/networkmodules file. This is a work-in-progress.

May 20

It took awhile, but I compiled the Smart Link modem driver for the kernel. There were compile errors, but I eventually found patches. Same situation as for the Lucent driver, this will have to be downloaded and then installed with the PupGet package manager. The Unleashed package is slmodem-2.9.11patched-k2.6.16.7.

May 19

The Modem Wizard is now working. I could not figure out why echoing "AT" to a serial port no longer works, however I found a neat little utility application that does it. I considered using picocom, which is already in Puppy, but I found modem-stats, a very small program for sending Hayes commands to a modem. Characters returned from the modem go to the console. This works great and is now used in the Modem Wizard. The Unleashed package is modem_stats-1.0.1.

May 19

The Lucent linmodem driver has been compiled for the kernel in Puppy2. The Unleashed package is ltmodem-2.6.8alk-k2.6.16.7. This will not be in the live-CD but will be able to be installed by the PupGet package manager (obviously, if you don't have Internet access from a running Puppy, you will have to download it some other way, then PupGet can install it). I have streamlined the installation, such that the driver is loaded and ready to use as soon as it is installed, and a reboot is not required.

The Modem Wizard, however, is a headache. It tests for presence of a modem by sending a "AT" command to the serial port, and if modem is there is responds with "OK". At least it does for the 2.4 kernel. For the 2.6 kernel, what gets returned is multiple echoes of "AT" and carriage-return/new-line characters. I spent a couple of hours puzzling over it, no resolution yet.

May 18

I have not had Internet access since May 14, except from a public library. Now I'm back home and can upload this page!

Puppy 109 Community Edition is released. This is a release of Puppy that follows on from version 1.0.8 and is created by a team of Puppy enthusiasts. It has many enhancements and features. Here is the announcement and download links:

May 16

The first attempt at a script to import settings and personal files from Puppy1 to Puppy2. The script is /usr/sbin/importfrompuppy1.

May 16

Tempestuous requested that if "nopcmcia" boot parameter, then pcmcia drivers and card manager should not be started. I have modified /etc/rc.d/rc.modules to read the boot commandline /proc/cmdline and check for "nopcmcia".

May 15

TheKaz (Ric) has been attempting to use the devx_003.sfs file with the multisession-CD/DVD. I had given instructions that the file should be burnt to "/" in the CD-R/DVD-R, however that did not work. I have fixed it so that it does work, with the proviso that there must be a Linux swap partition. Using devx_003.sfs requires a lot of working space for compiling, hence the requirement for the swap partition.

Which reminds me: good news, lio2b tested reducing the size of a ntfs partition using GParted, and Windows XP was still functional afterward. So, if your hard drive is just one big ntfs partition, consider shrinking it a little and making a Linux swap partition (500M at least, 1G would be excellent). If you want to save sessions to hard drive, consider also a little fat32 or ext3 partition. Note: you do this at your own risk!

May 13

I have written a page about Puppy Linux and the OLPC project (One Laptop Per Child):

May 13

Puppy 1.09 Community Edition has settled on Geany v0.5 text editor to replace Beaver. I was going to put Medit into the next release of Puppy2, but comparing it with Geany, so far Geany is in front. Medit is bigger and there is nothing oustandingly better than Geany. I'm running Puppy2 right now with Geany v0.6, and at this stage this looks like the one that will be in Puppy2 beta. Medit will be a PupGet package.

May 13

The sysfs filesystem is now mounted on /sys at bootup. This required an entry in /etc/rc.d/rc.sysinit and an entry in /etc/fstab, however many other scripts had to be made aware of the new directory. They are: /usr/sbin/snapmergepuppy, /etc/rc.d/rc.shutdown, /usr/sbin/puppyinstaller and /usr/sbin/remasterpup2.

May 12

There is a handy feature of Puppy2 that was mentioned earlier in this News page, however it is worth reiterating as I don't think testers are aware of it. You know that the personal data file is 'pup_save.3fs', however it can actually be any name like this: 'pup_save*.3fs', where the '*' is any string. The reason this is good for Puppy2 testers is that you can have many of these files and choose the one you want to use at bootup.
Say for example, you have compiled various packages in one pup_save.3fs file and you now want to start with a clean slate but may want to go back to the older file sometime. Or, you have downloaded a new Puppy2 alpha, and need to start with a clean slate but same situation, you may want to go back to older pup_save.3fs files.
At bootup, if Puppy finds two or more 'pup_save*.3fs' files (in the same location) then a menu is offered. This menu also has the choice of 'nothing' in case you want to bootup totally in ram. You should not rename a pup_save.3fs file while it is in use (although I have done it in a ext3 f.s. which seems able to recover from such misuse), so boot Puppy in ram ("puppy pfix=ram") then find the file and rename it, to say 'pup_save1.3fs'. Create a new pup_save.3fs at shutdown and when you next bootup you automatically get a menu and you choose the one you want.

I have reverted Dillo to the "original" patched source from teki.jpn.ph/pc/software/index-e.shtml, as the version used in the May 7 alpha cannot handle plain text files. Dillo's primary purpose in Puppy2 is as the internal Help viewer. This reversion will probably make it less compatible with the Debian Installer, so that is something we will have to work out in the future -- for example, it will be acceptable if Dillo can be made to identify any file with extension .txt and open it internally (or with an external text editor) while all other files with plain-text mime type will be handled in a manner compatible with the Debian Installer. The new Unleashed package is named dillo-0.8.5teki.tar.gz.

May 12

Now that pakt's WakePup2 is in the live-CD, it needs a frontend GUI, so I have written one, that is run from the menu "Setup --> WakePup create boot floppy".

The Puppy Universal Installer has been upgraded to integrate usage of GParted and WakePup.

May 11

I'm jubilant! A couple of days ago I purchased a Astone 512M USB Flash "key" drive, a beaut-looking little thing with extruded-aliminium case. It cost just $31 Australian, which is about $24 US. Note, I already have a 128M Astone, that has served me well for over a year.
Anyway, I ran the Puppy Universal Installer, but could not get it to boot. Tried all the different MBRs. When the PC powers-up, there is a message on the screen "Boot error" and that's it, stopped. I've been working on this problem all day, and began to wonder if there is something wrong with the way the drive is partitioned, that confuses the BIOS -- note, I was able to boot using pakt's WakePup2 boot floppy disk. I decided to wipe the existing partition and remake it, and this was successful -- I'm running it right now. Here is what I did:

  1. Since I had been messing around with various MBRs, I decided to put in the one provided by the Syslinux package, as that is most likely to have been designed thoughtfully for booting off:
    # probedisk    <<<to check flash drive letters, probably sda
    # cd /usr/lib/syslinux
    # dd if=mbr.bin of=/dev/sda
  2. I then ran GParted and deleted the partition on /dev/sda, so there is a "clean slate" to work with. I then created a new FAT16 primary partition, to fill the entire space, clicked the icon to write the change to the drive, then set the "boot" configuration flag for the partition. (No need for more detailed explanation, GParted is pretty simple to use!).
  3. I then ran the Puppy Universal Installer, and followed all the default steps to install Puppy to partition /dev/sda1.
  4. Rebooted, and yippee!
However, we cannot break out the shampagne yet! I tested the Flash drive on another PC, and got the "Boot error" message -- that PC has Award BIOS dated 2002 and USB1.1 -- well, I don't recommend booting from a USB1 system anyway, as it is so slow.
I would like to know if the above steps work for other troublesome USB Flash drives. Try it and report to the Forum! (use the Puppy2 alpha May 7 snapshot)

May 10

Thanks to kwiller who has upgraded jwmconfig to version 0.2. So we now have Unleashed package jwmconfig-0.2. JWM version 1.7 has also been modified -- the <tray> tag contents is extracted from .jwmrc to a separate file, .jwmrc-tray, as kwiller's config program edits that separately.

May 10

Melmo reported that the firewall is "partially broken". When I tested the firewall, it seemed okay, as it passed its own sanity test, however after rebooting, /var/log/messages had a report that module iptable_nat.ko has missing symbols. It was easy to find the cause -- typing "modinfo iptable_nat" showed the dependent modules are ip_nat, ip_tables, and ip_conntrack, and are quick check showed that ip_nat is missing.
When I supplied the missing module and run "depmod", then "modprobe iptable_nat", all was fine. So, the missing module won't be missing in the next release of Puppy2.

MU's /usr/sbin/findhostbridge scripted has been updated to the 10th May version.

May 9

Thanks to GuestToo who did some detective work and found out why Roaring Penguin PPPOE was crashing at shutdown. The utility application /usr/bin/setsid, from the util-linux package, was missing. Developer Forum thread: http://www.puppylinux.com/nfphpbb/viewtopic.php?t=21

MU's temporary mirror for latest Puppy2 alpha snapshot:

Billstclair has also mirrored
the ISO, devx_003.sfs, and all-modules at:

May 7

Puppy2alpha-7may06 is released (68.9M). This is not an official release, it is for Puppy testers.
Release notes:

Download the iso from here: http://www.pupweb.org/test/
Download the complete set of modules for the kernel, patched kernel source, also the latest pup_003.sfs compiler file: http://www.puppylinux.com/test/

There is a special forum for puppy2 development. Report here any bugs, I also want to know about success stories!
Forum URL: http://www.puppylinux.com/nfphpbb/
Puppy2 discussion also takes place on the regular forum: http://www.murga.org/~puppy

I already found one bug with GParted -- I think it needs more utility apps from the e2fsprogs package to enable further capability. ...okay, I have just now examined the gparted source, seems it needs 'dumpe2fs' -- will put that in for the beta release. Nice thing about GParted, it scans the system at startup and uses whatever is found -- so if we want to add reiserfs support later, just need to install reiserfsutils package. Anyone want to be daring and resize their ntfs partition?

It is intended that the next release will be puppy2-beta, and this is the to-do shortlist:
  1. Improve the h.d. install of the Puppy Universal Installer. Pakt has done excellent work booting Puppy from floppy and other media, and this can be linked into the Installer script (see note on WakePup2 below).
  2. I will write a program to import personal data from Puppy1.
  3. Map the mounted "home" partition to /mnt/home, using k2.6 relocation feature.
  4. Turn on the upgrade mechanism.
  5. Apparently there is a generic ac'97-compatible modem driver for the 2.6 kernel. Will check it out.
  6. dumpe2fs from e2fsprogs package needed by GParted.
  7. Any required bug fixes.

May 7

Pakt's WakePup2 is now in the Puppy2 live-CD, replacing my older boot floppy image file. The new file is /lib/wakepup2.img -- not gzipped as everything gets compressed anyway.
I will be writing it into the Puppy Universal Installer, but I have to upload the next snapshot today, as tomorrow I will be back home, without ADSL access -- meaning that I haven't had time to update the Installer. There is also reported a bug with USB install, but same situation.
I will work on the Installer during the week, and it should be fully functional for the beta release. Anyway, you can still use WakePup2, just copy to floppy disk like this:

# dd if=/lib/wakepup2.img of=/dev/fd0

WakePup2 is a great little floppy boot disk creation by pakt (Paul), that scans the system and will locate and boot Puppy2 from USB, CD, or hard drive. This is particularly useful if you have installed Puppy to USB pen drive or burnt to CD but the PC won't boot from those devices.

I've upgraded lior2b's miniXcal to the updated release (dated April 30, pm). The Unleashed package is minixcal-1.0.

May 6

I have been discussing the Puppy2 remaster-CD script with Samoyed on the Developer Forum, this thread: http://www.puppylinux.com/nfphpbb/viewtopic.php?t=126
The script works, except that /root/.packages/packages.txt ends up as zero bytes on the CD, which causes the PupGet package manager to not work.
As the remaster script compresses all user-installed PupGet and DotPup packages into the pup_xxx.sfs file, the contents of alienpackages.txt and livepackages.txt (that is, the records of usr-installed packages) get merged into the one file, packages.txt on the live-CD. I found the bug and fixed it, and also put in some syntax checking for the alienpackages.txt file -- in case a package author has written an install script that writes incorrectly to alienpackages.txt.

This remaster-CD script is great. Install what you want, remaster the CD. The script is very easy to use and most importantly requires very little working memory -- I have been testing it with Puppy running totally in ram.

May 5

The kernel patched source is available here: http://www.puppylinux.com/test/

May 5

Phil Tuckey reported some difficulty with booting Puppy2 using GRUB, where initrd.gz (initial ramdisk file), vmlinuz (the kernel) and pup_xxx.sfs (all the Puppy files) are in a hard drive partition. He succeeded, then saved the session direct to the boot partition.
Say the partition is /dev/hda2, then the situation looks like this:

 partition hda2
all saved sessions here, including file /etc/puppyversion.

I mention file /etc/puppyversion as that always gets saved at every session, and Puppy looks for it at bootup to determine that the partition has saved Puppy files in it.
Note, the files initrd.gz, pup_xxx.sfs and vmlinuz could be in a folder, say /boot, as long as GRUB is configured appropriately.

Phil reported that Puppy was starting with PUPMODE=7 and it wasn't working correctly. I have fixed that, also have defined another mode, PUPMODE 6, in which Puppy will run in Phil's situation.

Someone asked recently how these PUPMODE numbers are assigned. It is a number where each bit ( ... 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) is a flag:

0 1 using tmpfs top layer (/initrd/pup_rw) of union.
1 2 boot partition (PDEV1) has puppy sessions saved in it.
2 4 pup_xxx.sfs file exists on boot partition (PDEV1)
3 8 pup_save.3fs file exists (sessions saved to file).
4 16
5 32
6 64 multisession flag.
For example, the multisession CD/DVD runs with PUPMODE=77, which is 1+4+8+64. You see, it is quite logical!
In Phil's case, Puppy will run in PUPMODE=6 (2+4), as the saved sessions are on a fast media with unlimited write capability so no need for a tmpfs top layer in ram. Note, a tmpfs top layer is an intermediary to hold the working and new files & directories, and is only really needed where we have to restrict writes (ex: flash memory) or where the session is to be saved to very slow media or at specific times (burning a track to multisession CD), or we deliberately want to run totally in ram (as in the very first bootup of Puppy).
A full hard drive installation ("option 2") will run in PUPMODE 2.
The decision which mode to run in is made in the first boot script, /initrd/sbin/init. Though, in the case of a full h.d. install, the initrd.gz is not used at all and the first script that runs is /etc/rc.d/rc.sysinit -- in that case, Puppy assumes PUPMODE=2.

May 4

We were discussing loading of the correct AGP kernel module in this thread:
An outcome is that Mark Ulrich wrote a little script to compare the vendor:chip ids returned by lspci with the vendor:chip ids in the aliases returned by modinfo, and calculate the correct AGP driver to load. For example, for my SiS motherboard chipset, the correct driver is sis-agp.ko.
Marks' script is /usr/sbin/findhostbridge and I have called it in /usr/X11R6/bin/xwin -- I'm trying to keep the X-specific loading stuff as much as possible in xwin.
I wasn't sure whether the -agp.ko driver needs to be loaded for Xvesa Kdriver X server, but have done so anyway.
Also, would it be required for the VESA framebuffer kernel driver? Currently Puppy is starting up in the basic 80x25 text mode, but if we chose one of the framebuffer graphics modes (by specifying the vga= kernel boot parameter), would the -agp.ko driver be required?

What is so important about the above? The problem has been Intel i810-family video not working properly. With the intel-agp.ko driver loaded, before the i810 Xorg driver loads, the video works properly. The above is all about autodetecting and loading the correct -agp.ko driver for the particular hardware so video will work properly. We don't know how useful the -agp.ko drivers are for other vendor video hardware, but for Intel it is almost essential.

May 3

I'm rapidly back-pedalling over my earlier enthusiasm regarding NTFS write-support. I went to all the trouble of installing FUSE and ntfsprogs, to get the more reliable user-mode NTFS driver.
For the first time I have a borrowed PC here at home with Windows XP and a single NTFS partition to experiment with ...and it has not been good news. Running Puppy, I experimented with creating a 512M pup_save.3fs file in the NTFS partition, which did work. However, I played around a bit more, not sure exactly what I did, but when I booted the PC normally, without the Puppy CD, a message came up that the "NTLDR file is missing" -- that's bad. If I can stuff up the Windows installation, just doing a few simple things, then others are bound to also.

There is more bad news. This particular PC hangs doing bootup of the Puppy live-CD, just after attempting to mount the NTFS partition to look for a pup_save.3fs file. Puppy1, Puppy2, no difference, they all hang. I have to select the boot option to boot totally running in ram.
On the Puppy Forum we get regular reports that Puppy hangs at bootup, and I wonder how many of them are this same situation?

So, it's not a happy state of affairs. Not only am I back-pedalling, I'm thinking of a whole new approach, now that GParted will be in Puppy. In a nutshell, I'm fed up with NTFS and it gets the thumbs-down. I'm pretty cheesed off that Microsoft can get away with this, closed protocols and formats for products that are used internationally. The European Union is making some weak attempts to remedy this ...we live in hope.

The devx_xxx.sfs file, used for compiling C/C++ applications in Puppy, has been updated with header files for the new gtkmm, glibmm and libsigc++ libraries. It will be uploaded soon.

May 3

Lots of packages have been compiled (within Puppy, for maximum compatibility) and made into Unleashed packages: qtparted-0.4.5, libsigc++-2.0.17, glibmm-2.6.1, gtkmm-2.6.1, gparted-0.2.4, and inkscape-0.43.
...so, you can guess what to expect in the next Puppy2 snapshot!

May 2

JWM is upgraded to version 1.7.

The parted- Unleashed package now has the executables parted and partprobe, as well as the library libpart.

May 1

Continuing investigation of AGP, it's getting complicated. MU has made some discoveries:

May 1

More good news. Pakt and MU have solved a problem with using i810 video hardware in Puppy2. See thread in Puppy2 developer forum:
So, I have upgraded the i810_drv.o driver in Xorg. The kernel modules, in /lib/modules/ have the agpgart.ko driver, however MU found that the 'intel-agp.ko' driver is needed for the i810 hardware to work properly. There's a whole lot of other drivers in that agp/ folder, such as 'sis-agp.ko', that maybe also will improve behaviour of other video hardware, so I have put the complete folder into Puppy.

In the above thread, the guys loaded 'intel-agp.ko' manually, however, I need to figure out the best automatic method, that will also load any of the other '-agp.ko' drivers as needed to match the Xorg driver -- right now I'm hunting around collecting information. Looking at my Mandriva 2006 installation, the sis-agp.ko driver gets loaded, whereas in Puppy I don't have have it, with no discernable difference in behaviour. Would it be best to always preload sis-agp.ko when Xorg uses the SiS video driver? How will it affect the Xvesa Kdrive server?

Apr 30

Another one bites the dust! Jesse Liley has released MUT version 0.0.8, which has some fixes to work on Puppy2.

Lior Tubi has created a great little enhancement to the clock in JWM, called miniXcal. Clicking on the clock now brings up a calendar. I think someone mentioned awhile ago on the forum that this would be a good thing, as they could do that in Windows and it is very convenient. Thanks to Lior we have that convenience now also!

The kernel has been recompiled with FUSE support built-in (not as a module) and with 4K stacks disabled (using 8K stacks, same as the k2.4).

FUSE version 2.5.3 has been compiled and the library libfuse is now in puppy2. This is required for ntfsmount, the program to mount NTFS partitions such that files can be created.
The header files for libfuse have also been placed in devx_xxx.sfs, so the library can be used with other FUSE filesystems.

Puppy2 now has the utility applications mkntfs, ntfsmount and ntfsresize from ntfsprogs version 2.5.3. Ntfsmount requires libfuse from the FUSE package.
Ntfsmount enables us to mount an NTFS partition such that files can be created. According to the docs, it cannot always succeed, but if it fails to create a file no damage is done. In other words, we can't harm the NTFS partition by using it. I will incorporate ntfsmount into the rc.shutdown script to create a pup_save.3fs file.

Note, the kernel also has a NTFS driver, which I chose to be built-in. This is somewhat less mature but can safely use a pre-existing pup_save.3fs file. As it improves, it will eventually make ntfsmount unecessary.
Note also, the ntfsresize utility can be used to shrink a NTFS partition, for the purpose of creating Linux partitions. Apparently this utility is quite robust. I would like to incorporate this into the Puppy Universal Installer, but I don't know when this will happen, given the rather long to-do list!

Apr 30

USB mouse problem solved. I found a computer that exhibited the bug, and found the solution.
The init script (first script that runs at bootup) loads the kernel driver modules 'usbcore' then either 'uhci-hcd' or 'ohci-hcd'. I found that a one second pause ('sleep 1') after 'modprobe usbcore' fixed the bug. Peculiar, never had this problem with k2.4, haven't read anything anywhere about this being needed -- but then, most online docs about usb are somewhat out-of-date (and kernel docs -- hah! -- out-of-date, incomplete).
Nor do I know why some computers have this problem and not others -- haven't been able to discern a common factor. I'm disturbed that this was never an issue before, with our "good ol" 2.4 kernel, now I have to do what amounts to a gross hack.

If you are testing the April28 alpha snapshot, you should be able to verify by exiting from X then remove modules:

# rmmod usb-storage
# rmmod uhci-hcd    (or ohci-hcd)

Then reload:

# modprobe uhci-hcd    (or ohci-hcd)
# cat /proc/bus/usb/devices

That last line should show any USB mouse and keyboard. The mouse should also work when X is started.

Apr 29

Well, it seems something has gone wrong with USB mouse detection in the move to the 2.6 kernel. Heaps of bug reports for the 28th April snapshot "my USB mouse doesn't work!".
So, until I track this bug down, you will need to use a PS/2 or serial mouse.
There also seem to be some cases of wider USB non-detection.
If you would like to provide feedback about this, here is a forum thread:

There also seems to be a problem with writing to NTFS partitions. It is supposed to be enabled. It is enabled in the kernel, but it seems that just using "mount -t ntfs /dev/hda1 /mnt/data" does not allow file creation. I skimmed through the linux-nfts.org website too quickly, thought the driver now supports file creation, however on closer examination, the ntfsmount program is needed -- okay, it will be in the next snapshot.

Apr 28

http://www.kcore.org/?menumain=4&menusub=2 has this:


Hardware: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller - Winmodem.

This modem can be gotten to work using the Linuxant HSF Softmodem drivers. Unfortunately, they are payware.
They also have a limited-speed test driver, you can see if that works for you before deciding to buy the driver.

NOTE: You have to compile your kernel without CONFIG_4KSTACKS! If you use this driver with 4K stacks enabled, it _will_ crash your system!

This 4kstacks problem is a post-2.6.5 kernel issue. From the above, it seems this affects not only ndiswrapper!
It seems to be another case where the kernel developers are trying to improve performance, like the 100Hz versus 1000Hz interrupt, but it causes compatibility problems.

The option CONFIG_4KSTACKS isn't even in the .config file, but I found that the "Kernel hacking" option has to be turned on, then it is offered as a sub-option. It's default is "y".
So, if you test ndiswrapper, it may crash the kernel, with symptoms like frozen keyboard and mouse.

Apr 28

I forgot to include the ndiswrapper kernel driver in the latest puppy2 alpha. So, I have compiled ndiswrapper version 1.15. The Unleashed package with the executables and the kernel driver module are downloadable from here:

You will need to gunzip the module, install it to /lib/modules/, then execute depmod. The executables can be installed using PupGet or manually.

Note that the ndiswrapper package warns that the kernel is compiled with 4K stacks, which may cause some Windows drivers to crash. I need to recompile with 8K stacks, which will do for the next release of Puppy2.

Note also, I compiled ndiswrapper running Puppy live-CD, but I had to add some extra files to devx_003.sfs, in /usr/src/linux- An updated devx_xxx.sfs file will be uploaded soon.

Apr 28

Ted Dog has kindly mirrored the latest Puppy2 alpha 28th April 2006 here (66M):
f11b3a3ea4b211b6a9c8a79a3383b54b puppy2alpha-28apr06.iso

MU also has a temporary mirror:

Apr 28

Puppy2 alpha-28apr06 is released. This is not an official release, it is for Puppy testers.
Release notes:

Download the iso from here: http://www.pupweb.org/test/
Download the complete set of modules for the kernel, also the pup_003.sfs compiler file: http://www.puppylinux.com/test/

There is a special forum for puppy2 development. Report here any bugs, I also want to know about success stories!
Forum URL: http://www.puppylinux.com/nfphpbb/
Puppy2 discussion also takes place on the regular forum: http://www.murga.org/~puppy

It is intended that the next release will be puppy2-beta, and this is the to-do shortlist:
  1. Improve the h.d. install of the Puppy Universal Installer. Pakt has done excellent work booting Puppy from floppy and other media, and this can be linked into the Installer script.
  2. I will write a program to import personal data from Puppy1.
  3. MUT needs to be updated for Puppy2. I will do this too.
  4. Map the mounted "home" partition to /mnt/home, using k2.6 relocation feature.
  5. Turn on the upgrade mechanism.
  6. Apparently there is a generic ac'97-compatible modem driver for the 2.6 kernel. Will check it out.
  7. Any required bug fixes.
There are other longer term items on the to-do list, for example to upgrade all the core libraries, but this is tentatively set for Puppy 2.0.1.

Apr 27

JustGreg suggested a small improvement to wvdialshell script, that I have incorporated.

Apr 27

The ALSA Sound Wizard, which is a modified alsaconf script, runs at first bootup. I have modified the script so that if executed with the parameter like this: "alsaconf --auto", then no questions are asked. Previously, the script asked many questions, now at first bootup it just runs and you get two barks if successful -- this is great for users who often want to start Puppy running in ramdisk only, no prior saved configuration.
The full ALSA Wizard with all the questions is still available from the "Setup" menu.

Apr 26

I had a bit of a play, created a little taskbar applet that displays free memory. Regardless whether you have a pup_save.3fs persistent storage file, have Puppy installed to hard drive, or running totally in ramdisk, this applet displays a single value that tells you how many megabytes you have left. It displays as white text on a dark-blue background, which changes to dark red if memory drops below 20M, then flashes lightred-darkred if memory falls below 5M.
The applet's name is wmpupmem, and I used a Window Maker dockapp named wmapmmon as the starting point.
There is a problem with it though -- if I choose "Shutdown --> JWM restart", then the original instance of wmpupmem is still in the taskbar, but another one is created top-left of screen. If I keep doing "JWM restart", I can get more instances of wmpupmem. Do I need to do something to my program to prevent this? -- as Blinky and Xload don't do it.

Apr 26

I was concerned about the new block of x_tables modules and some older ip modules missing, however it appears all is well. One of the new modules is 'xt_state.ko', and the apparent old equivalent that is missing is 'ipt_state.ko'. However, when I run "modinfo xt_state" to get information about the module, it is reported to have the alias name of 'ipt_state'.
So, I ran the Firewall Wizard, it appeared to load all reuired modules and passed its own sanity tests.
Note, it appears, that x_tables is new for the 2.6.16 kernel.

Apr 26

I have recompiled the kernel with CONFIG_DVB=y, and all the drivers for digital video broadcasting as modules.
Also, set the base interrupt frequency to 100Hz, same as the 2.4 kernel, down from 1000Hz. This is something we have discussed on the forum, and I decided it is safer to use 100Hz for older computers. Forum thread: http://www.murga.org/~puppy/viewtopic.php?t=7589

Apr 25

Lior Tubi's wonderful Blinky network monitor is now upgraded to version 0.8.

As a temporary measure, I have restored the v6.8.2 i810 Xorg driver in Puppy2, as the one in v6.8.1 does not work very well. The April 11th snapshot has the v6.8.1 i810 driver, which I had gone back to as the v6.8.2 i810 driver has a resource leak.
So, when the next snapshot is released, your i810-based video should work, but you may find
that CPU usage of X climbs gradually -- run "Control Panel --> Top view running processes" to monitor this.
Note, I do plan to upgrade Xorg soon.

Upgraded Mark Ulrich's patched Dillo v0.8.5 to the April 24th release.

The iptables/netfilter kernel modules in kernel have changed from earlier 2.4 and 2.6 kernels. Some 'CONFIG_IP_NF_' configure options are missing, but there are a whole new bunch starting with 'CONFIG_NETFILTER_XT_', which generate a new bunch of modules, all starting with the name 'xt_', for example 'xt_conntrack.ko'. So, I've put many of the old modules that still exist into Puppy, and added all of the 'xt_' modules. Just guessing here, seems like what is needed.
For example, the configure option 'CONFIG_IP_MATCH_STATE' and its associated module is missing, but there is a new one, 'CONFIG_NETFILTER_XT_MATCH_STATE' with apparent matching module 'xt_match.ko', which seems to be the intended replacement.
Thing is, maybe I have to upgrade the iptables package to be able to use these changes.

I have updated dvw86's Trashcan to version 2beta. Note for developers, the trashcan is located in the rox_filer-1.2.2patched Unleashed package.

Joe's marvelous window manager JWM has been updated to version 1.6. The whole thing is still a single 125K executable.

Apr 24

The Ethernet/Network Wizard has been upgraded by rarsa to version 23.

I have compiled Transmission version 0.5, a small and very easy-to-use BitTorrent client. This is now an Unleashed package and will be in the next snapshot of Puppy2.
Transmission homepage: http://transmission.m0k.org/
Forum thread discussing Transmission: http://www.murga.org/~puppy/viewtopic.php?t=7418

Script /etc/rc.d/rc.update has been fixed to work in Puppy2. At least I think it has, not tested yet. This means that if you boot a new version of Puppy2 and there is already an existing personal storage file (pup_save.3fs or folders from a multisession-CD/DVD), then all critical system files are ensured to be updated.
This update script ensures that any boot, shutdown and some vital configuration scripts that have been modified by the user or a package installation are restored to pristine condition. Note though, this only applies to vital system files, and all normal configuration files, (for example, desktop icons and background image settings) are not altered.

Apr 24

The kernel supports safe writing to NTFS partitions (according to the documentation on the Linux-ntfs website), so Puppy2 now has full NTFS write-support enabled. This removes all the earlier restrictions, meaning that a personal storage file (pup_save.3fs) can be created on an NTFS partition just like any other. Also, Puppy can be installed to a NTFS partition just like previously possible to a MSDOS or VFAT partition(by option-1, also known as the "poor mans" install mode -- the Puppy Universal Installer will explain that!).

The Puppy Universal Installer needs a bit more work due to the move to the 2.6 kernel. The problem is that 'tiny.exe' from the Gujin package is used to create a boot floppy, and previously the Linux kernel 'vmlinuz' was also placed on the floppy. However, the kernel is now 1618K, too big for the floppy, meaning that it now has to be on some other FAT partition. The restriction to FAT partition is because tiny.exe is a MSDOS application and FreeDOS is used, which only recognises FAT partitions (msdos or vfat). The same thing goes if use Syslinux.
So, the Puppy Universal Installer can create a boot floppy with this restriction -- tough if your PC doesn't have a FAT partition into which to place vmlinuz!
However, the 'grubconfig' script can create a boot floppy, which is something I have not yet tried -- can look into integrating that into the Universal Installer script. Probably need to offer boot-USB or boot-CD modes as well as the boot-floppy.

Apr 23

The following modules have been added to Puppy2:

net/tulip/uli526x.ko                           ULi M5261/M5263 fast ethernet driver
net/tulip/xircom_tulip_cb.ko Xircom CBE-100 ethernet driver
net/wireless/ipw2100.ko Intel(R) PRO/Wireless 2100 Network Driver
net/wireless/ipw2200.ko Intel(R) PRO/Wireless 2200/2915 Network Driver
net/wireless/orinoco_nortel.ko Driver for wireless LAN cards using the Nortel PCI bridge
net/wireless/spectrum_cs.ko Driver for Symbol Spectrum24 Trilogy cards with firmware downloader
netprotocol/ieee80211/ieee80211.ko 802.11 data/management/control stack
netprotocol/ieee80211/ieee80211_crypt.ko HostAP crypto
netprotocol/ieee80211/ieee80211_crypt_ccmp.ko Host AP crypt: CCMP
netprotocol/ieee80211/ieee80211_crypt_tkip.ko Host AP crypt: TKIP
netprotocol/ieee80211/ieee80211_crypt_wep.ko Host AP crypt: WEP
net/wireless/hostap/hostap.ko Host AP common routines
net/wireless/hostap/hostap_cs.ko Support for Intersil Prism2-based 802.11 wireless LAN cards (PC Card)
net/wireless/hostap/hostap_pci.ko Support for Intersil Prism2.5-based 802.11 wireless LAN PCI cards
net/wireless/hostap/hostap_plx.ko Support for Intersil Prism2-based 802.11 wireless LAN cards (PLX)
usb/host/sl811_cs.ko REX-CFU1U PCMCIA driver for 2.6

VPN developers/users, note that Puppy 1.0.8 has ppp_mppe_mppc.o driver, but a MPPE driver is now in the 2.6 stock kernel, called mppe.ko. All of the above are in the stock (original) kernel.

Bug update: I think that I have fixed the problem in Puppy2, when bootup and it stops at the prompt, X doesn't start.

Apr 22

I've worked out a solution. Puppy needs to detect whether a PC has a USB interface in the init script and also later in the rc.sysinit and rc.modules scripts. This means that lspci and pci.ids have to to duplicated in both. The lspci executable is very small (33K), however the latest pci.ids file is 380K -- however, I was able to extract just the USB information, so in the initrd the pci.ids file is only 5.5K. So, it's not much overhead for the initial ramdisk.

Apr 21

I did mention that there are some "issues" with the new kernel. One of those is that the file /proc/pci has different information about the PCI interfaces, compared with the 2.4 kernel. It used to have the description-string of each interface, which is now replaced by a line that commences with "Class   ..." followed by various numbers, including the vendor:chip ids. It was the description-string that I have used for various purposes, such as determining if the motherboard has usb capability.
For example, running 2.4 kernel:

USB Controller: Silicon Integrated Systems [SiS] USB 2.0 Controller (rev 0).

But, running the kernel, the above line is replaced by:

Class 0c03: PCI device 1039:7002 (rev 0).

This change means that a vendor:chip id database is required to lookup what each interface does.

The lspci utility does not help, as it only returns the same information. It can be made to return more info if the pci.ids database file is present -- which it isn't. The problem also, even if Puppy has the pci.ids file, it is always playing catchup. I found some information on the Internet, it seems the kernel developers dropped the description information in favour of using lspci -- but lspci does not read the descriptions directly and relies on the database file.

What about the kernel log during bootup, as returned by dmesg? No, it seems not, no interface descriptions until the USB drivers load.

What I have tested, and really I hate doing it this way, is try to load each module in turn: usbcore, uhci-hcd, ohci-hcd and ehci-hcd, trusting that it will fail if the appropriate hardware is not present. No, on my PC that only has a USB1 interface, the USB2 ehci-hcd driver loads without complaint.
$%#@&*, Puppy also reads /proc/pci to determine if there is a cardbus interface. Need to figure out a workaround for that also.

Apr 20

Bashdiff is an enhancement for Bash. Truly great additions, too good to resist! I've created an Unleashed package, bash_bashdiff-3.0-1.33, which is Bash with the Bashdiff patch. This installs 'bash' and 'bashbug' into /bin and 'libwilliam.so' into /usr/lib, as well as a help file 'bashdiff.htm' into /usr/share/doc.
This will be in the next puppy2 snapshot, but note that I haven't changed the ~/.bashrc file -- the bashdiff help page has some suggestions for modifying it. Leaving that until we have it running in the snapshot.
To learn about the great features of Bashdiff:

Apr 20

These packages have been upgraded for the 2.6 kernel: module_init_tools-3.2.2, e2fsprogs-1.38, wireless_tools-28 and unionfs-20060417 (cvs snapshot). The PCMCIA package remains at the same version, but recompiled for the 2.6 kernel: pcmcia_cs-3.2.8 -- this package may be dropped sometime, due to equivalent functionality in the 2.6 kernel.

Note also, the kernel was compiled from almost-pristine source, with just one patch, squashfs-3.0.

Apr 20

I have created a Unleashed package of Mark Ulrich's brilliant new desktop background setter, Puppybackground. This will be in the next Puppy2 snapshot.
It is also available as a DotPup. See forum thread:

Apr 19

I'm typing this from the latest Puppy2 snapshot, running kernel version Some small issues, should be solvable. What prompted me to do this is the unionfs we have used up to now is version 1.0.4, as that is the last version that runs with the 2.4 kernel. Development of unionfs has continued for the 2.6 kernel only. The 1.0.4 version has a bug, in which files and directories are sometimes invisible -- this bug affects both Puppy1 and Puppy2. I went right to the bleeding edge, grabbed yesterdays cvs snapshot of unionfs.

There's lots of good stuff in the 2.6 kernel. I shall be experimenting to see if NTFS write support is now solid.
If I decide to keep using this kernel in Puppy2, then I'll post patched kernel source, the full set of modules, plus some upgraded Unleashed packages.

Apr 18

Puppy2 now has working automatic mouse detection, at least on my computer! Plug in anything, USB, PS/2 or serial, boot Puppy, it works. When Puppy is running you can still use the Mouse Wizard, which is handy if you have two different types of mice connected -- the Mouse Wizard lets you choose which one you want to use, whereas the autodetection will select in order of USB, serial, or PS/2 (meaning that the USB mouse has highest preference).
Automatic serial modem detection is also working. Boot Puppy with a serial modem connected (and turned on) and a dialup icon automatically appears on the desktop. Connecting to the Internet is just a matter of clicking on the icon. However, the autodetection only works for true hardware modems -- for Smartlink and Lucent softmodems you still have to use the Modem Wizard.

Apr 17

I have made an Unleashed package, dillo-0.8.5patched, which is based on a patched version of Dillo v0.8.5 from http://teki.jpn.ph/pc/software/index-e.shtml and further adapted by Mark Ulrich to be compatible with his PB-DebianInstaller program (still in alpha, not officially announced yet).
The package has an executable, dillowindow, which is a script called by PB-DebianInstaller to run Dillo.

Apr 16

Okay, here it is!!! puppyserialdetect, a little program to detect serial mouse and serial modem. Download it from here: http://www.puppylinux.com/test/
I need everyone to test this, as I plan to run it at every bootup. So, regardless of whether your computer has any serial mouse or serial modem, this little program will run. I need to know that it detects your serial mouse and modem correctly, but if you don't have serial devices the program should not cause any delay or hang your computer or whatever -- it should just return with no output, or perhaps something on stderr -- if you do get some kind of error message, can you try:

# ./puppyserialdetect 2>/dev/null

to make sure that stdout returns nothing.
For a serial modem, puppyserialdetect also returns the maximum speed -- let me know if that is wrong for your modem. If modem detection works, then we will also be able to eliminate the Modem Wizard ...which is a great step toward automating Puppy, and making Puppy more portable since the detection will take place at every boot.

There is a thread in the main forum discussing this, please read before trying puppyserialdetect: http://www.murga.org/~puppy/viewtopic.php?t=7475

Apr 16

A clarification: I stated below that the detect library code cannot detect my USB mouse due to a difference in /proc structure. Precifically, /proc/bus/input/devices file is missing, as this is only available with the 2.6 kernel.
However, my own detection code reads /proc/bus/usb/devices to detect the USB mouse.

Apr 16

I seem to have basic detection of the serial mouse working. Despite extremely rusty knowledge of C, I managed to extract what I needed from the detect package, which is a hardware detection library. From the copyright notices in the code, they in turn got some of it from RedHat and Mandrake.
The detect code is not detecting USB or PS/2 mouse, due to differences in the /proc directory from what the code expects, but that's okay, as I can already detect a USB mouse. Now, if I can detect a serial mouse (and what port it is on), then if no USB or serial mouse detected then will assume PS/2 by logical elimination.
Need to work on it a bit more, but basic detection seems okay. It can recognise that a modem is not a mouse -- the lights on my modem flashed when it probed, and the modem still works afterward!

Apr 15

There is some discussion on the forum about the awkwardness when you want to use different persistent save files (pupxxx in puppy1, pup_save.3fs in puppy2).
So, for puppy2 I've solved the problem. I've generalised the name of the save file to 'pup_save*.3fs' where the '*' is a wildcard, meaning any characters or no characters.
So you can name the file pup_save9.3fs if you want.
Why do this? Well, if Puppy finds more than one of these in the same partition, Puppy displays a menu and asks you to choose. Simple, it works well. I booted the live-CD, saved the session at shutdown (it still only saves to the default name pup_save.3fs), rebooted, made a copy of the pup_save.3fs file: pup_save2.3fs. Then rebooted and hey, got a little menu, which also offers none of them as one choice.

Note that when you boot off a USB or hard drive partition, Puppy always looks in that (boot) partition for the pup_save*.3fs file(s). Puppy will not wander far and wide over your PC and discover some stray pup_save*.3fs file.
The live-CD is an exception, as a pup_save*.3fs file cannot be on the boot partition. But, the boot script does look on the CD/DVD for any saved folders (multisession), failing which there is a search over the drives of the PC to try and find a pre-existing save file. Each partition is checked in turn and the first save file found is used -- the only case where the choice-menu is offered is if two or more save files are found in the same partition.

Apr 15

I seem to have misunderstood how the isolinux.cfg file works. At the Puppy2 boot menu, typing 'puppy acpi=on' does not work. The isolinux.cfg file:

default puppy
display boot.msg
prompt 1
label puppy
kernel vmlinuz
append root=/dev/ram0 initrd=initrd.gz acpi=off PMEDIA=idecd
timeout 50

The total effect is that we get this boot commandline:

root=/dev/ram0 initrd=initrd.gz acpi=off PMEDIA=idecd BOOT_IMAGE=vmlinuz acpi=on

...and it seems only the first occurrence of 'acpi=' takes effect.
I don't know how to setup isolinux.cfg to provide a true override of default parameters, so I will just remove 'acpi=off' from the 'append' line.
...okay, I've done that. Entering 'acpi=on' or 'acpi=off' at the boot prompt now works.

Apr 15

There has been a teensy bit of reorganising of the main menu.

I've expanded the live-CD boot menu. As well as the usual kernel options like 'acpi=on' or 'ide=nodma', you will now be able to choose to ignore any existing saved sessions and run totally in RAM, or in the case of multisession CD/DVD you will be able to choose to ignore any number of most-recent saved sessions.
The latter is particularly interesting, as it gives you the equivalent of Windows' roll-back. This will only work for multisession CD/DVD, which saves each session as a folder. This is being currently discussed on the forum: the question asked was what if the last session-save stuffed up the the CD somehow, how nice it would be to "go back" -- well, now you can, up to 9 sessions back (arbitrary choice, I thought that was enough).

But then I realised it is only half-done. What we really need is a mechanism to mark folders permanently as "bad". So, I implemented that too. If you roll back say by 2 folders, they are automatically marked as bad and on future boots will be jumped over.
There is a file, /.badfolders, that has the list of bad folders, and this is saved with each session-save. This file could be manually edited if you wish.

Apr 14

In Puppy2 first boot, the session can be saved to floppy disk. However, this causes trouble on PCs that do not have a internal floppy drive. The floppy detection code at startup and shutdown has a long delay on such PCs, and we have not come up with a reliable alternative. However, the bottom line here is that you have to be desperate to save the session to floppy disk anyway -- it only has room for the basic configuration files. So, the simple solution is to restrict saving to floppy disk to non-USB computers. Older non-USB computers will all have floppy drives, except for some rare ones. So, on all USB-enabled PCs, the check-floppy delay is eliminated.

I've restored a default index.html page in /root/ghttpd/htdocs/.

Apr 14

A Puppy2 tester reported that dragging a file to pupzip, the desktop drag-and-drop archiver, failed to create an archive. I tracked this down. One of the scripts used by Xarchive, the archiver program called by pupzip, in turn calls the utility program mktemp. Now, mktemp is a Busybox applet, and, as so many times before, it lacks the required commandline option ( -t ). So, I got the full mktemp out of Vector, and now pupzip works fine.
This bug exists in puppy1 too -- I don't know how nobody reported it before -- maybe nobody realised that you can just drag files to the pupzip archiver. Or maybe they somehow had the full mktemp installed.

In response to a request on the Forum, I have improved the man script. Previously, typing "man something" did not always find the help file even if it existed. This was due to some help files being named 'index.html' or something other than the name of the program, and to a limitation in find itself -- it will not follow paths with symbolic links, or rather can only be made to with some jiggery-pokery code that I had to hack together. I have fixed this, also if any Busybox applet is specified then the Busybox help page will open -- for example, "man zcat".

Of course, if online, if the help is not found locally then the help system could fall back to an online man pages site -- anyone know a good ad-free site with all the man pages in html?

Apr 13

I was replying to a discussion on the Forum about saving the current session to a new multisession CD/DVD, then realised something was not quite right in the session-save code in Puppy2. They were discussing Puppy1, but I responded that it is very easy in Puppy2, but then realised the problem. Now fixed.
What now happens properly is what you would intuitively expect to be able to do. Running a multisession CD/DVD, if you download and burn a new iso of Puppy, that is, a new version or flavour, once it is burnt all you have to do is hit the "Save" button on the desktop to save all of the personal files to the new CD/DVD. You can keep using the old CD/DVD if you want, but the new one also has the complete personal info on it.
Ditto when you shutdown, the personal files can be saved to the new CD/DVD if you wish.

A clarification here. A "session" refers to all the new and changed files since you booted up. However, in the case of moving to a new CD/DVD, the accumulated sessions have to be burnt to the new CD/DVD -- email, browser history, application configurations, personal files, everything. So, hitting the "Save" button puts all of that on the new CD/DVD (with the exception of old, deleted and archived files, that are left behind on the previous CD/DVD).

Technical note: the scripts involved are /etc/rc.d/rc.shutdown and /usr/sbin/savesession-dvd.

Apr 13

I still haven't properly resolved automatic mouse detection. There is a possibility, for someone with C programming skills, who is also interested in the hardware side of things.
SuSe Linux has a hardware detection package called "hwinfo", that, among other things, detects the mouse. The whole thing is very big, which is why I'm reluctant to put it into Puppy, but we can pick bits out of it.
Looking in the source, I see there is a "mouse.c", but I'm so rusty on C, would be struggling to figure out how to extract that file on its own as a standalone application (plus so much else to do).
It seems to have the right detection stuff in it, and I think there was some more relevant stuff in another file.
Anyone interested? ...it would be a very interesting little project I think.

I have uploaded the hwinfo source tarball to:

Apr 12

Ted Dog has a fast download site for the latest Puppy2:
2cc1b657dfe231fc9d441ae2af210d95 puppy2alpha-snapshot-11apr06.iso

Apr 11

A snapshot of Puppy2 alpha, dated April 11th, has been uploaded. This is not an official release. It is for Puppy testers and developers.
Get it from here: http://www.pupweb.org/test/
The patched 2.4.31 kernel source is also available from here: http://www.puppylinux.com/test/.
Some notes:

There is a special forum for puppy2 development. Report here any bugs, I also want to know about success stories!
Forum URL: http://www.puppylinux.com/nfphpbb/
Puppy2 discussion also takes place on the regular forum: http://www.murga.org/~puppy

Apr 11

The utility install has been placed in Puppy2. This is from the fileutils-4.0 package. It is in usr_devx.sfs (or devx_xxx.sfs in Puppy2) file, but it is needed in the standard live-CD.
Note that there is a Busybox install applet, but not using that as it lacks features.
Note also, the reason that I'm doing this is while testing MU's Debian package installer, found a .deb that uses install, probably others do too.

Apr 10

Xorg has a dozen or so hardware-specific drivers, but they do not always work well. The Intel 'i810' driver for example. Or there may not even be a driver to match the video hardware. But, Xorg has a generic driver called 'vesa', which works kind of like the Xvesa Kdrive X server (but do not confuse the two!), and should work on most video hardware, but with some loss of features and performance compared with a hardware-specific driver.
I have modified the Xorg Wizard so that if the hardware-specific driver fails, an option is offered to switch over to the vesa driver. The Wizard makes the appropriate change in xorg.conf automatically. My PC uses the 'sis' driver, but I'm running the vesa driver right now -- works okay, although startup is a bit slower.

Apr 9

Mark Ulrich (MU on the Forum) now has a PayPal button at http://dotpups.de/. I've donated US $62, just a token to say thanks for his input (just redistributing some of what others have donated to me!).

The Xorg Wizard had a problem, when the test X window is displayed there is an "okay" button, but it was only selectable by the mouse. If the mouse isn't working then the button could not be clicked. Now it can be selected by the ENTER key also.

The Xorg Wizard now has a dialog to choose the mouse, in case the autodetection at bootup got it wrong.

I have restored the correct i810_drv.o driver file in Xorg version 6.8.1. This is the version currently used in Puppy. The i810 driver had some problems, and we substituted the i810 driver from Xorg v6.8.2, however it appears to cause a resource leak.

Xvidtune is a GUI utility to adjust the screen up/down/left/right and width/height, in case the current Xorg mode is not rendering quite right on the monitor. I have now incorporated Xvidtune into the Xorg Video Wizard, so that changes created by Xvidtune can be automatically inserted into the Xorg configuration file /etc/X11/xorg.conf.
A problem though with Xvidtune is that it does not work with all video hardware.

Apr 7

Program fc-cache is added to Puppy2, from the Xorg v6.8.1 package.

Pakt has improved the xkb directory used in the Puppy2 snapshot of March 29, adding more languages and cutting the size down. This (improved directory /etc/X11/xkb) is now in Puppy2.

Heh heh, MU sure is quick. He has written a tiny fast new program to scale and render images on the desktop, very sharp and nice looking. Forum thread:

Apr 7

Some more very good news. Something that I have never been happy with is how images are rendered on the desktop. A few versions back, we only had the "fillscreen" and "fullscreen" modes of xli (the program that writes an image to the desktop) -- but these only work properly for screen resolutions that have the same ratio as the image. We got effects like white bands top and bottom, or a totally white background (image not displaying at all). MU came to the rescue with his /usr/sbin/fitimage2root script, which uses some extra options of xli to make the image fit for any screen resolution, but the downside is that the result was blurred. I particularly notice this as I run my screen at 800x600, and xli blurs the image considerably when it scales an image down to fit (with or without the -smooth option).

Last night I decided finally to do something about it, and I rewrote /usr/sbin/fitimage2root, using utility applications from the netpbm suite (which have always been in Puppy). The programs jpegtopnm, pngtopnm and giftopnm do what they suggest, output to stdout, and pnmscale scales the image in any arbitrary fashion. The result is a file that is the exact size for the screen, and xli can display it without having to process it any further.
The conversion process is a bit slow, and there is a noticeable delay, JWM and Rox appear and then there is a pregnant pause before the background appears. So what I have done is cache the converted image, so subsequently when X is started, the background image appears instantly.
I'm mighty pleased. I tried lots of images, and at 800x600 they all look crisp. Most of the background images in Puppy (that you can choose from the "Desktop background image" entry in the Control Panel menu) are 1024x768, and if you run a higher screen resolution, we could play with some smoothing -- easy enough to put a test into the script comparing screen and image resolutions and if need to scale up, then activate smoothing (either in xli or a netpbm application). When I release the next snapshot of puppy2, anyone interested is welcome to play with the script -- note, xli has a "-identify" option that returns the image size.

I also tweaked /usr/sbin/video-wizard, the Xvesa Video Wizard, to work nicely with fitimage2root. You may have experienced when booting Puppy for the first time, choose Xvesa, it initially comes up in 640x480 screen resolution and a white background. Well now the background image displays for all resolutions when the Xvesa Video Wizard is being used to test screen resolutions.

Apr 6

Puppy now has automatic detection of mouse and keyboard. Or rather, I've written the code, haven't tested it -- but quite confident, barring typos.
On first boot, Puppy will choose in this order of preference: USB, PS/2, serial. So, if you have both USB and PS/2 mice plugged in, the former will be chosen. Ditto for the keyboard. However, you can override by using the Mouse/Keyboard Wizard -- for example, choose the PS/2 mouse, so even if a USB mouse is plugged in, the PS/2 mouse will be used. On the other hand, if the Wizard has chosen a PS/2 mouse but at the next boot it isn't there, then Puppy will use what is there (the Wizard's info will also be updated).
The two scripts involved are /etc/rc.d/rc.local0 and /usr/X11R6/bin/xwin. The former now does all the detection and loading of modules.

One good thing about this is that the first time someone boots Puppy, there is one less dialog window. You still have to choose keyboard country-layout and whether your mouse has a scrollwheel.
Another good thing is the improved portability, taking a Puppy multisession CD/DVD or USB pen drive to other PCs.

Apr 5

It was reported that the Chooselocale program (selected from the Control Panel menu) is broken in Puppy2. I've fixed it. The fault was that it referenced /root/.packages/unleashedpackages.txt, but this file no longer exists in Puppy2. I also updated /root/.packages/README.txt:

packages.txt is a list of all the packages in Puppy Unleashed, the build
system from which this live-CD or Puppy installation was created.
Those packages already installed on the live-CD (in pup_xxx.sfs file) are
marked as "on", if not installed are marked as "off".

livepackages.txt is a subset of packages.txt and initially is a list of all
the "off" packages from packages.txt, that is, those that are not installed
in the live-CD.
The packages in livepackages.txt are available for download and installation
by the PupGet package manager, to the pup_save.3fs file (the personal persistent
storage file, like the pupxxx file in Puppy1) or if your persistent storage is
a drive partition they will get installed there.
Once installed by PupGet, the entry in livepackages.txt gets changed to "on".

Puppy1 has another file, unleashedpackages.txt, in addition to the above, but
this causes confusion and is now eliminated in puppy2.
In Puppy1, not all packages in the Unleashed suite are suitable to become PupGet packages, due to the restriction that only top directories /etc, /root and /usr are persistent (can be saved permanently), hence unleashedpackages.txt is a list of all the packages in the Unleashed suite, while packages.txt is the same but those unsuitable to be PupGets are removed.
This is a layer of confusion though, and as Puppy2 is able to permanently save everything under "/", all of the Unleashed packages can be PupGets, so now there is only the one file, packages.txt.

Apr 5

I'm working on mouse autodetection. See this forum thread:

Apr 4

Pakt reported a bug in Puppy2: he has both usb keyboard and usb mouse, but the keyboard only worked after selecting the usb mouse (he never explained how he did that, unless he was able to use a ps/2 keyboard). Anyway, I think I've fixed it.
I have implemented autodetection of both usb mouse and usb keyboard, so the first time you boot puppy these will be autodetected. However, you will still be asked if you have a scrollwheel, and the country layout.

A question that has come up a few times on the forum is what about hardware detection when a multisession-CD or USB installation of Puppy is moved to a different PC? For now, the PCs will have to have the same type of keyboard and mouse. For X, you would need to choose Xvesa for portability.
Anyway, I've made a step in the right direction, and hope to fully autodetect mouse and keyboard at every boot -- in the not too distant future.

Apr 4

Ah good, I have fixed the "read only filesystem" bug in Puppy2. Puppy testers got this bug when they saved the first session to floppy or USB drive, or installed Puppy to USB drive. This was the big bug in the March 29 snapshot.
I sifted through the init script and fixed a few other things as well.

Apr 3

The file initrd.gz is the initial ramdisk in Puppy2. I have reduced the size of this file from 1,647K to 911K. This was achieved by recompiling all the programs in it to use uClibc, instead of the standard glibc C library.

Some technical notes about this. The site www.uclibc.org has a "Toolchains" webpage and a product buildroot that can build a complete ext2 root filesystem from source packages -- except that I got too many compile errors, so instead downloaded their ready-to-go i386 root filesystem. The latter is a 22M file, root_fs_i386.ext2.gz, and the version that I downloaded on April 1st uses uClibc version 0.9.27. After expanding with gunzip, it is about 100M, but it needs to be increased to use:

# dd if=/dev/zero bs=1024 count=300000 >> root_fs_i386.ext2
# sync
# resize2fs root_fs_i386.ext2

It can then be mounted and chrooted into:

# losetup-FULL /dev/loop2 root_fs_i386.ext2
# mount -t ext2 /dev/loop2 mount-directory
# chroot `pwd`/mount-directory

I found though, that a few things are broken. It uses a program called ccache, that confused about half the packages that I tried to compile. Disable ccache by changing a couple of symlinks:

# ln -sf /usr/bin/gcc /bin/cc
# ln -sf /usr/bin/gcc /bin/gcc

The installation of zlib is also broken. The files zlib.h and libz.a are missing, the first is essential, the second required by some packages. Either grab these from somewhere, or download the zlib source tarball from the uclibc site and recompile it.

All of the source tarballs used to build the root filesystem can be individually downloaded from the uClibc site. Some relevant versions, used in my initrd: zlib 1.2.1, busybox 1.01 (later than version inroot_fs_i386.ext2.gz), coreutils 5.2.1, findutils 4.1.20, e2fsprogs 1.35, grep 2.5.1, sed 4.1.2.

The above technical information is for any Puppy developer wanting to compile applications for initrd.gz. Note that the uClibc website has a warning that the latest version 0.9.28 does not have binary compatibility with 0.9.27, so when they upgrade their root_fs_i386.ext2.gz, you will have to either ask them to provide the older one, or maybe I can upload it somewhere. In fact, I could upload my "fixed" version.

Mar 30

There are reports that the md5sum is wrong for the 29th March Puppy2 snapshot. So, it is also uploaded here:

Mar 29

A snapshot of Puppy2 alpha, dated March 29th, has been uploaded. This is not an official release. It is for Puppy testers and developers. Get it from here:
The patched 2.4.31 kernel source is also available. Some notes:

There is a special forum for puppy2 development. Report here any bugs, I also want to know about success stories!
Forum URL: http://www.puppylinux.com/nfphpbb/

Mar 29

Fixed some more bugs in init and rc.shutdown scripts.

I have decided to release the puppy2 alpha snapshot later today, as have to do something else (non-Puppy) for the next few days.

I haven't completed chasing down one bug. The first time a CD/DVD is shutdown, the session can be saved to floppy disk. That part works, but at bootup there is a problem. The saved session, pup_save.2fs, is found on the floppy and mounted, but then something goes wrong. I have to leave that one for now, as have to do something else, but if the idea of saving the session to floppy interests someone, feel free to investigate this bug!
Of course, you have to set the BIOS boot sequence to CD drive first, as the floppy will have to be in the drive on subsequent boots.
Note also, booting from live-CD, sessions can be saved to a USB pen drive, in theory anyway, as I haven't actually done it yet, have just put in the code to do it.

Mar 28

Okay, I fixed a bug in rc.shutdown, and the full hard drive installation now shuts down properly.

I'm testing a serial mouse in Puppy2, it sure is "nervous". Single clicks are too easily interpreted as double clicks. In ~/.jwmrc and ~/.jwm/jwmrc-personal, there is a setting for double-click speed -- I made that a bit bigger, but not sure if it has improved. If this is a JWM problem, then the same symptom will be in 1.0.8r1. Anyone with a serial mouse who has this problem? Any thoughts on fixing it?
I'm thinking that the double-click-delta may have to be increased, as my old mouse has coarse movement (low dpi)? Here are the current settings:

        <!-- Double click speed (in milliseconds) -->

<!-- Double click delta (in pixels) -->

Mar 27

In Puppy 1.0.8r1, xkb is somewhat broken. This is the keyboard layout system for Xorg, and the directory in question is /etc/X11/xkb. Puppy2 alpha snapshot of 12 March 2006 has the same xkb folder as 1.0.8r1.
Pakt, lior2b and Dougal have investigated and devised improved xkb folders.
For the next Puppy2 alpha snapshot due out at the end of March, I am experimenting with Dougal's xkb folder, due to it's small size -- let us know on the forum how it works.

JustGreg and I are chasing down the bugs in the "option 2" (full) hard drive installation, using the Puppy Universal Installer in Puppy2. I found a bug in the /usr/sbin/grubconfig script. After fixing that, I successfully installed Puppy to a ext3 partition and created both a boot floppy and installed Grub into the MBR.
There is however another bug: Puppy starts up fine, but at shutdown the /etc/rc.d/rc.shutdown script throws a fit and exits to the prompt. I have a good idea what the cause is, but have to eat now! Will fix it tonight.

Mar 26

My Pmount drive mounter program for puppy2 now handles Zip and LS120 internal ATAPI (IDE) drives.

The Puppy Universal Installer for puppy2 now installs to Zip and LS120/250 drives.
There was a recognition bug at bootup, in the init script, that I have fixed and will do what should be the final test tonight.

Mar 26

JustGreg did some incredible research into getting USB Flash drives to boot puppy2. Forum thread:

I have attempted to incorporate the results of his work into the Puppy Universal Installer. As well as his "sys-nopart.mbr" file, the script offers a range of MBRs to choose from, including the one from Spblinux (developed by Christian Ostheimer).

Mar 25

I'm doing some more work on the Puppy Universal Installer for Puppy2. The "option 1" (poor man's) hard drive install has been improved.

Mar 23

If you are testing the March 12th snapshot of Puppy2, multisession CD/DVD, don't bother with testing what happens when the CD/DVD gets full. At shutdown, or whenever a session is saved, you will be asked to insert a new blank CD/DVD, but the old session wasn't properly saved to the new CD/DVD. I've just fixed it.

The new CD remaster program for Puppy2, written from scratch, is now working. Nice GUI interface, easy to use. The script is /usr/sbin/remasterpup2.

Mar 22

I'm writing a remaster-CD script for Puppy2. Getting there!

Mar 21

JWM is fixed, plus Lior is adding more features! See thread: http://www.murga.org/~puppy/viewtopic.php?t=6907

Mar 19

Mitch Bradley has studied the startup and shutdown scripts for puppy2 in detail, and made a suggestion how to better mount the pup_xxx.sfs file. For certain PUPMODEs, if sufficient RAM, pup_xxx.sfs was copied from the boot partition to pup_rw (the tmpfs ramdisk) then mounted by a loopback device onto pup_ro2. Thus, pup_rw, the top unionfs layer, has a file that is mounted as a lower layer, probably not the most healthy configuration. I cleaned this up by copying pup_xxx.sfs to another tmpfs ramdisk, /mnt/tmpfs (path from the point of view of the init script, prior to pivot_root). Thus pup_xxx.sfs is in RAM but outside the unionfs layers.

Mar 19

Thanks to Lior Tubi (lior2b in Forum) who showed how to make the "Print Screen" key work in the JWM window manager. I've added the appropriate line into ~/.jwm/jwmrc-personal. Forum thread: http://www.murga.org/~puppy/viewtopic.php?t=6882

The /initrd/sbin/init initial boot script in puppy2 will load any extra .sfs files, as unionfs layers. These files have to be in the same place as the persistent storage file, pup_save.3fs. However, I have modified /initrd/sbin/init and /etc/rc.d/shutdown so that on the first shutdown, any extra .sfs files on the live-CD/DVD will optionally get copied to the same partition as the pup_save.3fs file -- so that on next boot they will be loaded.

In the case of the multisession CD/DVD, the persistent storage is on the CD/DVD itself, so any extra .sfs files are left as-is and will be loaded at bootup ...but that is going to be slow when running Puppy. Can't help that though, as the whole idea of multisession is to be independent of the hard drive. I might add a bit more code to try and load them into RAM, if there's room.

In a nutshell, what the above paragraphs mean is that you can burn a puppy2 live-CD/DVD with the base iso file and any extra .sfs files that you want, and they will be automatically recognised and loaded.

Mar 18

I have setup a forum especially for developers and testers of Puppy2. This is intended to be low-traffic and very focussed. Puppy2 is our experimental next-generation Puppy, not yet for general usage. URL:

Mar 18

I had hoped to announce JWM upgraded to version 1.5, but the taskbar-related bugs have got worse, not better. Here is a snapshot:

  1. The little glitch on the left side is still there.
  2. There is now a large gap between the application tabs (rxvt and beaver) and the swallowed applications -- this appears to be due to the blinky entry not having a width="" parameter (see below). The horizontal space being automatically allocated to Blinky is not correct.
  3. The above image shows xload swallowed application (and blinky is running but nothing is showing as my network is down), but if I restart JWM (using <Restart> tag), the entire swallowed-apps area disappears, including xload, and the application tabs fill the entire space right to the clock display. Xload and Blinky are actually killed.
  4. Disaster: If my network comes up, or goes down, JWM crashes. Blinky-related bug.
The relevant section from my .jwmrc file:
        <!-- Additional tray attributes: autohide, width, border, layer, layout -->
<Tray autohide="false" insert="right" x="0" y="-1" border="1" height="26" >
<!-- Additional TrayButton attribute: label -->
<TrayButton label="Start" icon="mini-dog.xpm"/>
<!-- Additional Pager attributes; width, height -->
<!-- Additional TaskList attribute: maxwidth -->
<!-- <Dock/> -->
<Swallow name="blinky">
blinky -bg "#BCBAB5"
<!-- Additional Swallow attribute: height -->
<Swallow name="xload" width="32">
xload -nolabel -bg "#BCBAB5" -fg red -hl black
JWM 1.5 has lior2b's patch, and the horizontal space allocated for blinky should reduce to a very small space automatically? If I go back to width="39" for blinky, then behaviour is as the unpatched 1.4.

Also the "--disable-fribidi"  configure option does not work.
Anyway, I'll report these problems to Joe, the JWM developer. If anyone else (Lior?) has any thoughts on this, let me know.

Mar 17

Um, I realised that the wording of the copyright notice at the bottom of this page needs to be changed. It had something like "This is the logo for PuppyOS". Now it states "This is a logo for Puppy, also known as Puppy Linux and PuppyOS".

Mar 17

I've been thinking about the ownership of the various logos designed for Puppy. Each Puppy site, and Puppy-derivative sites, are using their own distinctive logos. It has evolved that way. It is possible to, that each version of Puppy will have a logo with some distinctive feature that differs from other releases. Anyway, would we be happy if someone took one of the logos and used it for something else, perhaps totally unrelated to Puppy Linux, or, another unrelated Linux distro?
Prior usage does carry legal weight, at least in some parts of the world, however, I decided to explicitly state the copyright and conditions of use of the logos that I am using on my sites. See bottom of this page.

I thought that I should do something, rather than nothing, but perhaps you have thoughts about a better way to claim ownership of our logos?  Please raise the topic for discussion on the Puppy Forum. A good starting point is to read about earlier input regarding Puppy logos: http://www.murga.org/%7Epuppy/viewtopic.php?t=3543

I would like to acknowledge David May, who vectorised a photo of the "real" Puppy (see puppy_experiment2.png in the above thread). My logo, that you see at the very top of this page, is my own take on converting the photos, inspired by David's work.

Mar 16

Foxti has progressed with getting VPN (Virtual Private Networking) with MPPE to work. See this thread:

Mar 16

Apologies to anyone who sent an email to bkaulerATgoosee.com and it bounced. This was due to the changeover of hosts. Or, it may have simply disappeared -- I sent a couple of test emails and they were sent okay but then just vanished. Anyway, the transition has completed and the email address is working again.

Mar 15

Thanks to Jonathan Marsden (forum name jmarsden), we now have the Mantis bug tracking system.
If you find a bug, or have a suggestion, probably the  first stop is to see if it is being discussed on the Forum (www.murga.org/~puppy). The next step would be to go to the bug tracker and see if the bug/suggestion is already reported. Final step is to report it.

Jonathan's Mantis bug tracker is here: http://tracker.nfshost.com/mantis

Note, the bug tracker is currently only for the "official" Puppy, not for derived distros such as Grafpup. However, Puppy-based distros do sync with the official Puppy more-or-less, but you would need to confirm a bug is also in the latest official Puppy release before reporting it.

Mar 14

Domains puppylinux.com and goosee.com now moved to new host. Waiting for the updated DNS records to filter throughout the Internet.

Mar 14

I received a renewal notice from my goosee.com host. As the account expires in less than a month, and as Servage.net, the host for puppylinux.org and puppylinux.com, is near CPU-usage capacity, I decided to signup with another host and move goosee.com and puppylinux.com to it.
So, there will be a momentary hiccup as the DNS's get updated. Will probably changeover tomorrow, busy uploading files and editing some webpages right now.

Mar 11

PupGet package manager is fixed to work in puppy2. There was a report on the forum that it didn't uninstall properly, due to the absence of directory /root/.usr -- that was easy to fix, but I had to rethink how files are uninstalled if they are over-writing an original pristine file from pup_xxx.sfs (equiv. to usr_cram.sfs). The way it was done in puppy1 could actually corrupt the unionfs file management, but now it works fine. What happens now, is if you install a package that has, say, library file xyz.so, but puppy already has xyz.so in the pristine pup_xxx.sfs file, when the package is uninstalled the original pristine file is restored. The exception is a full hard drive installation -- you uninstall the package with xyz.so it's gone, deleted. Well, that's how distros normally work anyway -- puppy's restoration of the original pristine file is a special feature of Puppy.

The first dialog window that the Pupget package manager displays did not look very professional. It used the xmessage program. I have reworked it to use gtkdialog.

One more thing. I remembered someone reporting that when the PupGet package manager uninstalls a package, any empty directories (after the files of the package have been deleted) are not deleted. Now they are.

Mar 11

A clarification about VPN from rarsa: "IPsec VPN is happily running in puppy. I have been using it for quite some time. It's just the MPPE VPN people have had trouble with." More details on Forum:

Well, it looks like I will finally be getting broadband. Here in Australia the government has a subsidy scheme to bring broadband to rural areas, and my local town is getting wireless broadband, via satellite. I'm not yet 100% sure that my place will be able to connect up, as I'm out of town a bit and not quite line-of-sight. Anyway, fingers crossed. It will solve my uploading problems. I'm not sure when they will be installing, maybe one or two months away.

I'm in the process of setting up a blog. I have sometimes referred to this Developer News page as my blog, but it's really only a plain static HTML page. The blog I'm using, WordPress, looks real good from the description. It's a bit like a wiki in that others will also be allowed to contribute. Anyway, I don't really know much yet as I've only got as far as installing it. I know my web pages are badly in need of an overhaul, so I'll play with WordPress and see if it is what I need. If anyone reading this has experience with WordPress and would like to comment, or maybe give me a suggestion about some feature of WordPress that would be good for my site, please post on the Forum and we'll have a chat.

Mar 9

The 2.4.31 kernel has been recompiled with the mppe-mppc patch version 1.3. So, the kernel now has three patches, ntfs, squashfs and mppe-mppc.

ppp has been upgraded to version 2.4.3 and patched with mppe-mppc patch version 1.1.

Mar 9

Ian's Xwget GUI frontend for wget downloader is now in Puppy. Version 0.4 has a bug, so I have named the bugfixed version 0.4.1 and made it into a Unleashed package.

I've been discussing how to implement VPN in Puppy, with Foxti on the Forum. The kernel needs to be patched to provide MPPE support -- note, kernel 2.6.15 has MPPE support, but I'm using the 2.4.31 kernel for puppy2 (and maybe for v1.0.9). Looking for patches, I found this site: http://mppe-mppc.alphacron.de/. This seems to be what we need, so today I plan to recompile the kernel, and patch and upgrade ppp.

Note, tempestuous has compiled MPPE kernel modules for the 2.4.29 kernel currently used in Puppy. See Forum thread: http://www.murga.org/~puppy/viewtopic.php?t=6606

Thanks to jmarsden who pointed out how to enable the mouse for Xlock. Previously, a keypress was required to unlock the screen. Now, a mouse motion also will do it. (The password of course still has to be entered to complete the unlock).

Mar 7

Thanks to some great detective work, the bug in Xlock is now fixed. Xlock is a desktop icon on the top-right of the screen -- click on it to lock the screen and display a pretty pattern (right-click to choose a pattern). Unlock requires a password, which was the problem, as any password unlocked the screen.
Read this thread in the Forum to find out how the guys solved it:

Puppy's little CD/DVD burner program, burniso2cd, could not handle USB CD drives. That is now fixed. In fact it should now also handle SCSI CD/DVD drives.
There is now a dialog window that displays all the CD/DVD drives in the PC and you choose which one you want to burn to.
If you would like to test this new version of burniso2cd, go here:

Mar 5

I'm fiddling around with the usb keyboard and mouse setup. There were reports of trouble on the Forum. One thing that I have done is migrated from the usbkbd.o and usbmouse.o kernel modules to the hid.o, mousedev.o and keybdev.o modules. The first two use a simpler system known as HIDBP (Human Interface Device Boot Protocol), whereas the latter use a more sophisticated HID protocol. I'm using a usb keyboard and mouse right now, seems okay.

Also right now I'm running from a multisession-CD -- that seems to be very solid now. Will keep testing it, make sure it stays that way.

Mar 4

Upgraded rarsa's improved Network Wizard script to version 21.

The Modem Wizard has a bug in puppy2alpha. Both the Lucent and SmartLink software modem kernel drivers are included in the live-CD iso file, however the "ttyLT0" and "ttySL0" buttons did not appear in the Wizard. Now fixed.
Note, having these drivers builtin, rather than having to download and install them, is good for dialup people, however of course these are not the only kind of software modems. If you have a HSF/HCF type of modem, you still have to install the driver separately -- see the Forum.
(As always though, we recommend you get a real hardware modem -- second-hand external serial modems are very cheap on eBay).

Mar 2

I rewrote the script for the desktop "Save" icon for puppy2. For multisession-Puppy, the "Save" icon is a means to save the session to CD-R/RW or DVD-R immediately, without having to wait until shutdown.

Why would you want a "Save" button? Previous Puppy users found that saving at shutdown is iffy, so this gets around that problem -- although the latest puppy2 saves very reliably at shutdown. It can also be useful if you are writing the next Great American Novel and worry about a power outage causing loss of the last three hours of typing.
There is yet another use, a really neat one: say you have downloaded the latest version of Puppy, and you have burned the iso to CD/DVD (in multisession mode of course). Then just click the "Save" button and hey presto your new CD/DVD is ready to go with the latest session on it.

Note, previous puppies didn't have a "Save" icon for multisession-CD, however do have it now, but it needs to be used sparingly as CDs fill up very fast. This is due to the considerably less storage on a CD, but also each saved-session has about 12M (I think, from memory) wasted space (whereas a saved-session to DVD is much more space-efficient).

Technical note: the actual script is /usr/sbin/savesession-dvd.

Mar 2

Major improvements to multisession shutdown. Reliability of session-saving for both CD and DVD improved.
I found that the Joliet extension can sometimes cause session-saving to fail, so have removed it. A previous problem with some files and directories not getting saved has been fixed.
Detection of CD or DVD being full is now detected in a much more elegant manner. The new code is so much simpler than the previous kludge.

Note that all notes in this page from now on refer to puppy2, unless specifically stated otherwise.

Feb 28

Good news. I found that the problem with ndiswrapper and the 2.4.31 kernel is the lck patchset (from plumlocosoft). I took the vanilla 2.4.31 source and only applied the ntfs 2.1.6b and squashfs 2.2 patches, and now ndiswrapper works. So, we are back onto using the 2.4.31 kernel for puppy2.

Ndiswrapper is upgraded to version 1.10.

Feb 26

Pakt (forum name) has made further improvements to xkb, the keyboard layout component of Xorg. If you find that the layout is still wrong for your country, visit the Forum here:


also here, for a different solution from MU:


Notice: I received a few CD orders that I delayed processing. If you placed an order on February 13th or later, I held your order until 1.0.8 (r1) was released. Your CD is now on its way!

For developers, puppy-unleashed-core-1.0.8r1.tar.gz has been uploaded to ibiblio.org.

Feb 25

Puppy Linux version 1.0.8r1 (revision 1) released. This is a few minor bugfixes. Each of these bugs in 1.0.8 can be manually fixed (see notes below), however for convenience here is a release with the fixes. The size is 61.7M. Release notes:

Feb 24

Peter Sieg has also mirrored Puppy 1.0.8:


The language on this site is german.

BUG REPORT: Xkb keyboard country layout stuck on "us".
Another one snuck through, also easily fixed:
Please download the file xkbcomp.gz, to /usr/X11R6/bin/. You can uncompress it by opening a terminal (Running Rox file manager, with /usr/X11R6/bin as current window, right-click and choose "xterm here"):
# gunzip xkbcomp.gz
Then restart X (look in Shutdown submenu).
If you find this still does not work for your country, there is another solution, that also works for Puppy 1.0.7:

Feb 23

Babbs has 1.0.8 files also:


Feb 23

Puppy 1.0.8 is mirrored here:

md5sum: c96b7e03a9aaa9bc4458efdca3e195ec puppy-1.0.8-mozilla.iso

md5sum: 13e5ea99585b3dac46874cd0eb3d74b3 puppy-multisession-1.0.8-mozilla.iso

http://puptrix.org/std/usr_devx.sfs (developer module)

Ted Dog has mirrored them here:

BUG REPORT Ah ha, our first bug!
We will bring out a "service pack" to fix any minor bugs, but this one is easy to fix manually.
When you look at the menu in 1.0.8, near the bottom is the "Help" entry. This is not working.
Please start the Rox file manager, right-click the mouse to bring up a menu, choose "Display -> Show hidden". Then you will be able to see hidden files. Click on the file ".jwmrc".  There is this line:
  <Program label="Help" icon="help24.xpm">LD_PRELOAD=/usr/lib/libgdkxft.so dillo /usr/share/doc/index.html</Program>
Change it to this:
  <Program label="Help" icon="help24.xpm"> dillo /usr/share/doc/index.html</Program>
Save the file, then choose "Shutdown -> JWM restart" from the menu. That should fix it.

If you want to start Gaim and be automatically connected to the #puppylinux IRC chat channel, please start Gaim from the menu the first time that you run Gaim. The desktop icon just starts Gaim without the automatic account creation -- but after having run Gaim once from the menu it will then be ok to run from the desktop icon as the account has been created. Slight inconsistency there!

Feb 22

Puppy Linux version 1.0.8 is released. The live-CD iso file is named puppy-1.0.8-mozilla.iso and the size is 61.5M. There is also a multisession iso named puppy-multisession-1.0.8-mozilla.iso. Release notes:

The main download page for Puppy is:
Puppy Linux Torrent Tracker:

To discuss Puppy, please go to the Forum, at:

Feb 21

Lior has been busy! He has fixed the bugs in Blinky and released version 0.6. This will be in the final Puppy 1.0.8.

Feb 21

An urgent problem has come up at the 12th hour. I had Blinky v0.5 in Puppy 1.0.8, and there are two bugs. One, when an interface goes down, the Blinky icon disappears from the taskbar, which is what it is supposed to do, but it also takes the clock down. Two, and this is the serious one, Blinky gradually chews up more memory, until the system becomes degraded. You have to be running for some hours for this to happen, but it's unacceptable.

I have just tested an older version, that we labelled version 0.2patched, that Lior had improved a little from the original. It still uses the original rectangular LEDs. Those two bugs are gone. So, v0.2patched will be in 1.0.8.

Feb 20

Country keyboard layout selection has been improved somewhat. Some more countries have been added to the console keyboard layout -- this is the dialog window you see when you run Puppy for the very first time, also in the Mouse/Keyboard Wizard. The console layout refers to the keyboard layout in effect before X is started. The Xvesa Kdrive X server uses the same console layout, however Xorg has its own totally independent layout system called xkb.

Unfortunately, Puppy 1.0.7 has Xorg without the xkb component, meaning that it is stuck on the default, "us" layout -- except, there is a xmodmap DotPup package available developed by Mark Ulrich that provides country layouts for Xorg.

The xkb component is a folder, /etc/X11/xkb, and I left it out due to it's size, about 1.7M, plus it really grated on my nerves that we need to have duplicate layout systems. However, I have hacked the xkb folder down to 0.5M and now included it in Puppy.
My cutdown xkb It will be in 1.0.8, however I have not incorporated it into the Keyboard Wizard, so that currently still only affects the console layout. However, the chosen console layout can be made to automatically "flow through" to Xorg by running the Xorg Video Wizard.
New users will do that anyway -- they get the console keyboard layout dialog, followed by mouse dialog, followed by Xorg Wizard.
If you are updating to 1.0.8, I recommend run the Xorg Wizard again, by dropping out of X, run "xorgwizard", and when you restart X, you should find the correct keyboard layout in /etc/X11/xorg.conf -- a line like this:

  Option "XkbLayout" "de"

As I only have a US layout keyboard, plus don't know much about other keyboards, testing is limited. I did verify that selecting "de" gave my a "qwertz" layout and "fr" gave me "azerty". Users will need to verify the others and report to the forum (after 1.0.8 is released).

Feb 20

Rarsa (forum name) has been working on a major rewrite of the Network Wizard. The latest is version 20, and I have put this into Puppy 1.0.8 and puppy2. When 1.0.8 is released, we invite feedback on this Wizard. Rarsa has put a lot of effort into this project, and others such as work on a unified menu system, and I wish to acknowledge here his incredible level of input and expertise.

Feb 19

Jonathan Marsden has developed a script, gaim-autosetup.sh, to automatically login to the #puppylinux IRC channel on irc.freenode.net. I've put this in both Puppy 1.0.8 and puppy2. When a new user selects "Gaim" entry in the "Internet" submenu, Jonathan's script is first invoked then Gaim launched.
The script is /usr/sbin/gaim-autosetup.sh, launched from /usr/sbin/gaimshell, which in turn is launched from the menu.

I've decided to put "acpi=off" in isolinux.cfg in the live-CD. The reasoning is that Puppy will boot on a wider range of hardware. The kernel was compiled with a year cutoff, I think 2001, such that if the kernel sees the BIOS creation date is older than 2001 then it won't use acpi. However, there still seem to be BIOSes 2001 and later that give trouble. When a user installs Puppy to some media, such as USB or HD, then the current install scripts default to having acpi enabled, but that is easy to configure. Also, the live-CD can be remastered if acpi is required to be on. Oh yes, 1.0.8 has a boot menu, so the default will be acpi off, but option 2 will be acpi on.

Feb 19

Lobster reported a bug with pmount, my partition mounter. Clicking the window close box did not cause the program to exit. Fixed.

In 1.0.8beta, the install and CD-remaster entries were missing from the menu (Setup submenu). Fixed.

There's a bug with Blinky and JWM -- when the network interface goes down, the Blinky icon disappears from the JWM taskbar, which is what is supposed to happen. Except that it takes the clock with it. The clock is still running in the taskbar, hovering the mouse pointer over it brings up the date, however the time display is no longer visible.

Oh, this is really sad... it was reported that ndiswrapper does not work with the 2.4.31 kernel. I was also told that Damn Small Linux went back to the 2.4.26 kernel because of that. Well, I tested for myself. Running the 2.4.31 kernel as used in Puppy 1.0.8beta and 2alpha, tried "modprobe ndiswrapper" ...and my computer froze. Totally froze. I had to press the rest button. Oh sad, sad. How on earth could the developers release a kernel with such an important requirement disfunctional?
The ndiswrapper "Tips" page has this advice:

After loading the module or NDIS driver, if you notice keyboard or mouse lock up or if capslock is flashing, most likely the kernel has crashed. This happens for various reasons:
Yep, I got all three of those, flashing LEDs, frozen keyboard and mouse. But, the point here is that the exact same setup worked fine before, using the 2.4.29 kernel.

Puppy is using ndiswrapper version 1.1, so I upgraded to the latest, 1.10. But no go, same crash as above. So, looks like I have to go back to the 2.4.29 kernel.

Okay, it's done. Puppy 1.0.8 will use the 2.4.29 kernel, same one as used from Puppy 1.0.4. The only difference is I have recompiled it with a 13824K default ramdisk size instead of 12288K (because of the ALSA modules). I recompiled the ALSA 1.0.8 drivers for the 2.4.29 kernel. Also, I have left ndiswrapper at version 1.1.

Feb 18

The ALSA Wizard is fixed. There were various bugs, such as the Wizard re-executing everytime X starts (puppy2 bug, occurred if the Wizard failed to find a driver for the sound hardware), and the last dialog in the Wizard to play a test sound did not play anything (now you get two barks!).

Feb 18

Fixed the problem of Seamonkey Mail&News window being too big for an 800x600 screen. In the ~/.mozilla folder there's a file, localstore.rdf, that sets the window sizes.

Looks like I'll stay with Mail&News for puppy2. Feedback on the Forum, regarding Mail&News versus Sylpheed, is somewhat divided. Despite being a bit slow, newcomers will probably feel more at ease with Mail&News (er, I mean Seamonkey is slow, not the newcomers!). Also the powerful spam filtering is a definite plus.

Feb 18

I've hacked thoughtjourney's jwmconfig JWM configuration GUI, to work with JWM 1.4. The new Unleashed package is jwmconfig-0.1patched.

Everybody is tired of seeing that seagull! For 1.0.8-final there will be a new default desktop image.

Feb 15

Ted Dog has mirrored Puppy 1.0.8beta here:
Md5Sum:603aad31658d072ce00df909e268f73c puppy-1.0.8beta-mozilla.iso

Also Mark Ulrich's mirror: http://dotpups.de/puppy-releases/1.0.8-beta/

There are some small bugs discovered. Read about them, and contribute your own discoveries to the following Forum threads:

One important bug: the JWM Setup submenu is missing the install and CD remaster scripts. The Puppy Universal Installer is only in puppy2. You can run all these scripts from the commandline. This is what is supposed to be in /root/.jwmrc:

   <Program label="Create custom Puppy live-CD" icon="mini-ray.xpm">exec /usr/sbin/createpuppyonline</Program>
<Program label="Alienx simple remaster-CD" icon="mini-ray.xpm">exec /usr/sbin/alienx-shell</Program>
<Program label="Install Puppy USB drive" icon="mini-ray.xpm">rxvt -bg "#ffffc0" -e /usr/sbin/install-usb.sh</Program>
<Program label="Install Puppy Zip disk" icon="mini-ray.xpm">rxvt -bg "#ffffc0" -e /usr/sbin/install-zip.sh</Program>
<Program label="Install Puppy hard drive" icon="mini-ray.xpm">rxvt -bg "#ffffc0" -e /usr/sbin/install-hd.sh</Program>

For example, at the commandline, you type:

# install-usb.sh

to run the the USB installer script.

Feb 15

Puppy version 1.0.8beta is available. This is for Puppy-testers, not quite ready for general release. The file is puppy-1.0.8beta-mozilla.iso (61.9M) and is avilable at:
Release notes:

There are reports of difficulty using the 2.4.31 kernel with ndiswrapper. Let me know. We may have to fall back to the 2.4.29 kernel for the final 1.0.8 release.

With the 1.0.x series, I normally release two iso's, a normal one and a multisession iso. The normal iso can be used for multisession, as there is a special boot option (option 5) to be used at first boot. However, this iso is okay for CD, not so good for DVD -- according to very limited earlier testing. Consequently, I usually release a iso file optimised for multisession DVD. Will do so this time when the final 1.0.8 is released.

Just getting started with SATA. Let us know if your drive is recognised, or not.

Kindly evaluate and report any bugs to our Puppy Forum.

Feb 14

Ted Dog has mirrored the puppy2alpha experimental release on his fast server:


2cd84372b892fa230395413c1cca9ca7 puppy2alpha-seamonkey.iso

Feb 13

In preparation for testing puppy2alpha, it is helpful to understand something about the inner workings of the new puppy2 architecture. The "How Puppy Works" page has been updated:


And here is the download site for puppy2alpha: http://www.pupweb.org/test/
The live-CD iso file is pupp2alpha-seamonkey.iso and is 66.2M. Release notes:

Feb 12

I've reduced the size of Xkb somewhat. For now, there is no configuration tool for setting up the type of keyboard and country layout, but when puppy2-alpha is released, you can manually edit /etc/X11/xorg.conf -- insert the following into the keyboard section:

   Option "XkbModel" "pc102"
Option "XkbLayout" "de"
In this example "de" is the German layout.

Note that the keyboard layout currently selected when Puppy is first booted is for the console. It appears that the Xvesa Kdrive server uses the console layout, which is great. Unfortunately it appears that Xorg cannot be made to use the pre-X console layout (or can it?), so we have to have a a whole lot of stuff that more-or-less is a duplicate of the console keyboard layout files.
If you need to edit /etc/X11/xorg.conf and the layout is wrong when running X (making typing awkward), exit to the prompt (commandline) then run the mp text editor:
# mp /etc/X11/xorg.conf

Feb 12

sudo and sudoedit are moved from usr_devx development module to the main iso. Also some other changes as recommended in this thread: http://www.murga.org/~puppy/viewtopic.php?t=5991 -- well, no a couple of things I didn't do as wasn't sure about them. Flavour and GuestToo, have a look at this again when puppy2-alpha is released.

I'm experimenting with xkb in Xorg. Previously it was removed to save space.

Feb 11

Today's test of puppy2 multisession DVD is working. For the last couple of days I have accumulated a small stack of burnt CD-Rs and DVD-Rs, getting the bugs out. I'm giving up on CDs, it's just too buggy -- the Linux kernel CD driver just can't handle multisession CDs and it seems to have got worse with the 2.4.31 kernel. The multisession DVD on the other hand is working nicely.

Note, I have completely rewritten the multisession bootup and shutdown scripts. Now using a simpler technique. Previously, maintained lists of saved and deleted files, plus a weird system of using symbolic links for deleted files. Now, I'm leveraging off unionfs's own layer management mechanisms.

The new multisession scripts are currently fairly basic, missing the ability to import data from a previous DVD, and missing ability to export personal data to a new DVD when the current one is full. Hope to add that sometime. Oh yes, have to bring back that desktop "save now" button also -- it's probably less important now though, as session saving at shutdown should be more reliable.

Feb 10

I plan to release a test iso, puppy2-alpha soon, probably about 14th-15th. I had planned to release it about now, but still testing a few things. Also, I won't be going to perth until Monday -- I'm on very slow dialup in a rural region, and have to drive four hours to the big city to use my friend's ADSL connection for uploading Puppy.

Feb 9

Busybox cut has been replaced with the full version from the coreutils 5.2.1 package (taken from Vector). It was reported on the forum that the Busybox cut breaks the Linux Firewall script.

Lior's Blinky version 0.5 is now in Puppy. I have been chatting with Joe about some problems with JWM version 1.3, and he has now released version 1.4, and I have upgraded Puppy.

So, what's with "puppy+"? Nothing much. I want to differentiate my own Puppy creations from the official Puppy release. For now, whatever I release is the official Puppy, but in the future there may be a community-managed official, or reference Puppy, and my own development version will be separate but will feed into the official release. Rather like the relationship between Sylpheed and Sylpheed-Claws perhaps.

Feb 5

The Puppy universal installer is nearing completion. Previously it only installed Puppy to USB or IDE-CF drives, have now added install to hard drive. In puppy1 there are different scripts for each installation target, now there is one integrated script. It has a nice GUI too.

A big thanks to Lior Tubi, known as lior2b on the Forum, who came to the rescue and fixed Blinky (see News for Feb 3). I've got Blinky running in the taskbar right now, it's great!

Feb 3

As requested on the Forum, the sound volume is now remembered between boots. At shutdown, in the rc.shutdown script, the setvol program is used to read and save the left and right speaker volumes to file /etc/.mixervolume. At bootup, the rc.local0 script reads /etc/.mixervolume and uses setvol to set the volume.

Note, Joe's Window Manager (JWM) forum has moved to here:

Feb 3

Okay, there's a problem with Blinky, the taskbar network monitor. It worked fine when I was on dialup, but now that I'm at my friend's place who has adsl, Blinky is not detecting the active eth0 interface. From my exceedingly quick scan through the source code, Blinky should do so automatically. Blinky reads /proc/net/dev and sees which line has activity (file usage-proc.c). So, it looks like we will have to hack the code a little. The code could call ifconfig, but that shouldn't be necessary, as /proc/net/dev has the required info.
Note, Blinky is launched when JWM starts, and the code to do that is in the /root/.jwmrc file. It is executed as just "blinky", however it is allowed to specify an interface, like "blinky eth0" -- however we really want the auto-detection to work.
Blinky can be launched standalone.

Would anyone with a smattering of C knowledge be interested in helping out here?
You can get my patched source here: http://www.pupweb.org/test/
The package has a precompiled executable in it.
Here is the config I used:
# ./configure --prefix=/usr --build=i486-pc-linux-gnu

I've started this forum thread so that we can discuss and coordinate fixing Blinky:

Another thing that would be nice is little bar graphs instead of flashing LEDs...

Feb 2

Gaim v1.5.0 has been recompiled to use the Seamonkey 1.0 nss and nspr libraries. These security libraries are required to access MSN.

The tune2fs and badblocks utilities from the e2fsprogs v1.34 package have been added to Puppy.

The script for increasing the size of the personal persistent storage file (previously called pupxxx, now called pup_save.3fs) has been upgraded for puppy2.

Regarding a schedule for puppy2, the current plan is to release puppy2-alpha iso file around Friday-Sat 10-11 Feb. This is intended to be almost-feature-complete. Soon after that the beta release will be final except for chasing down bugs.

Feb 2

I attempted to upgrade the Snack sound library from version 2.2.9 to 2.2.10, but it was a disaster. I compiled the older one for OSS, the newer for ALSA. The tone generator application (generator.tcl), which can play various waveforms at selectable frequency and amplitude, played a sine wave with a weird burbling distortion in the new version, whereas the old Snack, running with ALSA (through ALSA's OSS compatibility mode), plays the sine wave perfectly.
The mixer application (mixer.tcl), has a totally scrambled layout in the new version.
Looking at the changelog, there don't seem to be many changes, but they have done something to "improve" canvas renering. Also it seems need to play through ALSA's OSS compatibility layer to get undistorted sound.
So, I'm staying with 2.2.9.

Feb 1

Mark Tyler's mtPaint is upgraded to version 2.20. gFTP has been upgraded to version 2.0.18. Mozilla 1.8b1.5 has been upgraded to Seamonkey version 1.0.

A couple of small things in Xorg Video Wizard and Mouse Wizard have been fixed. In particular, a serial mouse is now detected correctly.

Jan 31

This will please some people... rc.update script has been updated for puppy2, and I have done away with the "files cleanout". This was a part of the version update that deleted all files that did not seem to be part of officially installed packages. It was controversial.

Jan 31

Okay, it's done already. As mentioned immediately below, the new JWM can swallow applications into the taskbar. So, I've added a network monitor, by name of Blinky.
I hacked the source code slightly to get it to fit. Blinky automatically finds the active interface, be it ppp0 (dialup), eth0, eth1, or wlan0, and has two LEDs that flash green if traffic is going out or in. If no active interface is found, the LEDs display with colour dark-red. Hovering the mouse pointer over the LEDs shows accumulated bytes transferred in and out, and right-click brings up a menu to adjust the colours.

Blinky was developed by Benjamin Miller, project home is http://www.sourceforge.net/projects/blinky.

Jan 31

The JWM window manager has been upgraded from version 0.24 to 1.3. Much thanks to Rarsa (Forum name) who pioneered this, in particular working out the changes in the configuration file. Rarsa has also worked on the XDG menu format, but I haven't got into that yet.

There are some issues with version 1.3, particularly with regard to the appearance of the main menu. The menu draws from the very bottom of the screen, the submenu icons are distorted, and the default vertical item spacing is too large. I'll get onto Joe, the author, about this. Also, JWM repeatedly spits out this warning message:

JWM: warning: XError: [request_code=153][7]: 183

Thoughtjourney (Forum name) will have to look at this:

JWM: warning: /root/.jwm/jwmrc-personal[9]: invalid tag in JWM: DesktopCount

With this new JWM we can have applications swallowed into the taskbar. I'll checkout putting a network monitor in the taskbar.

Jan 30

I've just done something very interesting, astounding even. I've dreamed about doing this for a long time, and it is finally a reality. In a nutshell, puppy2 can "piggy back" on another distro and use all of it's applications.

I've got Mandrake 9.2 installed on a PC. I booted up puppy2 from CD, and I created a file, named "underdog.lnx" on a hard drive partition. At shutdown, I chose that same partition for the personal persistent storage file, pup_save.3fs.
Okay, underdog.lnx is just a text file, and in it I placed the text "hda1", which is where Mandrake is installed.
When I rebooted Puppy, Puppy read the underdog.lnx file, and then used unionfs to add the Mandrake partition as the bottom layer. Here is a diagram (created with Sodipodi) to visualise how it all goes together:

The top layer is a tmpfs filesystem in RAM, next down is the pup_save.3fs file, which is the persistent storage. Third down the the pup_xxx.sfs file, which is a squashfs filesystem with all the Puppy files. On the bottom layer is Mandrake.

You have to visualise each of these layers as a complete filesystem, each with the complete directory structure. A layer overrides the one below. Thus, /usr/lib/libz.so on say the pup_xxx.sfs layer overrides the same file on the Mandrake layer.

The end result is fascinating. It's our normal Puppy, but all the Mandrake applications are available. In a terminal, I tried kwrite, drakconf, rpmdrak, kmail, konqueror, many more, they all worked. Of course, they aren't in the Puppy menu. OpenOffice didn't work though, it complained that libXrender.so.1 is missing, although it is there.

If you don't want the "underdog Linux" anymore, just get rid of the underdog.lnx file and reboot.

What particularly fascinates me is the Mandrake package manager. I haven't tried it yet, but if you install a package, where do you think it goes? The Mandrake partition is mounted read-only, and any new or changed files go onto the top layer, which gets saved periodically to the pup_save.3fs file. So, if the underdog distro was initially installed fairly barebones, and you use its package manager, you are actually installing the packages to Puppy.

Any bugs? Apart from the OpenOffice problem, unionfs has bugs. Rox and Konqueror both do not show all the files in some directories -- they miss the bottom layer. For example /usr/bin/kwrite is in the bottom layer (in Mandrake), and I can see it with commandline tools, but Rox and Konqueror can't. The notes for Jan 29 describe more unionfs bugs.

Jan 29

Unionfs has bugs. Most users of Puppy 1.0.7 and earlier probably do not encounter any trouble, however there is a problem if files are renamed and/or deleted in a certain combination or certain number of times. This bug is known to the developers of other distros such as Knoppix.

Another Unionfs bug has emerged in puppy2, that does not occur in puppy1. If you do something like this:

# mkdir /tmp/mntpt
# losetup /dev/loop2 myfile
# mount -t ext2 /dev/loop2 /tmp/mntpt

Unionfs goes into an endless loop, using up a lot of the CPU time. The reason has something to do with /tmp/mydir being inside a tmpfs filesystem that appears to be mounted on "/" by the union, but is actually directory /initrd/pup_rw, which before the pivot_root is actually directory /pup_rw. Maybe that's confusing, the unionfs handler obviously thinks so.

So what to do? Puppy may use loop0 and loop1, and if squashfs application extensions are added, such as the devx_xxx.sfs (formerly named usr_devx.sfs), these use loop3 onwards. So, loop2 is kept available for user scripts. We need a workaround so that a user script can use loop2.
The solution to the above bug is to use a mount point that is outside the union. For example, mount another partition:

# mount -t ext3 /dev/hda1 /mnt/hda1
# mkdir /mnt/hda1/tmp/mntpt
  ...then use losetup etc.

Another solution is to create a tmpfs (temporary filesystem). The example here is using file "initrd", which has a ext2 f.s. inside it:

# mkdir /tmp/tmpfs
# mount tmpfs /tmp/tmpfs -t tmpfs -o size=30m
# mkdir /tmp/tmpfs/mntpt
  initrd must be copied into the tmpfs...
# cp initrd /tmp/tmpfs/
# losetup /dev/loop2 /tmp/tmpfs/initrd
# mount -t ext2 /dev/loop2 /tmp/tmpfs/mntpt
  do stuff
# umount /tmp/tmpfs/mntpt
# umount /tmp/tmpfs

Jan 28

First test of ALSA in puppy2 is successful. I downloaded the source of version 1.0.8, for version synchronisation with Vector 5.0STD, 5.1STD and Slackware 10.1.
I compiled alsa-driver, alsa-lib and alsa-utils packages, then ran the alsaconf setup utility. At first it failed, but I replaced lspci with the one from Vector.
The lspci in Puppy was patched long ago, I can't recall what for. Anyway, it's output is incompatible with alsaconf. Incidentally, lspci is from the pciutils-2.1.11 package.
Alsaconf also needs /var/tmp/alsaconf.cards, which I also got out of Vector.

I've been scratching my head wondering why I patched, or rather hacked, the source of lspci. Just in case the patched version is needed, it is retained as lspci-PATCHED.

I also got the start/stop script, /etc/rc.d/rc.alsa, out of Vector.

ALSA home page is here: http://www.alsa-project.org/
Source packages are here: ftp://ftp.alsa-project.org/pub/

After the event, I am now reading the main forum thread that discusses ALSA: http://www.murga.org/%7Epuppy/viewtopic.php?t=1559
I would like to acknowledge forum member "tempestuous", who was the original effort behind this thread. Various questions are raised... I didn't install alsa-oss package, don't seem to need it? ...the xtmix mixer, which I thought was for OSS only, still works.

Tempestuous raises the question about conflict if both OSS and ALSA modules get loaded. The solution is to delete all the OSS modules. Actually, in Puppy Unleashed, the "createpuppy" build script that creates the live-CD iso file from the Unleashed packages, now makes deletion of the OSS modules optional. But, it's either that or disable the loading of a OSS module.

Jcoder24 wrote that he edited alsaconf to find modinfo at /usr/sbin, as that's where it is in Puppy. Ah, so that's why I couldn't get alsaconf to work using modinfo! -- and needed the alsaconf.cards file instead. Anyway, I have moved modinfo to /sbin.

Ah ha, jcoder24 has solved more problems! He edited alsaconf to work with the existing hacked version of lspci. He also fixed a problem with the script not finding "rcalsasound" -- yes, I will put that in right now. Thanks jcoder24.

Regarding the setup steps, I just ran alsaconf, and when it asked if I wanted to save to /etc/modules.conf, I replied yes. Sound worked. I then unloaded all the sound modules, then ran "/etc/rc.d/rc.alsa start" and it worked. So I have placed some code into /etc/rc.d/rc.local0, that detects if the required info has been appended to modules.conf, and if so executes rc.alsa.

Jcoder24 has pointed out a problem with a lock file, /var/lock/subsys/alsasound. This needs to be deleted at shutdown or bootup. I've done it in rc.local0.

So, it looks like I have finally committed to ALSA. It should be in the next pre-alpha test release.

Jan 27

The Puppy Universal Installer initially displays a dialog window to choose a destination, and I have added "USB CF Flash, move to CF IDE adaptor". I have a CF-USB adaptor, so I can install Puppy to that, then unplug the CF card and plug it into the CF-IDE adaptor on my NTAVO PC.

Jan 26

This is information about the patents on the LZW compression used in GIF files is interesting (extract from http://www.gnu.org/philosophy/gif.html):

We were able to search the patent databases of the USA, Canada, Japan, and the European Union. The Unisys patent expired on 20 June 2003 in the USA, in Europe it expired on 18 June 2004, in Japan patent expired on 20 June 2004 and in Canada it expired on 7 July 2004. The U.S. IBM patent expires 11 August 2006

Apparently both Unisys and IBM took out patents on the same LZW compression algorithm, a bungle by the US Patent Office.

Puppy2 has moved over to using Bash completely, well almost. The initial ramdisk (prior to pivot_root) uses Busybox Ash, but when Puppy is running it is Bash all the way. /bin/sh is now a link to /bin/bash. Note, previously, bash was located in /usr/bin, due to space restrictions that no longer apply.

Partview, the utility that graphically displays the size and free space in mounted partitions, has been upgraded for puppy2.

Using a floppy disk for personal persistent storage is a challenge, as it is such a small space (1.4M). Puppy2 now has special handling to minimize what gets saved to the floppy. For example, the first time you run Mozilla (or any of the derivatives), a couple of megabytes of config files are generated -- there goes your floppy right away. By not saving those Mozilla config files to the floppy, Mozilla still works on next bootup, it just has to regenerate them, and you lose customisations. The relevant files are /etc/rc.d/rc.shutdown and /usr/sbin/snapmergepuppy.

Jan 25

First test of puppy2 booting from live-CD is successful.
It boots up running totally in RAM, then at shutdown a dialog box offers a selection of partitions to create a pup_save.3fs file to save the personal data to -- even a floppy disk is now an option! The dialog even shows free space on each of the candidate partitions. So, I chose a partition, rebooted, and voila, the new pup_save.3fs was found at bootup and loaded.
Running it right now as I type this.

The isolinux.cfg file only has one Puppy-specific boot parameter, "PMEDIA=idecd", to help Puppy locate the boot media. However, the next step is I plan to make even that parameter optional. So, I've eliminated all those others, PSLEEP, PROOTFS, PKEYS, PHOME, PFILE ...um, what were they all again? ...anyway, they've all gone, and soon even PMEDIA will be optional.
The reason this can be done, is Puppy has got clever enough to explore the PC and discover everything automatically.
Note however, PKEYS is still recognised by puppy2, but is optional.

Jan 24

Just a brief note to let everyone know that something is happening! I've got my nose down, working on the bootup and shutdown scripts for puppy2.
They are the key to the whole thing, so have to get them right. They are shaping up as very small, simple, flexible and elegant.

Jan 21

Ok, I've built dnotify into PupSafe. Dnotify monitors the persistent storage for illegal file modifications -- this does not affect installing PupGet or DotPup or any other packages or files, as these are all flushed from tmpfs to persistent storage by the legal mechanism.

This is still not perfect security, as using a daemon to monitor directories has its own security issues. The next step up is maybe to use dazuko, a kernel module, that also performs file and directory monitoring.

A point of clarification. Pupsafe has nothing to do with whether we login as root or not-root. It is an extra security layer on top. Login as a non-root user is still something that we can look at.

Jan 20

Found it! As mentioned in Jan 19 notes, I recalled a certain directory monitor tool. Here is an overview of Dnotify:

dnotify is a simple program that makes it possible to execute a command every time the contents of a specific directory change in linux. It is run from the command line and takes two arguments: one or more directories to monitor and a command to execute whenever a directory has changed. Options control what events to trigger on: when a file was read in the directory, when one was created, deleted and so on.

dnotify is written entirely in C, and uses the linux kernel directory notification feature to monitor directories. Because of this, dnotify does not need to poll files every few seconds (like `tail -f' does). All time is spent sleeping until an event occurs. This also means that dnotify only works with recent versions linux (2.4.19 or later is required).

Dnotify is developed by Oskar Liljeblad, url http://oskarsapps.mine.nu/dnotify.html.

Jan 19

Initial test of PupSafe is successful. PupSafe is a security mechanism to offset the perceived dangers of running as root. I'm too addicted to running as root, so I've applied some lateral thinking.

Running Puppy, the first line of defense is an effective firewall. Also system files are in compressed read-only file(s) -- for puppy2, there is a single squashfs file named pup_xxx.sfs, which is read-only and is mounted on "/". File pup_xxx.sfs has all the Puppy files, all the applications, everything, and this will remain pristine. However, your personal persistent storage partition can overwrite any of these files, by the unionfs overlay system -- the pristine files are still there, just overlaid by your modifications.
The unionfs overlay system, which means that all of "/" is writable, is also a security weakness.

Puppy2 has a daemon (background application) (/usr/sbin/savepuppyd) that periodically saves the contents of the tmpfs ramdisk (which is all your "working files", meaning new and changed files) to persistent storage. This also happens at shutdown, when the /etc/rc.d/rc.shutdown script executes. The actual script that merges files in tmpfs to the persistent storage is /usr/sbin/snapmergepuppy, and this is what has PupSafe.
In a nutshell, PupSafe will warn you if any system files are going to be modified. However, legitimate exercises, like a package installation, will go through unhindered.

Currently this is a fairly light-weight defense mechanism, relying on an intruder's ignorance of the unusual architecture of Puppy. In future we could consider protecting the scripts savepuppyd and smapmergepuppy from being modified or killed even by the root user. There are other possible enhancements, but I just wanted to get the basic thing working for now.

Note also, that unlike normal distros, as a last resort you can always revert to the pristine Puppy, as the pristine files and the modified system files in your persistent storage partition are always separate. So you are never going to have a crippled or unrecoverable system. Even a "full" hard drive installation can maintain this separation.

There is something that I would like to incorporate into PupSafe: sometime ago I came across a program that was able to monitor any directory and report if any file anywhere in that directory was modified. It did this in a very efficient manner (very low CPU overhead while running as a daemon), making use of a kernel feature that notifies of any file or directory changes. I've forgotten where I found this program, so if anyone knows, kindly let me know!

In the future, if anyone says you shouldn't be running as root, you can reply, "Ah, but Puppy has PupSafe!".

Jan 18

The Puppy drive/partition mounting program Pmount has been upgraded for Puppy2.
What this means is that it recognises the different mount points used in Puppy2, and can now handle the "superfloppy" type of drive. In theory anyway, as I haven't got one to test right now. Some USB Flash drives and some ZIP drives are formatted without a MBR nor partitions, and these are referred to as "superfloppy" drives. The "partition" is effectively the entire drive, so the "partition" is accessed as /dev/sda (for example), in contrast with normal drives that have partitions /dev/sda1, /dev/sda2, etc.

Jan 17

Ah good, test successfull. Puppy users will know about a problem, a "catch 22" situation. The very first time that you boot the Puppy live-CD on a computer, a personal storage file named "pup001" is created automatically. This is a problem if it gets created on, say, /dev/hda1, the "C: drive", but you want to install Puppy to that partition. Our workaround was a menu with boot option to not create pup001 and just run in ramdisk.
I'm trying to get Puppy2 away from needing any menu (and subsequent pause) at bootup. Puppy2 tackles the problem the other way round, by booting up in ramdisk-only the first time you boot on a PC, then at shutdown you are asked if you want to create a personal storage file. If you anser yes, it will get created and automatically used next time you boot Puppy.
Yeah, simple, and it's working. Right now I'm running Puppy2 booted from USB Flash, with a personal storage file, named "pup_save.3fs" that I chose to create at the first shutdown. The principle works regardless whether booting from CD, USB or whatever.

Note, some people considered that Puppy should boot up only in ramdisk by default, for "ethical" reasons. Or maybe, "stealth" or "non-invasive" reasons. Whatever, your wish is now reality.

Note, I have decided to have a fixed name for the personal storage file: pup_save.3fs. Also, have made it a ext3 filesystem rather than ext2, as the former gives more reliable storage, particularly in the case of a crash or power outage.

Note, I'm writing a "universal installer", a sneak preview will be available with the next pre-alpha release.

Jan 17

Phew, I've had a very frustrated few days, chasing down that problem of dialog "crashing".
Thanks to the current maintainer of dialog, Thomas Dickey, for prompt replies to my questions. I quickly realised that the problem is not with dialog, but appears to be inside Busybox.

What is happening is when I type "poweroff" at the prompt, the shutdown script /etc/rc.d/rc.shutdown executes, but any user input requires two duplicate key presses. The first press causes a "#" prompt to appear on the screen, the second key press is then read by the shutdown script and it continues to execute. Running ps during shutdown does not show any spurious process running, but something seems to be wanting console input at the same time as the shutdown script ...or so it seems.

Anyway, I eventually devised a workaround. Not a solution, just a workaround. For the record, here it is:

/etc/inittab has this:

tty1::respawn:/sbin/getty -n -l /bin/autologinroot 38400 tty1
tty2::respawn:/sbin/getty 38400 tty2

Note for those unfamiliar with Busybox: the runlevel field is empty as Busybox does not use runlevels.

I deleted the "shutdown" line in inittab, and replaced the Busybox poweroff and reboot with my own scripts. For example, poweroff:

exec /bin/busybox poweroff

In a nutshell, by running rc.shutdown script before Busybox goes into its init-based shutdown sequence, I avoid the duplicate-keys problem.

Another problem we have had with Busybox is that sometimes, for no discernable reason, shutdown did not execute the rc.shutdown  (previously called rc.reboot) script and just bypassed it and powered down. For the multisession CD/DVD, this meant that a session was not saved. A mystery, but the above fix should also fix that.

While I'm at it, documenting my grumbles about Busybox, another note for the unwary. When configuring prior to compiling, make sure that CONFIG_FEATURE_INITRD is disabled. Although this seems like it should be enabled from its description, and I do have a initrd, enabling it causes poweroff and reboot to simply not work, returning "No process killed".

One more grumble: That accursed Busybox fdisk applet caught me again... the darn thing, according to its own "fdisk --help" supports the "-s" option, except that it doesn't (yes, I did compile Busybox with all extra features of fdisk enabled).

Jan 15

We have a peculiar bug during shutdown of multisession Puppy. The dialog program displays a text-mode dialog, end pressing the ENTER key to accept the default sometimes causes a drop down out of the script to a commandline prompt. Yet, "ps" shows that dialog is still running. In an attempt to fix this, I have upgraded dialog from version 0.9b-20031207 (the same as used in Vector 5.0STD) to the latest, 1.0-20060101.
Note, the bug could be in the ncurses library rather than dialog itself.

Testing dialog: nup, the bug is still there. Press ENTER key, crashes to a prompt, but ps shows dialog still running. Note, there is a workaround for this bug, in both versions: press ENTER again terminates dialog and then the shutdown script continues. A bit pathetic though.

The new dialog 1.0 does not do automatic sizing of the dialog boxes properly, so I'm going back to the old version.

Puppy2 has this error message during bootup:

"kmod: failed to exec /sbin/modprobe -s -k scsi_hostadapter, errno = 2" 

...but, there is no such module. Googling revealed this (May 2002):

Actually, it happens because of the standard initrd.  In the initrd we 
load scsi_mod first, and on initialization scsi_mod attempt to
request_module the host adapter, but there is no /sbin/modprobe (and no
/etc/modules.conf for modprobe to read either) so you get the error above.  
Then, the initrd continues on to load the specific scsi modules.  So, in
actuallity, it makes sense to *disable* this entire code section if scsi
is a module because it will *always* be loaded before the host adapter (it
has to for dependancy's sake) and will always be a failure.  When compiled
into the kernel I'm not sure it makes any sense either since if the scsi
driver isn't loaded yet, then where would we be getting modprobe and
/etc/modules.conf from?  It would either have to be an initrd (in which
case the linuxrc script can load the module manually) or / is on ide (or
something like that) which doesn't depend on our host adapter, in which
case it makes no sense to go around loading things without them being
specifically requested.  Personally, I think this code should just die,

So, it's a spurious error message that doesn't do any harm. Annoying though.

Note, I compiled the 2.4.31 kernel with scsi_mod built-in, previously it was a module, but still always got loaded in the initird. The Puppy2 initrd (initial ramdisk) does have the modprobe program (it's just a link to insmod) although it isn't used, and there isn't /etc/modules.conf nor any of the dependency files in /lib/modules that modprobe requires. The Puppy1 initrd has all the modules, /etc/modules.conf. module dependency files, in fact everything. The reason for the difference is that I want the Puppy2 initrd to be as small as possible, for booting up on old hardware with limited RAM. Currently, Puppy2's initrd.gz is 1375K and Puppy1's image.gz is 6626K. Though, I am toying with the idea of putting all the modules into initrd.gz, which would bump it up about 2M, and after pivot_root, /lib/modules would be a link to /initrd/lib/modules (as the initrd) remains in memory while Puppy2 is running.

Jan 14

David May has designed a great new logo:

Jan 9

Puppy2 pre-pre-alpha is being discussed on the Puppy Forum in this thread:

Ted Dog has provided an alternative download:
http://www.puptrix.org/pre/pre/alpha/puppy2-001.tar.gz (63M)

Jan 9

Announcement for Puppy-testers only! Okay, here is a test kit for Puppy2 pre-pre-alpha, specifically and only for testing on a usb Flash drive. What should happen, if all goes well, is it will just work. To itemise the good points:

  1. No pup100 file (but a pup_save.3fs equivalent is optional).
  2. Works with any size usb Flash drive (minimum 128M), even very large and all of it is immediately available for personal data.
  3. Works on PCs with very little RAM, probably as little as 32M.
  4. Boots very fast.
  5. Runs very fast (if there's enough RAM).
  6. Shuts down very fast.
  7. Saves ramdisk (your working files) to Flash drive every 30 minutes, so extending lifetime of flash media (by restricting the number of writes).
  8. The entire filesystem, that is, "/", is writable and is saved.
  9. Files written to /etc and /usr are no longer inside /root. It's now closer to a normal Linux filesystem.
  10. Up to four extra .sfs files can be mounted on "/".
  11. Simplified boot params. Ex: "PMEDIA=usbflash" is all that is needed to boot from usb.
Most important, this is pre-pre-alpha and there may be bugs with other scripts. Do not report them. Only report issues pertaining to booting, running, saving and shutdown to/from usb Flash.

I'm experimenting with a new way of installing to usb Flash, using the "superfloppy" method, in which there is no MBR and no partitions. My reasoning is that any quirky BIOS with USB-FDD or USB-ZIP boot options should be able to boot from this.
Installation is very easy. Follow these steps:
# tar -zxf puppy2-001.tar.gz
# cd puppy2-001
Plug in your usb flash drive, let's assume it's going to be "sda"
(if a usb drive is/was already plugged in, then new one will likely be sdb)
# modprobe usb-storage
For usb1, wait up to 25 seconds for drive to initialise.
Run probedisk just to confirm it's there...
# probedisk
Save image, cos we are going to mess up the drive...
# dd if=/dev/sda of=oldimage
# sync
# dd if=/dev/zero of=/dev/sda
# echo "y" | mke2fs -m 0 /dev/sda
# mount -t ext2 /dev/sda /mnt/data
# ./extlinux -z /mnt/data
# cp vmlinuz /mnt/data/
# cp extlinux.conf /mnt/data/
# cp initrd.gz /mnt/data/
# cp pup_001.sfs /mnt/data/
# sync
# umount /mnt/data
That's it, reboot computer.
Note, you could use ext3 above, if you wish.
Note, do not use MUT or Pmount to mount /dev/sda, as they can't handle it.

Go here to download puppy2-001.tar.gz: www.pupweb.org/test/

Some possible trouble-spots:
  1. Saving of the tmpfs ramdisk to Flash drive occurs periodically in the background. I do not know yet if there are any reliability or performance issues with this. May have to tweak process priority.
  2. The tmpfs ramdisk is kept small, as it only contains new and changed files. The periodic save to persistent storage does not actually flush the files from the ramdisk though, due to a technical difficulty with unionfs -- the ramdisk is top layer, persistent storage next down, so in theory unionfscould use the saved files. This limitation does mean that if you download big files, the ramdisk can fill up, but a daemon will warn of this and ask you to reboot Puppy -- which will flush the ramdisk.
  3. The reliability of creating, renaming, deleting files and directories in the new multi-layer unionfs environment has yet to be determined.
If you want to study how it all works, the key script is /initrd/sbin/init. Other relevant scripts are /usr/sbin/savepuppyd, /usr/sbin/snapmergepuppy, /etc/rc.d/rc.sysinit. and /tmp/rc.reboot.
The basic idea is a small initial ramdisk (initrd.gz), and all of Puppy (everything under /) (pup_001.sfs) is then loaded, but the initial ramdisk is kept in memory. I developed the concept myself, then after finding that it actually worked, I googled around and found that it is not new, though I may have a unique variation on the basic idea. One system fairly close is Noppenlinux. Note, this new architecture works because Unionfs is absolutely brilliant.


The utilities chmod and touch, from the fileutils-4.0 package, have been copied from Vector, replacing the BusyBox versions. The usual reason, the BusyBox versions lack required commandline options.


When the kernel is booted with boot-parameter vga=791 (for 1024x768 for example), the Puppy commandline (prior to starting X) is a VESA graphics mode, meaning that you get more lines on the screen and more characters per line. You also get a penguin logo while booting.

Except, I have changed the penguin logo to a Puppy logo. The penguin logo is in the kernel source at /usr/src/2.4.31/include/linux/linux_logo.h. I found a little program, png2linuxlogo (http://freshmeat.net/projects/png2linuxlogo/) that will convert a PNG file to linux_logo.h. However, this is an unmaintained project, and I found the format of the generated linux_logo.h file will not compile for the 2.4.31 kernel. However, I managed to hack linux_logo.h so it does compile.


I have compiled the 2.4.31 kernel, patched with part of the "lck" patch set. This backports the "preemptive kernel" feature of the 2.6 kernel, to give a slightly improved responsiveness to user interaction on the desktop. Two other patches are NTFS v2.1.6b support and Squashfs v2.2-r2 support.
I configured libata (SATA) support built-in to the kernel (not as modules).
Some modules, namely scsi_mod.o, sd_mod.o, reiserfs.o and ntfs.o, are now built-in.

Regarding future plans, I intend to release a pre-alpha "puppy2" soon.
The Puppy1 series will probably have a 1.0.8 release, which will be mostly bugfixes and minor improvements. The official release after that will probably be 2.0.0.


I'm working on "Puppy2".... it's revolutionary, but I'll maintain the mystery until something is released. Probably quite soon...

Puppy News page for year 2005

(c) Copyright Barry Kauler 2006, www.puppylinux.com