NetPoldo Rescue System
NetPoldo is a lightweight Debian family live system intended for rescue, maintenance or installation purposes. It is delivered as easy to use components for PXE or simple boot system solutions and is available both for the i386 architecture as for the amd64 based on some Debian and Ubuntu versions.
Does this sound similar to the Ubuntu Rescue Remix? Yes. It does. But there are fundamental differences that make it worth to give NetPoldo a try.
As stated in the project description, Ubuntu Rescue Remix is intended as "a robust yet lean system for data recovery and forensics. No graphical interface is used; the live system can boot and function normally on machines with very little memory or processor power. Following Ubuntu's six-month release schedule, all the software is up-to-date, stable and supported."
For this reason, the system is designed as a life system, to be booted mainly from a physical media with the operator sitting at the console of the computer. It is implemented using live-boot (also known as casper), the standard Debian and Ubuntu mechanism for live systems.
NetPoldo, as the name suggests, was mainly inspired by the author's need of having a small, reliable, simple to implement and fully Debian- / Ubuntu-compatible system bootable from network, from machines where the operator has no physical access, without having to implement complex things like NFS Servers, customised root file systems, handling of multiple usage conflicts, etc... Let's say a real multipurpose rescue system for datacenter usage with possibilities of usage specific customisations (like setting a unique password for a specific boot of a specific machine).
Although the original version of NetPoldo (based on Ubuntu 7.04, 32 and 64 bit) was laboriously hand-crafted resulting in a specimen intended only for personal use, it proved to be such a useful tool that there was the wish to produce new releases and specific versions.
This finally led to a new project, with public releases, a documented and reproducible build mechanism and documentation.
The current versions of NetPoldo are produced with UIC (the Unified Installation Creator), a toolkit that permits to create and maintain customised simple Debian-based operating system packages. The advantages of using this method are:
- reproducibility of results
- automated production
- automated updates
- easy customisation
- easy creation of derived works
Three completely different boot strategies
- Integrated Boot: 2 files. Only the Linux kernel and an initial ramdisk image containing the whole, compressed root filesystem. This is the easiest way to use NetPoldo. If used to boot a system in a network environment, a DHCP and a TFTP Server are enough. If used to boot from a media, no media access is required after the system has been started. The drawback: the computer must have enough memory (at least 512MB).
- Standard Boot: 3 files. The Linux kernel, the initial ramdisk image and the compressed squashfs root file system. This strategy is less memory consuming (it runs also on systems with less than 512MB RAM) and requires the root filesystem image to be accessible from a physical media for the whole runtime.
- Network Boot: 3 files. Basically identical to the standard boot with the difference that the compressed root filesystem will be loaded from an NFS share. This permits to boot NetPoldo on systems with low memory completely from the network.
Configurable from the boot command line
In addition to the standard kernel parameters supported by Debian and Ubuntu, there are some additional parameters that permit to influence the functionality of NetPoldo. It is possible to modify the network login password, the keyboard layout and also external persistant storage can be specified.
Availability of several flavours
Currently NetPoldo is available in several flavours. Each flavour is based on a specific Debian or Ubuntu version and architecture:
|netpoldo-deb8||Debian 8 Beta (jessie)||i386, amd64|
|netpoldo-deb7||Debian 7.5 (wheezy)||i386, amd64|
|netpoldo-deb6||Debian 6.0.9 (squeeze)||i386, amd64|
|netpoldo-1404||Ubuntu 14.04 LTS (trusty)||i386, amd64|
|netpoldo-1204||Ubuntu 12.04 LTS (precise)||i386, amd64|
|netpoldo-1004||Ubuntu 10.04 LTS (lucid)||i386, amd64|
|netpoldo-0804||Ubuntu 8.04 LTS (hardy)||i386, amd64|
Since the concept of automated production based on UIC makes it really easy to create derivative works, more flavours may be released in future.
Easy to update
Although the official NetPoldo binaries will be updated on a more or less regular basis, thanks to UIC every user can produce without any effort his own up to date binaries without any knowledge about the inner workings. After installing UIC, the following few commands would produce a fresh, up to date version of NetPoldo Wheezy i386:
uic get netpoldo-deb7 uic create netpoldo-deb7 --variant 32 uic build netpoldo-deb7
Easy to customise
You want to create customized versions of NetPoldo? You can! Thanks to UIC you have two approaches to do so:
The interactive approach: this requires only the knowledge about your
customisations. e.g.: you want to create a version with additional software.
The only thing you need to know is how to install the software (
apt-get install) and how to customize it if you want (e.g. by modifiying the configuration files). As long as you keep your UIC environment, you will be able to create up to date versions of your customised NetPoldo.
- The derivative work approach: this requires additionally some knowledge about UIC. You will create a new UIC template based on the original NetPoldo templates. With this (redistributable) template you can automatically create and keep up to date new NetPoldo-like systems containing every customisation you want.
The deliverables of NetPoldo use the following naming and versioning scheme:
where DISTRO is the name of the upstream distribution (e.g. debian), UVER the upstream version numbers of the originating operating systen, NVER is the version number of the NetPoldo implementation and ARCH the system architecture (e.g. i386 or amd64).
The build date of a NetPoldo distribution is recorded inside NetPoldo. The motd
/etc/motd) gives information about the date and time of the
last update. Additionally all versioning and identification information is
contained inside NetPoldo in
/etc/uictpl.conf as environment
The following files are part of NetPoldo. All other files contained in the distribution archive are only intended for sample or documentation.
|The Linux kernel used for NetPoldo|
|The standard (local) version of the initial ramdisk|
|The integrated version of the initial ramdisk|
|The network enabled version of the initial ramdisk|
|The compressed root file system|
Command Line Parameters
The following options may or must be specified on the kernel command line.
This option sets the password for the user |
This option sets the keyboard layout for the consoles. Basically every
supported two letter code may work with Debian. On Ubuntu flavours, only
the following keyboard layouts are supported:
This option sets the timezone of the system. The timezone must be specified in
the format |
This option sets the writable device for the filesystem writes during the
NetPoldo runtime. It can be a physical filesystem formatted with
|This option sets the path and name to the compressed root filesystem image. Depending upon the intial ramdisk image, this parameter may be optional or not. See below.|
This option sets the device for the filesystem where the compressed root
filesystem image is located. It can be a physical filesystem formatted with
Based on the used initial ramdisk image, some parametrs may be mandatory or not:
|Initial Ramdisk||Required Parameters|
The local initial ramdisk image requires at least the |
The integrated initial ramdisk image requires no parameters. It is
allowed to use the |
The network initial ramdisk image requires at least the
All following samples show boot scenarios based on syslinux configuration files.
Simple integrated boot
KERNEL netpoldo.vmlinuz APPEND initrd=netpoldo.initrdi
Boots NetPoldo with default settings (US Keyboard, root password set to
"password", non persistent storage) from a physical volume with
syslinux or PXE via TFTP.
Boot from removable volume
KERNEL /netpoldo-deb7/i386/netpoldo.vmlinuz APPEND initrd=/netpoldo-deb7/i386/netpoldo.initrd \ loop=/netpoldo-deb7/i386/netpoldo.squashfs branch=/dev/ram \ password="aBRAcadaBRA"
Boots NetPoldo from a removable device where all files of NetPoldo are located
in the directory
/netpoldo-deb7/i386/. All writes are done in the
ramdisk, so there is no persistent storage. The password of the user
root is set to "aBRAcadaBRA".
Boot from known local volume
KERNEL /netpoldo-deb7/i386/netpoldo.vmlinuz APPEND initrd=/netpoldo-deb7/i386/netpoldo.initrd root=LABEL=workstation-boot \ loop=/netpoldo-deb7/i386/netpoldo.squashfs branch=/dev/ram \ password="aBRAcadaBRA"
Boots NetPoldo from the device with the volume name
where all files of NetPoldo are located in the directory
/netpoldo-deb7/i386/. All writes are done in the ramdisk, so there
is no persistent storage. The password of the user
root is set to
Boot from Network with NFS
KERNEL netpoldo-deb7/i386/netpoldo.vmlinuz APPEND initrd=netpoldo-deb7/i386/netpoldo.initrdn rootdelay=2 \ nfsroot=10.65.6.1:/mnt/data/tftproot,rw ip=dhcp \ loop=/yeaboot/netpoldo-deb7/i386/netpoldo.squashfs branch=/dev/ram \ password="SHADOW:$6$uOaZn5oq$Ka6KFS3znhrcAIeDpYxJXhP0f8MEvuruHKzRMQKIQV2OMKfsIA7AsjvCe0Ray5VXTjA2MNoYO0Hia2MKBPHsc." \ timezone="Europe/Berlin" keyboard=de
PXE Boot of NetPoldo via TFTP with the kernel and the initial ramdisk located
in the directory
/netpoldo-deb7/i386/ of the TFTP server area. The
compressed root filesystem image is located on the NFS share
/mnt/data/tftproot on the server with the address
10.65.6.1 in the directory
The IP address of the booting computer is assigned by DHCP. All writes are done
in the ramdisk, so there is no persistent storage. The time zone will be set to
Europe/Berlin, the password set to the encrypted representation of
"aBRAcadaBRA" and the default keyboard layout is set to german.
How to build NetPoldo
Bug Reports, Contribution and Sources
If you want to contribute to the development of the packages or if you are curious how this all works, you may find the current template, the build scripts and packaging on GitHub (href="https://github.com/YeaSoft/netpoldo)
If you have experienced a reproducible issue you are strongly encouraged to open an issue on the project's GitHub Page.
Copyright and Legal Stuff
NetPoldo is a derivative work based on Debian and Ubuntu Linux created by Leo
Copyright: © 2012-2014 Leo Moll <email@example.com>
This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>