créer une image img pour émuler sa DreamPlug avec Qemu

Bonjour,

Bonjour,

Mon serveur est une DreamPlug Multi boot sur debian Squeeze 2.6.39.4 ARM.
j’ai besoin de faire une image disque img pour l’émulé avec qemu afin d’effectuer des tests.

J’ai donc fait l’image disque comme ceci :

# dd if=/dev/sdf bs=1M | bzip2 -9 -c > /media/sauvegarde/sauvegarde/DreamPlug/carte-sd/mes-sauvegardes/cm15-ok/Debian-squeeze-2-6-39-4-carte-sd-16Go.img 15744+0 enregistrements lus 15744+0 enregistrements écrits 16508780544 octets (17 GB) copiés, 2761,62 s, 6,0 MB/s

Une fois que l’image disque faite je l’émule avec qemu comme ceci

$ emu-system-arm -m 256 -smp 1,thread=2 -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -append "root=/dev/sda2 rw" -hda Debian-squeeze-2-6-39-4-carte-sd-16Go.img $
Mais Qemu bloc , voila ce qui est affiché dans la fenetre de Quemu

[2.446155] TCP cublic registered [2.449130] NET: Registered protocol family 17 [2.454372] VFP support 0.3: implementor 41 architecture 1 part 10 variant 9 rev 0 [2.460747] registered taskstats version 1 [2.465295] rtc-pl031 dev:e8: setting system clock to 2012-06-07 19:56:46 UTC (1339099006) [2.473434] Initializing network drop monitor service [2.529838] input: AT Raw Set 2 keyboard as /device/fpga:06/serio0/input/input0 [2.537552] List of all partitions: [2.543127] No filesystem could mount root, tried: [2.546083] Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0) [2.552586] [<c002b060>] (unwind_blacktrace+0x0/0xdc) from [<0256c74>] (panic+0x34/0x128) [2.561777] [<c0256c74>] (panic+0x34/0x128) from [<c0008fb0>] (mount_block_root+0x25c/0x2b4) [2.567961] [<c0008fb0>] (mount_block_root+0x25c/0x2b4) from [<c00091a0>] (prepare_namespace+0x12c/0x198) [2.577260] [<c00091a0>] (prepare_namespace+0x12c/0x198) from [<c00085dc>] (kernel_init+0xf0/0x12c) [2.584685] [<c00085dc>] (kernel_init+0xf0/0x12c) from [<c0025e9c>] (kernel_thread_exit+0x0/0x8)

esce la version du fichier “vmlinuz-2.6.32-5-versatile” qui ne correspond pas au noyau utilisé ?
Ou esce du au format de conpression pour faire l’image disque au format img qui n’est pas bon car avec d’autre image au format img ca marche que j’ai téléchargé sur le net pour faire un essai.

Merci.

Ton truc m’interesse car je n’ai jamais réussi à le faire.
Est ce que tu bootes sur la SD externe ou sur l’interne ?
C’est uboot qui défini les adresses de démarrage du kernel. Je n’ai pas trouvé comment faire ça avec qemu.

Bonjour Piratebab,

Je boote sur la SD externe. J’ai compiler moi même mon noyaux de Debian Lenny a Debian Squeze 2.6.39.4. il faut compter env… 2H30. Je te le dit pour info quand je compilé un noyau inferieur au 2.6.39.4, ca merdé a la compilation de programme tel que pilotes et prgrammes tar.gz.
Si je me rappel bien toi aussi tu as la DreamPlug.
Si tu veux l’image je peut te la donné. ou le fichier pré-compiler 2.6.39.4 dit le moi.
Depuis Mon Pilotes domotique fonctionne et j’ai associé la domotique avec asterisk et bien d’autre. tout est nikel…

Mais revenons a nos moutons
A priori, le fichier ‘image’, il ne faut pas le ‘bzipper’…
Sinon Qemu ne trouvera pas de structure disque exploitable (partitionnement, formatage, …) et ne fonctionnera pas comme le dit le message:

[2.537552] List of all partitions: [2.543127] No filesystem could mount root, tried:

J’ai recommencé l’image disque img

[root@localhost cm15-ok]# dd if=/dev/sdf of=/media/sauvegarde/sauvegarde/DreamPlug/carte-sd/mes-sauvegardes/cm15-ok/09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img 32243712+0 enregistrements lus 32243712+0 enregistrements écrits 16508780544 octets (17 GB) copiés, 758,019 s, 21,8 MB/s [root@localhost cm15-ok]#

Puis j’émule l’image

[laurent@localhost debian-Squeeze]$ qemu-system-arm -m 256 -smp 1,thread=2 -M versatilepb -kernel vmlinuz-2.6.32-5-versatile -append "root=/dev/sda2 rw" -hda 09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img [laurent@localhost debian-Squeeze]$

Mais ça bloque, voila ce qu’affiche la fenêtre de Qemu

[2.298374] TCP cublic registered [2.303810] NET: Registered protocol family 17 [2.307428] VFP support 0.3: implementor 41 architecture 1 part 10 variant 9 rev 0 [2.314448] registered taskstats version 1 [2.327376] rtc-pl031 dev:e8: setting system clock to 2012-06-08 10:40:45 UTC (1339152045) [2.327376] Initializing network drop monitor service [2.394535] input: AT Raw Set 2 keyboard as /device/fpga:06/serio0/input/input0 [2.412301] List of all partitions: [2.415120] No filesystem could mount root, tried: [2.418027] Kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0) [2.426767] [<c002b060>] (unwind_blacktrace+0x0/0xdc) from [<0256c74>] (panic+0x34/0x128) [2.433011] [<c0256c74>] (panic+0x34/0x128) from [<c0008fb0>] (mount_block_root+0x25c/0x2b4) [2.438876] [<c0008fb0>] (mount_block_root+0x25c/0x2b4) from [<c00091a0>] (prepare_namespace+012c/0x198) [2.488141] [<c00091a0>] (prepare_namespace+0x12c/0x198) from [<c00085dc>] (kernel_init+0xf0/0x12c) [2.455288] [<c00085dc>] (kernel_init+0xfo/0x12c) from [<c0025e9c>] (kernel_exit+0x0/0x8)

Partiton de l’image disque
[code][root@localhost cm15-ok]# fdisk -l /home/laurent/Image-ARM/debian-Squeeze/09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img

Disque /home/laurent/Image-ARM/debian-Squeeze/09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img : 16.5 Go, 16508780544 octets
64 têtes, 32 secteurs/piste, 15744 cylindres, total 32243712 secteurs
Unités = secteur de 1 * 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Identifiant de disque : 0x76c80fe9

                                                                                Périphérique Amorce  Début        Fin      Blocs     Id  Système
/home/laurent/Image-ARM/debian-Squeeze/09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img1              32      104447       52208    6  FAT16
/home/laurent/Image-ARM/debian-Squeeze/09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img2          104448    32243711    16069632   83  Linux
[root@localhost cm15-ok]#[/code] l'image est correct.

Merci.

Bonjour,

Voir ce tuto -----> aurel32.net/info/debian_arm_qemu.php

Il faut télécharger le fichier “vmlinuz-2.6.32-5-versatile” et “initrd.img-2.6.32-5-versatile”

Voila, j’émule de nouveau l’image

Dans la fenêtre de Qemu , il y a d’affiché :

[code] GIB)
[7.327720] sd 0:0:0:0: [sda] Write Protect is off
[7.331403] sd 0:0:0:0: [sda] Write cache: disable, read cache; enabled doesn’t support DPO or FUA
[7.339781] sda: sda1 sda2
[7.357183] sda 0:0:0:0: [sda] Attached SCSI disk done.
begin: Running /scripts/local-premount … done.
mount: mounting /dev/sda1 on /root failed: No such device
Begin: Rumming /scripts/local-bottom … done.
done.
Begin: Rumming /scripts/init-bottom … mount: mounting /dev on /root/dev failed: No such file or directory
done.
mount: mounting /sys on /root/sys failled: No such file or directory
mount: mounting /proc on /rootproc failed: No such file or directory
Target filesystem doesn’t have requested /sbin/init.
No init found. Try passing init=bootarg.

BusyBox v1.17.1 (Debian 1:1.17.1-8) built-in shell (ash)
Enter 'help' for a list of built-in commands.

/binsh: can't access tty: job control tuned off
(initramfs) _

[/code]
Le curseur clignote à la fin de “(initramfs) _” mais je n’est pas le prompt avec le login: comme indiquer dans le tuto.

(initramfs) ls bin dev init proc sbin sys var conf etc lib root script tmp (initramfs) _

(initramfs) uname -r 2.6.32-5-versatille (initramfs) _
et le clavier est en qwerty
je pensé qu’il fallait indiquer -append “root=/dev/sda2”

Mais ca marche pas vraiment bien.

Merci.

tu as déja progressé bien plus que moi!
Si j’ai bien compris, tu utilises dans qemu un kernel spécifique. Tu t’éloigne de l’idée de départ …
J’ai de mon coté intallé une machine virtuelle ARM, sans me préoccuper de la version dreamplug (j’utilise la version de newit sur ma dernière install).
Dans qemu, j’ai réussi à compiler un logiciel pour en faire un paquet debian, et ça marche sur le dreamplug.

Re,

[quote]Si j’ai bien compris, tu utilises dans qemu un kernel spécifique. Tu t’éloigne de l’idée de départ …[/quote]Oui pour Qemu il lui faut un kernel spécifique pour émuler l’image.
L’idée au depart est démuler l’image disque de ma dreamplug pour faire des tests sans détruire mon travail.

Peut tu me dire le nom de cette machine virtuel car a par Qemu je ne vois rien d’autre comme émulateur qui emule les proccesseur arm ?

j'utilise la version de newit sur ma dernière install). les version Newit sont quand même limité pour certaine installe, tout dépend de ce que l’on fait.
comme je te le dit dans mon message “J’ai compiler moi même mon noyaux de Debian Lenny newit a Debian Squeze 2.6.39.4 non newit” c’est mieux.

Je boote sur la SD externe. J'ai compiler moi même mon noyaux de Debian Lenny a Debian Squeze 2.6.39.4. il faut compter env.. 2H30. Je te le dit pour info quand je compilé un noyau inferieur au 2.6.39.4, ca merdé a la compilation de programme tel que pilotes et prgrammes tar.gz. Si je me rappel bien toi aussi tu as la DreamPlug. Si tu veux l'image je peut te la donné. ou le fichier pré-compiler 2.6.39.4 dit le moi. (cette version n'est pas sur net c'est moi qui l'ai faite) Depuis Mon Pilotes domotique fonctionne et j'ai associé la domotique avec asterisk et bien d'autre. tout est nikel...

Merci.

En fait, sur mon 2eme dreamplug, j’ai fait un mixte entre 2 images newit. J’ai pris l’image debian de base, mais j’ai pris le kernel et les modules dans leur version avec gnome.
J’utilise qemu pour faire tourner une debian ARM. Mais ce n’est pas du tout basé sur une image dreamplug.

Bonjour,

Je doit faire d’autre test, mais il me manque du temps actuellement.
il faut que je chercher des renseignements sur le net concernant le /boot via mon image dreamplug afin d’extraire le fichier boot de mon image pour qemu, (-kernel vmlinuz-2.6.3x.x-versatile) je te tiens au courant que ce soit affirmatif ou négatif.

Merci.

Je viens de découvrir que qemu sait gérer un boot via uboot (comme sur un dremplug)
balau82.wordpress.com/2010/03/10 … m-on-qemu/
balau82.wordpress.com/2010/04/12 … -qemu-arm/
linuxforu.com/2011/08/qemu-f … nt-part-3/

Cela ouvre de nouvelles perspectives!

Bonjour,

J’ai fait un test, avec mon image disque '09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img’
en téhorie y à deux fichiers importants:

  • le noyau (vmlinuz)
  • le système temporaire (initrd.img) adapté au noyau

Mais sur mon images disque il ny a pas les deux fichiers (egalement sur la carte sd de la dreamplug)
il semble qu’il n’y ait pas de fichier initrd dans le déroulement du démarrage du plug, c’est donc uniquement le kernel (uImage) qui fait tout le boulot.

J’ai copié le uImage de la partition /dev/sda1 dans un repertoire.
puis J’ai téléchargé un petit scripte (extract_uImage.sh)
ftp.maddes.net/u-boot/extract_uImage.sh

Lancement du petit script

[root@localhost uimage]# sh extract_uImage.sh uImage Checking for uImage magic word... 1+0 enregistrements lus 0+1 enregistrements écrits 4 octets (4 B) copiés, 2,3015e-05 s, 174 kB/s uImage recognized. Extracting data... 41756+0 enregistrements lus 5219+1 enregistrements écrits 2672384 octets (2,7 MB) copiés, 0,0323724 s, 82,6 MB/s Checking for ARM mach-type... 3+0 enregistrements lus 0+1 enregistrements écrits 3 octets (3 B) copiés, 1,7818e-05 s, 168 kB/s Checking for zImage... 1+0 enregistrements lus 0+1 enregistrements écrits 4 octets (4 B) copiés, 1,3721e-05 s, 292 kB/s 1+0 enregistrements lus 0+1 enregistrements écrits 4 octets (4 B) copiés, 2,4354e-05 s, 164 kB/s 1+0 enregistrements lus 0+1 enregistrements écrits 4 octets (4 B) copiés, 2,4205e-05 s, 165 kB/s zImage recognized with start 0x00000000, end 0x0028C700 and size 2672384. >>> uImage extracted to zImage [root@localhost uimage]#

ensuite j’ai lancé qemu

[root@localhost debian-Squeeze]# qemu-system-arm -M versatilepb -kernel zImage -hda 09-2-Debian-squeeze-2-6-39-4-carte-sd-externe-16Go.img -m 256 -append "root=/dev/sda1" [root@localhost debian-Squeeze]#

mais ca ne foctionne pas, la fenêtre de Qemu reste noir.

Merci.

uboot ne fonctionne pas comme tu le décris.
Il y a un fichier uImage (le noyau) sur une partition, et le systéme de fichier sur une autre.
Il faut passer en paramètres à uboot l’adresse d’origine de ces 2 partitions (ce qui se fait avec le jtag sur un dreamplug.
Avec qemu, il faut que tu installes uboot, puis que tu lui donnes les bonnes adresses.