Différences entre les pages « UserModeLinux » et « HP DeskJet D2460 »

De Cliss XXI
(Différence entre les pages)
Sauter à la navigation Sauter à la recherche
imported>SylvainBeucler
 
imported>SylvainBeucler
m
 
Ligne 1 : Ligne 1 :
== Compilation du noyau utilisateur ==
+
Paquets:
  
C'est très simple: on compile le noyau Linux avec le paramètre <code>ARCH=um</code> ''pour chaque commande''.
+
aptitude install hpijs-ppds # needed?
  
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.13.tar.bz2
+
=> sous Etch, le pilote recommandé "HP Deskjet D2300 / hpijs" ne fonctionne pas.
tar xjf linux-2.6.17.13.tar.bz2
 
cd linux-2.6.17.13
 
  
make defconfig ARCH=um
 
make xconfig ARCH=um # facultatif; pensez à activer HOSTFS si besoin
 
make ARCH=um
 
strip linux
 
make modules_install ARCH=um INSTALL_MOD_PATH=uml-modules/
 
  
Cf. [http://user-mode-linux.sourceforge.net/new/source.html Building from source] chez UML.
+
L'imprimante a en effet besoin de hplip en version >= 1.7.4 (avril 2007), cf.
 +
[http://hplip.sourceforge.net/supported_devices/inkjet.html les imprimantes gérées par hplip].
  
Des options que j'active:
+
Télécharger la version en fichier <code>.run</code>.
* MAGIC_SYSRQ: active l'équivalent de Alt+ImprÉcr, utilisable depuis uml_mconsole
 
* HOST_2G_2G: contourne un problème de certains noyaux hôte (cf. plus bas)
 
* HOSTFS: possibilité de monter des répertoires de la machine hôte - attention à la sécurité)
 
* STATIC_LINK: compiler le noyau en statique (pas de dépendance sur des bibliothèques partagées .so)
 
  
Il y a également des patches à essayer [http://www.user-mode-linux.org/~blaisorblade/patches/]:
+
aptitude purge hpijs hpijs-ppds
* hôte/host:
+
aptitude install build-essential libjpeg-dev
** skas3 - meilleures performances (dossier skas3-2.6)
+
sh hplip-2.7.10.run
* invité/guest:
+
# => c=custom
** exec support: permet de lancer des commandes shell avec uml_mconsole (ex: [http://www.user-mode-linux.org/~blaisorblade/patches/guest/uml-2.6.18.1-bb2/broken-out/uml-mconsole-exec.diff])
+
# => s=single func
  
== Construction du système de base ==
+
Avec plus de choses (autres que l'impression stricte) à compiler:
 +
aptitude install python-dev libcupsys2-dev libusb-dev libtool
 +
sh hplib-2.7.10.run
 +
# a=automatic
 +
# Reported missing optional dependencies:
 +
# libnetsnmp-devel pyqt reportlab sane-devel scanimage xsane sane
  
On se propose de construire et de lancer un système UML sans aucun accès root.
+
<code>foomatic</code> (<code>/usr/lib/ppr/interfaces/foomatic-rip</code>) est utilisé d'une manière ou d'une autre dans la chaîne d'impression:
 +
aptitude install foomatic-filters
  
Vraisemblablement, ce n'est pas possible facilement. Cela est dû au manque d'outil en mode utilisateur pour travailler directement sur des systèmes de fichiers ext3.
+
Par défaut, l'imprimante n'utilise que la cartouche couleur pour imprimer. Aller dans les préférences de l'imprimante (http://localhost:631/printers/DeskJet-D2400) pour sélectionner l'utilisation d'une des deux cartouches uniquement, ou des deux cartouches combinées. (ça n'a pas l'air de bien fonctionner depuis l'interfaces "Impression" de Gnome, par contre).
 
 
=== Tentative 1 ===
 
 
 
Essayons de créer un système complet, sans faire d'image, et en possédant tous les fichiers:
 
 
 
La dernière version de debootstrap propose une variante ''fakechroot'' qui permet de l'utiliser sans accès root:
 
export PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH # pour trouver la commande 'chroot'
 
fakechroot /usr/sbin/debootstrap --variant=fakechroot sarge sarge-uml/ http://localhost/mirrors/debian
 
/usr/src/linux-2.6.17.13/linux  root=/dev/root rootflags=/home/sylvain/tests/uml/debian/sarge-uml/ rootfstype=hostfs
 
 
 
Résultat: cela ne fonctionne pas, à mon avis parce que dans ce cas précis sarge-uml/dev est un lien symbolique vers /dev.
 
 
 
=== Tentative 2 ===
 
 
 
Essayons à partir d'une image UML déjà opérationnelle. Le principe est de monter le système de fichier hôte avec ''hostfs'', puis de faire un <code>mount -o loop</code> depuis le UML sur l'image disque à bootstrap-per. Cela permet de monter l'image sans avoir de privilèges super-utilisateur.
 
 
 
mount none host/ -t hostfs -o /home/sylvain/tests/uml/debian
 
cd host/
 
mkdir loop/
 
mount image -o loop loop/
 
ls loop/ # -> bin  boot  dev  etc  ...
 
 
 
[http://packages.debian.org/unstable/utils/rootstrap rootstrap] fonctionne apparemment sur ce principe.
 
Je n'ai pas réussi mais je n'ai pas beaucoup cherché.
 
 
 
=== En mode root ===
 
 
 
Faute de mieux, utilisons sudo:
 
 
 
mkdir loop/
 
# image de 1Go, à trous (espace disque progressif)
 
dd if=/dev/null of=image count=0 bs=1G seek=1
 
# on formatte en ext3
 
/sbin/mkfs.ext3 -F image
 
 
sudo mount image loop/ -o loop
 
sudo debootstrap sarge loop/ http://192.168.1.60/mirrors/debian
 
 
# configuration de la console:
 
sudo grep -v tty loop/etc/inittab > inittab.work
 
sudo echo "1:2345:respawn:/sbin/getty 38400 console linux" >> inittab.work
 
sudo mv inittab.work loop/etc/inittab
 
 
# configuration réseau:
 
cat <<'EOF' > interfaces.work
 
auto lo
 
iface lo inet loopback
 
EOF
 
sudo mv interfaces.work loop/etc/network/interfaces
 
 
# fake mtab and fstab
 
cat <<'EOF' > fstab.work
 
proc            /proc          proc    defaults        0 0
 
/dev/ubda      /              auto    defaults,errors=remount-ro 0 1
 
EOF
 
sudo mv fstab.work loop/etc/fstab
 
 
sudo umount loop/
 
 
 
=== Optimiser la taille de l'image pour la distribuer ===
 
 
 
Une image UML contient souvent des zones vides, où il n'y a pas encore de fichiers.
 
 
 
L'image ci-dessus réserve 1Go mais n'en occupe que 230Mo grâce à la création d'image "à trous" (''sparse'' en anglais).
 
 
 
$ ls -lh image
 
-rw-r--r--  1 sylvain sylvain 1,0G 2006-09-18 15:55 image
 
$ du -sh image
 
234M    image
 
 
 
D'autres méthodes (dd sur /dev/zero par exemple) n'en tiennent pas compte.
 
 
 
<code>df -h</code> dans UML indique une utilisation de 178Mo, donc on doit pouvoir encore améliorer (comment?). Éviter <code>e2defrag</code>, qui est obsolète et corrompt les systèmes de fichier. Piste: copier les fichiers dans une nouvelle image et supprimer l'ancienne - défragmentation à la volée.
 
 
 
 
 
Pour optimiser une image "pleine":
 
cp --sparse=always image image.sparse
 
 
 
Pour envoyer une image par le réseau en respectant les trous:
 
tar cSf image.tar image # S pour "sparse"
 
 
 
== Réseau ==
 
 
 
Imaginez un câble virtuel qui relie la machine hôte et la machine UML, une carte carte réseau virtuelle à chaque bout. Chaque carte a une adresse IP, mais comme sur un réseau classique, les deux cartes ne doivent pas avoir la même adresse.
 
 
 
=== Mode root avec tuntap ===
 
 
 
host# sudo /usr/src/linux ubda=sarge-debootstrap eth0=tuntap,,,192.168.1.101
 
 
 
Notez les messages d'UML indiquant la mise en place d'une interface tuntap <code>tap0</code>, une route pour accéder à la machine virtuelle, et un partage de connexion pour que la machine virtuelle puisse accéder au réseau extérieur.
 
 
 
Puis dans UML:
 
 
 
uml# ifconfig eth0 192.168.1.201
 
 
=== Mode semi-root avec tuntap ===
 
 
 
Pour utiliser tuntap, il faut créer à l'avance (et en mode root) une interface tap0 et lui assigner une adresse IP.
 
 
 
# tunctl -u sylvain
 
Set 'tap0' persistent and owned by uid 1000
 
 
 
Puis il faut donner des droits aux utilisateurs non-privilégiés d'utiliser tuntap (en mode root aussi):
 
 
 
chmod 666 /dev/net/tun
 
 
 
C'est une solution efficace mais qui nécessite plusieurs étapes de préconfiguration en mode root, accompagné de permissions lâches sur tuntap.
 
 
 
 
 
=== Mode semi-root avec tuntap (2) ===
 
 
 
Mettre l'utilisateur concerné dans le groupe <code>uml-net</code>. Ce groupe a accès au programme setuid <code>/usr/lib/uml/uml_net</code>, qui peut lancer et configurer des interfaces tuntap. La sécurité du procédé n'est pas grande (l'utilisateur peut créer de nouvelles interfaces réseau et perturber iptables par exemple), mais est facile à mettre en place.
 
 
 
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=tuntap,,,10.10.10.10
 
uml# ifconfig eth0 10.10.10.11
 
uml# route add default gw 10.10.10.10
 
 
 
Note: la configuration automatique côté hôte nécessite [http://packages.debian.org/unstable/otherosfs/uml-utilities uml_net] (partage de connexion, route vers la machine UML...).
 
 
 
=== Mode utilisateur avec slirp ===
 
 
 
Lancer UML avec une interface slirp, en utilisant le binaire 'fullbolt' (qui s'affranchit de la limitation débit de 10ko/s dans slirp 'classique'):
 
 
 
host# /usr/src/linux ubda=sarge-debootstrap umid=deb eth0=slirp,,/usr/bin/slirp-fullbolt
 
 
 
Dans UML, quelques étapes spécifiques à slirp sont nécessaires:
 
 
 
# Configurer l'interface sur 10.2.0.15 (IP de choix pour slirp)
 
ifconfig eth0 10.2.0.15
 
# Utiliser la redirection DNS 10.0.2.3
 
echo "nameserver 10.0.2.3" > /etc/resolv.conf
 
# Ajouter une route par défaut vers eth0:
 
route add default dev eth0
 
 
 
Note: <code>ping</code> ne fonctionne pas, car il nécessite un accès root (sur l'hôte, ping est d'ailleurs souvent setuid).
 
 
 
=== /etc/network/interfaces ===
 
 
 
Voici comment configurer automatiquement le réseau au démarrage d'UML, dans son fichier <code>interfaces</code>:
 
 
 
auto lo
 
iface lo inet loopback
 
 
auto eth0
 
iface eth0 inet static
 
 
# eth0=tuntap,,,10.10.10.1
 
#  address 10.10.10.10
 
#  netmask 255.0.0.0
 
#  gateway 10.10.10.1
 
 
# eth0=slirp,,/usr/bin/slirp-fullbolt
 
  address 10.2.0.15
 
  netmask 255.0.0.0
 
  dns-nameservers 10.0.2.3
 
  up route add default eth0
 
 
 
(dns-nameservers nécessite le paquet ''resolvconf'')
 
 
 
Autre solution pour gérer automatiquement les DNS: installez un serveur DNS dans l'UML, et évitez ainsi de vous faire suer à déterminer ceux de l'hôte. In-dé-pen-dan-ce ;) À moins que vous n'ayez besoin du serveur DNS de votre réseau interne.
 
 
 
== Lancer un UML en tâche fond ==
 
 
 
./linux ubda=... con=null &
 
  
  
 
== Liens ==
 
== Liens ==
  
* [http://user-mode-linux.sourceforge.net/new/ The User-mode Linux Kernel Home Page]: lien direct vers la nouvelle version du site - on s'y retrouve mieux
+
* http://openprinting.org/show_printer.cgi?recnum=HP-DeskJet_D2400 : page openprinting
* [http://eggdrop.ch/texts/uml/ Running Debian inside of Debian with User-Mode Linux]
 
* [http://www.metz.supelec.fr/metz/personnel/galtier/PagesPerso/TutorielUML/index.html Tutoriel User Mode Linux]: avec introduction à SKAS et réseau
 
* [http://user-mode-linux.sourceforge.net/UserModeLinux-HOWTO-6.html#ss6.11 Slirp] dans le UML HOWTO.
 
* [http://www.phptr.com/bookstore/product.asp?isbn=0131865056&rl=1 Livre] [http://www.eyrolles.com/Informatique/Livre/9780131865051/livre-user-mode-linux.php officiel]: écrit par l'auteur, ce livre est sous licence 'Open Publication' et n'en utilise visiblement aucune des options non-libres. C'est donc un livre libre que l'on peut recommander d'acheter :) La page de présentation indique que les livres de la série "Bruce Perens' Open Source" sont tous sous cette licence et sont publiés au format électronique au bout de 6 mois. J'ai personnellement récupéré un exemplaire au format .chm mais je ne connais pas son origine. J'en dirai plus sur le contenu quand je l'aurai parcouru ;)
 
* [http://testape.com/webtty_sample.php WebTTY]: lancez une instance UML sur le serveur distant et tapez du Bash intéractivement dans un navigateur web :)
 
* [[Émulation]] sur doc.cliss21.com
 
* Réseau
 
** [http://jungla.dit.upm.es/~vnuml/ VNUML]: Virtual Network User Mode Linux, simulation de réseaux complexes
 
** [http://www.strongswan.org/uml/index.htm strongSwan - UML testing]: tests d'une solution VPN avec un réseau virtuel d'UML.
 
** [http://www.freeswan.org/freeswan_snaps/CURRENT-SNAP/doc/umltesting.html FreeS/WAN User-Mode-Linux Testing guide]: même chose chez la concurrence
 
** [http://www.samag.com/documents/s=8997/sam0401a/0401a.htm Emulating Networks Using User-Mode Linux]
 
 
 
== Dépannage ==
 
 
 
Kernel panic - not syncing: start_userspace : expected SIGSTOP, got status = 256
 
 
 
Cf. http://www.mail-archive.com/user-mode-linux-devel@lists.sourceforge.net/msg03414.html
 
 
 
Votre noyau (hôte) est, si j'ai bien compris, mal configuré. Recompilez-le ou utilisez-en un autre.
 
 
 
Vous pouvez également activer CONFIG_HOST_2G_2G dans la configuration du noyau UM.
 

Version du 5 décembre 2007 à 21:19

Paquets:

aptitude install hpijs-ppds # needed?

=> sous Etch, le pilote recommandé "HP Deskjet D2300 / hpijs" ne fonctionne pas.


L'imprimante a en effet besoin de hplip en version >= 1.7.4 (avril 2007), cf. les imprimantes gérées par hplip.

Télécharger la version en fichier .run.

aptitude purge hpijs hpijs-ppds
aptitude install build-essential libjpeg-dev
sh hplip-2.7.10.run
# => c=custom
# => s=single func

Avec plus de choses (autres que l'impression stricte) à compiler:

aptitude install python-dev libcupsys2-dev libusb-dev libtool
sh hplib-2.7.10.run
# a=automatic
# Reported missing optional dependencies:
# libnetsnmp-devel pyqt reportlab sane-devel scanimage xsane sane

foomatic (/usr/lib/ppr/interfaces/foomatic-rip) est utilisé d'une manière ou d'une autre dans la chaîne d'impression:

aptitude install foomatic-filters

Par défaut, l'imprimante n'utilise que la cartouche couleur pour imprimer. Aller dans les préférences de l'imprimante (http://localhost:631/printers/DeskJet-D2400) pour sélectionner l'utilisation d'une des deux cartouches uniquement, ou des deux cartouches combinées. (ça n'a pas l'air de bien fonctionner depuis l'interfaces "Impression" de Gnome, par contre).


Liens