Skip to content

Network Install (PXE / debian-installer)

Today, we’re going to walk through the process of building an unattended install server based on network services. We configure these services on dedicated machine (a server), and we boot the target machine using network boot capable hardware — no removable media mastering need be involved. In cases where we’ve been able to deploy a dedicated server, this has allowed us the ability to very easily deploy and re-deploy installations and configurations with very little demand on individual resources. That said, network based deployment solutions do require having very specific network capable hardware as well as very specific access to the network address space. More often than not, the network environments we’ve worked in have not afforded us these luxuries. All the same, all the the fundamental process of provisioning is the same for both pure network installation and removable media installation, so this will be a good place to start.

A very important caveat: the following deployment model requires not only having a physical network in place for all the machines we wish to deploy, but we require a dedicated network broadcast domain. This approach has served us well at sites where we have a discrete group of computers on their own dedicated subnet (e.g. a computer lab located in a single room). Topographically, we need to be able to situate our installation server “upstream” of our target machines in such a way that those machines will we have exclusive access to the network services being offered by our installation server. Likewise, we wish that our installation server only be able to offer services to the target install machines and not to machines elsewhere on the site network (or to the Internet at large!).

Our server will essentially operate in several different roles: 1) a boot server 2) an IP nat router 3) a fileserver for software install files and configuration instructions. For the purposes of this discussion, I’m going to assume a hardware server with 2 distinct network interfaces — one interface connected to the upstream network, and the other connected to a dedicated switch linking all target machines on the same private subnet.

Assuming you have the appropriate network in place, and the hardware configured, install your favorite Ubuntu spin onto your server machine. I used Ubuntu 18.04 server edition. It doesn’t matter which version of you choose, so long as your distribution can retrieve the tools we’re going to need for the rest of this build. We’re going to want to configure our “inside” network interface with a dedicated, private IP address — notably the host address for our subnet of target machines. In my case, I chose the subnet, as this did not conflict with the upstream address space. Your network may vary, and you should consult with your network or LAN administrator before proceeding.


We will install services for DNS, DHCP, TFTP, HTTP, and Apt Caching

# apt-get install dnsmasq apache2 apt-cacher

Next we need to configure the firewall on our server to act a NAT and packet forwarder, as well as to open ports for the services our install server will provide to the target machines.


Edit the following files to use our server as a NAT for our installer subnet:




Uncomment the line “net/ipv4/ip_forward=1”


Add the following lines just after the header comments:

# Forward traffic through wlp3so (my “outside” interface. Change to match your out-interface)

Restart ufw using ufw or systems:

$ sudo ufw disable && sudo ufw enable

We’re also going to need to open up some ports:

# allow clients to receive DHCP, we will further restrict this in the dnsmasq config
ufw allow 67,68/udp
# allow clients to receive TFTP
$ sudo ufw allow proto tcp from to any port 69
# allow clients to access our web server
$ sudo ufw allow proto tcp from to any port 80
# allow clients to access our package cacher
$ sudo ufw allow proto tcp from to any port 3142
# allow clients to use our DNS
$ sudo ufw allow from to any port 53


The package dnsmasq offers us a convenient tool for managing DHCP, DNS, and a TFTP server.


Then we deploy the pre-execution environment (PXE) tools to allow network bootstrapping for out client machines.

$ sudo mkdir /tftpboot
$ sudo cd /tftpboot
$ sudo wget
$ sudo tar -xvf netboot.tar.gz


Add a menu item to /tftpboot/ubuntu-installeri386/boot-screens/txt.cfg Ours looks like this:

label partimus
menu label ^Partimus Install
kernel ubuntu-installer/i386/linux
append vga=788 initrd=ubuntu-installer/i386/initrd.gz debconf-prioroty=high debian-installer/language=en debian-installer/country=US console-setup/ask_detect=false keyboard-configuration/layout-code=us hw-detecy/load-firmware=false netcfg/choose_interface=enp0s25 netcfg/get_hostname?= netcfg-dhcp_timeout=60 preseed/url= --- quiet

What are all these parameters we’re appended to the kernel arguments? We’ll get into that later when we discuss debian-installer pre-seed options. We need to include the parameters in the kernel arguments because the preseed file can’t be read unless the installer knows where to find it.

Official Ubuntu Documentation


On Ubuntu 18.04, we need to ensure that our dedicated DHCP server and the local DNS resolver can co-exist.

Edit /etc/systemd/resolved.conf

And uncomment the directive DNSStubListener= to read DNSStubListener=no.

Restart systemd-resolved:

$ sudo systemctl restart systemd-resolved

Enable dnsmasq services:

$ sudo systemctl enable dnsmasq


Uncomment the line “allowed_hosts = *” and change it to read “allowed_hosts =” (or the subnet in your environment)

Also ensure that Apt-cacher is automatically started when we start our web server:

Edit the file /etc/default/apt-cacher and ensure that the directive “AUTOSTART=“ is set to “AUTOSTART=1”

Enable apache.

$ sudo systemctl enable apache2


Next we need to generate and host the “preseed” configuration files. This file essentially provides the “answers” to the questions that debian-installer and our OS and software packages will want to know.

The preseed file is essentially the “recipe” for configuring our install. It consists of data directives which are interpreted by the installer and other packages and stored in a database called “debconf”.

Official Ubuntu Documentation

On any installed system, using the tool “debconf-get-selections” from the debconf-utils package will output all the debian configuration settings for the system. Often, it becomes an iterative processs of installing a system manually, noting the appropriate debconf directives, and then incorporating them into your preseed configuration recipe.

Here’s the preseed file for a Partimus workstation. Apache serves this file from it’s default directory at /var/www/html.

#### preseed.cfg
## lubuntu 18.04
## for standard workstation

### Locale

d-i debian-installer/locale string en_US.UTF-8
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i keyboard-configuration/xkb-keymap select us

### Network configuration

d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto
d-i netcfg/wireless_wep string

### Mirror settings

d-i mirror/country string manual
d-i mirror/http/hostname string
d-i mirror/http/directory string /
d-i mirror/http/proxy string
apt-setup/services-select multiselect security
d-i apt-setup/security_host string
d-i apt-setup/security_path string /
d-i mirror/suite string bionic
d-i mirror/udeb/suite string bionic
d-i debian-installer/allow_unauthenticated string true

### Partitioning

d-i partman-auto/method string regular
d-i partman-auto/init_automatically_partition select Guided - use entire disk
d-i partman-auto/purge_lvm_from_device boolean true
d-i partman-lvm/confirm boolean true
d-i partman/choose_partition select Finish partitioning and write changes to disk
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite true

#d-i partman-auto/method string lvm
d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
#d-i partman-lvm/confirm boolean true
#d-i partman-lvm/confirm_nooverwrite boolean true
#d-i partman-auto/choose_recipe select atomic
#d-i partman-partitioning/confirm_write_new_label boolean true
#d-i partman/choose_partition select finish
#d-i partman/confirm boolean true
#d-i partman/confirm_nooverwrite boolean true
#d-i partman-md/confirm boolean true
#d-i partman-partitioning/confirm_write_new_label boolean true
#d-i partman/choose_partition select finish
#d-i partman/confirm boolean true
#d-i partman/confirm_nooverwrite boolean true

### Clock and time zone setup

d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean false

### Account setup

d-i passwd/root-login boolean false
d-i passwd/user-fullname string Partimus Admin
d-i passwd/username string partimus
d-i passwd/user-password-crypted password $1$nQudsnjbj$njk$jwKu/
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false

### Boot loader installation

d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i grub-installer/password-crypted password $1$byneYy.ndsjknFFF.

### Udeb

apt-setup-udeb apt-setup/services-select multiselect security
pkgsel pkgsel/update-policy select none

d-i user-setup/allow-password-weak boolean true
user-setup-udeb user-setup/password-weak boolean true
user-setup-udeb user-setup/password-weak boolean true
user-setup-udeb user-setup/encrypted-private boolean false
user-setup-udeb user-setup/encrypt-home boolean false

### Package selection

tasksel tasksel/first multiselect lubuntu-desktop

### Installtime scripting

d-i preseed/late_command string \
wget -q -O /target/tmp/ ; \
in-target bash /tmp/

### Finishing up the first stage install

#d-i finish-install/reboot_in_progress note


In addition to the debian-installer directives specified in the preseed file, we can run custom shell scripts at the beginning of the install or near the end. The following is the Post-Install script we use at Partimus:


## establish local sources for packaging
# back up the default apt sources list

cp /etc/apt/sources.list /etc/apt/sources.list.bak

# place the following repository addresses in /etc/apt/sources.list

cat > /etc/apt/sources.list <<APT-SOURCES
deb bionic main restricted universe multiverse
deb bionic-updates main restricted universe multiverse
deb bionic-security main restricted universe multiverse
#deb bionic main-backports restricted universe multiverse
deb bionic partner

apt-get -y update

# a package group we’re going to install (ubuntu-restricted-extras) contains a package (ttf-corefonts) with interactive questions we want to 

echo -n 'ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula boolean true' | debconf-set-selections

# if we wish to store the files that this package will fetch from source forge locally, we can specify that URI.
#echo -n 'ttf-mscorefonts-installer msttcorefonts/dlurl string' | debconf-set-selections

# preseed debug tools
#apt-get -y install debconf-utils
#apt-get -y install vim 

## configure packages

# here we list packages we wish to add, and some default packages we don’t want to include

ADD_PACKAGES="lubuntu-restricted-extras libreoffice-writer libreoffice-calc libreoffice-impress gimp vim chromium-browser"

REM_PACKAGES="gnumeric gnumeric-common gnumeric-doc abiword abiword-common sylph simple-scan transmission-common transmission-gtk"

# we’re going to loop through and install these packages one at a time to avoid potential race conditions.

for p in $ADD_PACKAGES
apt-get -y install "$p"
sleep 5

for p in $REM_PACKAGES
apt-get -y remove "$p"
sleep 5

#enable guest account

cat %gt; /etc/lightdm/lightdm.conf.d/50-no-guest.conf <<LIGHTDM

## fix sources for placement in production
# when we place this system in the world, it’s not likely going to have access to our dedicated install server. We’ll rewrite our sources file to the global resources and update our APT cache.

cat > /etc/apt/sources.list <<APT-SOURCES
deb bionic main restricted universe multiverse
deb bionic-updates main restricted universe multiverse
deb bionic-security main restricted universe multiverse
#deb bionic partner
apt-get -y update

exit 0


Assuming our client machines are plugged into our installer subnet and configured to boot from the network, we’re now ready to boot our our network based unattended install.

DHCP will address our client and tell it where to find the PXE environment. The PXE config will tell our system where to find the installer files and our preseed configuration on our network. The preseed file will configure our install and where to fetch out custom post-install script. The first time we provision a machine, it’s going to be a little slow as Apt-cacher will be busy fetching packages from Ubuntu. Subsequent installs from this install server will be much faster.

Up next. How to set up an unattended install using a USB thumb drive.

A Library of Challenges

One of the technical challenges at Partimus is configuring software for the myriad of donated hardware we receive. For several years now, we’ve used Lubuntu — a lightweight variant of Ubuntu Linux — as our primary desktop operating system. Ubuntu, and it’s variants, are fairly easy to install and configure directly from the distributed CD. However, as we scale our efforts to provide for an increasing number of supported sites, it’s important to keep our machines configured in a standard, consistent manner. To those ends, we automate the task of OS and software installation and configuration using several standard methods. This is referred to “unattended installation”, or “provisioning and configuration management”. Fortunately, Ubuntu comes with a number of powerful tools capable of implementing large scale deployments. At Partimus, we use Ubuntu’s native installer tools — primarily delian-installer — for unattended installs. Typically, a manual installation of Ubuntu is achieved with a series of interactive prompts asking the user to select such options as how the hardware should be configured and which software packages to install. delian-installer essentially allows us to create a set of parameters and instructions that can be handed off to the installer in order to answer those dialogs without need for user interaction (“pre-seeding” the responses to the interactive configuration questions). Installation of the operating system consists of 4 essential steps. 1) Bootstrapping the target machine. 2) Loading an installer distribution 3) installing the packages that make up the OS and its applications 4) customizing the configuration. Fortunately, the technology allows a lot of flexibility on how to accomplish this. We can use custom crafted media, network services, or a combination of the two. Bootstrapping can be handled using removable media (a CD or USB thumb drive), a network capable boot device (PXE), or even the boot loader on an existing local disk (GRUB). Both the configuration and the repository or packages to be installed can also exist on a local file system, local removable media, or be served from a network based store using standard protocols like HTTP or NFS. Over the next few posts, I intend to walk through some of the approaches we’ve taken to automate deployments. First up, a network based bootstrap and provisioning solution.

Partimus celebrates 10 years

In March of 2007 Partimus was officially acknowledged as 501(c)(3) Organization for our educational work. To celebrate, we thought we’d take a look back over the past ten years, to see how we’ve grown and changed as an organization.

As we were working on incorporation in 2006, our efforts began quite broadly. We shipped five computers to the Computers-4-Kids organization in Austin, Texas. In 2007 incorporation allowed us to be eligible for a grant from the Anita Borg Foundation to acquire and supply five computers to an all-girls after-school mathematics club for 5th graders run by CEMELA (Center for the Mathematics Education of Latinas/os). 30 desktops were also built, installed, tested, and shipped to an elementary school in Huajuapan de Leon, Mexico in collaboration with ZaReason.

In 2009 efforts started to focus more locally in the San Francisco Bay Area, where our efforts remain today. In 2009 we installed a total of 51 stand-alone Linux-based systems at two schools, including a fully-fuctional 31-seat Linux computer network at the Creative Arts Charter School and systems at KIPP San Francisco Bay Academy.

Work continued with support, computers and labs throughout the bay area, including Mission Beacon, Precita Valley Community Center, International Studies Academy, and Hayes Valley Learning Center in San Francisco, and the Prescott School and ASCEND Charter School in Oakland.

Today our work continues with an initiative to support adult learning. In February of this year ECS announced the formal completion of our 18-month project with them to provide public computers for their residents. Work continues on these six sites with over a dozen computers as we maintain and improve the labs, as well as look into further education opportunities for the residents.

Huge thanks to all the volunteers, individual donors, companies, and organizations who we have collaborated with over these very productive ten years. We’ve helped hundreds of students with access to computers, worked with teachers, community leaders and more to empower the spread of education through technology in our communities.

Our work continues moving forward. Join us with involvement by joining our mailing lists:

Learn how you can support us financially by visiting our Donate page.

Our latest work with ECS

Back in October, Christian Einfeldt interviewed Liz Pocock, the Director of Housing Development and Asset Management at Episcopal Community Services (ECS) about her work in low-income housing facilities and how the residents had been using our Linux-based computers in the first residence we deployed in, The Crosby.

Over the winter, I spent some time debugging some slowness issues over at The Crosby with one of the residents. A new switch was purchased with Partimus funds to replace an aging hub that had been used previously. With that, their networking was fast again! Christian also spent time debugging a few issues, including some problems with logins and changes to default settings.

This spring, Christian has continued his work with ECS to meet with staffers to futher the progress of bringing donated computers running Lubuntu to install systems into more low-income facilities. Today in addition to The Crosby, we also have computers at the Elm low-income shelter. Our work is continuing into a third and fourth ECS facility as we speak.


This brings our total today to four computers at two low-income facilities. We’ve been delighted to see how well the Lubuntu desktops are received. At the request of residents seeking to use an office suite, LibreOffice has also been installed on the systems.

Our hope is that these networked systems that provide internet access to the residents will empower them to take a more active role in a community and world that’s so heavily connected.

If you’re interested in donating some computers or offering your services to Partimus, reach out to us at with details about your hardware or skills. We’re specifically looking for experienced Linux systems administrators who can make the time to implement and document the creation of a provisioning and proxy server at each location to ease installations and be more gentle on the bandwidth. Learn about our minimum specifications for hardware requirements and other ways to donate on our website: Partimus Donations. Partimus is a 501(c)3 nonprofit organization, donations are tax deductible in the US.

On Giving Tuesday, help us give computers to low income shelters

You’ve heard of “Black Friday” and “Cyber Monday”.  Now here comes “Giving Tuesday“, an effort to formally kick off the season of giving.  Giving Tuesday was started by a New York City community organization called 92Y, which is an educational organization on 92nd Street and Lexington Street in New York City.

giving Tuesday

The “Giving Tuesday” logo

We at Partimus focus on giving all year around to public schools and to homeless shelters or low income shelters.  We believe that free open source software can revolutionize These institutions’ budgets, by bringing them high quality software on quality pre-owned computers. The software used on our computers is the same software that runs the supercomputers of Google, Facebook, Twitter, and 70% of the world’s equity stock trades.  We want to make sure that public school kids will grow up with a deep understanding of how to use the incredible tools of the Internet, and that people in low income shelters can do the research they need to get good paying jobs. (The City of Munich has saved 11 million Euros since 2006 by moving to the software, and one school district in Pennsylvania saved $360,000.00 with open source software.  The same advantage can be enjoyed by public schools and low income shelters the world over.)

You can help us make this happen by either purchasing a beautiful Ubuntu-themed set of earrings or a Ubuntu-themed necklace, or by simply donating directly to our efforts.  Partimus is an all-volunteer organization, and your donations will help us grow our mission, reach more schools and low income shelters, and be more effective at bridging the digital divide.  Six dollar from each set of earrings and $10 dollars from each necklace will go directly to Partimus, a registered 501(c)(3).

Silver-colored necklace

The silver-colored necklace

The beauty of giving to Partimus is that you will help us teach schools and low income shelters that beginning now with free open source software such as Ubuntu GNU-Linux will assure that these institutions will always have access to the latest, best software without burdensome licensing costs.

Ubuntu Notebook

A Lenovo notebook computer running Ubuntu GNU-Linux software

The story of free open source software is the story of “doing humanity to others”, which is what the word Ubuntu means.  Go here to see former South African President Nelson Mandela talk about the African concept of Ubuntu.

Linux computers for a low-income residence

Partimus has recently installed and is now supporting GNU-Linux computers in a low-income housing residence in San Francisco called The Crosby.  Located in San Francisco’s Tenderloin district, The Crosby is run by the Episcopal Community Services of San Francisco  (ECS) which provides about half of the adult shelter beds in San Francisco, according to its website.  Partimus has started its work at The Crosby with a pilot projects of two machines running Ubuntu 14.04 LTS.  For beautiful and inspiring videos of how ECS is helping people transition from homelessness, go to this website and scroll down or go here for the story of the end to Jimmy’s homelessness or here for the story of the end to Rita’s homelessness.

Partimus volunteers installed the Ubuntu 14.04 machines at The Crosby on September 29, and have been supporting those machines since that time with simple administrative services.  We recently sent a list of questions to Elizabeth Pocock, who is responsible for the oversight of the Partimus computer pilot project, to see how the project is faring so far.  Here is her response to those questions:

What is your role with The Crosby and ECS?

I am the Director of Housing Development & Asset Management for ECS.  I ensure that each of ECS’s sites, including The Crosby, is in compliance with regulations and standards regarding building safety.  I plan and arrange for improvements–physical and aesthetic–at all sites, and secure the funding to make it all possible.

In a nutshell, what is the mission of ECS in general and The Crosby?

ECS’s Mission: ECS of San Francisco helps homeless and very low-income people every day and every night obtain the housing, jobs, shelter, and essential services each person needs to prevent and end homelessness.  ECS’s Support Services Team at The Crosby operates with this mission in mind while they support their residents (all of whom are formerly homeless) in various ways with the ultimate goal of helping residents remain stably housed.

How long had you been considering providing public access computers for residents at The Crosby?

ECS strives to have computer labs at every property, but public access computers such as the ones provided by Partimus were a new and innovative idea that came from talking with (Partimus Board member) Christian Einfeldt.

How does the Partimus Linux mini-lab fit in with your mission at ECS in general and The Crosby in particular?

Providing The Crosby with community computers and WiFi, free-of-charge, helps enable them to easily access the online and offline resources that many of us take for granted, from job and skills attainment to convenient email access to word processing.

What is your first impression with Linux so far, compared with your experience with Microsoft Windows?  Meaning, is Linux fairly similar in your experience thus far, and if there is a difference, what is it?  Or does Linux seem to be pretty much the same as Microsoft Windows in what it can do?

Our residents report no difference or difficulty navigating the computers!

What is the reaction of the residents so far to the Partimus Linux mini-lab at the Crosby?

Very happy and highly utilitized!  We have a lot of residents hopping on and off several times a day.  It really helps them be able to navigate the world with much more ease.

Do you see any other uses for Partimus Linux computers in the future with ECS or The Crosby?

ECS hopes to bring community computers to all its housing sites and programs as well.

Putting good donations to good use

As we previously blogged about, J. David Eisenberg has donated 15 good computers (with monitors, mice and keyboards) to Partimus, and since the time of that March 27 blog, we have been replacing old machines with David’s newer machines.  It has been slow, steady progress.  On April 17, David came back to the Ascend school, and he and tech teacher Abigail Rudner and I triaged 6 machines and installed Lubuntu on 5 of the machines.

Since then, we have replaced some of the slower, noisier machines with David’s newer, quieter, faster machines.  It is a constant process of installing machines, putting new machines into production, taking slower machines out of production, and then checking back with Abigail to make sure that the replaced machines are working as expected, and supporting her as she makes tweaks to the system.

Today, Sean Castro of Education for Change and I triaged some more machines, replacing two machines that had only 500 MB of RAM each with two of David’s machines, which have  1 GB of RAM each.  Until we get our PXE / proxy server in place, we are now manually installing the machines, setting up the admin accounts and the student user accounts, and placing a few important icons on the desktop of each of the machines.

A computer lab is a little bit like a garden.  I takes constant weeding to take out the “weeds” that sprout up as children explore the computers, inevitably damaging them or creating untidy desktop spaces in the process; and replacing dying machines with newer machines.  The key to making the “garden” work is having a caring teacher like Abigail create a positive environment that causes both the students and the volunteers supporting the lab to believe that the lab is a good and worthy thing that deserves nurturing and caring.

If students take good care of the machines, as the do in Abigails’ lab, then the volunteers pick up on that energy of caring, and keep the machines in good working order.  When the students see that the machines are in good working order, they in turn do good school work on the machines, and keep the machines and the physical lab environment tidy and in good order.  It all comes together like a symphony, with the players all playing their tunes to create a beautiful creation.

Thanks to Amo Kaci of Education for Change for mentoring Sean Castro and for helping to support Abigail in maintaining the lab, and thanks to Sean for his work in the lab today and in the past.  Thanks again to J. David Eisenberg for his great donation of the machines, and thanks to Jim Stockford of Systemateka for helping to get the machines from David’s donation collection site to the Ascend school.

Shining Beacons on Penguin Hill

The use of free open source software in schools is already quite big, and yet it’s still in its infancy.  Here is a story about two different people and the remarkable results they have created with free open source software in the education communities they lead.  What’s common to these stories is the educational value of involving students in the development and implementation of their technology.  If you are wondering what can be done with free open source software in education, look first to these two leaders as an example of the great thing that can be accomplished.

Screenshot from 2015-04-03 11:00:44.Charlie.Reisinger

Charlie Reisinger delivering his TEDx talk on free software in education.


Charlie Reisinger.  Charlie wanted to experiment with free open source software in education, and he decided to go big.  He envisioned high school kids taking home Linux notebooks.  But not just the techie kids.  All of the kids.  He eventually rolled out an install base of 1700 notebook computers in the Lancaster, Pennsylvania, school district.

But the particularly cool thing about his project was the way he included students into the project.  Doing the project became an education experience in itself.  Working under close adult supervision, the kids installed Ubuntu GNU-Linux on the laptops.  And the kids are also part of the support team, with their support team blog here, and their twitter support account here.

His effort was so successful that he was invited to give a talk on it at the famous TEDx conference.  If you want to get a big picture of what Charlie is doing with his Linux in education project, click here on his TEDx presentation.  If you want inspiration about what free open source software can do in education, be sure to watch Charlie’s TEDx talk.  And you can follow Charlie on Twitter here.

Not content to rest on his laurels, after just one year of running the one-to-one laptop program in high school, Charlie is planning to roll it out to middle school students in the Autumn of 2015.


Screenshot from 2015-04-03 10:55:00.Stu.Keroff

Stu Keroff’s Staff Photo for the Community School of Excellence in St. Paul, Minnesota.


 Stu Keroff.  Stu orchestrated the acquisition of a cart of 30 Linux computers and a Linux mini-lab of 5 machines for a middle school called the Community School of Excellence in St. Paul, Minnesota.  Most of the students at the school are Hmong and Karenni.  Stu has called on the students’ common cultural heritage to foster a strong sense of community identity with his young Linux technicians, who call themselves the “Asian Penguins“.

You feel that sense of community by watching the videos on the Asian Penguins’ website.  In watching those videos, I was struck by how articulate, mature, and responsible these middle school students are, shown in this local TV news story about the Asian Penguins.  They don’t seem to be silly or giggly in doing their technology work.  They seem to understand the value of having control over their technology, of taking ownership of it.  For example, they also seem to do a good job of taking charge of the installation of Linux computers in the homes of people in the community, as shown here, where a group of girls install a Linux computer in someone’s home.  As with Charlie Reisinger, Stu Keroff understands that the practice of working on these Linux machines, managing the machines, and installing them in homes is itself a hugely valuable educational experience.  You can follow Stu here on his Twitter page.




Mystery Man and the Professor ride to the rescue!

Yesterday was what you would call a good day.  I met Jim Stockford in the morning at 8:00 am in San Francisco, and he drove us from San Francisco down to San Jose to meet David Eisenberg, a local college professor, to pick up some computers that David had in storage.  Fifteen computers, to be exact, all of which meet the Partimus specs, for deployment in public schools such as the Ascend school in Oakland.

We loaded all fifteen machines, with monitors, into Jim’s SUV and David’s sedan, and headed over to the Ascend school in Oakland, where we dropped off the machines with Ascend technology teacher Abigail Rudner and her volunteer assistant, Brianna Niver.

The next step for those machines will be for Abigail to install Lubuntu GNU-Linux on a few of the machines to replace some of the slower, older machines in her lab.  In the meantime, Partimus volunteer Tai Kedzierski of Help Use IT is heading up a team to prepare a PXE boot and proxy server to help Abigail mass-install a specialized version of Lubuntu on each of the students’ machines.  Here is a photo of the four of us who were still around at the very end of the delivery of the newer machines to Abigail’s Linux lab:


Foreground: tech teacher Abigail Rudner. Background from left to right: Professor David Eisenberg, who donated 15 machines and monitors to Partimus; volunteer Brianna Niver, and Partimus volunteer Christian Einfeldt


Professor Eisenberg not only acquired the 15 new machines for Partimus, he also stored them for a considerable time  and then help load, unload, and drive them to Oakland.  Thanks so much for your help and your remarkable donation, David!

But what about the Mystery Man, Jim Stockford?  He is a frequent Partimus volunteer, Systems Engineer with, and has been known to rock audiences at San Francisco Bay Area venues with a punk band called The Nubs.  In fact, after graciously driving, loading and unloading machines for 3 hours that morning, he had to rush back to a head-banging band practice with said Nubs.  And all he left behind was this mysterious photograph, so I guess you are just going to have to pay to the see the Nubs to see him in action:


Thanks very much to David Eisenberg, Abigail Rudner, Brianna Niver, and Mystery Man Jim Stockford for your great help!



Coding opportunities for women and girls

Partimus was founded by two women, Cathy Malmrose and Maile Urbancic, and ever since, supporting women in STEM has been an important priority for Partimus.  So we are re-posting this email to help spread the word about upcoming coding opportunties for women and girls.

First is Girls Who Code.  If you know a girl who you think might be interested in exploring coding this summer, now would be a good time to bring Girls Who Code to her attention.  Girls Who Code provides girls with exposure to both great experience in creating with code, as well as exposure to highly successful women in technology, meaning women who run major tech organizations and companies.  Prior knowledge of coding is not necessary, and girls who are completely new to coding have created some really significant pieces of software as part of the summer program with Girls Who Code.  But time is running short, so now is the time to look at this program.

Second is the Google Summer of Code, and third is the Outreachy intership program, both of which are described below in an open email send out this week:

From: Marina
Date: Mon, Mar 16, 2015 at 5:53 PM
Subject: [Womeninfreesoftware] Remote internships in Free and Open Source Software: Google Summer of Code and Outreachy
To: womeninfreesoftware <>


Google Summer of Code is a global program that offers students stipends to write code for projects from 137 participating FOSS organizations. Applicants must be able to make the project their primary focus during the summer. Participants work remotely from home, while getting guidance from an assigned mentor and collaborating within their project’s community. The application deadline for Google Summer of Code is March 27 and the program dates are May 25 to August 21. The stipend for the program is $5,500 (USD).

In an effort to improve diversity in FOSS, a number of organizations are offering similar remote and mentored Outreachy internships through a program organized by Software Freedom Conservancy. These internships are open to women (cis and trans), trans men, and genderqueer people. Applicants must be available for full-time, 40-hours a week, internships. The application deadline for Outreachy is March 24 and the program dates are May 25 to August 25. The stipend for the program is also $5,500 (USD). Unlike in Google Summer of Code, participants do not need to be students and non-coding projects are available. In addition to coding, projects include such tasks as graphic design, user experience design, documentation, bug triage and community engagement.

To apply for either program, you need to connect with a participating organization early, select a project you want to work on, create a project plan, and make a few relevant contributions.

Mentorship opportunities are also available throughout the year for anyone interested in getting started contributing to FOSS outside of the internship program.

Please consider applying for Google Summer of Code or Outreachy, encourage someone else to apply, or help spread the word by forwarding this message to any interested university and community groups.