Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 01-06-2016 19:06:15

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

[Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

@ Tous : salut !

Un petit test de rapidité que je viens de réalisé :

1. Avec dd :

time dd if=debian-live-5010-i386-kde-desktop.iso of=/dev/sdb

1356860+0 enregistrements lus
1356860+0 enregistrements écrits
694712320 octets (695 MB) copiés, 274,053 s, 2,5 MB/s
4:34.07s


2. Avec cp :

time cp debian-live-5010-i386-kde-desktop.iso /dev/sdb

2:48.48s


3. Avec cat > :

time sh catiso.sh

2:38.91s


catiso.sh :

#!/bin/bash
cat debian-live-5010-i386-kde-desktop.iso > /dev/sdb

(J'ai pas su faire autrement pour utiliser time sur cat debian-live-5010-i386-kde-desktop.iso > /dev/sdb...)

Les résultats parlent d'eux-même, non ?
Quelqu'un obtient quelque chose de différent ?

NB : il faut faire un petit "sync" après les deux derniers.

Dernière modification par AbdelQahar (07-07-2016 23:44:47)

Hors ligne

#2 01-06-2016 20:35:52

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

Avec un DVD c'est encore plus flagrant : du simple au double !

dd :

time dd if=debian-8.4.0-i386-DVD-1.iso of=/dev/sdb


7798784+0 enregistrements lus
7798784+0 enregistrements écrits
3992977408 octets (4,0 GB) copiés, 1308,08 s, 3,1 MB/s
21:48.14s


cp :

time cp debian-8.4.0-i386-DVD-1.iso /dev/sdb


10:21.18s


cat > :

time sh catiso.sh


10:18.77s


catiso.sh :

#!/bin/bash
cat debian-8.4.0-i386-DVD-1.iso > /dev/sdb



Conclusion : il faut laisser tomber dd.

Dernière modification par AbdelQahar (01-06-2016 22:54:01)

Hors ligne

#3 01-06-2016 21:48:47

nIQnutn
Modérateur
Lieu : Lyon
Distrib. : Jessie
Noyau : Linux 3.16-amd64
(G)UI : XFCE
Inscription : 16-03-2012
Site Web

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

oui mais beaucoup ne savent pas qu'on peut faire ça avec cp.

en tout cas, c'est intéressant.

En ligne

#4 01-06-2016 21:57:37

Thuban
Modérateur
Distrib. : OpenBSD
Noyau : current
(G)UI : xfce ou dwm
Inscription : 09-01-2009
Site Web

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

Ah oui, avec cp j'ignorais que c'était possible dis donc! J'en restais au bon vieux dd smile

YA3HGA-H

Hors ligne

#5 01-06-2016 22:03:37

sogal
Black Metal Modo
Distrib. : Debian Testing
Noyau : 4.7
(G)UI : Gnome
Inscription : 09-05-2013
Site Web

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

Bonsoir,
Merci pour le comparo, intéressant en effet.

En après vérif, l'usage de cp apparait dans la doc Debian : https://www.debian.org/releases/stable/ … 03.html.en mais j'ignorais également que cette commande était utilisable dans un tel cas.

Machine perso : Thinkpad x230 Debian Stretch | Machine pro : Thinpad T450 openSUSE Leap 42.2

Hors ligne

#6 01-06-2016 22:05:11

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

En fait, je me suis rappelé du post suivant :

captnfab a écrit :

On note que le wiki Debian recommande même d'utiliser cp plutôt que dd, car il optimise la taille des blocs lors de la copie smile

cp ~/mon-image.iso /dev/sdX


Ça fonctionne bien, je n'ai pas fait de test de vitesse par contre.



Que j'avais lu dans le topic suivant :

https://debian-facile.org/viewtopic.php … 33#p105033

Alors j'ai voulu essayer.

Dernière modification par AbdelQahar (01-06-2016 22:06:01)

Hors ligne

#7 02-06-2016 16:19:37

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

raleur a écrit :

AbdelQahar a écrit :

J'en ai fait quelques uns, et confirme que cp va plus vite que dd :https://debian-facile.org/viewtopic.php?id=14288


C'est parce que tu as laissé la taille de bloc par défaut de 512 octets de dd qui est trop faible. A partir de 4 Kio (bs=4k) ou plus, tu ne devrais pas constater de différence significative avec cp.

nono47 a écrit :

De plus avec cp , il n'y a pas besoin que la clé soit démontée comme avec dd !


Ça m'étonnerait. Je ne vois aucune raison pour que dd et cp soient différents de ce côté-là.


source : https://debian-facile.org/viewtopic.php … 74#p178474

1. Pour ce qui est de l'option bs :


Effectivement, après avoir fait quelque recherches sur internet, j'ai vu qu'il était possible d'optimiser la vitesse de la commande dd en jouant sur le paramètre bs. Cependant, cela varie en fonction du matériel. Il faut faire des tests.

Voir par exemple :
https://stackoverflow.com/questions/616 … -blocksize
https://serverfault.com/questions/65008 … -the-speed

Quelques tests pour dd :

time dd if=debian-8.4.0-i386-netinst.iso of=/dev/sdb


647168+0 enregistrements lus
647168+0 enregistrements écrits
331350016 octets (331 MB) copiés, 129,008 s, 2,6 MB/s
2:12.32s


dd if=debian-8.4.0-i386-netinst.iso of=/dev/sdb bs=4k


80896+0 enregistrements lus
80896+0 enregistrements écrits
331350016 octets (331 MB) copiés, 75,2105 s, 4,4 MB/s
1:15.21s


dd if=debian-8.4.0-i386-netinst.iso of=/dev/sdb bs=32k


10112+0 enregistrements lus
10112+0 enregistrements écrits
331350016 octets (331 MB) copiés, 97,249 s, 3,4 MB/s
1:37.25s


dd if=debian-8.4.0-i386-netinst.iso of=/dev/sdb bs=128k


2528+0 enregistrements lus
2528+0 enregistrements écrits
331350016 octets (331 MB) copiés, 78,7046 s, 4,2 MB/s
1:18.70s


time dd if=debian-8.4.0-i386-netinst.iso of=/dev/sdb bs=1M


316+0 enregistrements lus
316+0 enregistrements écrits
331350016 octets (331 MB) copiés, 91,7457 s, 3,6 MB/s
1:31.74s



Et maintenant cp :

time cp debian-8.4.0-i386-netinst.iso /dev/sdb


1:18.98s



2. Pour ce qui du montage ou démontage de la clé :
Je confirme que

cp debian-8.4.0-i386-netinst.iso /dev/sdb

Ne fonctionne pas si la clé est montée.
En revanche, si on remplace sdb par sdb1 (aprés avoir créer une partition et l'avoir formaté en fat32), ça marche, et c'est même plus rapide :

time cp debian-8.4.0-i386-netinst.iso /dev/sdb1


0:46.77s


Mais ça ne boote pas (à part dans qemu...). Il doit falloir lui coller un boot.img.gz pour hd-media avec zcat. J'ai la flemme d'essayer pour le moment, mais si ça se trouve c'est la meilleure méthode ! Elle est décrite ici : https://debian-facile.org/doc:install:stable-usb?s

Dernière modification par AbdelQahar (02-06-2016 16:41:40)

Hors ligne

#8 02-06-2016 16:29:24

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

En tous les cas, j'en reviens à la citation suivante :

captnfab a écrit :

On note que le wiki Debian recommande même d'utiliser cp plutôt que dd, car il optimise la taille des blocs lors de la copie smile


Mes tests semblent aller dans se sens...

Ma conclusion :
cp est mieux que dd pour ce travail, car :

  1. plus court à écrire (ça compte, en informatique on doit être fainéants je vous rappelle) ;

  2. pas besoin d'essayer de chercher quelle est l'option qui va optimiser la vitesse d'écriture.


Par rapport à la méthode cat > on peut arguer comme avantages pour cp :

  1. pareil qu'au-dessus ;

  2. la commande fait le travail nativement, pas besoin d'avoir recours à une redirection de flux.


Au niveau de la vitesse ça se joue à pas grand chose, il faudrait faire plus de tests dans différentes conditions...

Dernière modification par AbdelQahar (02-06-2016 16:30:47)

Hors ligne

#9 03-06-2016 14:10:16

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

Je suis surpris de la contre-performance de dd avec bs=32k ou 1M.

AbdelQahar a écrit :

Je confirme que [cp] ne fonctionne pas si la clé est montée. En revanche, si on remplace sdb par sdb1 (aprés avoir créer une partition et l'avoir formaté en fat32), ça marche, et c'est même plus rapide :


Euh, qu'est-ce que tu entends par ça marche/ça marche pas ? Comme tu le constates, le résultat n'est évidemment pas bootable car l'image n'est pas construite pour être bootée depuis une partition.

Le problème de faire la copie lorsqu'une partition est montée, c'est le risque que l'OS écrive dedans en meme temps et donc que la copie soit corrompue.

Quant à être plus rapide, je n'ai pas d'explication. Ce n'est pas logique, la vitesse étant limitée par le débit en écriture de la clé. Ou bien la commande n'a pas attend la fin de la copie physique et le vidage des tampons pour se terminer.

AbdelQahar a écrit :

mais si ça se trouve c'est la meilleure méthode ! Elle est décrite ici : https://debian-facile.org/doc:install:stable-usb


Non, ce n'est pas ce qui est décrit. La page dit de copier l'image en tant que fichier dans le système de fichiers monté (/mnt/), pas dans le fichier spécial du périphérique (/dev/sde).

AbdelQahar a écrit :

Par rapport à la méthode cat > on peut arguer comme avantages pour cp


Que contrairement à cat, cp ne risque pas de modifier le contenu à la volée (transformation des séquences d'octets interprétées comme des retours à la ligne, etc.)

Hors ligne

#10 03-06-2016 16:51:53

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

raleur a écrit :

Je suis surpris de la contre-performance de dd avec bs=32k ou 1M.


Pas moi, car cela correspond aux tests des utilisateurs contenus dans les deux liens que j'ai indiqué.
Regarde ici par exemple :


     512 : 11.3 MB/s
    1024 : 22.1 MB/s
    2048 : 42.3 MB/s
    4096 : 75.2 MB/s
    8192 : 90.7 MB/s
   16384 : 101 MB/s
   32768 : 104 MB/s
   65536 : 108 MB/s
  131072 : 113 MB/s
  262144 : 112 MB/s
  524288 : 133 MB/s
 1048576 : 125 MB/s
 2097152 : 113 MB/s
 4194304 : 106 MB/s
 8388608 : 107 MB/s
16777216 : 110 MB/s
33554432 : 119 MB/s
67108864 : 134 MB/s


For my particular hardware I found that 128K was the most optimal input block size on a HDD and 32K was most optimal on a SSD.

Il dit qu'il a trouvé qu'avec sa configuration pour un HDD le mieux c'était 128k et pour un SSD 32k.

Sur la même page, un autre test:

4K    13.5 MB/s
64K   18.3 MB/s
8M    19.1 MB/s
10M   19.0 MB/s
20M   18.6 MB/s
100M  18.6 MB/s


Il faudrait faire plus de tests... Mais maintenant qu'on sait qu'avec cp on a pas besoin de se casser la tête !

raleur a écrit :

AbdelQahar a écrit :

mais si ça se trouve c'est la meilleure méthode ! Elle est décrite ici : https://debian-facile.org/doc:install:stable-usb


Non, ce n'est pas ce qui est décrit. La page dit de copier l'image en tant que fichier dans le système de fichiers monté (/mnt/), pas dans le fichier spécial du périphérique (/dev/sde).


Effectivement, je n'avais pas détecté la différence quand j'ai écrit mon post... Il me semble aussi qu'il n'as pas écrit dans un partition formaté contrairement à moi, sinon cela aurait été /dev/sde1 qui aurait était monté. À moins qu'il se passe un genre de formatage lors de l'écriture du boot.img dans la clé ?

raleur a écrit :


AbdelQahar a écrit :

Je confirme que [cp] ne fonctionne pas si la clé est montée. En revanche, si on remplace sdb par sdb1 (aprés avoir créer une partition et l'avoir formaté en fat32), ça marche, et c'est même plus rapide :


Euh, qu'est-ce que tu entends par ça marche/ça marche pas ? Comme tu le constates, le résultat n'est évidemment pas bootable car l'image n'est pas construite pour être bootée depuis une partition.

Le problème de faire la copie lorsqu'une partition est montée, c'est le risque que l'OS écrive dedans en même temps et donc que la copie soit corrompue.

Quant à être plus rapide, je n'ai pas d'explication. Ce n'est pas logique, la vitesse étant limitée par le débit en écriture de la clé. Ou bien la commande n'a pas attend la fin de la copie physique et le vidage des tampons pour se terminer.


Peu importe, cette méthode n'est pas viable de toute façon... (Qui a cette idée pourrie d'ailleurs ?! Ah oui, c'est moi... ^_^)
De plus, même la méthode décrite dans la page (celle qui fonctionne donc) reste plus longue au niveau du temps, car la commande :

zcat boot.img.gz > /dev/sdX


prends pas mal de temps... (j'ai fait un ou deux test, c'était supérieur à 2 minutes).

Je reste un partisan de la commande cp donc, dans le cadre d'une ISO unique à écrire dans une clé USB.
Sinon, pour plusieurs ISO dans une clé, il y a grub (tuto ici).

Dernière modification par AbdelQahar (03-06-2016 17:03:52)

Hors ligne

#11 04-06-2016 11:39:40

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

AbdelQahar a écrit :

Je suis surpris de la contre-performance de dd avec bs=32k ou 1M.


Pas moi, car cela correspond aux tests des utilisateurs contenus dans les deux liens que j'ai indiqué.


Dans les tests que tu cites, le débit mesuré est globalement croissant puis atteint un palier. Il n'y a pas d'irrégularité aussi importante que celles que tu mesures pour des tailles inférieures à 1 Mio.

AbdelQahar a écrit :

Il me semble aussi qu'il n'as pas écrit dans un partition formaté contrairement à moi, sinon cela aurait été /dev/sde1 qui aurait était monté.


Dans son cas c'est la clé entière /dev/sde qui devait être formatée sans être partitionnée sinon elle n'aurait pas pu être montée, comme les disquettes de l'ancien temps. Mais cela ne change rien au principe. Une clé USB, un disque ou une partition sont tous gérés comme des périphériques de type bloc.

AbdelQahar a écrit :

À moins qu'il se passe un genre de formatage lors de l'écriture du boot.img dans la clé ?


Oui et non. cp, dd ou cat ne font pas de formatage par eux-mêmes. Si l'image contient un formatage, il sera copié pendant l'opération. C'est le principe de l'image.

AbdelQahar a écrit :

De plus, même la méthode décrite dans la page (celle qui fonctionne donc) reste plus longue au niveau du temps, car la commande :

zcat boot.img.gz > /dev/sdX


prends pas mal de temps... (j'ai fait un ou deux test, c'était supérieur à 2 minutes).


Normal : une fois décompressée, la taille de cette image (1 Go) est le triple de celle de l'image netinstall (330 Mo) utilisée pour tes tests.
Cela n'a rien à voir avec l'utilisation de zcat au lieu de cp. Tu ne pourrais pas utiliser cp pour installer cette image sur une clé car elle est compressée (et contient beaucoup de vide, c'est pourquoi elle se compresse très bien). Au passage, ce n'est pas une image ISO mais une image disque.

Dernière modification par raleur (04-06-2016 11:40:24)

Hors ligne

#12 07-06-2016 20:04:49

AbdelQahar
Membre
Lieu : Marmande
Distrib. : Jessie + Backports
Noyau : Linux 3.16.0-4-amd64
(G)UI : Xfce 4.10
Inscription : 14-08-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

raleur a écrit :

AbdelQahar a écrit :

Je suis surpris de la contre-performance de dd avec bs=32k ou 1M.


Pas moi, car cela correspond aux tests des utilisateurs contenus dans les deux liens que j'ai indiqué.


Dans les tests que tu cites, le débit mesuré est globalement croissant puis atteint un palier. Il n'y a pas d'irrégularité aussi importante que celles que tu mesures pour des tailles inférieures à 1 Mio.


Je ne sais pas quoi te dire. Les conditions dans lesquelles je les ai faites n'étaient sans doute pas idéales... Si tu as le temps, essaye de ton côté...

raleur a écrit :

AbdelQahar a écrit :

De plus, même la méthode décrite dans la page (celle qui fonctionne donc) reste plus longue au niveau du temps, car la commande :

zcat boot.img.gz > /dev/sdX


prends pas mal de temps... (j'ai fait un ou deux test, c'était supérieur à 2 minutes).


Normal : une fois décompressée, la taille de cette image (1 Go) est le triple de celle de l'image netinstall (330 Mo) utilisée pour tes tests.
Cela n'a rien à voir avec l'utilisation de zcat au lieu de cp. Tu ne pourrais pas utiliser cp pour installer cette image sur une clé car elle est compressée (et contient beaucoup de vide, c'est pourquoi elle se compresse très bien). Au passage, ce n'est pas une image ISO mais une image disque.


Effectivement, je n'avais pas fait attention à la taille une fois décompressé. En revanche, je ne parlais pas de la lenteur de zcat par rapport à cp, mais plutôt du fait que cette étape supplémentaire rallonge la durée du processus (car après cela, il faut quand même écrire un iso en plus du boot.img dans la clé...).

Pour le tout le reste : Merci pour les infos et les rectifications ! : )

Dernière modification par AbdelQahar (07-06-2016 20:05:16)

Hors ligne

#13 08-06-2016 21:24:55

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

J'avais fait ces mesures il y a longtemps, et n'avait pas observé de variation significative du débit avec les tailles de bloc supérieures ou égales à 4k.

Hors ligne

#14 11-06-2016 23:05:06

Maximilien LIX
Membre
Distrib. : Archlinux
(G)UI : GNOME
Inscription : 17-12-2013
Site Web

Re : [Résolu] Pour écrire une ISO dans une clé USB : cp, dd ou cat > ?

Et bien merci pour l'astuce ! Je vais laisser tomber dd big_smile

Acer AX3810  (Archlinux & Debian )
Acer Aspire V5 (ubuntu-Mate)
Lenovo Thinkpad Edge E330 ( Archlinux )

Hors ligne

Pied de page des forums