DoudouLinux dev's blog

To content | To menu | To search


Entries feed

Monday 12 March 2012

Using Debian to install DoudouLinux

Many people are trying to install DoudouLinux definitively on hard disk, because they're found of it ;) and have a quite old computer sleeping on a shelf. Some other ones are also willing to install DoudouLinux in schools, which is a great initiative :). Until now we've been only providing a “Live-like” installation which is identical to a Live USB key but on an internal hard disk. This is practical and very easy for users but has several drawbacks:

  • System updates don't replace the Live system files but consume extra space
  • Our installation tool wipes out the entire hard disk
  • Updating to a new version of DoudouLinux is not managed

For these reasons we've started to work on several ways to really install DoudouLinux onto hard disk. In this post we're using a minimal Debian install as a start point to seed DoudouLinux on the computer, which may last up to one hour per computer. This technique can also be used to create a “Live” USB key that is indeed a real system, not a Live system, or derived into a chroot installation process. The first case, real system on USB key, has been successfully tested.

NB: Currently only the development version can be installed as explained in this post.

Installing Debian

We assume that you're perfectly mastering the Debian installation process, so we won't tell too much about this. As we're performing a minimal Debian installation, you shouldn't be afraid of ending with a console-only system. We also recommend to use a wired network connection if you don't want to bother with WiFi credentials from the command line!

To install DoudouLinux, using 3 partitions (system root, home and swap) should be sufficient. However we recommend to select manual partitioning even if you don't want to make a multi-boot system nor install onto an USB key. This way you'll be able to set a root partition that matches your needs or to use an ext4 filesystem. Your root partition should be able to host all the packages downloaded from the Internet (in /var), which requires around 1 GB, and a DoudouLinux system alone requires 3 GB of free disk space. If you want to install additional applications, you should set a larger root partition up to 10 GB.

Install using Debian – disk partionning

When the Debian installer will ask you what kind of system you want to install, deselect “Desktop environment” to avoid installing many applications that are not in DoudouLinux. This will lead to a Debian console-only system.

Install using Debian – selected tasks

Bootloader or not bootloader

Near the end of the Debian installation process, you'll be asked if you want to install the bootloader on the first drive. You need to do this only if you're installing on the internal hard drive of your computer (and don't have a bootloader already installed of course!). If you're installing onto an USB key, answering yes to this question will not install the bootloader on your key but on your internal hard disk instead!

Install using Debian – Grub or not Grub?

In the case of an USB key, you can install the bootloader afterwards by restarting the Debian installation CD but choosing the rescue mode at bootup. When the rescue system will ask you if you want to start a console in a chroot environment, answer yes then choose your USB key root partition as system root. Doing this, the rescue system will be able to install Grub2 onto your USB key with the simple following command:

# grub-install /dev/sdx

where /dev/sdx is the path to your USB key device. As you may understand, you have to write down the path of your USB key during the previous installation process of Debian in order not to make mistakes :).

First reboot

As said above, rebooting your newly installed system should lead you to a minimal command-line system, so log in it as root.

Install using Debian – first reboot

Note that if you hadn't networking or have discarded it during the Debian install process, you'll need to edit /etc/apt/sources.list to add the Debian repositories, and to bring up your networking interface manually:

# dhclient eth0

Of course change the interface number eth0 if needed.

If you don't want to bother with inserting the Debian installation CD/DVD while installing DoudouLinux, also comment or even remove the corresponding lines in /etc/apt/sources.list. Now let's add the DoudouLinux repositories:

# echo "deb squeeze main" > /etc/apt/sources.list.d/doudoulinux.list

You now have to install the repository key:

# apt-get update
# apt-get install --force-yes -y doudoulinux-keyring
# apt-get update

Finally we recommend to disable the installation of recommended packages, which avoids the use of 1.3 GB extra space in our tests. You need to create the file /etc/apt/apt.conf.d/90recommends-suggests and type:

  Install-Recommends "false";
  Install-Suggests "false";

Your system is now ready to install DoudouLinux! Note that you can reactivate recommendations afterwards if you prefer not to bother with missing optional components when installing applications.

Install DoudouLinux

Thanks to all the work done for the migration of DoudouLinux to ARM™, DoudouLinux is more and more a standard system with its own installation packages. Although using the packages is still not leading to an exact copy of the Live system, it is now really very close to it and few details are missing only. Installing the full DoudouLinux environment is now as simple as:

# apt-get install doudoulinux-desktop-environment openbox

That's it! Note that, as of writing, openbox is only needed in this line because of a missing dependency :). This will be fixed soon. During the installation process, Samba will ask you the domain name, just press enter. After a couple of minutes or tens of minutes (depending on your computer and your Internet connection), the job will be done. You can now install packages that are specific to the x86 architecture, among those Plymouth:

# apt-get install doudoulinux-x86

Alternatively, if your system requires additional dirvers and firmware, for network devices for example, you may want to install our meta-package doudoulinux-live-drivers. It depends at least on the non-free section of the Debian repositories:

# sed -i 's/ main/ main contrib non-free/' /etc/apt/sources.list
# apt-get update
# apt-get install doudoulinux-live-drivers

Finally we recommend to add several useful tools:

# apt-get install less bash-completion ntpdate

You'll have to edit /etc/default/ntpdate to tell it not to use the NTPD parameters, since this package is not installed. Finally you may want to manage packages using synaptic and remove orphan packages using gtkorphan:

# apt-get install synaptic gtkorphan libgnome2-perl rarian-compat apt-xapian-index

Now it's time to configure the boot splash. Change the default Plymouth theme to the DoudouLinux one:

# plymouth-set-default-theme doudou-witch

To show Plymouth at boot, you have to add splash to the boot command line. To do this, edit /etc/default/grub and replace “quiet” by “quiet splash”. You'll also need to add modules to your RAM disk image, refer to the Debian wiki page for that since this depends on your hardware. Alternatively, if your video chipset is not recent enough, you might prefer make Plymouth use the framebuffer mode.

You can now regenerate the RAM disk image and the Grub menu:

# update-initramfs -u
# update-grub2

Unfortunately we haven't got a theme packaged for Grub2 yet, the very early boot will then be text only.

Finally you can edit /etc/xdg/user-dirs.defaults to avoid it to create unneeded directories in user's homes, for example Desktop, Template and Share.

Cleaning the system

You may need to remove extra packages that your minimal Debian installation has installed:

# apt-get purge exim4* at cron portmap rpcbind openssh-client

You can then purge the packages that are not necessary to DoudouLinux and clean the package cache directory:

# apt-get autoremove --purge
# apt-get clean
# reboot

GtkOrphan may also help you find additional and uneeded libraries. Your DoudouLinux system is now totally ready for use by children! The final total disk space used on my test machine is 3.1 GB while the maximum disk space needed during the installation was 3.9 GB. And the system boots in 12 seconds in VirtualBox without any special trick!

Have a good DoudouLinux!

Tuesday 17 January 2012

First “ready to use” DouDouLinux ARM™ images

Here it is, the promised DoudouLinux for Genesi Efika SmartBooks! It's a 4GB SD card image, ready to boot a DoudouLinux system built on top of Debian ARM™ Squeeze (armel flavour). This is a multi-language version of DoudouLinux (US English/French):

  • For Genesi/Efika SmartBook (armel)
  • Preconfigured for en_US/Qwerty keyboard
  • With iMX video driver
  • With GPU activated

Hare are some additional technical information:

  • root password efika
  • Genesi's Freescale source code
    • from Genesi's GIT
    • compiled by DrEagle
    • license Freescale “accepted”
  • non-free Freescale code (binary)
    • libz160 (GPU)
  • base distribution: Debian Squeeze, with the following sources
    • official Debian repositories
    • additional Debian-multimedia repository
    • custom DoudouLinux repository

You can get it from our official download pages:

If you wish to check the SHA1 sum, just issue the following command:

$ sha1sum efika-ddl-armel-ENU-gpu-4Go_20120116.img.xz
4630401386747fb2c46ef33e663795fd106bde45  efika-ddl-armel-ENU-gpu-4Go_20120116.img.xz

To build your LiveSD disk, you'll need a 4GB SD card. Then use this command:

$ xzcat efika-ddl-armel-ENU-gpu-4Go_20120116.img.xz | pv | sudo dd of=/dev/mmcblk0 bs=8192

Don't forget to replace /dev/mmcblk0 with the actual SD card device path (and please double check you're not using your internal HD!!!).

Saturday 17 December 2011

New architectures armel and armhf in our repository

Thanks to Genesi who graciously donated smartbooks to our project, porting DoudouLinux to ARM™ has started. It is then time to host new architectures in our Debian package repository: armel for both squeeze and wheezy, armhf for wheezy only.

Although we haven't started to generate ARM™-specific packages, we can first copy our architecture independent packages. The tool reprepro that we're using to make our own repository provides a convenient function flood that copies all the packages of architecture all from one architecture to another, in the same distribution codename. The following command is copying existing squeeze packages of architecture all to armel:

$ reprepro -V --basedir debian/ flood squeeze armel

As the previous command is not talkative at all, let's check it worked well:

$ reprepro -V --basedir debian/ --architecture armel list squeeze
squeeze|main|armel: childsplay-session 1.1-1
squeeze|main|armel: dansguardian-squid 1.0-2
squeeze|main|armel: doudou-hwreport 1.1-1
squeeze|main|armel: doudou-icons-extra 1.0-1
squeeze|main|armel: doudou-installer 1.0-3
squeeze|main|armel: doudoulinux-base 1.0-2
squeeze|main|armel: doudoulinux-desktop-environment 1.0-2
squeeze|main|armel: doudoulinux-dev-artists 1.0-1
squeeze|main|armel: doudoulinux-dev-build 1.0-1
squeeze|main|armel: doudoulinux-dev-l10n 1.0-1
squeeze|main|armel: doudoulinux-dev-system 1.0-1
squeeze|main|armel: doudoulinux-games 1.0-1
squeeze|main|armel: doudoulinux-keyring 2011.01.10
squeeze|main|armel: doudoulinux-kids 1.0-2
squeeze|main|armel: doudoulinux-mouse 2.1-1
squeeze|main|armel: doudoulinux-multimedia 1.0-2
squeeze|main|armel: doudoulinux-sessions 1.1-1
squeeze|main|armel: doudoulinux-sound 2.1-1
squeeze|main|armel: doudoulinux-splashimages 1.0-4
squeeze|main|armel: doudoulinux-timezone 1.0-2
squeeze|main|armel: doudoulinux-utils 1.4-1
squeeze|main|armel: doudoulinux-work 1.0-2
squeeze|main|armel: empathy-salut-nickname 1.0-3
squeeze|main|armel: epiphany-adblock-lists 1.0-1~20111122
squeeze|main|armel: gamine-session 1.0-3
squeeze|main|armel: gcompris-session 1.0-3
squeeze|main|armel: gdm-theme-doudoulinux 1.2-1
squeeze|main|armel: gnome-backgrounds-doudoulinux 1.0-3
squeeze|main|armel: grub-splashimages-doudoulinux 2.0-1
squeeze|main|armel: kde-l10n-doudou-es 4:4.4.5-1
squeeze|main|armel: kde-l10n-doudou-fr 4:4.4.5-1
squeeze|main|armel: kde-l10n-doudou-it 4:4.4.5-1
squeeze|main|armel: kde-l10n-doudou-ru 4:4.4.5-1
squeeze|main|armel: live-boot 2.0.15-1doudou1
squeeze|main|armel: live-boot-initramfs-tools 2.0.15-1doudou1
squeeze|main|armel: live-persistence 1.0-7
squeeze|main|armel: liveusb-write 1.0-14
squeeze|main|armel: lxlauncher-session 1.8-2
squeeze|main|armel: plymouth-themes-all 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-doudoulinux 1.0-1
squeeze|main|armel: plymouth-themes-fade-in 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-glow 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-script 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-solar 0.8.3-20doudou1
squeeze|main|armel: plymouth-themes-spinfinity 0.8.3-20doudou1
squeeze|main|armel: pysycache-session 1.0-4
squeeze|main|armel: python-editobj2 0.3-1.1
squeeze|main|armel: songwrite2 0.4.1-1+0.4.2
squeeze|main|armel: soundsetting-session 1.0-1
squeeze|main|armel: tbo-common-data 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-accesories 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-all 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-arcadia 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-bubble 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-dgm 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-doodle1 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-facilware 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-guadalinex 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-linuxhispano 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-political 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-southpark 0.98~git20110321-0doudou2
squeeze|main|armel: tbo-data-doodle-tbo 0.98~git20110321-0doudou2
squeeze|main|armel: ttf-lohit-font 2.4.6-1
squeeze|main|armel: tuxpaint-session 1.1-1

Everything is fine :). So now we can copy the squeeze packages to wheezy, still for the architecture all. The tool reprepro provides another convenient function copy that performs copies across different distribution code names. As we want to copy the architecture all only, we'll feed this copy command with the list of packages from the newly created armel architecture in squeeze:

$ reprepro -V --basedir debian/ copy wheezy squeeze \
    $(reprepro -V --basedir debian/ --architecture armel list squeeze | cut -d ' ' -f 2)

Finally, as wheezy has armhf while squeeze doesn't, we need to use flood again to populate armhf in wheezy:

$ reprepro -V --basedir debian/ flood wheezy armhf
$ reprepro --basedir debian/ list wheezy tuxpaint-session
wheezy|main|i386: tuxpaint-session 1.1-1
wheezy|main|amd64: tuxpaint-session 1.1-1
wheezy|main|armel: tuxpaint-session 1.1-1
wheezy|main|armhf: tuxpaint-session 1.1-1
wheezy|main|any: tuxpaint-session 1.1-1
wheezy|main|source: tuxpaint-session 1.1-1

That's it! Our first ARM™ repository is online and can be tested. Note however that all the wheezy packages may not be relevant (eg. Plymouth packages or KDE language packages). The objective is to start to play with packages that are really DoudouLinux-specific. Later we'll work on refining our ARM™ repository. We also plan to move it to a custom buildd server to avoid all the manual operations that reprepro is currently needing.

Wednesday 30 November 2011

Custom Cross Debian Squeeze on Efika

The POC is here, all cross compilate; our first custom armel Debian Squeeze 6.0.3 with Gnome 2.30.2, Genesi 2.6.31 kernel and iMX Video Driver.

Debian Squeeze ARMEL

Linux (none) #1 Sun Nov 27 10:44:17 CET 2011 armv7l GNU/Linux
Processor	: ARMv7 Processor rev 5 (v7l)
BogoMIPS	: 799.53
Features	: swp half thumb fastmult vfp edsp thumbee neon vfpv3 
CPU implementer	: 0x41
CPU architecture: 7
CPU variant	: 0x2
CPU part	: 0xc08
CPU revision	: 5

Hardware	: Genesi Efika MX (Smartbook)
Revision	: 51030
Serial		: 0000000000000000

This is a SDCard boot ready system...

Stay Tuned !

Sunday 13 November 2011

Source package repository now online

We've been providing a DoudouLinux Debian repository for binary packages since the beginning of the project but no source package repository. As we're now part of Debian Derivatives and as we're also moving to ARM™ architecture, we needed to setup a source repository too. For Debian Derivatives, this will allow our father project Debian to automatically fetch all our patches of standard Debian packages. For our ARM™ port, this will ease the compilation of binary packages targeting either the armel or armhf flavor.

Our source package is now online, although it is not complete yet. It can be fetched using the standard way to add source repositories, in /etc/apt/sources.list or /etc/apt/sources.list.d/:

deb-src lenny main
deb-src squeeze main

The source repository is completed for the stable version of DoudouLinux, based on Debian Lenny. The development branch, based on Squeeze is not completed yet, due to difficulties to deal with the new package format Quilt 3. Most of packages have their sources for the development version however :). Finally we now have to set up an experimental branch based on Wheezy to be able to build armhf packages (only armel can be built upon Squeeze).

The way we built the source repository consisted in changing first our package build script to make it automatically generate and collect source packages, then our repository build script to make it handle source packages too. To build the Debian repository, we're using reprepro, an official Debian tool which is quite simple to use:

  1. Create a directory for your Debian repository, say debian/.
  2. Create a file debian/conf/distributions that sets your repository parameters (name, architectures, codename, etc.).
  3. Invoke reprepro for each package to be added, with the options matching your package.

For a binary package:

reprepro -V --basedir debian/ --architecture <arch> includedeb <codename> <debfile>

where <arch> is i386, amd64, armel, etc., <codename> is your distribution codename and <debfile> the binary package to be added.

For a source package the command is slightly different:

reprepro -V --basedir debian/ --type dsc includedsc <codename> <dscfile>

where <dscfile> the DSC file of your source package. It will copy the corresponding .tar.gz file and .diff.gz file (whenever available) that are used to restore the patched source code.

In the future we intend to setup a buildd or buildd-like server that will build all our packages transparently, automatically from source code, whatever the target architecture and the distribution flavor. This way we won't have to do manual operations to update our repository any more.

Saturday 9 April 2011

Clean install of DoudouLinux on hard disk

Currently the DoudouLinux installer just copies onto disk the Live media as is. While this is very practical for us and brings interesting features to users (rock-solid read-only system), this also has drawbacks:

  • the system is still compressed and slows down startup on old computers
  • you can not remove software
  • upgrading software creates a duplicate version of each software
  • many boot parameters cannot be changed (they're not persistent)

One of our most active contributors, Richard, suggested to use Remastersys. This is a tool whose goal is to perform full system backup onto a Live CD for Debian-based distributions. One of its features is to let users re-install a clean system onto hard disk from the Live CD: just what we need!

Thanks to it, on a laptop from 2003-2004, DoudouLinux is now booting in 40s instead of 120s from CD. I installed the system in 3 separate partitions: root, home and swap. The root system needs 1.9 GB so you have to setup at least a 2.5 GB root partition. Of course if you want to add software or don't want a separated home partition (bad idea), make it larger! Now let's look at the recipe :).

Remastersys is offered as a Debian package. The package provides a shell script to install the running Live system on disk: “remastersys-installer”. Reading the script showed that it is doing what we need. We have then successfully performed a clean install of DoudouLinux with the following operations:

  1. add Remastersys repository to a running DoudouLinux
  2. install Remastersys
  3. run the Remastersys script called “remastersys-installer”
  4. reboot!

Note that there are some issues to be corrected after the first boot (see after the source code below). We also have to customize the Remastersys script for use in an official future DoudouLinux release. In the meanwhile, if you want to test it by yourself, you need to type several code lines as root then as the main user to be able to use the graphical Gtk interface:

# log as root
su -

# define parameters

# register remastersys repository
echo 'deb debian/' >> $SOURCESLIST

# fix bug DansGuardian blocking some deb's files
# see:
echo '\\.deb$' >> $DANSREGEXPEXCEPT

# install remastersys
apt-get update
apt-get install --assume-yes --force-yes remastersys

# call installer as normal user
sudo remastersys-installer gui

Once completed, if you see messages complaining about the impossibility to unmount /TARGET and /TARGET/home, just unmount them manually in the console:

sudo umount /TARGET/home/
sudo umount /TARGET/

Finally please note that there are few details to be corrected:

  • at boot GRUB is complaining about a missing splash image
  • network may not work because the file /etc/network/interfaces is appended with another network configuration at each boot (which causes inconsistencies)
  • boot is hanging tens of seconds when network is not plugged because it is waiting for a DHCP lease

The first point can be solved by editing /boot/grub/menu.lst and adding “boot” between the double slash (//) in the line speaking of splash. Note that the Remastersys splash image is not childish at all. Prefer installing the package grub-splashimages-doudoulinux instead! (and replace the file /boot/grub/splash.xpm.gz)

The second one can be solved by removing the for loop of the 3rd block of code in /etc/rc.local.

The last one cannot be simply solved. We have to achieve additional experiments to find a solution. They'll be reported in the ticket related to this topic: Provide a way to do a real DDL installation.

Have nice DoudouLinux installs! ;)

Tuesday 1 February 2011

Graphical interface to set the session menu

A new tool to set the session menu has been developed. It has been designed to be dead easy to use: you are shown the list of possible sessions and just check or uncheck the sessions that you want to see or hide. You can then easily adapt the main screen to the audience: small or big children (or adults ;) ). In the future we may add an option to force autologin for a given activity.

Please note that sessions are called activities in the interface, which is certainly more easy to understand for people who are not familiar with computers. Here is a screenshot:


The tool is not available in CD's yet but will be added to next release, the 2011-02, due to late February. It is already available on our Debian package repository. In the meanwhile, if you really feel the need to use it, you can install it manually in a running DoudouLinux:

$ wget
$ sudo dpkg -i doudoulinux-sessions_1.0-3_all.deb

Of course everything is lost at shutdown if you have not activated persistence or not installed DoudouLinux definitively.

Wednesday 19 January 2011

Changing the session menu

A question that is regularly asked is how to remove some entries in the session menu (shown on the screenshot below). The standard session menu has 7 sessions. If you want a DoudouLinux for very young children, you may wonder how to remove the two most advanced sessions, Mini and Whole DoudouLinux. On the contrary the first 2 or 3 sessions are quite useless if your children are bigger.

GDM session menu (Chinese)

The solution is to enter the session Whole DoudouLinux and open a console. Because the session menu is based on GDM, the tool that will allow you to hide sessions is “gdmsetup”:

$ sudo gdmsetup

In the latest tab you can add or remove users in the list of users who are not shown in the menu:

gdmsetup – user's tab

Of course changes are lost after shutdown or reboot if you have not installed DoudouLinux on hard disk or if full persistence is not set. The session names to be used in the order of session difficulty are:


The resulting session menu with “5doudoulinux” and “tux” removed is the following:

GDM session menu modified (Chinese)

So everything is OK but you may have noticed that a problem occurs if you want to change the sound volume or to make removed sessions reappear: you do not have access to the required tools anymore through the remaining sessions… The solution is simple: just type the name of the Whole DoudouLinux session user, which is “tux”, then press Return. This is shown in the following screenshot:

GDM type user name (Chinese)

To conclude there is just one thing to add: it would be better to have a small but nice interface to set the session menu. Be patient, this will come!

Thursday 13 January 2011

Daily build section re-factored

After the current release was out, the dailybuild section naturally disappeared since all its contents simply moved to the official download section. We took the opportunity to change the location of this dailybuild section so please now visit:

Due to changes in the web server configuration, it is not possible to browse our public directories anymore. So we also wrote a Php script in this section to get a table of downloadable files, just as the official download section. Finally there are currently 2 ISO files available. One is the first Chinese build and the other one is a new Russian build with a translation file fixed (see ticket

Thursday 16 December 2010

Transifex project page in troubles

Update of Dec. 21th 2010: our TransiFex homepage is back but you have to be patient because they just increased the server timeout.

As you may have noticed, our project page on the translation portal TransiFex is not reachable anymore since several days. This is not due to TransiFex downtime but it seems to be due to the server load after they switched to version 1.0. The sad news is that I can't even post a bug report on their bug manager because it also has a bug preventing me from authenticating…

However almost all other pages on TransiFex are available, so you can still access the language teams:

Then clicking on a language will take you to the list of PO files for your language. You should then be able to work as you did before. We are sorry for the inconvenience and hope to be able to quickly contact TransiFex developers.

Sunday 14 November 2010

Pre-release available from the dailybuild section!

The next DoudouLinux release should be available by the end of November. We are already starting to build pre-releases in order to test it. If you are interested in testing by yourself, just visit the dailybuild section:

Currently only CD's are available and not for all languages already published. But note that there is the first Ukainian build though. Concerning improvements, the list is on the page Realease notes.

Saturday 24 July 2010

Installer DoudouLinux définitivement

Pour le moment l'installation de DoudouLinux n'est pas activée via le système officiel des LiveCD Debian. Cependant, comme ceci ajoute une sur-couche logicielle de plusieurs dizaines de Mo, ceci veut dire qu'il faudra opérer des choix sur les logiciels installés… Une solution, pour ceux qui n'ont pas besoin de multiboot, c'est de copier tout simplement les données Live vers le disque dur local.

Avec le LiveCD, c'est compliqué car la structure d'un CD n'est pas celle d'un disque. Par contre avec la clef LiveUSB c'est très simple, il suffit de demander au système de faire une copie de bas niveau. C'est la commande dd qui permet de faire cela :

$ sudo dd if=/dev/sda of=/dev/hda
1434580+0 enregistrements lus
1434580+0 enregistrements écrits
734504960 bytes (735 MB) copied, 437,301 s, 1,7 MB/s

Toute la question est de retrouver les bons chemins /dev/sda et /dev/hda… Dans notre cas, manuel, on s'en sort en analysant les disques du système :

$ sudo fdisk -l

Disk /dev/hda: 40.0 GB, 40007761920 bytes
255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

Disk /dev/hda doesn't contain a valid partition table

Disk /dev/sda: 2070 MB, 2070937600 bytes
255 heads, 63 sectors/track, 251 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0005800f

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          92      738958+  83  Linux
/dev/sda2              93         251     1277167+  83  Linux

On a donc deux disques de 40 Go et 2 Go respectivement, le premier est forcément celui de la machine alors que le second est la clef USB. On peut vérifier en regardant ce qui est monté dans le système DoudouLinux en fonctionnement (via df -h). Cependant pour une utilisation en mode automatique (= interface graphique dans DoudouLinux), il faudra un processus de détermination des disques source et cible :

  • la clef USB est connectée sur le bus USB (!) et devrait être montée
  • le disque dur est forcément monté sur un bus interne (IDE ou SCSI)

La clef USB a peut-être aussi des partitions avec un nom en rapport avec DoudouLinux, comme l'image ISO de CD (à vérifier…).

Remarque : cette technique a été testée avec succès depuis une clef USB Live en cours de fonctionnement. Normalement on peut aussi activer la persistance des données avec l'outil intégré à DoudouLinux, mais ça n'a pas été testé. Le seul truc qui manque vraiment : retirer le message à l'extinction qui dit d'enlever la clef !

Monday 8 February 2010

Code source initial en place !

Le code source de l'avant dernière version du LiveCD est en place sur le dépôt de code source Gna!. Du coup on va pouvoir commencer à travailler à plusieurs sur le code, ce qui devrait être une bonne nouvelle ;-) ! Par contre, ce qu'il manque pour le moment, c'est de la documentation. Déjà, il faut que je documente l'organisation du code source. Globalement on a à la racine du projet :

  • artwork/ : le graphisme du LiveCD et les documents de propagande (poster, plaquette)
  • docs/ : les futures documentations utilisateur, il en faut une succincte (prise en main) et une plus complète, l'idée est de les éditer en ligne avec un CMS
  • live/ : le code permettant de créer le LiveCD
  • packages/ : les paquets Debian non officiels utilisés dans le LiveCD (paquets « maison » et paquets patchés)
  • website/ : non utilisé pour le moment, la page web du projet sur Gna!

On retrouve les classiques sous découpages en trunk, tags, branches pour les versions actuelles, marquantes et officielles du LiveCD. Pour le moment tout se passe dans trunk, hein ? Sauf que j'ai oublié malencontreusement de le faire pour artwork/ ! Justement ce répertoire ainsi que packages/ méritent un peu de détails :

├── artwork
│   ├── branches
│   ├── tags
│   └── trunk
│       ├── common	= images et dessins utilisés dans les productions officielles
│       ├── live	= thèmes graphiques du LiveCD
│       ├── propaganda	= supports de communication
│       ├── rendered	= résultats de conversion SVG → PNG (vide sur SVN)
│       └── website	= thèmes graphiques du site web
├── packages
│   ├── branches
│   ├── tags
│   └── trunk
│       ├── apps	= les outils spécifiques à DoudouLinux
│       ├── artwork	= les paquets de thèmes graphiques
│       ├── debian	= le dépôt de paquets Debian (presque vide sur SVN)
│       ├── misc	= paquets divers
│       ├── patched	= les paquets officiels Debian mais patchés
│       └── sessions	= les paquets pour créer des sessions d'enfants

Monday 1 February 2010

URL rewriting pour DotClear (chez MavenHosting)

Quand on a plusieurs services sur son site web, on les met dans des sous-répertoires différents du site, par exemple,, etc. Cependant c'est plus sympa de pouvoir y accéder par des URL imitant des sous-domaines (,, notamment si un jour il faut migrer un des services sur un serveur externe. L'opération pour DotClear est expliquée dans le billet De belles URL sous Dotclear 2.

Cependant les explications données ne fonctionnent chez MavenHosting que pour les pages et pas pour les fichiers appelés par les pages (styles CSS, JavaScript, images, etc.). En effet, en inspectant les requêtes arrivées au serveur, on constate que les pages n'ont plus de référence au sous-répertoire alors que les fichiers appelés par les pages l'ont encore… La solution est indirectement livrée par une des astuces de ré-écriture d'URL expliquée dans l'article more .htaccess tips and tricks : il faut ré-écrire différemment les URL des pages et du reste.

Si on suppose que le blog est installé dans le sous-répertoire dotclear/, le fichier .htaccess à placer dans ce répertoire est le suivant :

# Activation du moteur de réécriture
RewriteEngine On

# Si le fichier demandé n'existe pas physiquement
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# On commence par chercher un début en dotclear/ (pour les css, js, images, etc.)
RewriteRule ^dotclear/(.*)$1 [L]

# S'il n'existe toujours pas
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# On envoie la demande à l'index de Dotclear
RewriteRule (.*) /index.php/$1 [L]
RewriteRule ^$ /index.php [L]

Chez notre hébergeur, ça marche !

Sunday 31 January 2010

Dépôt de code source ouvert

Ça y'est le dépôt de code source de DoudouLinux vient d'être ouvert ! Il est hébergé sur Gna! :

Il n'y a pas encore grand chose à voir mais ça va venir… Parmi les sections qu'il faudra surveiller, outre le code source, il y a le gestionnaire de tâches et le gestionnaire de bogues :

NB: please speak english on the task/bug managers!

Le code source est public donc n'importe qui peut le récupérer. Par contre pour participer au développement, il faut ouvrir un compte chez Gna! afin de récupérer une copie versionnée du code. Cette opération nécessite une clef d'authentification SSH comme indiqué dans la page DoudouLinux - Dépôts Subversion[1]. Une fois votre compte créé, les instructions sont écrites dans un billet que j'avais publié il y a un certain temps sur mon blog[2]. Il faut ensuite que vous demandiez à intégrer le projet DoudouLinux, et que j'accepte cette requête ;-).

Pour récupérer le code, notez que pour le moment il y a bien un répertoire trunk à la racine, mais ceci est susceptible de changer car il y a pas mal de choses différentes à héberger. Je vous tiens au courant dès que l'arborescence et le premier code sont en place ;-) !


[1] z'êtes priés de mettre à votre clef une phrase de passe longue et compliquée ;-)

[2] c'était au sujet de CVS mais ça reste valable avec SVN

Saturday 30 January 2010

Les applications Php chez MavenHosting

Chez notre hébergeur, il faut bien s'arracher les cheveux pendant quelques heures avec des messages incompréhensibles d'erreur 404 avant de trouver la réponse… On télécharge le paquet MediaWiki, Dotclear, ou ce que vous voulez, on envoie la version décompressée sur le serveur et, pof, erreur 404 à (presque) toutes les pages… Alors, unixien dans l'âme le diagnostic tombe en moins de deux : « bah, problème de droits ». En effet, mais pas évident, et relevant presque du miracle. L'astuce :

lftp> chmod -R 755 <répertoire>

Parce qu'avec 777 (hé oui, je l'avais essayé en désespoir de cause), et bien ça ne marche pas ! Bon, souhaitons qu'avec un truc pareil la sécurité des fichiers Php sur le serveur soit au top…