+ <ul>
+ <li>Simple (two questions and the root password)
+ <li>Automatic
+ <li>Using debian-installer (d-i) and base-config (b-c)
+ <li>Complete (everything work out of the box)
+ <li>Very little skolelinux-specific code (two udebs and three
+ config packages).
+ <li>Rewriting the config of other packages to get the services
+ preconfigured out of the box (against policy?)
+
+ </ul>
+
+ <h2>The two stages of the Debian installation</h2>
+ <h3>First stage (debian-installer)</h3>
+ <ul>
+ <li>Booting from cd/floppy/net/whatever
+ <li>Installing base system
+ <li>Making HD bootable
+ </ul>
+ <h3>Second stage stage (base-config)</h3>
+ <ul>
+ <li>Booting from HD
+ <li>Installing and configuring the non-base system
+ </ul>
+
+ <h2>The first stage (debian-installer)</h2>
+ <ul>
+ <li>Modular
+ <li>Extendible
+ <li>Using debconf to ask questions
+ <li>Can be mostly automatic
+ <li>Very Flexible
+ </ul>
+
+ <h2>debian-installer structure</h2>
+ <ul>
+ <li>Selector for installer modules (udebs)
+ <li>Select language and region
+ <li>Autodetect hardware
+ <li>Locate APT source (CD, Net or floppy)
+ <li>Load the rest of the installer modules
+ <li>Partition hard-drive
+ <li>Make filesystems or swap
+ <li>Mount filesystems
+ <li>Install base system
+ <li>Install kernel
+ <li>Install boot loader
+ <li>Reboot
+ </ul>
+
+ <h2>debian-installer hooks</h2>
+ <ul>
+ <li>Include or exclude d-i modules
+ <li>Running script at install system boot time
+ <li>Include or excluding packages going into the HD
+ <li>Running scripts before reboot from HD
+ <li>Partitioning
+ </ul>
+
+ <h2>The second stage (base-config)</h2>
+ <ul>
+ <li>Executed from init on first boot
+ <li>Modular (reading /usr/lib/base-config)
+ <li>Able to adjust the order of the scripts on the fly using
+ return codes.
+ <li>Partly using debconf for configuration decisions.
+ </ul>
+
+ <h2>base-config structure</h2>
+ <ul>
+ <li>Generate locale if needed
+ <li>Start terminal emulator (for non-ascii installs) if needed
+ <li>Load variables based from first stage (/root/dbootstrap_settings)
+ <li>Turn off screen saver
+ <li>Show intro screen
+ <li>Set up console keyboard
+ <li>Set up time zone
+ <li>Configure /etc/passwd, root password and local user
+ <li>Enable ppp?
+ <li>Configure APT sources
+ <li>Select packages to install
+ <li>Fetch packages
+ <li>Configure exim
+ <li>Disable ppp?
+ <li>Show "successful install" screen
+ <li>Rewrite /etc/inittab to not start base-config on next boot
+ </ul>
+
+ <h2>base-config hooks</h2>
+ <ul>
+ <li>Add scripts to /usr/lib/base-config/
+ <li>Update debconf database
+ </ul>
+ </ul>
+
+ <h2>Skolelinux specific code</h2>
+ <h3>First stage</h3>
+ <ul>
+ <li>Shorter language list
+ <li>Set debconf priority limit to high to get automatic install
+ <li>Ask about profile and do automatic partitioning for this
+ profile
+ <li>Reorder d-i module order using dependencies and menu-item value
+ <li>Install extra packages into the HD
+ <li>Pass info to second stage using /root/dbootstrap_settings
+ and /etc/skolelinux/config
+ </ul>
+ <h3>Second stage</h3>
+ <ul>
+ <li>Set debconf frontend to non-interactive (most of the time)
+ <li>Preload debconf answers based on profile choice
+ <li>Automatically install packages for the given profiles
+ <li>Rewrite/replace config files based on profile and language
+ <li>Configure XFree86
+ <li>Restart servers (except kdm)
+ <li>Check installation
+ <li>Restart kdm
+ </ul>
+
+ <h2>Some solved problems</h2>
+ <ul>
+
+ <li>Preloading debconf answers need a dummy question template
+
+ <li>Packages with insufficient install configuration support
+ get their config files rewritten using cfengine.
+
+ <li>Selecting packages to install using meta-packages.
+
+ </ul>
+
+ <h2>Conclusion</h2>
+
+ <ul>
+ <li>The current debian-installer is extendible and can do
+ automated installation, with the hooks needed by Skolelinux.
+
+ <li>The current base-config is is flexible enough for
+ Skolelinux, but could use more hooks to reduce the amount of
+ Skolelinux specific code.
+ </ul>
+
+ <h2>References</h2>
+
+ <ul>
+
+ <li><a href="http://www.skolelinux.no/">Skolelinux web site</a>
+ <li><a href="http://developer.skolelinux.no/">Skolelinux
+ developers web site</a>
+ <li><a href="http://developer.skolelinux.no/arkitektur/arkitektur.html.en">The Skolelinux architeture description</a>
+ <li><a href="http://people.debian.org/~pere/debian-installer/">debian-installer web page</a>
+ <li><a href="http://people.debian.org/~pere/debian-installer/hooks.html">Available hooks in debian-installer</a>
+ </ul>
+
+ <h2>Thank you very much</h2>