The Smallest Possible Debian Install
I've taken an interest in seeing how small a Debian server installation can get. As fun as virtualization software like Vmware is, it's not a lot of fun to schlep around multi-gigabyte files. Either they don't fit where you want to put them, or they take too long to copy. Virtualization could benefit a lot from miniaturization.
There are a couple different approaches you could take. One would be to define the absolute minimum you need, software wise, and then build it from scratch. Another approach would be to follow in the footsteps of embedded systems, such as LEAF. A third option would be what Pebble Linux apparently did: start with a standard install and delete whatever you're sure you don't need.
That last one is the most appealing to me. I don't necessarily want to create a whole new Linux variant, and I don't want to give up the luxuries of a Debian-based environment. I just want to trim the fat.
It's tempting to start deleting things left and right. That's risky, because it could easily push the finished product from lean and mean to malnourished and impaired. The finished product should be as small as possible in terms of disk space and memory consumption, but it should also be capable of growing in size over time-- just like how things work in the biological world.
A few more assumptions:
- The system will only need to run inside VMWare.
- The system will not be expected to run desktop software.
- The system will not need USB, sound, or peripherals.
- The system will only speak English.
- Documentation can be viewed elsewhere.
| Action | Size (MB) |
|---|---|
| Base install with no additional packages. | 184 |
| Added 1 http source to apt | 211 |
| Installed ssh | 213 |
| Uninstalled ppp pppoe pppconfig pppoeconf tasksel nano, aptitude, at, eject | 203 |
| Installed debconf-english (removed debconf-i18n) | 203 |
| apt-get upgrade | 220 |
| Installed localepurge | 221 |
| apt-get clean | 205 |
| Edited /etc/apt/sources.list and removed unwanted indexes from /var/lib/apt/lists | 200 |
| Uninstalled info, usbutils, ipchains, discover1, discover1-data, libdiscover1, localepurge | 198 |
| rm -rf /usr/info/* | 198 |
| Removed translation files from /usr/share/man and /usr/share/locale | 177 |
| Deleted kernel modules for sound, usb, telephony, video, bluetooth, ieee1394, parport from /lib/modules/2.4.27-2-386 | 169 |
| Deleted documentation: rm -rf /usr/share/doc-base/*; rm -rf /usr/share/doc/* | 163 |