Difference between revisions of "COMP 3000 2011 Report: Macpup"

From Soma-notes
Jump to navigation Jump to search
 
(3 intermediate revisions by 2 users not shown)
Line 81: Line 81:
With Puppy Linux having binary-compatibility with Ubuntu Lucid Lyncpackages Macpup 5.28 contains all the apps from Lucid Puppy with the addition of Firefox 7.01 beta. Additional apps such as Opera, Skype, Open Office, Virtual Box, Adobe Reader, and many driver updates are also available using the Quickpet App on the ibar or the Puppy Package Manager.
With Puppy Linux having binary-compatibility with Ubuntu Lucid Lyncpackages Macpup 5.28 contains all the apps from Lucid Puppy with the addition of Firefox 7.01 beta. Additional apps such as Opera, Skype, Open Office, Virtual Box, Adobe Reader, and many driver updates are also available using the Quickpet App on the ibar or the Puppy Package Manager.


To install an application...
To install an application first open Quickpet or Puppy Package Manager. We chose to test the installation of Skype and VLC media player. In Puppy Package Manager you can navigate your way through each category of package or enter a query in the "Find" text field below. Once you found the desired application package to install, just click on it and the PPM will download and install it for you, it's that simple! Quickpet offers a list of some of the more popular applications, and provides a simple click and install process similar to that of PPM. After successfully installing our applications we tested a .mkv video file in VLC media player, and tested a few Skype calls and they both seemed to perform quite well in comparison to other OS versions.  


[[File:Macpup-installing-programs.PNG|thumb|right|Installing VLC and Skype]]
[[File:QuickPet.PNG|thumb|right|Quickpet Download Package Manager ]]
[[File:QuickPet.PNG|thumb|right|Quickpet Download Package Manager ]]


Line 103: Line 104:


[[File:Ppm-dependencies.png|thumb|left|Puppy Package Manager checks for dependencies]]
[[File:Ppm-dependencies.png|thumb|left|Puppy Package Manager checks for dependencies]]
In versions [http://macpup.org/macpup411.php 411] and [http://macpup.org/macpup412.php 412] of Macpup a tool called Petch was included. Petch was a command line installer made for Puppy Linux by a developer that went by the alias tombh. It would search through several online repositories for the package that you were trying to find, return a list of matches that it found, ask you if you'd like to download one of the packages it found, and then offer to install the package for you<ref>Last modified December 17, 2011, "[http://208.109.22.214/puppy/viewtopic.php?t=33436&sid=2fa098b0cbc8e23777e68f000832d95e Puppy Linux Discussion Forum:: View Topic - Petch-0.3.pet -- CLI Puppy repository search and install]", accessed on December-17-2011</ref>. Unfortunately, about a month and a half after its release, tombh posted that he would no longer be supporting Petch and was beginning to move away from Puppy Linux in general<ref>Last modified December 17, 2011, "[http://www.murga-linux.com/puppy/viewtopic.php?p=244608#244608 Puppy Linux Discussion Forum:: View Topic - About tombh]", accessed on December-17-2011</ref>. There is no mention of Petch appearing in Macpup past version 412, and it is not included in Macpup 528 which we are working with.


In version 5 of Puppy Linux a new package manager called Quick Pet was introduced, it is an easy to use, cut-down version of the full featured Puppy Package Manager (PPM) <ref name="lucid">Last modified November 8, 2011, "[http://puppylinux.org/wikka/lucidpuppyquickpet PuppyLinux: Quickpet]", accessed on November-8-2011</ref>. Both Quick Pet and the PPM are included in Macpup 528. Quick Pet highlights some of the most popular software available for Puppy, organized by category (popular pets, internet pets, useful pets, sfs gets, and drivers), and allows for one click installations <ref name="lucid"/>. SFS files that are downloaded through Quick Pet’s SFS Grabber utility get automatically installed. The alternative way to manually install these files is to download them, place them in /mnt/home, and then follow the instructions in the BootManager to add the SFS file to the boot up sequence <ref name="sfs"/>.
In version 5 of Puppy Linux a new package manager called Quick Pet was introduced, it is an easy to use, cut-down version of the full featured Puppy Package Manager (PPM) <ref name="lucid">Last modified November 8, 2011, "[http://puppylinux.org/wikka/lucidpuppyquickpet PuppyLinux: Quickpet]", accessed on November-8-2011</ref>. Both Quick Pet and the PPM are included in Macpup 528. Quick Pet highlights some of the most popular software available for Puppy, organized by category (popular pets, internet pets, useful pets, sfs gets, and drivers), and allows for one click installations <ref name="lucid"/>. SFS files that are downloaded through Quick Pet’s SFS Grabber utility get automatically installed. The alternative way to manually install these files is to download them, place them in /mnt/home, and then follow the instructions in the BootManager to add the SFS file to the boot up sequence <ref name="sfs"/>.
Line 230: Line 233:


==Initialization==
==Initialization==
While searching for some information on how Macpup starts up we found a few different pages that all seemed to describe different methods of the OS booting up. We finally came across a [http://thinkbeenet.blogspot.com/2010/04/puppy-boot-process.html blog post] with information on what scripts are started upon bootup. After examining the files within Macpup we found the blog to be accurate and we've expanded on the information given there below. Most of the information was found by reading the script comments and README files that were included in most directories.
One of Macpup’s defining attributes is its ability to run completely in RAM, and run very quickly. One of the ways it’s managed to achieve this is by having the initialization sequence start a very minimum essential set of services that most users would not want to tamper with. Below we will describe the majority of processes that are running after booting into Macpup.
 
The initialization sequence for Macpup uses the same boot process as its parent distribution, Puppy Linux, does. Initialization is a bit different depending on whether you are booting Macpup from a live CD or from a full install on a hard drive. We are going to cover the boot process for a full install of Macpup. The boot process begins with the bootloader launching the kernel. The kernel then runs the script /sbin/init. This script first checks to see if the file “/fsckme.flg” exists. If it does, then a filesystem check needs to be run before proceeding any further. The script will then create a ramdisk and populate it with a Linux environment. /sbin/init then calls the script /etc/rc.d/rc.sysinit which first makes the filesystem useable.
 
The sysinit script then calls /etc/rc.d/rc.update. The purpose of this script is to perform any required updates to files when a new version of Macpup is booted. Scripts are also called from the update script to clean up any obsolete files from older versions of Macpup, or old .pet packages.
 
Back in the sysinit script, some kernel modules are loaded, and then any extra modules that the user has specified in the BootManager are loaded. Next we move on to setting up services such as printing and networking. The scripts /etc/rc.d/network and /etc/rc.d/services are called.  The services script will run all executable scripts found in /etc/init.d with the command line parameter “start”. Here are some notes on some particular services that are started from the init.d directory:
 
'''cups:'''
This runs the CUPS daemon ‘cupsd’, required for printing. <ref>Last modified November 10, 2011 "[http://www.manpagez.com/man/8/cupsd/ man page cupsd section 8]", accessed on November-10-2011</ref>
 
'''messagebus:'''
This runs the ‘dbusd’ daemon. DBUS is a method for applications to communicate with each other <ref>Last modified November 10, 2011 "[http://linux.die.net/man/1/dbus-daemon-1 dbus-daemon-1: Message bus daemon - Linux man page]", accessed on November-10-2011</ref>. Only certain applications use this, and most Puppy distributions are built with apps that don’t.
 
'''sys_logger:'''
This runs the daemons ‘syslogd’ and ‘klogd’, which log kernel and application events (especially error messages) to various log files, mostly to /var/log/messages <ref>Last modified November 10, 2011 "[http://unixhelp.ed.ac.uk/CGI/man-cgi?syslogd+8 UNIX man pages: syslogd(8)]", accessed on November-10-2011</ref><ref>Last modified November 10, 2011 "[http://linux.die.net/man/8/klogd UNIX klogd(8): Kernel Log Daemon - Linux man page]", accessed on November-10-2011</ref><ref>Last modified November 10, 2011 "[http://bkhome.org/blog/?viewDetailed=01355 Barry Kauler - Powered by PPLOG]", accessed on November-10-2011</ref>.
 
'''udev:'''
Runs the daemons ‘udevd’ and ‘pup_even_frontend_d’. This is a mechanism that receives hardware event from the kernel, such as a USB drive being plugged in or removed. ‘udevd’ is essential during bootup. However after bootup the daemons can be killed, which actually saves quite a bit a CPU usage and resources.


Most Linux distributions would have runlevels that give an order to which services start in which order. Macpup and Puppy Linux do not have run levels, and run a very minimum essential set of services.  
Busybox is a program that combines tiny versions of many common UNIX utilities into a single small executable <ref name="aboutbusy" />. The tradeoff for this is that the utilities typically have fewer features than their full featured counterparts.  Busybox is included in Macpup and is one of the first programs to be run during initialization. A stripped down version of ‘init’, the parent of all processes on the system which is responsible for starting all other processes<ref>Last modified December 17, 2011 "[http://linux.die.net/man/8/init init(8): Upstart process management daemon - Linux man page]", accessed on December-17-2011</ref>, is included in Busybox. It is executed in the first script run on Macpup, /sbin/init. It should be noted that the Busybox version of init does not support run levels<ref>Last modified March 08, 2006 "[http://spblinux.de/2.0/doc/init.html init]", accessed on December-17-2011</ref>, which is why Macpup does not support them.  


Finally, back in /etc/rc.d/rc.sysinit, we have a few more tasks to finish up. The script discovers media devices such as CD drives, mice, and keyboards, and also runs the script /etc/rc.d/rc.country which asks for the keyboard layout. The script rc.local is also called, which is simply the line “modprobe fbcon”. This gets you a framebuffer console <ref>Last modified November 10, 2011 "[http://www.kernel.org/doc/Documentation/fb/fbcon.txt http://www.kernel.org/doc/Documentation/fb/fbcon.txt]", accessed on November-10-2011</ref>. This is the end of the sysinit script, from here we head to the /etc/profile script.  
Another important part of initialization is starting X, which is done at the end of the /etc/profile script. X is a protocol that provides the basis for a graphical user interface and rich input device capability for networked computers<ref name="xwiki">Last modified December 17, 2011 "[http://en.wikipedia.org/wiki/X_Window_System X Window System - Wikipedia, the free encyclopedia]", accessed on December-17-2011</ref>. It creates a hardware abstraction layer so that software can be written to use a generalized set of commands, which allows for device independence<ref name="xwiki" />. Enlightenment, the default window manager for Macpup, is run on top of X.


The profile script evaluates all the files in the /etc/profile.d directory. The usual purpose for these files is to set environment variables for a particular package. Finally the profile script will start X (which provides an interface for GUIs <ref>Last modified November 10, 2011 "[http://en.wikipedia.org/wiki/X_Window_System X Window System - Wikipedia]", accessed on November-10-2011</ref>). When X starts it runs /root/.xinitrc, which will start any file in /root/Startup. After .xinitrc has finished running, the windowmanager is started and the user is in control.
Macpup also has several other important daemons that are started during the initialization sequence. The ‘cupsd’ daemon is started, which is required for printing<ref>Last modified December 17, 2011 "[ http://www.manpagez.com/man/8/cupsd/ man page cupsd section 8]", accessed on December-17-2011</ref>. This daemon can be disabled if you don’t need to print, however it doesn’t use much memory so leaving it running isn’t going to have any real negative effects.  The messagebus daemon, ‘dbusd’, is also started. This daemon allows applications to communicate between each other<ref>Last modified December 17, 2011 "[http://linux.die.net/man/1/dbus-daemon-1 dbus-daemon-1(1): Message bus daemon - Linux man page]", accessed on December-17-2011</ref>. Only certain applications make use of this daemon, and most derivatives of Puppy Linux are built with applications that don’t. It’s still recommended that you leave this daemon enabled unless you’re sure that no applications require it.  The sys_logger is executed, which starts the daemons ‘syslogd’ and ‘klogd’. These daemons log kernel and application events (especially error messages) to various log files, mainly /var/log/messages<ref>Last modified December 17, 2011 "[http://unixhelp.ed.ac.uk/CGI/man-cgi?syslogd+8 UNIX man pages: syslogd(8)]", accessed on December-17-2011</ref><ref>Last modified December 17, 2011 "[http://linux.die.net/man/8/klogd klogd(8):Kernel Log Daemon - Linux man pages]", accessed on December-17-2011</ref>. Finally, udev is executed, which starts the ‘udevd’ and ‘pup_event_frontend_d’ daemons. The purpose of these daemons is to receive information from the kernel about hardware events, such as a USB device being plugged in or removed. Macpup will still run without these daemons enabled, and disabling them will save a considerable amount of CPU usage and resources.


= References =
= References =
<references />
<references />

Latest revision as of 04:58, 17 December 2011

Part 1

DISTRIBUTION NAME: Macpup

GOAL: Fully featured lightweight OS, capable of running in RAM

TARGET AUDIENCE: Linux newbies, and users who may have an older slower PC

DEVELOPER: Johnny Lee

DOWNLOAD LINK: Official Macpup Website

FILESIZE: Approx. 165MB

HERITAGE: Puppy Linux

Background

The distribution we chose is Macpup, and our report will be based on the latest version (Macpup 5.2.8). Older versions can be downloaded here.

Macpup is based on Puppy Linux which both share a common goal which is to provide a lightweight fully featured operating system (OS) that can run in random access memory (RAM) and is very fast. Macpup provides a fully featured collection of applications for office, graphics, multimedia and internet right from the start.<ref>Last modified October 13, 2011, "Macpup: A beautiful derivative of Puppy Linux", accessed on October-13-2011</ref> The distribution mainly targets users who want to get their old PC up and running, and is also very friendly for Linux newbies. It can be loaded with very minimal system requirements and still performs quite well.

Macpup is being developed by Johnny Lee, and can be obtained here with approximate file size of 165MB’s. Macpup is a derivation of Puppy Linux which has been built from scratch and is not based on any other Linux distribution. It is known for its small file size, and incredible speed.<ref name="puppy">Last modified April 2, 2009, "Puppy Linux", accessed on October-14-2011</ref> What distinguishes Macpup from Puppy Linux is mainly its default Window Manager Enlightenment E17.

Installation/Startup

We set out to get Macpup installed onto a virtual hard drive using VMware Workstation 8. VMware was unable to automatically detect what operating system we were trying to install from the image file, so we were presented with a list of options to choose from. From that list we chose the option for installing a Linux distribution running the Linux 2.6.x kernel. We gave our virtual machine an 8GB hard drive and 1GB of RAM to work with, and then we booted up off the image file. The first boot of Macpup was fast as promised. At first we were presented with two options, "Macpup 528" and "Macpup 528 RAM". The difference between these two options comes after you've done an install of Macpup. After you have some files saved, choosing the Macpup 528 option will load the system along with all your saved files/settings/etc. The Macpup 528 RAM option only boots the system and will not display the changes you've made, or files you've created. The purpose of this is to allow you to test things out within Macpup without taking the risk of damaging your personal files<ref name="hardkap">Last modified October 15, 2011, "Using Macpup: Hardkap Forums", accessed on October-15-2011</ref>.

Macpup boot options

We selected the Macpup 528 option and were then presented with a screen that allowed us to set the hostname for the machine, time zone, screen resolution, and keyboard configuration. After setting these options you’re brought to the desktop screen, which is a little different from what you might be used to. By default Macpup is set up so there’s a dock of application icons along the bottom of the screen and an analog clock in the top right of the screen. Left clicking anywhere on the desktop will bring up the main menu through which you can access applications, system utilities, system settings, configure the desktop and more. From the main menu if you scroll over applications and then go down to system you will find the Puppy Universal Installer.

The universal installer first asks you what you would like to install to, with options such as a USB flash drive, CD, or internal IDE/SATA hard drive. We chose the option for internal hard drive and hit continue, only to be presented with an error message stating that Macpup was unable to find the device we wanted to install to. Some searching led us to a post on Macpup’s forums<ref>Last modified December 6, 2011, "520 on vmware << Hardkap", accessed on December 6, 2011</ref> where another user was having the same issue. The problem turned out to be that by default VMware creates a Small Computer System Interface (SCSI) drive when we need it to make an Integrated Drive Electronics (IDE) drive. We backtracked and this time when we were setting up our virtual machine we chose the custom (advanced) configuration option in VMware. This allowed us to set the hard drive type to IDE. The universal installer tool could now see our hard drive and we proceeded further with the installation, until we were told our drive had to first be partitioned properly, which could be done using the GParted tool included in Macpup.

Partitioning our virtual drive in GParted

Having to partition the hard drive ourselves was something we hadn’t run into before, so we looked for some guidance before continuing. We came across this video tutorial on partitioning the drive properly and proceeded to do so. To quickly summarize the steps in the video that we’re interested in (assuming GParted is open):

  1. Select the unallocated disk space and then click on the Device menu at the top of the screen and choose the Create Partition Table option.
  2. Right click the unallocated disk space and select New
  3. Create a primary partition, drag the slider along the top to select the size and click add.
  4. Repeat steps 2 and 3, but rather than creating a primary partition, create an extended partition, a logical partition, and a linux-swap partition.
  5. Click the apply button at the top

There sizes we chose for each partition can be seen in the image of GParted. There does not appear to be any set in stone guide for deciding how big each partition should be, although understanding what each partition type is for is helpful for determining sizes. A hard drive can only have 4 primary partitions on it, or 3 primary partitions and 1 extended partition<ref name="howtopart">Last modified December 6, 2011, "HowtoPartition/PartitioningBasics - Community Ubuntu Documentation", accessed on December 6, 2011</ref>. An extended partition can contain any number of logical partitions, which are essentially the same as primary partitions without the number restrictions <ref name="howtopart"/>. Some operating systems such as Windows must be installed on a primary partition; however Linux can be installed on logical partitions as well<ref>Last modified December 6, 2011, "HowtoPartition/OperatingSystemAndPartitions - Community Ubuntu Documentation", accessed on December 6, 2011</ref>. The swap partition is used when the RAM is full. If the system needs more memory it will move inactive pages from memory into swap space<ref>Last modified November 24, 2007, "5.1 What is Swap Space", accessed on December 6, 2011</ref>. The purpose of partitioning our drive the way we did is described in the video. We are going to install the OS onto the primary partition and use the logical partition for data storage (movies, music, photos, etc.).

Now that our drive was partitioned we could go ahead and use the Puppy installer tool. It asked what partition we wanted to install to, and in our case had 2 options: sda1 and sda5. Sda1 is the primary partition that we set up, while sda5 is the logical partition. We wanted to install onto the primary partition so we chose sda1. We were then prompted again and asked where the Puppy kernel file is located. The virtual machine is treating the Macpup image file like a disc, so we chose the option that said the files were stored on a CD. We were then asked if we’d like to do a frugal or full install. A frugal install simply copies over the necessary files to run Macpup onto your partition and then saves your user specific data to a macpupsave file. This is said to make upgrading easier as your save file can be left untouched while the other files are updated<ref>Last modified October 11, 2009, "hard-Puppy", accessed on December 6, 2011</ref>. For this report however we chose to do a full install.

The installation process took about a minute and 30 seconds. After it was complete we got a prompt explaining that the boot loader, GRUB, would need to be configured. These settings can be accessed by left clicking the desktop, scrolling over applications, down to system, and selecting GRUB boot loader config. Once opened there is an option to install GRUB automatically which we chose. GRUB will then ask where you want the GRUB files to go, explaining that they need to be with the kernel in the /boot directory. We chose to install Macpup on the /dev/sda1 partition in the previous step so we typed that path into GRUB and hit ok. GRUB installed successfully, and our installation was complete.


USB Installation

One of the features of Macpup, and Puppy Linux in general, is that you can install it onto a USB flash drive and take it with you anywhere<ref name="puppy"/>. Installing Macpup onto our flash drive was incredibly simple. First we burned the Macpup image file onto a disc to make a live CD and then booted up off of that. Once we had Macpup loaded up we plugged in our flash drive and chose the option to install to a USB flash drive from the universal installer. Macpup detected our USB device right away and took care of the entire installation process in a couple minutes, with a few prompts to ensure we knew the data on the device was going to be erased and what not. After the process was complete we shut down Macpup and booted off the flash drive with no problems.

Basic Operation

One of the features of Macpup and Puppy Linux is that it can run smoothly even on older systems. To test this out we created a virtual machine with 256MB of RAM and gave it just 1 processor core to work with. We originally ran into some problems using this setup, namely that Firefox (the default browser on Macpup) kept crashing. It would either freeze while trying to load up, or if it actually loaded up it would freeze when we tried to browse to another webpage. The version of Firefox included is the beta version (currently 7.0) so that may have something to do with it. We gave up on Firefox and downloaded a couple other web browsers (Opera and Chromium) to try out and had a much better experience with them. The system was very quick to respond and we didn’t notice any slowdowns at all. Memory was a constant worry though, we discovered that if we used all of our allotted memory the entire OS would freeze up, sometimes for a full minute, and then Macpup would kill off whatever application was causing the problem. It’s easy to monitor memory usage using htop, but it’s also easy to open up a few too many tabs.

If you’re careful with your memory usage Macpup does perform very well however. We installed Thunderbird and had it running along with Opera and a few other pre-installed applications that come with Macpup and had no slowdowns, which we feel is a pretty standard session for many users. Despite the problems we ran into we still think Macpup does perform very well even with limited resources, newer versions of Windows simply wouldn’t run on that little RAM and the older ones would allow far less usability than what we experienced with Macpup.

Macpup with Enlightenment E17

Window Managers

Macpup provides two window managers to choose from:

1. Enlightenment E17

With Enlightenment being Macpups default Window Manager we decided to play around with a lot more of it's features compared to Joe's Window Manager (JWM). One of our favourite features was the ability to set Virtual Desktops. Virtual desktops allow you to create a grid of different workspaces which can easily be accessed through the ibar. To set multiple virtual desktops is a quick task. First click on the Macpup main menu, and choose "Desktop" then "Virtual" and then click on "Set Virtual Desktops". This will open the Virtual Desktop Settings window. Next drag the vertical and horizontal sliders to add the desired amount of virtual desktops, and then click apply and you're done!

Macpup with MPClub Theme Installed

Next we decided to see what else we could change about the appearance. While reading the guide on E17 customization here, we came across a catchy looking theme pack called MPClub by Agust and runtt21. You can download it here. Once downloaded, you can open the file with the puppy package manager and it will install it. The next step is to set the new installed theme. You can do this by selecting “Settings” in the main menu, then selecting “Theme”. This will open the Theme Selector window which will allow you to select between system and personal installed themes. We want to select “Personal”, and then select the MPClub theme and click apply.

After successfully changing our theme, we wanted to have different wallpapers setup on our different virtual desktops that we added earlier. To do this, click “Settings” in the main menu then select “Wallpaper”. Click on the “advanced” button and select “This Desktop” under where to place the wallpaper and click apply. Next change to a different virtual desktop and repeat the same process but this time change the wallpaper to a different image. You can do this for all the virtual desktops that you have enabled!

Setting Virtual Desktops

Custom wallpapers set on Virtual Desktops
Macpup with JWM
2. JWM

JWM is a lightweight stacking window manager written by Joe Wingbermuehle. It provides an interface similar to Windows 98 with a modern-looking appearance. <ref>Last modified October 15, 2011, "joewing.net | JWM (Joe's Window Manager)", accessed on October-15-2011</ref>

Installing Applications

With Puppy Linux having binary-compatibility with Ubuntu Lucid Lyncpackages Macpup 5.28 contains all the apps from Lucid Puppy with the addition of Firefox 7.01 beta. Additional apps such as Opera, Skype, Open Office, Virtual Box, Adobe Reader, and many driver updates are also available using the Quickpet App on the ibar or the Puppy Package Manager.

To install an application first open Quickpet or Puppy Package Manager. We chose to test the installation of Skype and VLC media player. In Puppy Package Manager you can navigate your way through each category of package or enter a query in the "Find" text field below. Once you found the desired application package to install, just click on it and the PPM will download and install it for you, it's that simple! Quickpet offers a list of some of the more popular applications, and provides a simple click and install process similar to that of PPM. After successfully installing our applications we tested a .mkv video file in VLC media player, and tested a few Skype calls and they both seemed to perform quite well in comparison to other OS versions.

Installing VLC and Skype
Quickpet Download Package Manager

Usage Evaluation

Macpup did meet our expectations and seems to achieve its goals quite well. If you do have an old machine lying around with minimal RAM, a slow central processing unit (CPU), and maybe even no hard drive (HDD) we think Macpup would be a good solution if you wanted to give it some life again. Maybe you have an old Pentium II machine with Windows 98 on it, you could go out and buy an 8GB USB drive and boot Macpup off of it.

One critique we first had was with the general default appearance settings within the Enlightenment window manager, but that is just a personal preference that happens with most default OS’s settings. This quickly changed when we played with a lot of Macpups customizable features to its interface. We changed the default theme and the mouse controls. As the left click would bring up the Main Menu whenever you clicked on the desktop, we switched it to the right click under Mouse Binding Settings. Some users may also want a taskbar on the desktop which displays all the programs installed, similar to a Windows interface – for this a good alternative would be JWM.

Although Macpup is very user friendly for non-linux users, the process of setting it up to boot from a USB drive may prove to be a moderately difficult task if you’ve never partitioned a hard drive, or are unsure on how to approach this. Luckily there are tutorials for this, and for most Linux users this will be a very trivial task.

Overall we think Macpup is very user friendly for non-linux users, fairly easy to start-up, has support for a great deal of device drivers, seems to run very smoothly, and is immensely customizable making it a good alternative to a more resource heavy OS when you have older hardware to work with.

Part 2

Software Packaging

Since Macpup is based off of Puppy Linux it uses the same package format and package manager. Puppy’s native package format has filenames ending in .pet <ref name="package">Last modified October 12, 2009, "Package Management", accessed on November-8-2011</ref>. Puppy Linux actually started as a collection of applications on a live CD, with no way to install additional packages. Improvements were made to allow packages to be installed, and later in version 2.0 of Puppy Linux the PET format was introduced. PET is said to stand for “Puppy’s Extra Treats”. A .pet file is really just a .tar.gz file, except that it has a 32 byte md5sum (file integrity verification code) appended at the end of the file <ref>Last modified February 7, 2007, "PET Packages", accessed on November-8-2011</ref>.

Another type of package available within Macpup/Puppy Linux is SFS (Squash File System) modules. These can be identified by their .sfs extension. SFS files are intended for frugal installs or run from a USB drive, not full installations <ref name="sfs">Last modified November 8, 2011, "PuppyLinux: New SFS Feature in Quickpet", accessed on November-8-2011</ref>. SFS files are loaded at the boot up and are typically “combo packs” of applications, containing all packages needed for what is required <ref name="package"/>.

Puppy Package Manager checks for dependencies

In versions 411 and 412 of Macpup a tool called Petch was included. Petch was a command line installer made for Puppy Linux by a developer that went by the alias tombh. It would search through several online repositories for the package that you were trying to find, return a list of matches that it found, ask you if you'd like to download one of the packages it found, and then offer to install the package for you<ref>Last modified December 17, 2011, "Puppy Linux Discussion Forum:: View Topic - Petch-0.3.pet -- CLI Puppy repository search and install", accessed on December-17-2011</ref>. Unfortunately, about a month and a half after its release, tombh posted that he would no longer be supporting Petch and was beginning to move away from Puppy Linux in general<ref>Last modified December 17, 2011, "Puppy Linux Discussion Forum:: View Topic - About tombh", accessed on December-17-2011</ref>. There is no mention of Petch appearing in Macpup past version 412, and it is not included in Macpup 528 which we are working with.

In version 5 of Puppy Linux a new package manager called Quick Pet was introduced, it is an easy to use, cut-down version of the full featured Puppy Package Manager (PPM) <ref name="lucid">Last modified November 8, 2011, "PuppyLinux: Quickpet", accessed on November-8-2011</ref>. Both Quick Pet and the PPM are included in Macpup 528. Quick Pet highlights some of the most popular software available for Puppy, organized by category (popular pets, internet pets, useful pets, sfs gets, and drivers), and allows for one click installations <ref name="lucid"/>. SFS files that are downloaded through Quick Pet’s SFS Grabber utility get automatically installed. The alternative way to manually install these files is to download them, place them in /mnt/home, and then follow the instructions in the BootManager to add the SFS file to the boot up sequence <ref name="sfs"/>.

While Quick Pet is useful for grabbing a few more popular packages quickly, the real full featured package manager in Macpup is the Puppy Package Manager. PPM was introduced in Puppy Linux 4.3 <ref name="woof">Last modified November 25, 2009, "Woof the puppy linux builder", accessed on November-8-2011</ref>. PPM allows you to select packages from online repositories, download them, and install them onto the system. PPM is also able to search and install dependencies when installing a package <ref>Last modified November 8, 2011, "PuppyLinux: Puppy Package Manager", accessed on November-8-2011</ref>. PPM also shows what packages you’ve installed from it. Clicking on the name of any package that you’ve previously installed will give you the option to uninstall it.

Puppy Package Manager install screen

One drawback of PPM is you are only able to see the packages that you’ve installed from it, there’s no way to see the packages that came pre-installed with Macpup. There is a hidden folder in the root directory (/root/.packages) that lists the packages, however it also lists some packages found in the devx SFS module as well. Barry K, the creator of Puppy Linux, posted a script that can be run to get a listing of all the packages included on the live CD on his blog <ref>Last modified November 8, 2011, "Barry Kauler - Powered by PPLOG", accessed on November-8-2011</ref>.

In terms of quantity of packages available from the default Puppy-lucid repository, we found that Macpup/Puppy was a bit lacking. There are definitely a wide variety of applications available to perform most major tasks, but there’s a lack of choice between different applications that accomplish the same task.

Puppy Package Manager with Ubuntu repositories

One very interesting feature of Puppy Linux that we found was the “Puppy Builder” called Woof <ref name="woof"/>. Woof allows you to take binaries from other Linux distributions such as Ubuntu or Debian, cut them down to Puppy size, and automatically build a Puppy live CD with the binaries of your choosing. The end result still runs in RAM and is still Puppy Linux at its heart, but contains the binaries you chose from other supported distributions <ref>Last modified March 22, 2010, "Woof the puppy linux builder", accessed on November-8-2011</ref>. The version of Macpup that we are testing is 5.2.8, which is based off of Puppy Linux 5.2.8, which is a woof build that is about 60% Ubuntu packages <ref>Last modified November 8, 2011 "PuppyLinux: Puppy52", accessed on November-8-2011</ref>. Because of this we are able to install packages from several Ubuntu repositories, which greatly increased the selection of applications available to us.

Major Package Versions

Note: Macpup 5.2.8 was released September 17th, 2011<ref>Last modified November 8, 2011 "Distribution Release: Macpup 528 (DistroWatch.com News)", accessed on November-8-2011</ref>.

Package Version Upstream Source
Linux Kernel 2.6.33.2 http://www.kernel.org/
eglibc 2.11.1 http://www.eglibc.org/
JWM 2.0 rev 500 http://joewing.net/programs/jwm/
Enlightenment 0.17 http://www.enlightenment.org/
BusyBox 1.16.2 http://busybox.net/
ROXTerm 1.18.5 http://roxterm.sourceforge.net/
Firefox 7.01 beta http://www.mozilla.org/en-US/firefox/features/
Gnome-mplayer 1.0.3 https://sites.google.com/site/kdekorte2/gnomemplayer
gFTP 2.0.19 http://www.gftp.org/
XChat 2.8.8 http://xchat.org/
Geany 0.20 http://www.geany.org/
Abiword 2.8.6 http://www.abisource.com/
Gnumeric 1.10.13 http://projects.gnome.org/gnumeric/
GParted 0.8.0 http://gparted.sourceforge.net/


Comparison of Packages

Linux Kernel

The Linux Kernel included in Macpup is version 2.6.33.2, which was announced on April 1st, 2010<ref>Last modified November 8, 2011, "Linux 2.6.33.2", accessed on November-08-2011</ref>. The latest stable version of the kernel as of November 8th 2011 is version 3.0.8, which was released on October 25th 2011<ref>Last modified November 9, 2011, "http://www.kernel.org/pub/linux/kernel/v3.0/ChangeLog-3.0.8", accessed on November-09-2011</ref>. The Kernel hasn’t been modified at all by the distribution authors, and is the same kernel Puppy Linux version 5.2.8 uses. There is no apparent reason why the distribution authors chose to include this kernel besides the fact that it may have just been one of the latest stable builds near the release date of Macpup 5.2.8.

eglibc

Macpup includes version 2.11.1 of eglibc (Embedded GLIBC) which is also included in Ubuntu 10.04.3 LTS (Lucid Lynx), and was released on February 1st, 2011<ref>Last modified November 9, 2011, "eglibc source package : Lucid (10.04) : Ubuntu", accessed on November-09-2011</ref>. The latest stable version of eglibc as of November 9th 2011 is version 2.14.1, which was released on October 25th 2011<ref>Last modified November 9, 2011, "svn View of /branches/eglibc-2_14/libc/NEWS", accessed on November-09-2011</ref>. The version of eglibc that is included in Macpup hasn’t been modified by the distribution authors at all. One of eglibc’s, goals is to include a reduced footprint (smaller file size)<ref>Last modified November 9, 2011, "EGLIBC: EGLIBC", accessed on November-09-2011</ref>, which is most likely why Macpup included this version of glibc.

JWM (Joe's Window Manager)

Macpup includes version 2.0 (revision 500) of Joe’s Window Manager, which was released on December 26th 2010<ref name ="jwm" >Last modified November 9, 2011, "http://joewing.net/programs/jwm/snapshots/ChangeLog", accessed on November-09-2011</ref>. The latest version of JWM as of November 9th 2011 is 2.1 (revision 5430), which was released on October 22nd, 2011<ref name ="jwm" >Last modified November 9, 2011, "http://joewing.net/programs/jwm/snapshots/ChangeLog", accessed on November-09-2011</ref>. The version of JWM that is included in Macpup hasn’t been modified by the distribution authors at all. Despite Enlightenment being Macpups default window manager, JWM still provides Macpup with a fast, lightweight window manager that runs with only using Xlib at a minimum<ref>Last modified November 9, 2011, "joewing.net | JWM (Joe's Window Manager)", accessed on November-09-2011</ref>.

Enlightenment

Macpup includes the Enlightenment Window Manager as its default window manager. Included is Enlightenment version 0.17 (E17), which as November 9th 2011, hasn’t been officially released and has been in development since December of 2000<ref>Last modified November 9, 2011, "Enlightenment (window manager) - Wikipedia, the free encyclopedia", accessed on November-09-2011</ref>. The latest stable build version E16 1.0.10 was released on October 9th 2011<ref>Last modified November 9, 2011, "Enlightenment Download<", accessed on November-09-2011</ref>. Macpup includes a customized version of E17 (version 62861). Enlightenment E17 for Macpup comes with a custom build to run under Puppy Linux’s environment. Enlightenment E17, is not just a window manager, but it is also a desktop shell. A desktop shell means a window manager plus a file manager, plus configuration utilities all in one. E17 is fast, it is even known to run on very slow machines with 100Mhz CPU’s, and 64 MB’s of RAM. Each theme that Enlightenment includes also provides many effects and various animations.<ref>Last modified November 9, 2011, "Enlightenment 0.17", accessed on November-09-2011</ref> Running very fast and having a small footprint while still staying sleek is part of Macpup’s philosophy and is what distinctively separates it from its derivation. This is why the authors chose E17 as its default window manager.

BusyBox

Macpup includes BusyBox version 1.16.2 which was released on June 12th 2010<ref name = "busybox" >Last modified November 9, 2011, "BusyBox", accessed on November-09-2011</ref>. The latest stable build as of November 9th 2011 is version 1.19.3 which was released on October 29th 2011<ref name = "busybox" >Last modified November 9, 2011, "BusyBox", accessed on November-09-2011</ref>. The version of BusyBox that is included in Macpup hasn’t been modified by the distribution authors at all. BusyBox combines tiny versions of many common UNIX utilities into a single small executable and provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc<ref name="aboutbusy">Last modified November 9, 2011, "About BusyBox", accessed on November-09-2011</ref>. Having all these small utilities combined into a small executable is most likely why this particular package was chosen for Macpup’s standard installation.

ROXTerm

Macpup includes ROXTerm version 1.18.5-3 which was released on October 3rd 2010<ref name = "roxterm">Last modified November 9, 2011, "Debian Changelog roxterm (2.2.2-1)", accessed on November-09-2011</ref>. The latest stable build as of November 9th 2011 is version 1.18.5-3. A current experimental version also exists at version 2.2.2-1 which was released on October 5th 2011<ref name = "roxterm">Last modified November 9, 2011, "Debian Changelog roxterm (2.2.2-1)", accessed on November-09-2011</ref>. The version of ROXTerm that is included in Macpup hasn’t been modified by the distribution authors at all. ROXTerm was most likely included to as a more powerful alternate to Xterm. It’s more configurable than the gnome-terminal and aimed more at “power users”. ROXTerm was originally designed to have a small footprint and quick start-up but can now be accused of bloat with all the features it’s acquired over the years<ref>Last modified November 9, 2011, "ROXTerm", accessed on November-09-2011</ref>.

Firefox

Macpup includes Firefox 7.01 beta, and comes configured to download updates from the beta channel. Firefox 7.01 beta was released on August 18th 2011<ref>Last modified November 9, 2011, "Mozilla Firefox Beta Release Notes", accessed on November-09-2011</ref>. The latest stable build as of November 9th 2011, is Firefox 8.0 which was released on November 8th 2011<ref>Last modified November 9, 2011, "Mozilla Firefox Release Notes", accessed on November-09-2011</ref>. The version of Firefox that is included in Macpup hasn’t been modified by the distribution authors at all. Firefox 7.01 beta was most likely included in this particular package as it drastically improved memory use over the previous version of Firefox, and Firefox in general is one of the more popular open source web browsers currently available.

Gnome-mplayer

Macpup includes Gnome-mplayer version 1.0.3, which was released on April 21st 2011<ref>Last modified November 9, 2011, "ChangeLog - gnome-mplayer - 1.0.3", accessed on November-09-2011</ref>. The latest stable version as of November 9th 2011 is 1.0.4, and was released on July 1st 2011<ref>Last modified November 9, 2011, "ChangeLog - gnome-mplayer - 1.0.4", accessed on November-09-2011</ref> . The version of Gnome-mplayer that is included in Macpup hasn’t been modified by the distribution authors at all. Gnome-mplayer was most likely included because it’s a fairly powerful multimedia player with a friendly UI<ref>Last modified November 9, 2011, "gnome-mplayer - Gnome MPlayer is a GTK2/GTK3 interface for MPlayer. - Google Project Hosting", accessed on November-09-2011</ref>.

gFTP

Macpup includes gFTP version 2.0.19, which is also the latest stable build as of November 9th 2011 was released on November 30th 2008<ref name = "gftp">Last modified November 9, 2011, "gFTP Official Homepage", accessed on November-09-2011</ref>. The version of gFTP that is included in Macpup hasn’t been modified by the distribution authors at all. gFTP was most likely included because it’s a free powerful multithreaded file transfer client with many features, and runs with minimal requirements<ref name = "gftp">Last modified November 9, 2011, "gFTP Official Homepage", accessed on November-09-2011</ref>.

XChat

Macpup includes XChat version 2.8.8, which was released on May 30th 2010<ref name = "xchat">Last modified November 9, 2011, "XChat: Multiplatform Chat Program", accessed on November-09-2011</ref>. The latest stable version as of November 9th 2011 is 2.8.9, and was released on August 28th 2010<ref name = "xchat">Last modified November 9, 2011, "XChat: Multiplatform Chat Program", accessed on November-09-2011</ref>. The version of XChat that is included in Macpup hasn’t been modified by the distribution authors at all. XChat was most likely included because it’s a free IRC chat program that allows you to join multiple IRC channels (chat rooms) at the same time, and runs with minimal requirements<ref name = "xchat">Last modified November 9, 2011, "XChat: Multiplatform Chat Program", accessed on November-09-2011</ref>.

Geany

Macpup includes Geany version 0.20, which was released on January 10th 2011<ref name="geany">Last modified November 9, 2011, "Geany Changelog", accessed on November-09-2011</ref>. The latest stable version as of November 9th 2011 is 0.21.1, and was released on October 30th 2011<ref name="geany">Last modified November 9, 2011, "Geany Changelog", accessed on November-09-2011</ref>. The version of Geany that is included in Macpup hasn’t been modified by the distribution authors at all. Geany is a text editor using the GTK2 toolkit, and was developed to provide a small and fast IDE<ref>Last modified November 9, 2011, "Geany : Home Page", accessed on November-09-2011</ref>, that has only a few dependencies from other packages making it a very small and useful code editor for Macpup.

Abiword

Macpup includes Abiword version 2.8.6, which was released on June 13th 2010<ref>Last modified November 9, 2011, "Old Version of AbiWord 2.8.6 Download - OldApps.com", accessed on November-09-2011</ref>. The latest stable version as of November 9th 2011 is 2.9.1, and was released on July 7th 2010<ref>Last modified November 9, 2011, "Abiword Downloads Index", accessed on November-09-2011</ref>. The version of Abiword that is included in Macpup hasn’t been modified by the distribution authors at all. Abiword is a free word processing program similar to Microsoft Word, and is suitable for a wide variety of word processing tasks<ref>Last modified November 9, 2011, "AbiWord", accessed on November-09-2011</ref>. It is most likely included in Macpup’s standard install to provide users with a more advanced text editor tool.

Gnumeric

Macpup includes Gnumeric version 1.10.13, which was released on February 2nd 2011<ref>Last modified November 9, 2011, "Gnumeric changelog 1.10.13", accessed on November-09-2011</ref>. The latest stable version as of November 9th 2011 is 1.10.17, and was released in July 31st 2011<ref>Last modified November 9, 2011, "Gnumeric changelog 1.10.17", accessed on November-09-2011</ref>. The version of Gnumeric that is included in Macpup hasn’t been modified by the distribution authors at all. Gnumeric is a spreadsheet tool that is free and fast<ref>Last modified November 9, 2011, "GNOME Office / Gnumeric - Welcome to Gnumeric!", accessed on November-09-2011</ref>. It is most likely included in Macpup’s standard install to provide users with a more advanced spreadsheet editor that is fast and remains responsive when handling larger spreadsheets.

GParted

Macpup includes GParted version 0.8.0, which was released on February 15th 2011<ref>Last modified November 9, 2011, "GParted 0.8.0 Released", accessed on November-09-2011</ref>. The latest stable version as of November 9th 2011 is 0.10.0, and was released on November 1st 2011<ref>Last modified November 9, 2011, "GParted - Browse /gparted/gparted-0.10.0 at SourceForge.net", accessed on November-09-2011</ref>. The version of GParted that is included in Macpup hasn’t been modified by the distribution authors at all. GParted has most likely been included in Macpup’s standard install to provide users with a well-known free partition editor for graphically managing your disk partitions<ref>Last modified November 9, 2011, "GParted -- About", accessed on November-09-2011</ref>.

Initialization

One of Macpup’s defining attributes is its ability to run completely in RAM, and run very quickly. One of the ways it’s managed to achieve this is by having the initialization sequence start a very minimum essential set of services that most users would not want to tamper with. Below we will describe the majority of processes that are running after booting into Macpup.

Busybox is a program that combines tiny versions of many common UNIX utilities into a single small executable <ref name="aboutbusy" />. The tradeoff for this is that the utilities typically have fewer features than their full featured counterparts. Busybox is included in Macpup and is one of the first programs to be run during initialization. A stripped down version of ‘init’, the parent of all processes on the system which is responsible for starting all other processes<ref>Last modified December 17, 2011 "init(8): Upstart process management daemon - Linux man page", accessed on December-17-2011</ref>, is included in Busybox. It is executed in the first script run on Macpup, /sbin/init. It should be noted that the Busybox version of init does not support run levels<ref>Last modified March 08, 2006 "init", accessed on December-17-2011</ref>, which is why Macpup does not support them.

Another important part of initialization is starting X, which is done at the end of the /etc/profile script. X is a protocol that provides the basis for a graphical user interface and rich input device capability for networked computers<ref name="xwiki">Last modified December 17, 2011 "X Window System - Wikipedia, the free encyclopedia", accessed on December-17-2011</ref>. It creates a hardware abstraction layer so that software can be written to use a generalized set of commands, which allows for device independence<ref name="xwiki" />. Enlightenment, the default window manager for Macpup, is run on top of X.

Macpup also has several other important daemons that are started during the initialization sequence. The ‘cupsd’ daemon is started, which is required for printing<ref>Last modified December 17, 2011 "[ http://www.manpagez.com/man/8/cupsd/ man page cupsd section 8]", accessed on December-17-2011</ref>. This daemon can be disabled if you don’t need to print, however it doesn’t use much memory so leaving it running isn’t going to have any real negative effects. The messagebus daemon, ‘dbusd’, is also started. This daemon allows applications to communicate between each other<ref>Last modified December 17, 2011 "dbus-daemon-1(1): Message bus daemon - Linux man page", accessed on December-17-2011</ref>. Only certain applications make use of this daemon, and most derivatives of Puppy Linux are built with applications that don’t. It’s still recommended that you leave this daemon enabled unless you’re sure that no applications require it. The sys_logger is executed, which starts the daemons ‘syslogd’ and ‘klogd’. These daemons log kernel and application events (especially error messages) to various log files, mainly /var/log/messages<ref>Last modified December 17, 2011 "UNIX man pages: syslogd(8)", accessed on December-17-2011</ref><ref>Last modified December 17, 2011 "klogd(8):Kernel Log Daemon - Linux man pages", accessed on December-17-2011</ref>. Finally, udev is executed, which starts the ‘udevd’ and ‘pup_event_frontend_d’ daemons. The purpose of these daemons is to receive information from the kernel about hardware events, such as a USB device being plugged in or removed. Macpup will still run without these daemons enabled, and disabling them will save a considerable amount of CPU usage and resources.

References

<references />