web-dev-qa-db-fra.com

Automatique dites oui pour créer un système de fichiers ext3 sur disque avec mkfs.ext3

Je travaille sur un script dans lequel je crée un système de fichiers ext3 sur un disque. Le problème est que le script demande à l'utilisateur de dire oui ou non:

 root@ubuntu:/home/school#  mkfs.ext3 /dev/sdc
 mke2fs 1.42 (29-Nov-2011)
 /dev/sdc is entire device, not just one partition!
 Proceed anyway? (y,n)

J'ai essayé de mettre -y avant mkfs et après sdc mais cela n'a pas fonctionné. Est-ce que quelqu'un a des solutions pour le faire sans interaction de l'utilisateur?

7
user3185936

Vous ne devriez probablement pas créer de système de fichiers sur un disque entier. À la place, vous devriez le créer sur une partition sur le disque (ce serait quelque chose comme /dev/sdc1 au lieu de /dev/sdc). Si vous n'avez pas encore de partition, vous pouvez la créer en premier. La partition peut (essentiellement) être la taille de tout le disque, si vous voulez. Même si vous ne voulez que une partition sur le disque, vous devez toujours créer la partition. De nombreux utilitaires et applications (ainsi que les utilisateurs!) Ne fonctionneront pas ou se comporteront de manière étrange si vos systèmes de fichiers ne sont pas sur des partitions .

Si vous savez vraiment ce que vous faites et que vous êtes sûr de vouloir créer un système de fichiers qui ne fait pas partie d'une partition, vous pouvez faire make mkfs.ext3 faites cela sans demander à l'utilisateur, en utilisant l'indicateur -F. Ceci est presque toujours préférable à simuler une entrée interactive avec un tuya (c'est plus simple, plus auto-documenté, et que se passe-t-il si quelque chose d'inattendu se produit et si la question est autre chose, comme le périphérique déjà monté?). D'autre part, dans certaines situations (avec certains utilitaires), vous devrez peut-être canaliser you yesvers un utilitaire, c'est donc une bonne technique à connaître.

D'après la description de l'indicateur -F dans man mkfs.ext3 :

Forcer mke2fs à créer un système de fichiers, même si le périphérique spécifié n'est pas une partition sur un périphérique spécial en mode bloc, ou si d'autres paramètres n'ont pas de sens. Afin de forcer mke2fs à créer un système de fichiers même si le système de fichiers semble être en cours d'utilisation ou est monté (chose vraiment dangereuse), cette option doit être spécifié deux fois.

Donc, vous pouvez utiliser mkfs.ext3 -F /dev/sdc.

Mais, pour réitérer, , vous ne devriez probablement pas faire cela du tout, car les systèmes de fichiers devraient presque toujours être créés sur une partition .

15
Eliah Kagan

Il n'y a pas d'option -y pour mkfs.ext3, vous pouvez vérifier en lisant sa page de manuel (man mkfs.ext3). Cependant, il existe un programme appelé yes qui est spécialement conçu pour faire ce que vous voulez:

NAME
   yes - output a string repeatedly until killed

Donc, vous pourriez courir:

 yes | mkfs.ext3  /dev/sdc

Cependant, gardez à l’esprit que vous essayez de créer un système de fichiers sur l’ensemble du périphérique plutôt que sur une seule partition. C’est probablement pas que veux-tu faire. Vous devez d’abord créer une partition sur le disque et puis créer un système de fichiers sur cette partition.

4
terdon