Debian-Installer: General Overview on the GTK frontend

Note: Development of the graphical debian-installer (g-i) takes place mainly for i386, so instructions and examples below may need to be adapted for other architectures.

This page explains how to create a g-i miniiso, that is a miniiso image which contains the GTK frontend and all the related stuff: since this image is very small (10/15MB) and quick to build, it is an ideal playground to experiment with.

Daily images including the GTK frontend are part of the regular ISO build process from a year or so. For i386 and AMD64 the following types of images are supported: CD images, hd-media, netboot-gtk. For powerpc currently only the netboot-gtk image is available.

Fonts are loaded from udebs. For details, see https://wiki.debian.org/DebianInstaller/GUIFonts.

The latest images built this way are available from the Debian Installer project page.

Manual build of the images

Manual builds can be done by following the instructions below.

Note that if you have made changes in the localudebs directory, it is advisable to run 'fakeroot make reallyclean' before rebuilding.

The result of the build is a "mini.iso", an minimalist image of about 15-20MB (depending on architecture).

Building cdebconf (or the single gtk.so) against the fresh new libs

gtk.so is part of the cdebconf package (cdebconf-gtk-udeb in particular), archived in the GIT repository of the installer. To rebuild cdebconf against directfb rather than X ("yourpath" is the absolute path containing the various libraries):

git clone git@salsa.debian.org:installer-team/cdebconf.git
cd cdebconf
export LD_LIBRARY_PATH=yourpath/d-i_build/lib
export PKG_CONFIG_PATH=${LD_LIBRARY_PATH}/pkgconfig
fakeroot dpkg-buildpackage

In case you wanted to recompile only gtk.so rather than the various udebs:

git clone git@salsa.debian.org:installer-team/cdebconf.git
cd cdebconf
sh ./configure
cd src/modules/frontend/gtk
export LD_LI

Debugging the graphical installer

Here are collected some techniques that may help in debugging the graphical installer.

Testing the installer from local directory

When you build a g-i ISO, everything you find inside the ISO comes of course from a directory of your hard disk: here is explained how to setup a chroot environment with details specific to the case of the debian-installer.

Assuming you've just built an ISO with the automating ISO building process described above, let's cd to build/tmp/netboot-gtk/tree : the contents of this directory are what gets packed later inside the initrd during the ISO building process. Now, as root and from inside build/tmp/netboot-gtk/tree , do the following

#chrooting inside the directory that initrd.gz was generated from
chroot ./ sh

#creating all device files needed to access the framebuffer
cd /dev
mknod fb0 c 29 0
mknod tty c 5 0
mknod tty0 c 4 0
mknod tty8 c 4 8

#starting the debian-installer
debconf-loadtemplate d-i /var/lib/dpkg/info/*.templates
export DEBIAN_FRONTEND=gtk
debconf -f gtk -o d-i /usr/bin/main-menu

This should start the graphical installer from the chroot'ed directory: now you can attach gdb to cdebconf, use tools like ltrace or strace easily. Please note that you need your real system to have been booted with framebuffer mode active (you should have passed something like video=vesa vga=788 to your kernel at boot time).

Testing the installer from an iso image

We noticed that, especially on PowerPC, sometimes the graphical interface crashes and restarts without rest over and over, blocking the user from accessing other terminals inorder to analyze error logs.

The suggested woraround is booting the installer in textual mode by entering the following line at boot prompt

install DEBIAN_FRONTEND=newt

At the end of the boot process the classical textual, blue interface will show up: you can now switch to VT2 and modify the /etc/directfbrc ?DirectFrameBuffer configuration file (it's like xorg.conf for the X11 server)

nano /etc/directfbrc

Then , type

export DEBIAN_FRONTEND=gtk
debian-installer

The GTK frontend will start, but this time you'll be able to read error messages on VT1 which usually provide useful informations about the crash