Feature List for Porteus Desktop Edition

Porteus is a small (under 300MB) portable linux distribution based on Slackware linux and a heavily modified version of the linux-live scripts. It is modular in design, meaning programs (or collections of programs) can be installed and removed simply by double clicking on module files.  Unlike other Linux distributions that have a 'live CD' option, or can be shoehorned onto a flash drive, Porteus is designed and optimized to run from a USB flash drive, flash card or CD. It can also be installed in it's compressed form to an external or internal hard disk (AKA a 'frugal' install). With it's small footprint, modest system requirements, wifi support and modern kernel, Porteus is also ideally suited to run on netbooks.

Porteus is available for both 32-bit and 64-bit architectures and offers a number of desktops you can choose from.  Please use our web wizard to create your unique build with personalized settings and additional modules included. On a modern system, Porteus will boot up, create it's live filesystem, and be up and running KDE in 30 to 60 seconds when run from a flash or hard drive. If you select Razor, LXDE or Xfce, you will be up and running even sooner. Go here to see a video of Porteus booting to LXDE in 15 seconds!


Lightning-fast boot time
Can be run from USB Flash drives, CDROM's, DVDROM's, hard disks, flash card devices, or just about any device you can get your PC to boot from!
LZMA2 (xz) compression for modules
Changes to the system (customization, downloaded files, browser history and favorites, etc) can be saved persistently to your USB or hard drive, or you can boot into 'Always Fresh' mode, and no changes to your system will be saved anywhere
Support for dozens of languages
A dependency-resolving package manager written just for Porteus, with built-in access to 5 slackware repositories.
Porteus-specific scripts for creating and manipulating modules, network configuration (wifi included), language selection, and much more
Updated installers for linux and windows
"Porteus Settings Centre" which serves as a central location for updating, installing, managing settings, viewing system information, and much more!

Default Boot options (Standard Editions*):

Graphical Desktop Environment (KDE4, LXQT, MATE, or XFCE) with Saved Changes, autoconfigure xorg
Always Fresh, boots to a desktop without saved changes, rootcopy or magic folders; autoconfigure xorg
Copy2RAM, boots to a desktop without saved changes, all modules copied to RAM; autoconfigure xorg
Text Mode (boot to command line)
PXE Boot (run as usual, but start Porteus as a PXE server, allowing you to boot other computers over the network)
PLoP BootManager - allows you to boot from many kinds of devices, even some from which your BIOS may not support booting.
Boot from first hard drive - attempts to boot an operating system that resides on the first hard drive, such as Windows.

System Requirements:

Porteus Requirements

Porteus is not pretentious, though it requires some minimal hardware to
run properly. It depends on how you wish to use Porteus, of course.

The most important thing is memory. You need at least 40 MB of RAM to
boot Porteus in text mode. A more detailed description follows:

Either an IDE connected CDROM (to boot from a CD), a USB FlashDisk
(to boot from a mass storage device), Compact flash card, or an
internal or external hard disk (to boot Porteus from a hard disk).

Either non-emulation booting enabled (to boot from a CD)
or USB FlashDrive booting enabled (to boot from a mass storage device)

Memory requirements for text mode
36 MB to boot to cli (without copy2ram)

Memory requirements for KDE4
512 MB to run Xwindow
768 MB to be able to use copy2ram cheatcode

Memory requirements for LXQT
256 MB to run Xwindow
512 MB to be able to use copy2ram cheatcode

Memory requirements for MATE
256 MB to run Xwindow
512 MB to be able to use copy2ram cheatcode

Memory requirements for XFCE
256 MB to run Xwindow
512 MB to be able to use copy2ram cheatcode

Memory requirements for XFCE
256 MB to run Xwindow
512 MB to be able to use copy2ram cheatcode

Any processor with support for 32-bit/64-bit instructions. Intel and AMD are
both OK.

Peripheral devices
any keyboard
any PS/2 or USB connected mouse

No harddisk is required

Porteus Tips and Tricks

To view the discussion about this document, or to ask a question about it, visit this thread on our forum.

    1. Porteus is Live!
    2. Use a 'save.dat' container for FAT or NTFS drives
    3. Cheatcodes
    4. Copy to RAM
    5. Use your rootcopy folder for quick changes or additions
    6. Use Magic Folders for more flexibility
    7. Porteus CD customization
    8. Compiling drivers from source
    9. Run Porteus from a USB drive, even if not supported by your BIOS
    10.  Firewall
    11.  Aliases
    12.  CLI Utilities
    13.  Use quickstart menu
    14.  Manage your packages and modules from the GUI
    15.  Use 'Always Fresh' mode, and be free to experiment!



Porteus is live!

Porteus is a live distribution, which means that the running environment is constructed in your system's memory when you boot it up. The porteus files on your CD, flash drive, or hard drive are mounted and used to construct this live filesystem. For more information, go here.

Use a 'save.dat' container for FAT or NTFS drives

If you want to save all the changes that you make to your system (configuration, downloaded files, bookmarks, etc.,) to a drive that is formatted with a window's filesystem, you need to use a save.dat container file. This is because Windows filesystems are not built to handle linux files. For more information, visit this link.


You can modify and customize the way your system boots, and resolve or work around many hardware issues by using cheatcodes. Cheatcodes are passed to the system by pressing TAB at the boot menu (when the porteus graphic comes up with the options to boot into KDE, XFCE, LXQT or MATE) and entering a short string of text. See this link for more info (this file can also be found on your system at /boot/docs/cheatcodes.txt)

Copy to RAM

Porteus has a boot option (implemented by a cheatcode) called copy2ram. Selecting this boot option means that all of the files inside your modules will be copied into your system's RAM. This slows down your boot process and uses up more of your RAM, but it also produces an incredibly fast, responsive system because all of the files are already loaded and available for use. 

Use your rootcopy folder for quick changes or additions

You can save individual files to your "rootcopy" folder, after which they will be added to your live filesystem at startup. This is useful for saving your configuration files (among other things) when you are booting into "Always Fresh" mode, without the need to compress these files into a module. For more information, go here.

Use Magic Folders for more flexibility

You can use the Magic Folders tool from 'Porteus Settings Centre' to set up paired folders, which will mirror a directory from your storage media on your live filesystem, and changes made to that directory from within Porteus will be saved back to your storage media. This allows you to save changes to specific locations, rather than saving all of your changes for the whole system. Go here for more information.

Porteus CD customization

Though CD's and DVD's are technically "read only" media, there are a number of ways that you can customize Porteus while running from a CD or DVD. One can utilize cheatcodes (see the link above, or the cheatcodes.txt file inside the boot/docs/ folder on your CD), such as 'noload=kde' to make the system boot into XFCE faster, or 'extramod=/path/to/mod' to load modules from a hard drive, usb drive, etc. You can also extract the .iso file for the CD, make modifications, add modules, etc., and remaster a new .iso (using make_iso.bat or make_iso.sh inside the /porteus folder), and burn that to a CD, for your own customized version.

Compiling drivers from source

If you have hardware that is not supported by Porteus out of the box, you may need to compile a driver from source. Some of these drivers need access to the kernel configuration files, which are not included in porteus by default (this is to reduce the size of the porteus .iso). In order to compile these drivers, you will first need to download the "development" module from the porteus server and activate it. This will insert a stripped-down version of the kernel source in the /usr/src/ folder. Now you're ready to compile the driver per the "readme" instructions included with the source code. It is best to compile using the DESTDIR variable, so that you can install the driver and it's files to a fake root folder, which can then be easily turned into a module using the dir2xzm function. If there is no DESTDIR variable in the Makefile, you can also build the drivers and install them to your system, and then use the built-in "changes-time" script, which will pull out all of the files you have added or modified in your system over a specified period of time (e.g. the last three minutes).

Run Porteus from a USB drive, even if it is not supported by your BIOS

If your computer has a USB port but your BIOS does not support booting directly from USB, you can still run Porteus from your USB drive. To do this, you can split your Porteus installation as follows:
- /boot folder on CD
- /porteus folder on usb stick
Now you can boot from the CD and linuxrc script will find the /porteus folder on the USB drive. All cheatcodes like 'from=', 'changes=' still apply here, just like a normal USB installation.


To enable a firewall in Porteus open 'Porteus Settings Centre' and click on the 'Security settings' box. Here you can find a firewall with some pre-definied settings. 


Porteus has some aliases set in ~/.bashrc (home directory). It's good to know that they exist so you can use them in the console. 

CLI Utilities

Porteus has some nice CLI utilities which may be forgotten or never found by most users. Here is the list with short descriptions:

changes-time - copies all files that have been added or modified on your system over a specified period of time.
fromdos/todos - CLI utilities which convert documents between windows/unix formatting
mloop - a great tool by brokenman for mounting modules/iso/dat files on a loop device. e.g. mloop mycustom.iso
pxe-boot - run this short script to start PXE boot services. This is useful when you did not choose 'PXE boot option' at the start and dont want to reboot.
save-changes - dump whole changes from the live session into a module
update-module - searches your system for changes that have been made to the files from a specified module, and updates the module with those changes.

Use quickrun

While logged into the desktop, use the 'Alt+F2' key combination to quickstart applications

Manage your packages and modules from the GUI

File managers (caja/thunar/dolphin/pcmanfm-qt) have extra service menus specific to Porteus only. All you need to do is right click on a certain file type to get an option for an extra action:
- folders: you can build a Porteus module from it
- modules: you can extract it to a folder; mount it to a folder (same function as 'mloop' utility)
- tgz/txz slackware packages: you can convert it to xzm; install/uninstall directly to/from live system
- rpm packages: convert to xzm
- deb packages: convert to xzm


Use 'Always Fresh' mode, and be free to experiment!

When you boot in Always Fresh mode (meaning, without the changes= cheatcode or magic folders), none of the changes you make to your live filesystem will survive reboot. So, you can tear apart your system, leave a mess behind you, and it will all get flushed the next time you boot up. This makes you free to experiment with the system, to change things up, without fear that you will 'break' your system and have to reinstall. You can still customize your experience, by using your rootcopy folder, creating modules out of your custom configuration files, etc. Just be careful -- if you spend a lot of time working on something and leave it on your desktop without saving it to your storage media, it will be gone forever.


Cheatcodes - what they are and how to use them

Cheatcodes for Porteus

Warning: This document may be irrelevant to the Porteus version you are using (cheatcodes may change between releases). A copy of it can be found at /boot/docs/cheatcodes.txt on the Porteus ISO you have downloaded so please rely on it rather than this version.

Boot parameters (also known as cheatcodes) are used to affect the booting process of Porteus. The cheatcodes listed here are only those that are specific to Porteus (see the final note for information on cheatcodes that apply to all linux distributions, including Porteus).  You can use these parameters to disable desired kinds of hardware detection, start Porteus from a specific location, load additional modules, etc.

Reboot your computer and wait several seconds until the graphical Porteus logo appears with a boot menu. Choose your desired menu entry and hit Tab, which will allow you to edit the command line. Add your desired boot argument from the list below to affect booting the way you like. Here's an example of what the boot line would look like, adding the noauto and copy2ram cheatcodes to a standard Porteus boot option (which already has some other cheatcodes by default):

APPEND initrd=initrd.xz xfce changes=/porteus/ noauto copy2ram 

These cheatcodes can also be added to the APPEND line of your /boot/syslinux/porteus.cfg entries (or other bootloader config files) to apply them automatically on every boot.



... This cheatcode will prevent the system from loading any
modules at startup other than the 'base' modules included
with the default ISO (000-kernel.xzm, 001-core.xzm, etc).
This is useful in debugging to see if problems you are
having are associated with some module you've added to the


... All changes made in Porteus are kept in memory until you reboot.
With this boot parameter, you tell Porteus to use a device
(or a file or directory) other than your memory for storing
changes. You can, for example, format your disk partition
/dev/sdb2 with some Linux filesystem (eg. xfs) and then use
'changes=/dev/sdb2' to store all changes to that partition.
This way you won't lose your changes after reboot.
... If you use a file image instead of a device, and the image
contains a valid filesystem, Porteus will mount it on a loop
device and will store changes to it.
... If you use a directory, Porteus will save changes to it (it
will make a 'changes' subdirectory there). This should only
be used for linux filesystems, if changes need to be saved to a
FAT or NTFS partition, a savefile container has to be used.


... Keep saved changes in a read-only state. This is useful when
you have your system set up exactly how you like it and do not
want to save any other changes you might make during a live
session. This cheatcode should be used in conjunction with the
'changes=' or 'changes=EXIT:' cheatcodes.
Example: 'changes=/path/file.dat changes-ro'
NOTE: remove the 'changes-ro' cheatcode from the bootloader config
to start saving changes as normal (effective after a reboot).


... Execute specified command(s) in runlevel 3 (before logging
in to a graphical interface).
Use semicolons (;) as command separators with no spaces.
... If you need to use spaces in the command line, replace them
with '~'. For example, 'cliexec=echo~Shutting~power;poweroff'
will echo your text with spaces instead of '~'.
NOTE: to start graphical applications please use 'guiexec='
cheatcode instead.


... Copy all modules to RAM. You'll need at least 256MB of RAM
to boot Porteus properly. 64-bit Porteus with KDE-4 requires
at least 768MB of RAM for this.
Copy2ram slows down the boot phase but speeds up Porteus!

Reminder: the 'noeject' cheatcode can be used together with
'copy2ram' to prevent unmounting of your booting media
(CD/DVD disc, usb, card readers, etc).
You can also use the 'rammod' cheatcode to selectively load
modules to RAM - see the 'rammod' description below.


... Start the shell several times during the boot to perform
debugging actions.


... To be used for devices which need extra time to settle up.
Example: 'delay=5' will cause a 5 second delay before Porteus
starts booting.


... This cheatcode lets you load modules from one or more external
folders that are located outside of the /porteus directory.
Multiple folders can be specified, with full paths separated by
a semicolon without any spaces.


... Loads Porteus from the specified device, folder or ISO file.
'from=/dev/sdb2' will attempt to load unpacked Porteus ISO from
the second partition on your second drive.
'from=/mnt/sda2/linux-testing' will attempt to load unpacked ISO
from the 'linux-testing' folder placed on the second partition.
'from=/linux-ISO/porteus.iso' will attempt to load the Porteus
data from an ISO file placed inside the 'linux-ISO' folder.

If the destination partition is not provided with this
cheatcode, the booting script will search through all available
devices for your data.


... Enables a filesystem check for ext(2,3,4) and reiserfs
partitions during boot time before anything is mounted by
Porteus. XFS does not need fsck as a check is performed
automatically during the mount operation.
NOTE: On some systems, you will need to use the 'delay='
cheatcode in order to allow your devices to settle up.
This should only be needed to fsck usb flash drives.


... Execute specified command(s) in runlevel 4, when the graphical
interface is loaded; unlike 'cliexec' this cheatcode can be
used to start graphical applications.
Use semicolons (;) as command separators with no spaces.
... If you need to use spaces in the command line, replace them
with '~'.
Example: 'guiexec=firefox~kernel.org' will open the firefox
browser on the 'kernel.org' website.


... Specifies the preferred keyboard layout for KDE/LXDE/XFCE or
other desktop. A full list of supported layouts can be found in
the /etc/X11/xkb/symbols folder. Up to 3 layouts are supported.
Example: 'kmap=ara,us' will set the arabic keyboard layout at
startup. 'kmap=ara,us' will keep arabic layout as default
with possibility of switching to 'us' by 'alt+shift' key
Keyboard layout variants are also supported.
Example: 'kmap=pl:qwertz' will set the polish keyboard layout
with 'qwertz' as a variant.


... Load optional modules from /optional/ directory on the booting
media. Additional modules can be listed, separated
by semicolons, without spaces.
Exampe: 'load=gimp;inkscape' would search for and load any
modules in the /porteus/optional folder that contain the strings
'gimp' or 'inkscape'.


... Lets you specify the name of the user (could be also 'root')
which will be autologged into GUI session.
If username is not provided then booting stops on the lxdm/kdm
login screen.


... This cheatcode will allow you to customize your filesystem
mount options. By default, the mount options for all
filesystems in Porteus are: "noatime,nodiratime,suid,dev,exec,async".
Each option must be separated wtih a comma "," with no spaces
between any characters.
Example: 'mopt=realtime,sync,users,nosuid,noexec'
See 'man mount' for more information on specific mount options.


... Do not mount any devices during startup.
Every disk needs to be mounted manually in order to access it.


... Do not discover any optical devices during startup.


... Do not eject CD/DVD disc during boot time and shutdown.

NOTE: when the 'copy2ram' cheatcode is used with 'noeject',
this will prevent the unmounting of your booting media
(CD/DVD disc, usb, card readers, etc). To eject the CD you
will have to umount /mnt/sr0 manually and issue the command
'eject /dev/sr0' from a console.


... Do not discover any hard drives during startup.


... Disable specified hardware autodetection in the case of
hangups. None of your hardware will be detected, and you'll
have to use the "modprobe" command after logging in to
text mode and load all needed drivers manually.


... Disable loading of any modules specified. This affects all the
modules on the Porteus booting mendia, including /base and /modules
folders, so using noload=kde will disable loading of all modules
with 'kde' in the name. It is useful with the copy2ram cheatcode,
because any un-used module is not copied to ram. Multiple modules
can be listed, but they must be separated by semicolons, with no
Example: 'noload=lxde;devel' will prevent the loading of any
modules with a name containing the strings 'lxde' or 'devel'


... Do not bind "magic folders" during boot time. Useful when
something went wrong with your Porteus configuration and you
want to boot into true 'Always Fresh' mode.


... This boot parameter will prevent Porteus from automatically
establishing a network connection on start-up.
Note that this cheatcode makes some modifications to
your system which must be manually restored, so it is
recommended that you only use this cheatcode in "Always
Fresh" mode. If you've ignored this advice and need to
recover your network connection, please run the following:

chmod +x /etc/rc.d/rc.inet1 /etc/rc.d/rc.networkmanager
sed -i 's/Hidden=true//g' /etc/xdg/autostart/nm-applet.desktop


... Do not copy files from your rootcopy directory at boot-up.
Like the 'nomagic' cheatcode, this is useful if something went
wrong with your Porteus configuration and you want to boot into
true 'Always Fresh' mode.


... Prevents the automatic use of an existing swap partition.
By default, Porteus searches your attached drives for
partitions that are formatted as swap, and will mount them
for use within Porteus. The 'noswap' cheatcode disables
this behaviour.


... Initialize PXE services (tftpd, dhcpcd, nfs server) which will
allow you to boot Porteus on other computers over a network.
This cheatcode should be used on the server side.

NOTE: the 'storage=' cheatcode can be used together with 'pxe'
to let the clients store persistent changes on the server.
See the 'storage=' description for details.


... Will let you set a custom size for the tmpfs partition
which is used as the root (/) of your live filesystem
when changes are not saved on a real filesystem
(i.e., Always Fresh mode). The default value is 60% of
available RAM memory.
Example: 'ramsize=40%'


... Specify module(s) or folder(s) containing modules which should
be copied to RAM when using the 'copy2ram' cheatcode. This
allows you to have the speed benefit of 'copy2ram' for the
modules you use the most, without occupying your RAM with those
modules that you make use of less often. Any modules that are
not specified will be mounted in place on the block device, so
your device will remain mounted while Porteus is running.

You can use a full or partial names for your search string,
but keep in mind that all modules and folders that match your
string will be loaded into RAM; if you have extra modules in a
folder named 'lxde' and you use 'rammod=lxde', then the module
003-lxde.xzm from /porteus/base will be loaded in addition to
all modules in the 'lxde' folder.

NOTE: 'rammod' cannot be used without 'copy2ram', and it also
will not load modules from /porteus/optional or external
locations unless you also specify these modules with the
'load=' or 'extramod=' cheatcodes.

'extramod=/mnt/sdb3/porteus/gimp rammod=001;002;gimp'


... Copy files from specified directory directly to the live
filesystem. This directory will be used instead of the
traditional /porteus/rootcopy.
Example: 'rootcopy=/mnt/sda5/porteus-files'


... This cheatcode specifies the *.sgn file which Porteus will
search for. This is useful when you want to store several
Porteus editions on one disk/disc.
Example: 'sgnfile=porteus-usb.sgn'


... This cheatcode takes action only when used together with the
'pxe' cheatcode. It tells the server to store persistent
changes from the clients in a specified folder. Changes must
be saved on a real and writable filesystem (wont work with
Separate folders for each client will be created with the name
'/path/folder/client-xxxx' where xxxx is the last 4 characters
of the clients' NIC MAC address.
This cheatcode should be used on the server side.
Example: 'storage=/mnt/sda3/pxe-clients'


... Tell Porteus the correct timezone for your location. By default,
this assumes that your hardware clock is set to localtime. To use
a timezone with a hardware clock set to UTC time instead, also
add the 'utc' cheatcode.
A full listing of available timezones can be found in the file
Example: 'timezone=Europe/Warsaw'
Example: 'timezone=Factory'


... Tell Porteus that your hardware clock is set to UTC time and
not to localtime. Most computers that have Windows installed on
them use localtime instead of UTC time, but many UNIX machines
use UTC instead. This cheatcode is normally used together with
the 'timezone' cheatcode.
Example: 'timezone=Europe/Warsaw utc'


... Automatically detects AMD or nVidia video cards and loads the
proprietary drivers at startup. You must have a module
containing the appropriate graphics driver (nVidia or amd-catalyst)
stored in your /porteus/optional/ directory. These modules
are available in the download section of the Porteus website
(www.porteus.org/download) for each edition and version of
Porteus. If you compile your own driver, please note that
the module's name must begin with the string 'nVidia-' or
'amd-catalyst' because the startup script searches for the driver
modules by name.

This cheatcode allows users to easily switch back and forth
bewteen different hardware configurations while using the
proprietary drivers because both driver modules can sit side
by side in /porteus/optional/ without interfering with one
another. They are only activated when needed.


... This parameter sets the system's Master Volume channel to
the value specified (as a percentage). You will be able to raise
or lower the volume after you boot up as normal.
The default value is 75%.
Example: 'volume=0%' will boot into your chosen GUI silently.


... enable the use of zram, which is a compressed block device
inside your RAM that acts as a swap partition. Zram operates
faster than using swap on a hard drive and creates more
(virtual) memory than using RAM alone because the data inside
is compressed. This will provide a performance boost on
systems with low RAM, but it uses more processor cycles (to
compress and decompress the data) than regular swap.
Example: 'zram=33%' will set aside 33% of your RAM as a zram

If you specify a LABEL or UUID with a cheatcode, remember that all
portions of these commands are case sensitive. You should use a
unique label for each of your partitions if you wish to use device
labels with your cheatcodes. Use the 'blkid' command to view your
device's UUID and LABEL. Using UUID and LABEL can be quite handy
because they are unique to your device, and your data will be found
and properly mapped on different hardware configurations.
Every cheatcode which contains a /path can take advantage of 'UUID:'
and 'LABEL:' extensions.


The 'EXIT:' extension tells the 'changes=' cheatcode to keep all
of the files that have been added/deleted/modified during the
live session stored in memory until you reboot/shutdown. Your
RAM works as a buffor which gets dumped on the drive only once,
when the session is finished.
'changes=EXIT:' cheatcode has following advantages:
- Porteus works as fast as in 'Always Fresh' mode as all modifications
to files and folders are performed in RAM.
- reduced number of read/write cycles should extend the life of SSD
drives and usb sticks.
The only disadvantage of the 'EXIT:' extension is that the session
does not get saved in cases where you experience a hang (kernel crash)
or power interrupt.
Please use with caution!

While you are running a session with changes=EXIT, you can use the
'dump-session' command (run as root from the command line) to move all
of your changes from RAM to your storage media. This will reduce the
risk of data loss and free up your RAM.


If the LILO bootloader has been installed, you will get a text menu
with the standard boot options (KDE, LXDE, Always Fresh, etc).
Use your arrow key to highlight your desired entry (if you are using
the first entry (KDE), press down, then up to highlight KDE).
The name of your boot option is added to the 'boot:' line, and you can
type your cheatcodes after that.
For example:

boot: KDE debug noauto

would boot into KDE with all of the standard codes used for KDE, plus
debug and noauto. If you want to use LILO with custom cheatcodes at
every boot without manually entering them each time, you must modify
the /boot/syslinux/lilo.conf and then repeat installation by running
/boot/Porteus-installer-for-Linux.com utility as LILO must reload it's

The cheatcodes listed above are those that are unique to Porteus.
There are literally hundreds of other kernel boot parameters
that can be used. For more information on these parameters visit:

Thanks for reading!


[HOWTO] Find your way around in the Porteus File Structure

Getting Started in Porteus: finding your way around

To view the discussion about this document, or to ask a question about it, visit this thread on our forum

Ok, so now that you have Porteus installed and running, where do you go from here? How do you configure your system (and make your changes stick after rebooting), where does everything go, and where do you add or remove modules? Why?

What makes Porteus different from most linux distributions is it's modular design and the use of aufs (Another Union File System) to turn modules into a live operating system. This takes place through the Linux Live Scripts, which have been modified by the Porteus maintainers to produce an ultra-fast, sleek, and robust operating system.

Find out more about modules and what they are here.

In a nutshell, All of the files that make up the system are stored in modules, which are folders that have been archived (using SquashFS and the new LZMA2 compression algorithm). When the system boots up, all of the modules are mounted into the live filesystem. Configuration scripts set up your specific hardware and configure your display, and your desktop environment (KDE, MATE, Xfce, etc) starts up.

So, what we have in Porteus are two categories of files: The files that are active and visible in your live filesystem while you are running Porteus, and the files that sit on your CD, USB drive, or hard drive, which are used to build the live filesystem as it boots up. This can make it confusing for new users, because any files that are saved to a particular location in the live filesystem (e.g. /home/guest/Downloads/myfile.txt) are not saved to that same exact location on your storage media. Having a better understanding of how the various files come together to build your live filesystem will greatly increase your ability to use, configure and enjoy Porteus.

The Porteus ISO contains two directories: /boot and /porteus. The /boot folder contains your bootloader configuration files, installation scripts, a few utilities, documentation, and the linux kernel (vmlinuz) and initrd. When you first start your computer, the bootloader starts the kernel and the kernel starts the initrd. With the initrd loaded, the system is now capable of mounting xzm modules, which make up all of the other files in the standard Porteus system.

Inside the /porteus directory you will find all of the files (other than the kernel and initrd) that are used to build the live filesystem. When Porteus is first installed, the modules in /porteus/base are the only ones that get mounted into the live system. Modules are inserted in alphanumerical order, so module 000-kernel.xzm is added first, then 001-core.xzm, etc.

Also inside the /porteus folder are some empty directories, which can be used for customizing your system:

/porteus/modules will hold .xzm modules that you want added to your system every time you boot up. Any modules in this directory will be injected to your filesystem immediately after the system is done adding the modules from /porteus/base.

/porteus/optional will hold .xzm modules that you don't want added during startup. You can activate these modules while the system is running, and use them as needed. Modules can be activated by double clicking on them, or by entering 'activate /path/to/module/module.xzm' from the command line. These modules can also be activated during startup by using the "load=" cheatcode (e.g. load=/porteus/optional/chrome.xzm).

If you choose to save your changes persistently (the default boot option), your changes will be saved in yet another location: /porteus/changes (if your storage media is formatted with a linux filesystem) or /porteus/save.dat (used primarily with storage media formatted with a windows filesystems). Any files that you add, modify, or delete are saved here in a "fake root" directory, and these changes are applied to your live filesystem at startup. Changes are loaded into the system after all of the modules in /porteus/base and /porteus/modules are activated.

Find out more about save.dat containers here.

The /porteus/rootcopy/ directory is a special directory where you can place individual files that you want added to your live system, without needing to convert them to modules. These files are added to the live system after all of the modules and your saved changes, and will overwrite any files with the same path and name that are already there. Find out more about how to use this feature here.

The last files that are added to Porteus as it starts up are magic folders. Magic folders are not present in your system by default, but you can set them up using the "magic-folders" setup tool in Porteus Settings Centre, or from the command line with the 'magic_folders' command. These folders allow you save changes from a particular folder in your live filesystem to another folder on your storage media. More on magic folders can be found here.

Many of the files that have been pulled from the above sources can be viewed from within the live filesystem. Navigating through these folders can help you see the building blocks of your system. They are visible inside the /mnt/live/memory directory:

/mnt/live/memory/images contains a directory for each module that has been activated in the system, and you can view all of the files (as read only) that are contained within that module.

/mnt/live/memory/changes contains all of the files that have been modified in your system. These are the files that are copied to your save.dat or the /porteus/changes directory on your storage media.

With so many different locations for the files that are used to build the live system, it's easy to get confused at first. But as you continue using and experimenting with Porteus, you will come to understand the beauty of this system and its flexibility. Programs can be added and removed as quickly and easily as moving a file into the right folder; you can switch between saving your changes and booting into a completely fresh installation in a heartbeat; you can install both editions of Porteus on the same partition and share data between them right from a magic folder on your desktop, and you can do it all on a device that weighs ten grams and fits in your pocket, and you can run it on just about any PC you come across.

[HOWTO] Create a save.dat container, and why you need one

This information is also available as Appendix B of the Official Installation Guide, here.

Porteus allows users to save their changes (i.e., system settings, downloaded files, bookmarks, browser history, etc) to a folder or image file (aka container) that exists outside of Porteus' core files. The 'changes=' cheatcode parameter sets the location for these changes. When you start Porteus with this cheatcode (enabled by default for USB installations), it will boot up the operating system and then apply your changes from this location. By default, Porteus is set to save these changes to /porteus/changes.

If you are installing Porteus to a device that is formatted with a Windows filesystem (e.g. FAT 32, NTFS, etc), you are required to use a '.dat' container for your changes. This container allows you to retain linux permissions and symlinks, which are necessary for your system to run properly and securely. 

While starting up, Porteus will run a check to see if you are asking it to save changes directly to a device with a Windows filesystem.  If you are, then Porteus will boot without saved changes enabled.  To create a '.dat' container file and start saving your changes, boot Porteus into KDE, LXDE or Xfce.  Then open up the menu and navigate to "System -> Porteus save.dat manager" (NOTE:  You can also access this program through "Porteus Settings Centre", which will help you to customize various settings, including creation of a save.dat).  Click on this application to open it, and click on the "Create" button.  It will ask you for the name, size and location where you want to create it .  You can choose any name you like, for example, porteussave, save, mychanges, etc (upon creation, the .dat suffix will be added).  You must then enter the size of the container in megabytes and a the location on disk (e.g. /mnt/sdb1/porteus/, if sdb1 is your desired storage device), then click 'OK' and it will be created and placed on your storage device.  In order to start saving your changes, you will need to make a simple modification to the file that configures your bootup procedure.   The save.dat manager will walk you through these changes, but just in case, here are the necessary steps to peform this manually:

As root, open the file /boot/syslinux/porteus.cfg. You will have several entries in this file, which look like this:

LABEL xconf
MENU LABEL Graphics mode (KDE).
KERNEL /boot/syslinux/vmlinuz
APPEND initrd=/boot/syslinux/initrd.xz changes=/porteus/
Run Porteus the best way we can.
Try to autoconfigure graphics
card and use the maximum
allowed resolution

LABEL lxde
MENU LABEL Graphics mode (LXDE).
KERNEL /boot/syslinux/vmlinuz
APPEND initrd=/boot/syslinux/initrd.xz changes=/porteus/
Run Porteus the same as above.
Lightweight LXDE to be
launched as default desktop

You will need to edit the end of the APPEND line, to make it read 'changes=/porteus/save.dat' (without the quotes, using the name you specified earlier). Save this file and upon reboot your changes will be saved to this container.

*NOTE* If you need to gain access directly to the files in your save.dat container (if, for example, you boot into 'Always Fresh' mode and need to remove or edit one of your saved files), you can mount the container on a loop, using these commands in a console:

mkdir /mnt/loop
mount -o loop /mnt/live/mnt/sdXN/save.dat /mnt/loop

where sdXN is the name of your device, e.g. sdb1.

You will then have access to these files, in /mnt/loop

Why isn't this process automated?

While it would be fairly simple to have Porteus automatically create a save.dat file container on the same drive as your Porteus install and update your porteus.cfg to point to it, doing so would keep our users from fully understanding the flexibility and the array of options that are available for storing their changes. Manually creating a .dat container allows you to fully customize the name, location and size of your container. Also, if you look at the documentation in /boot/docs/cheatcodes.txt, there are numerous options for implementing the 'changes=' cheatcode; you can point it to a folder or subfolder (on a linux filesystem) or a container file (on any filesystem), on any writeable device accessible by your system (or just point it to the root of the device, and it will create a 'changes' folder in the root of the device, provided it is has a linux filesystem), and you can reference the path by device name, device label, device UUID, or without referencing the device at all, to have Porteus search for the location on the same drive as your install. With these options, you can put your changes on a separate partition from your Porteus install if you want to, and you can have multiple installations of Porteus with their changes saved to different locations, and your data will be found and mounted, even if you use Porteus on machines with different hardware configurations. Container files can also be created for use with "magic folders", to save the contents of individual directories in your live filesystem to a container (or multiple containers). We believe that encouraging users to read, experiment, and learn will help them find a solution that works the best for their particular situation, as one size certainly does not fit all.