jeudi 28 février 2008

Tim McCormick et Matt Olander présentent PC-BSD au FOSDEM2008



Le week-end dernier se déroulait le traditionnel FOSDEM millésime 2008. Une présentation ("talk") retenait particulièrement mon attention. En effet Tim McCormick et Matt Olander, deux des développeurs principaux de PC-BSD venaient des USA à Bruxelles pour nous présenter leur système d'exploitation...





La présentation a failli ne pas avoir lieu car le projecteur ne fonctionnait plus ! Matt a branché son MacBook Pro sur l'entrée du projecteur, mais rien n'apparaissait sur la toile. Matt a alors commencé sa présentation sans aucun support et a répondu a quelques questions. Cependant, après quelques minutes de bidouillage au niveau des connexions du projecteur, nous avons pu assister à la démonstration.

Matt a alors montré le processus d'installation PC-BSD, qui (comme vous le savez probablement déjà) est simplissime: démarrer sur le CD, choisir la langue et le clavier, et pouf, PC-BSD s'installe.

Matt a également parlé d'un des gros avantages de PC-BSD qui est l'utilisation de fichiers .pbi. Pour installer un logiciel particulier, dans l'exemple de Matt: GIMP, il suffit d'aller sur le site pbidir.com et de cliquer sur le logiciel que vous désirez installer. Dans notre exemple il s'agit de GIMP. Le logiciel est alors téléchargé et installé automatiquement. Ceci est particulièrement intéressant pour un "utilisateur moyen" qui ne doit pas s'occuper de repositories ou de faire make install. Il lui suffit de cliquer sur le fichier .pbi, de cliquer Next et Finish, comme on le fait dans un système d'exploitation bien connu.

Nous avons eu un certain nombre de questions/réponses assez intéressantes, notamment sur PC-BSD 2.0 ainsi que de la possibilité de pouvoir installer les ports de FreeBSD par une interface graphique, ce qui serait vraiment génial !

mercredi 27 février 2008

Taille des clusters sur une partition en fonction de sa taille et du systeme de fichiers

A force de travailler avec Debian Live et de créer des partitions FAT, il est intéressant de s'informer de la taille des clusters. J'ai donc créé cette page:

Taille des clusters sur une partition en fonction de sa taille et du système de fichiers FAT, FAT32 ou NTFS.

Ah oui - certains d'entre vous pourraient me demander ce qu'est un cluster...

En bref, le cluster, ou "unité d'allocation" en Microsoftien, est la plus petite unité attribuable à un fichier dans les systèmes de fichiers pour MS-DOS et Windows. Les clusters ont tous la même taille. Chaque fichier occupe un ou plusieurs clusters. Un cluster appartient à un et un seul fichier.

Supposons que la taille de cluster est de 8K.
Si j'ai un fichier qui fait 1K, il occupe un cluster.
Si j'ai un fichier qui fait 7K, il occupe un cluster.
Si j'ai un fichier qui fait 12K, il occupe deux clusters.
Si j'ai un fichier qui fait 81K, il occupe onze clusters.
Si j'ai un fichier qui contient uniquement la phrase "Bardaf, c'est l'embardée", c'est à dire 24 octets, il occupera un cluster.

On voit que quelle que soit la taille du fichier, le dernier cluster n'est pas complètement occupé. Que je mette un fichier de 7K ou simplement "Bardaf, c'est l'embardée" je consomme un cluster de 8K.

On perd donc de l'espace. Mais combien ? Une estimation connue est la suivante: si j'ai n fichiers, cela fait n clusters "pas complètement remplis", et ce quelle que soit la taille de chaque fichier. Un estimation de l'espac perdue est donc (n * taille du cluster) divisé par 2.

Cet espace perdu peut être non négligeable. Si vers 1995 j'avais un disque de 1200 MB et que je le formatais en une seule partition FAT16, j'avais des clusters de 32 KB. Si j'avais par exemple 7000 fichiers (ce qui n'est pas si énorme), je perdais 112 MB sur un disque de 1200 MB, soit presque 10% de l'espace disque total.

On comprend donc que, plus la taille des clusters est importante, plus on perd de l'espace. C'est la raison pour laquelle Microsoft a fait évoluer ses filesystems en passant de FAT à FAT16 puis à FAT32. Surtout, si vous devez choisir entre FAT16 et FAT32, choisissez FAT32, sauf peut-être si c'est pour un système d'exploitation qui ne connaît que FAT16 (cas de MS-DOS et de la première version de Windows 95).

mardi 26 février 2008

Plusieurs partitions sur une clef USB: problème dans Windows

Comme je vous l'ai expliqué précédemment avec Debian Live je génére un système bootable à placer sur une clef USB.

Debian Live me crée un fichier binary.img que j'écris sur la clef USB en faisant:
dd if=binary.img of=/dev/sdX

Notez que j'écris bien sur /dev/sdX et pas sur /dev/sdX1. Cela signifie que je binary.img contient le MBR de la clef USB. En bref en faisant ce dd je crée sur ma clef USB:
  • un MBR
  • une table des partitions contenant l'unique partition /dev/sdX1 de type 0x83:Linux
  • une partition /dev/sdX1
Mais la partition /dev/sdX1 ne prend pas toute la clef USB, il reste de la place. Regardez ce que je vois dans cfdisk pour ma clef USB:

cfdisk (util-linux-ng 2.13.1)
Disk Drive: /dev/sdb
Size: 2013265920 bytes, 2013 MB
Heads: 255 Sectors per Track: 63 Cylinders: 244

Name Flags Part Type FS Type Size (MB)
--------------------------------------------------------------
sdb1 Boot Primary Linux 764,96
Pri/Log Free Space 1242,02

Je crée donc une partition primaire de type 0x0b:FAT32 dans l'espace libre. Cette partition fait environ 1200 MB c'est à dire 1,2 GB

J'ai donc la table de partitions suivante:

[root@cobra] /root>fdisk -l /dev/sdb
Disk /dev/sdb: 2013 MB, 2013265920 bytes
255 heads, 63 sectors/track, 244 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000ecf8e
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 93 746991 83 Linux
/dev/sdb2 94 244 1212907+ b W95 FAT32

Maintenant je crée un système de fichiers FAT32.
mkfs.vfat -F 32 -c -n DOCUMENTS /dev/sdb2
Ci-dessus:
  • -F 32 indique que je formate en FAT32 et pas FAT16 ni FAT12
  • -c indique que je veux tester le support lors du formatage (facultatif)
  • -n DOCUMENTS formate avec l'étiquette (label) DOCUMENTS
  • /dev/sdb2 est le périphérique qui correspond à la deuxième partition de ma clef USB
Maintenant, je vais prendre ma clef USB et la brancher à une machine sous Windows. J'ai une partition Debian Live de 760 MB et une partition DOCUMENTS de 1200 MB. Je réfléchis: laquelle de ces partitions Windows va-t-il monter ? En toute logique, il ne devrait pas monter la première partition, puisque c'est une partition Linux. Par contre il devrait monter la deuxième partition, qui est une partition FAT32.

(Pour accéder à diskmgmt.msc faites Start > Run > diskmgmt.msc. Vous pouvez aussi faire un clic droit sur l'ordinateur qui est en haut à gauche sur le bureau, choisir "Gérer" et sélectionner "Gestion des disques")

Je branche ma clef USB sur la machine Windows, et dans diskmgmt.msc, je vois ceci:

... eh bien ça alors !

Dans la table des partitions (donc dans le MBR), la première partition est indiquée comme 0x83 c'est à dire Linux et la deuxième est indiquée comme 0x0b c'est à dire FAT32. En toute logique, Windows devrait monter la deuxième partition, mais pas la première. En fait Windows fait exactement l'inverse: il monte la première partition (Linux) mais ne monte pas la deuxième partition (FAT32) !

Comment Windows peut-il monter la partition alors que c'est une partition Linux me direz-vous ? C'est ici qu'il y a une subtilité. En fait, dans la table des partitions (donc dans le MBR), la première partition est indiquée comme 0x83 c'est à dire Linux. Mais le système de fichier utilisé sur cette partition est FAT16 car Debian Live génère un système bootable pour clef USB basé sur SYSLINUX. Et SYSLINUX, c'est une technologie qui ne fonctionne que sur les partitions FAT.

Ce n'est qu'avec Windows que la deuxième partition DOCUMENTS n'est pas accessible.
Avec Debian GNU/Linux, dès que je branche ma clef USB, je peux accéder à la première partition (DEBIAN-LIVE) et à la deuxième partition (DOCUMENTS).

Avec Mac OS X, dès que je branche ma clef USB, je peux accéder à la deuxième partition (DOCUMENTS).

Résultat des courses: Windows monte la première partition et pas la deuxième... Alors qu'il devrait monter la deuxième partition et pas la première...

vendredi 22 février 2008

Debian-Live: squashfs-tools est en ballon

Hé bien cela fait maintenant plus d'une semaine qu'il n'est plus possbile de générer une image Debian Live de lenny. En fait squashfs-tools 1:3.3-3, la version actuelle de squashfs-tools dans lenny, produit des images Debian Live qui ne démarrent pas correctement. Au boot j'obtiens:

Begin: Mounting root file system... ...
aufs 20071105
loop: module loaded
squashfs: version 3.2-r2 (2007/01/15) Phillip Lougher
BusyBox v1.1.3 (Debian 1:1.1.3-5- Built-in shell (ash)
Enter 'help' for a list of built-in commands.

/bin/sh: can't access tty: job control turned off
(initramfs)
Voyez d'ailleurs mon Debian bug report à ce sujet...

Comme je l'écris ici, une solution temporaire est de donner une valeur particulière à la variable d'environnement MKSQUASHFS_OPTIONS avant de taper lh_build:
export MKSQUASHFS_OPTIONS="-b 64K -no-sparse"

Reste à attendre qu'une nouvelle version de squashfs-tools soit disponible pour lenny.

mercredi 20 février 2008

Debian Live pour une clef USB: suite

Dans les posts précédents je vous ai expliqué comment créer un système Debian Live pour clef USB.
Je vais maintenant personnaliser en profondeur mon système Debian Live pour clef USB.

J'ajoute quelques fichiers à mon système Debian Live, en allant par exemple cherches ces fichiers sur une autre machine Debian. Par exemple:
Le plugin Adobe Flash pour Iceweasel:
/usr/lib/iceweasel/plugins/libflashplayer.so
Quelques fonds d'écran:
/usr/share/wallpapers/debian01.jpg
/usr/share/wallpapers/debian02.jpg
/usr/share/wallpapers/debian03.jpg


Je démarre à partir de la clef USB que j'ai obtenue précédemment.
Par défaut, la session KDE s'ouvre automatiquement et mon utilisateur est
uid: 999
login: user
password: live


Je personnalise l'environnement de mon utilisateur, en éditant .bashrc et .bash_profile

Je personnalise mon installation KDE, c'est à dire:

  • je configure la barre des tâches en bas, en ajoutant et/ou enlevant des boutons
  • je configure mon fond d'écran
  • je configure mon écran de veille (screensaver en anglais)
  • je configure mon menu K
  • je configure la présentation et la couleur des fenêtres, etc ...

Maintenant je sauvegarde le plug-in Adobe Flash, mes fonds d'écran, et le répertoire /home/user/.kde (et tout son contenu, bien entendu) de mon utilisateur, comme ceci:
cd /
tar --preserve -zcvf /tmp/my-debian-live-custom-files.tar.gz usr/share/wallpapers/debian01.jpg usr/share/wallpapers/debian02.jpg usr/share/wallpapers/debian03.jpg usr/lib/iceweasel/plugins/libflashplayer.so home/user/.bashrc home/user/.bash_profile home/user/.kde


Attention, ce fichier est sur le système de fichiers squashfs de ma clef USB, et donc il disparaitra de la clef dès que j'éteins ou redémarre la machine ! Je dois donc le copier quelquepart pour pouvoir le récupérer ! Pour ce faire je peux:
  • le transférer par sftp
  • l'écrire sur un filesystem que j'ai monté en lecture/écriture

Pour monter un système de fichiers en lecture/écriture, je peux:
  • monter un autre système de fichiers de ma première clef USB en lecture/écriture (voir ce post pour en savoir plus)
  • insérer une disquette et la monter en lecture/écriture
  • insérer une deuxième clef USB et la monter en lecture/écriture
  • monter un système de fichiers du disque dur de la machine en lecture/écriture (déconseillé si la machine n'est pas à vous et que vous n'avez pas envie d'avoir des coups...)
Il suffit alors de transférer ce fichier my-debian-live-custom-files.tar.gz vers votre support monté en lecture/écriture.

Quand, c'est fait, retourner sur la machine où vous avez créé votre Debian Live, et allez dans le répertoire approprié. Ensuite:
Je nettoie avant de personnaliser:
# lh_clean --binary
Ensuite aller dans le répertoire chroot:
# cd chroot
Je remonte ce que je viens de sauvegarder
# tar --preserve -zxvf /home/pbn/debian-live-home-user.tar.gz
Ensuite, je peux lancer à nouveau la génération de mon système Debian Live:
# time nice --adjustment=1 lh_binary

samedi 16 février 2008

Nouvelle version de ma page d'outils pour Debian GNU/Linux

J'ai réalisé une nouvelle version de ma page d'outils pour Debian GNU/Linux.



Les nouveautés sont:
  • en plus des informations générales sur un package, vous pouvez maintenant obtenir des informations détaillées sur un package. Ces informations viennent du site de Debian Quality Assurance.
  • possibilité de trouver tous les bugs pour un package
  • possibilité de trouver tous les bugs signalés par une personne
  • possibilité de trouver tous les bugs portant une certaine étiquette

vendredi 15 février 2008

Faire apparaître des imprimantes CUPS dans le Default Printer Browser de Mac OS X Tiger

Dans un post précédent je vous parlais des "subtilités" qui peuvent survenir lorsque vous désirez installer une imprimante CUPS dans Mac OS X. Il faut en effet indiquer non pas "Claire" comme nom de file d'attente mais bien "/printers/Claire"

Suite à mon interaction avec developer.apple.com, j'ai appris qu'il y avait une solution beaucoup plus intuitive et élégante à ce problème.

Mon serveur CUPS est une machine Debian GNU/Linux 4.0 appelée cobra. Elle partage l'imprimante CUPS appellée Canon GP300.

Notez que tout ce qui suit n'est valable qu'avec Mac OS X 10.4 "Tiger" comme client.

Je vais dans Préférences Systèmes > Imprimantes et Fax et je clique sur le +.


J'arrive dans le Default Printer Browser et je vois quelque chose comme ceci:

Ce que je vois là est la liste des imprimantes disponible sur le réseau. Je vois des imprimantes AppleTalk et Bonjour... mais je ne vois pas l'imprimante qui m'intéresse: Canon GP300 sur le serveur cobra.

Voyons la partie "Browsing" du fichier /etc/cups/cupsd.conf sur cobra. Comme j'ai laissé la configuration par défaut du "Browsing", j'ai ceci:
# Show shared printers on the local network.
Browsing On
BrowseOrder allow,deny
BrowseAllow all

Le "Browsing" est activé. Donc le serveur CUPS de cobra "publie" les informations sur les imprimantes. Cependant ce n'est pas suffisant pour que Mac OS X "voie" mon imprimante Canon GP300. Je dois indiquer dans le fichier /etc/cups/cupsd.conf sur cobra:
Browsing On
BrowseAddress 10.20.255.255
BrowseAllow All
BrowseOrder allow,deny

Où 10.20.255.255 est l'adresse de broadcast de votre connexion Ethernet.
Si vous ne connaissez pas l'adresse de broadcast de votre machine, tapez /sbin/ifconfig eth0.

N'oubliez pas de redémarrer le démon CUPS. Sous Debian GNU/Linux c'est la commande invoke-rc.d cupsys restart.

Je vois maintenant ceci:


Ca y est mon imprimante ImprimanteCanon est là ! Il ne me reste plus qu'à cliquer dessus et à l'installer:

jeudi 14 février 2008

VMware et un kernel 2.6.24.2

Je viens de compiler un kernel 2.6.24.2 pour Debian GNU/Linux "lenny". Tout fonctionne... sauf vmware qui n'arrive pas à compiler ses kernels modules.

Quand je tente de compiler les kernel modules de VMWare pour un kernel 2.6.24.2, j'obtiens ceci:
[root@cobra] /root>/usr/vmware/bin/vmware-config.pl 
Making sure services for VMware Server are stopped.
Stopping VMware services:
Virtual machine monitor done
Bridged networking on /dev/vmnet0 done
DHCP server on /dev/vmnet1 done
Host-only networking on /dev/vmnet1 done
DHCP server on /dev/vmnet8 done
NAT service on /dev/vmnet8 done
Host-only networking on /dev/vmnet8 done
Virtual ethernet done
Configuring fallback GTK+ 2.4 libraries.
In which directory do you want to install the mime type icons?
[/usr/share/icons]
What directory contains your desktop menu entry files? These files have a
.desktop file extension. [/usr/share/applications]
In which directory do you want to install the application's icon?
[/usr/share/pixmaps]
Trying to find a suitable vmmon module for your running kernel.
None of the pre-built vmmon modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmmon module for
your system (you need to have a C compiler installed on your system)? [yes]
Using compiler "/usr/bin/gcc". Use environment variable CC to override.
What is the location of the directory of C header files that match your running
kernel? [/lib/modules/2.6.24.2/build/include]
Extracting the sources of the vmmon module.
Building the vmmon module.
Building for VMware Server 1.0.0.
Using 2.6.x kernel build system.
make: entrant dans le répertoire « /tmp/vmware-config1/vmmon-only »
make -C /lib/modules/2.6.24.2/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: entrant dans le répertoire « /usr/src/linux-2.6.24.2 »
CC [M] /tmp/vmware-config1/vmmon-only/linux/driver.o
CC [M] /tmp/vmware-config1/vmmon-only/linux/driverLog.o
CC [M] /tmp/vmware-config1/vmmon-only/linux/hostif.o
/tmp/vmware-config1/vmmon-only/linux/hostif.c: In function 'HostIF_BrokenCPUHelper':
/tmp/vmware-config1/vmmon-only/linux/hostif.c:3042: warning: passing argument 1 of 'HostIFBrokenCPUHelper' discards qualifiers from pointer target type
CC [M] /tmp/vmware-config1/vmmon-only/common/comport.o
CC [M] /tmp/vmware-config1/vmmon-only/common/cpuid.o
In file included from include/asm/bitops.h:2,
from /tmp/vmware-config1/vmmon-only/./include/vcpuset.h:74,
from /tmp/vmware-config1/vmmon-only/./include/modulecall.h:23,
from /tmp/vmware-config1/vmmon-only/common/vmx86.h:19,
from /tmp/vmware-config1/vmmon-only/common/hostif.h:18,
from /tmp/vmware-config1/vmmon-only/common/cpuid.c:15:
include/asm/bitops_32.h:9:2: error: #error only can be included directly
make[2]: *** [/tmp/vmware-config1/vmmon-only/common/cpuid.o] Erreur 1
make[1]: *** [_module_/tmp/vmware-config1/vmmon-only] Erreur 2
make[1]: quittant le répertoire « /usr/src/linux-2.6.24.2 »
make: *** [vmmon.ko] Erreur 2
make: quittant le répertoire « /tmp/vmware-config1/vmmon-only »
Unable to build the vmmon module.
For more information on how to troubleshoot module-related problems, please
visit our Web site at "http://www.vmware.com/download/modules/modules.html" and
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".
Execution aborted.

Ouille !
Solution:

  1. aller chercher le patch vmware-any-any-update115.tar.gz
  2. le décompresser (dans /tmp par exemple): time tar --preserve -zxvf vmware-any-any-update115.tar.gz
  3. là dedans, décompresser vmmon.tar: time tar --preserve -xvf vmmon.tar
  4. éditer vmmon-only/include/vcpuset.h et remplacer include "asm/bitops.h" en #include "linux/bitops.h"
  5. éditer vmmon-only/include/iocontrols_compat.h et mettre 167 comme VMMON_VERSION_V6
  6. éditer vmmon-only/include/iocontrols.h et mettre 167 comme VMMON_VERSION
  7. recompresser vmmon.tar en faisant: time tar --preserve -cvf vmmon.tar vmmon-only
  8. lancer runme.pl

mardi 12 février 2008

Ajouter une partition montée en lecture/écriture à votre clef USB

Dans un post précédent je vous expliquais comment créer une clef USB bootable contenant un système Debian Live.

La dernière étape consistait à faire une commande du genre:
dd if=debian-live-binary.img of=/dev/sdX

Vous avez donc créé sur la clef USB une table de partitions qui contient une seule partition:
# fdisk -l /dev/sdb

Le système de fichier /dev/sdb1 est mon système Debian Live.

Ici c'est une clef de 1 GB, et il reste de l'espace. Je vais l'utiliser !

D'abord je crée dans l'espace libre une partition primaire de type 0x06 (FAT16).
Pour cela j'utilise par exemple la commande cfdisk

Je la formate en FAT16:
# time mkfs.vfat -c -F 16 -n DOCUMENTS /dev/sdX2

Et voilà ! Je peux maintenant monter la partition avec une commande du genre:
# mount -t vfat /dev/sdb2 /mnt/target

Mais je peux faire beaucoup mieux: je peux faire en sorte que cette partition soit montée automatiquement en lecture/écriture lors du démarrage de Debian Live !

Voici le script script usr/local/sbin/monter-partition-documents.sh qui monte automatiquement la partition des documents:
#!/bin/bash
#
# Monte la partition des documents (vfat) dans /home/user/Documents
#
# Pierre Bauduin
# Le 12 février 2008
#
# Attention ici on suppose que:
# * la partition Debian Live est /dev/sdX1
# * la partition Documents est /dev/sdX2
#
# La partition qui m'interesse est sur le point de montage /live/image
# Je trouve /dev/sdX1 et je le transforme en /dev/sdX2
PART=`mount | grep /live/image | awk '{print $1}' | sed 's/1/2/'`
[ -z "$PART" ] && exit 1
[ -d "$HOME/Documents" ] || mkdir $HOME/Documents
sudo mount $PART $HOME/Documents \
-t vfat \
-o rw,noexec,nosuid,nodev,noatime,uid=999,gid=6,umask=027,codepage=850

Pour qu'il soit lancé automatiquement par l'utilisateur user au démarrage de KDE il suffit de faire:
ln -s usr/local/sbin/monter-partition-documents.sh home/user/.kde/Autostarts
Et voilà !

lundi 11 février 2008

Comment améliorer et/ou personnaliser un système Debian Live pour une clef USB

Dans un post précédent je vous expliquais comment j'ai pu créer un système Debian Live bootable et le copier sur une clef USB.

La version que j'ai obtenue fonctionne, mais j'ai quelques désagréments:
  • par défaut, je n'ai pas la bonne disposition du clavier
  • par défaut, je n'ai pas la bonne locale
  • je n'ai pas mon prompt habituel (valeur de la variable d'environnement PS1)
  • je n'ai pas mes réglages habituels dans vi (tel que par exemple syntax on)
  • je n'ai pas le choix des fortunes dans fortunes-fr
Il est en fait possible, et relativement facile, de personnaliser votre installation Debian Live.

Attention, pour tout ceci, je ne branche pas ma clef USB ! Je vais dans le répertoire où j'ai effectué lh_build dans le post précédent. Chez moi c'est le répertoire /mnt/data/debian-live-usb.

Et maintenant:
Je nettoie avant de personnaliser:
[root@cobra] /mnt/data/debian-live-usb>lh_clean --binary

Je me déplace dans le répertoire chroot:
[root@cobra] /mnt/data/debian-live-usb>cd chroot

Je place la dernière version sid du paquet user-setup (que je suis allé chercher préalablement ici) dans le répertoire root:
[root@cobra] /mnt/data/debian-live-usb/chroot>cp /home/pbn/download/user-setup_1.18_all.deb root/

J'édite les fichiers que je désire personnaliser, par exemple:
etc/apt/sources.list
etc/default/rcS
etc/motd
etc/vim/vimrc


(Note: dans etc/default/rcS je conseille d'indiquer UTC=no. En effet il est fort probable que les machines sur lesquelles ja vais booter ma clef USB auront leur horloge interne à l'heure locale.)

Je rentre dans le système Debian Live avec la commande chroot:
[root@cobra] /mnt/data/debian-live-usb>chroot chroot

Je configure les quatre paquets assez importants:
# dpkg-reconfigure locales
# dpkg-reconfigure fortunes-fr
# dpkg-reconfigure tzdata
# dpkg-reconfigure console-data


J'installe le paquet user-setup que j'ai mis dans root:
# dpkg -i root/user-setup_1.18_all.deb

Je quitte le chroot:
# Ctrl-D

Je remonte d'un directory
cd ..

Et, enfin, je peux lancer la génération de mon image Debian Live personnalisée:
# time nice --adjustment=1 lh_binary

Quand c'est terminé, j'ai mon image binary.img, que je peux transférer sur ma clef USB:
# time dd if=binary.img of=/dev/sdX

Remarques(rappel):
  • surtout, n'exécutez pas lh_build ni lh_binary directement sur votre clef USB ! En effet, une clef USB est moins performante au niveau des temps d'accés et de la vitesse de lecture écriture. Mais surtout, les nombreuses opérations de lecture/écriture lors de la génération du système Debian Live diminuent fortement la durée de vie de votre clef USB !
  • faites très attention de ne pas vous tromper de périphérique lors de la commande dd. Si vous n'avez que des disques PATA, la clef USB sera probablement le périphérique /dev/sda. Mais si vous avez des disques SCSI ou SATA, le périphérique /dev/sda est votre premier disque dur ! Votre clef USB sera quelquechose comme /dev/sdb ou /dev/sdc ou /dev/sdd, etc... N'allez pas écrire binary.img sur votre disque dur, vous perdriez toutes vos données !
... et voilà !

dimanche 10 février 2008

Une commande Debian GNU/Linux peu connue: dpigs

Vous préparez une image compressée avec Debian-Live, et elle est trop grande pour votre CD / DVD/ clef USB ?

Vous êtes sur une machine où la partition / et/ou /usr est presque pleine ?

Vous vous demandez combien de place est utilisée/perdue dans des packages qui ne vous servent à rien ?

Utilisez la commande dpigs.

Pour l'installer:
(en tant que root)
[root@cobra] /home/pbn> aptitude-install debian-goodies


Pour l'utiliser:
(pas besoin d'être root)
[pbn@cobra] /home/pbn>dpigs
95932 openoffice.org-core
65368 sun-java5-bin
61200 evolution-common
51696 linux-image-2.6.22-3-686
37968 kde-i18n-fr
36220 wireshark-common
35692 libwine
34228 libgcj8-1
34220 openoffice.org-common
33548 w32codecs


... eh oui, ce programme vous donne la liste des dix packages qui prennent le plus de place sur votre système Debian. Vous pouvez demander une liste plus longue, par exemple les vingt packages qui prennent le plus de place en tapant:


[pbn@cobra] /home/pbn> dpigs -n 20

jeudi 7 février 2008

Comment créer un système Debian Live pour une clef USB

Le projet Debian Live permet de créer une installation de Debian GNU/Linux qui fonction en "live", c'est à dire en démarrant sur un CD, un DVD ou une clef USB.

Ceci est intéressant quand par exemple, sur le lieu de travail, on met une machine à votre disposition mais qu'elle est sous Windows. Avec un système Debian-Live, vous ne touchez aucunement au disque dur. C'est également très utile lorsque vous passez chez une connaissance et que vous voulez lui montrer comment Debian tourne sur sa machine, évidemment sans toucher à son disque dur.

De plus votre système Debian Live fonctionne en "lecture seule", de la sorte il est impossible qu'un programme malveillant (virus, worm, rootkit) ne s'installe.

Avant tout il vous faut installer le package live-helper qui contient tous les outils permettant de générer un système Debian-Live. Ce live-helper existe pour lenny et sid, mais il est recommandé d'installer la dernière version à partir du site de Debian-Live.

Voici la commande (attention c'est long):

#!/bin/sh
#
# Script qui génère un système Debian-Live
# au format usb-hdd (système de fichier sur clef USB)
#
# Pierre Bauduin
# Le 7 février 2008
#
lh_config --mirror-binary http://debian-mirror:7777/debian/ --mirror-binary-security http://debian-mirror:7777/debian-security/ --mirror-bootstrap http://debian-mirror:7777/debian/ --mirror-bootstrap-security http://debian-mirror:7777/debian-security/ -b usb-hdd -d lenny --bootappend-live "quickreboot locale=fr_BE@euro keyb=be2-latin1" --hostname debian-live --packages "akregator alsa-base alsaplayer-text alsa-tools alsa-utils amarok audacity aumix avidemux bzip2 cupsys cupsys-bsd cupsys-client debian-goodies dillo dvdrip eject elinks enscript finger fortunes fortunes-fr frozen-bubble gimp gwenview htop iceweasel iceweasel-l10n-fr iceweasel-l10n-nl imagemagick irssi k3b k3b-i18n kalarm kate kcalc kcheckgmail kde-i18n-fr kde-i18n-nl kdebase kdeprint keytouch kgoldrunner khangman kmahjongg kmix kompose kpat kpdf kpersonalizer kpoker krdc kreversi kscreensaver kscreensaver-xsavers ksirtet ksnapshot kweather kwin4 laptop-detect less lftp libdvdcss2 loadmeter lsdvd lshw lsof lynx mc memtest86+ mondo mpg123 mpg123-alsa mpg321 msttcorefonts mtools munin-node mutt ncftp nmap ntpdate openoffice.org openoffice.org-l10n-fr openoffice.org-l10n-nl openssh-server pidgin screen slay smb4k smbclient strace sun-java5-bin sun-java5-jre sun-java5-plugin sysstat tcpdump tcsh telnet tofrodos traceroute unzip vim w32codecs wamerican wdutch wfrench wget wine wireshark x-window-system-core xbill xchat xchm xdaliclock xine-ui x-ttcidfont-conf xmms xscreensaver xserver-xorg xsysinfo" && time nice --adjustment=1 lh_build

Remarquez que:
  • il est fortement recommandé d'utiliser un miroir local de Debian
  • dans cet exemple mon miroir s'appelle debian-mirror, il faut donc adapter le script (ou encore définir dans votre serveur DNS que debian-mirror est l'alias de votre machine miroir)
  • tous les fichiers seront créés dans le répertoire courant, je vous conseille donc fortement de faire mkdir debian-live && cd debian-live avant de lancer la commande
  • sur ma machine il faut environ 40 minutes pour générer le système Debian Live
  • pour des raisons de performance, il est fortement recommandé d'exécuter cette commande sur un filesystem local (c'est à dire, un disque qui existe physiquement, pas sur un tmpfs, ni nfs, ni smbfs)
  • veillez à exécuter cette commande sur un filesystem qui a suffisamment d'espace libre: dans le cas de la commande ci-dessus, la génération du Debian Live consomme 5,4 GB d'espace !
  • surtout, n'exécutez pas cette commande directement sur votre clef USB ! En effet, une clef USB est moins performante au niveau des temps d'accés et de la vitesse de lecture écriture. Mais surtout, les nombreuses opérations de lecture/écriture lors de la génération du système Debian Live diminuent fortement la durée de vie de votre clef USB !
  • au final, vous obtenez un fichier binary.img d'environ 720 MB que vous pourrez transférer avec une commande du genre dd if=binary.img of=/dev/sdXsdX est le bon périphérique pour votre clef usb
  • faites très attention de ne pas vous tromper de périphérique lors de la commande dd. Si vous n'avez que des disques PATA, la clef USB sera probablement le périphérique /dev/sda. Mais si vous avez des disques SCSI ou SATA, le périphérique /dev/sda est votre premier disque dur ! Votre clef USB sera quelquechose comme /dev/sdb ou /dev/sdc ou /dev/sdd, etc... N'allez pas écrire binary.img sur votre disque dur, vous perdriez toutes vos données !
  • copier le binary.img sur ma clef USB prend environ 10 minutes (mais c'est une clef de marque Peak, ce n'est pas très performant...)

samedi 2 février 2008

Une commande Mac OS X peu connue: machine

Il y a quelques jours je vous parlais de la commande arch de Mac OS X.

Voyons aujourd'hui une autre commande peu connue, la commande machine.

Cette commande est un peu similaire à la commande arch dont je vous parlais l'autre fois. En fait la commande machine affiche le type de machine sur laquelle Mac OS X tourne.

Attention, l'architecture et le type de machine, ce n'est pas la même chose !

L'architecture, donnée par la commande arch, est ppc, ppc64, i386 ou x86_64.

Le type de machine, donnée par la commande machine, indique avec précision le type de processeur.

Exemple avec Mac OS X Tiger sur un Power Macintosh G3 Blue and white:
[pierre@blueandwhite] /Users/pierre>machine
ppc750
Exemple avec Mac OS X Léopard sur un iMac Intel 20-inch:
[pierre@albert] /Users/pierre>machine
i486

Voyons les pages de manuel de cette commande machine:

Mac OS X Tiger sur PowerPC:
MACHINE(1)                BSD General Commands Manual               MACHINE(1)

NAME
machine -- print machine type

SYNOPSIS
machine

DESCRIPTION
The machine command displays the machine type.

SEE ALSO
make(1)

HISTORY
The machine command is currently under development.

BSD July 26, 1991 BSD
Mac OS X Léopard sur Intel:
MACHINE(1)                BSD General Commands Manual               MACHINE(1)

NAME
machine -- print machine type

SYNOPSIS
machine

DESCRIPTION
The machine command displays the machine type.

SEE ALSO
arch(1), make(1)

HISTORY
The machine command is currently under development.

BSD July 26, 1991 BSD
... on constatera au passage que cette commande est toujours "currently under development", étonnant :)