How to create bare minimum Debian Wheezy rootfs from scratch


In this post we will explain how you can create your own Debian rootfs with pre-installed packages of your choice, which to allow tiny Linux images to be created.

All steps below should work on any Debian host (Debian/Ubuntu etc) and are verified with Ubuntu 12.04LTS.

First of all you need to install the support packages on your pc

sudo apt-get install qemu-user-static debootstrap binfmt-support


Next you need to choose the version of Debian in this case we are building a wheezy image.



Now we will build first stage of Debian rootfs :

mkdir $targetdir
sudo debootstrap --arch=armhf --foreign $distro $targetdir


Next copy the qemu-arm-static binary into the right place for the binfmt packages to find it and copy in resolv.conf from the host.

sudo cp /usr/bin/qemu-arm-static $targetdir/usr/bin/
sudo cp /etc/resolv.conf $targetdir/etc


If everything is right we now have a minimal Debian Rootfs

sudo chroot $targetdir


Inside the chroot we need to set up the environment again

export LANG=C


Now we are setup the second stage of debootstrap needs to run install the packages downloaded earlier

/debootstrap/debootstrap --second-stage


Once the package installation has finished, setup some support files and apt configuration.


cat <<EOT > /etc/apt/sources.list
deb $distro main contrib non-free
deb-src $distro main contrib non-free
deb $distro-updates main contrib non-free
deb-src $distro-updates main contrib non-free
deb $distro/updates main contrib non-free
deb-src $distro/updates main contrib non-free

Update Debian package database:

apt-get update


set up locales dpkg scripts tend to complain otherwise, note in jessie you will also need to install the dialog package as well.


apt-get install locales dialog
dpkg-reconfigure locales


Install some useful packages inside the chroot

apt-get install openssh-server ntpdate


Set a root password so you can login



Build a basic network interface file so that the board will DHCP on eth0

echo <<EOT >> /etc/network/interfaces
allow-hotplug eth0
iface eth0 inet static


Note: Your board will be accessible over SSH on IP address defined above !


Set the hostname

echo nameme > /etc/hostname


Enable the serial console, Debian sysvinit way

echo T0:2345:respawn:/sbin/getty -L ttyS0 115200 vt100 >> /etc/inittab


We are done inside the chroot, so quit the chroot shell



Tidy up the support files

sudo rm $targetdir/etc/resolv.conf
sudo rm $targetdir/usr/bin/qemu-arm-static


Now you have your Debian rootfs. Next step is to build Kernel, Uboot and to make your SD-card as explained in our early posts and Build instructions but instead to use the rootfs in the posts you can use your own minimal rootfs which you created above. The rootfs image created above is approx 150MB, it could be made smaller if you remove more packages.

Special thanks to Dimitar Gamishev (aka HEHOPMAJIEH) for creating this tutorial.

Weekend Programming Challenge Issue-13: ASCII art


Problem: Convert picture to ASCII art

Make code which converts picture to ASCII art.

Hints: This is very easy challenge although seems hard at first sight. Just convert the picture from color to gray scale, then select font which you will use to print ASCII art and analyze it which letters you could use for gray scale print – every letter have some coefficient of filling from 0 for the space to 255 for solid bar, use letters which are spread well in the font size space. Then slice your image at rectangles with the font size, calculate the median grey scale for each rectangle and print the corresponding ASCII character with same grey scale value.

As test image you can use everything – from Olimex logo to Lena above.

Share your results!

The rules:

You can code the solution in any programming language during the weekend and have to submit it to latest on Sunday June 2nd.

On Monday we will upload the solutions on GitHub and review .

You can play with your real name or with nick if you want to be anonymous, we will not disclosure your personal info if you do not want to.

Good Luck and Have fun!