Sagen Sie automatisch Ja, um das Ext3-Dateisystem mit mkfs.ext3 auf der Festplatte zu erstellen

7

Ich arbeite an einem Skript, in dem ich ein ext3-Dateisystem auf einer Festplatte erstelle. Das Problem besteht darin, dass das Skript den Benutzer auffordert, entweder Ja oder Nein zu sagen:

 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)

Ich habe versucht, -y vor mkfs und nach sdc zu setzen, aber das hat nicht funktioniert. Hat jemand irgendwelche Lösungen, um dies ohne Benutzerinteraktion zu tun?

user3185936
quelle

Antworten:

17

Sie sollten wahrscheinlich kein Dateisystem auf einer ganzen Festplatte erstellen. Stattdessen sollten Sie es auf einer Partition auf der Festplatte machen (was /dev/sdc1eher so wäre als /dev/sdc). Wenn Sie noch keine Partition haben, können Sie diese zuerst erstellen. Die Partition kann (im Wesentlichen) die Größe der gesamten Festplatte haben, wenn Sie möchten. Selbst wenn Sie nur eine Partition auf der Festplatte haben möchten , müssen Sie die Partition tatsächlich erstellen. Viele Dienstprogramme und Anwendungen (und Personen!) Funktionieren nicht oder verhalten sich seltsam, wenn sich Ihre Dateisysteme nicht auf Partitionen befinden .

Wenn Sie wirklich wissen, was Sie tun, und sicher sind, dass Sie ein Dateisystem erstellen möchten, das nicht Teil einer Partition ist, können Sie dies tun, mkfs.ext3ohne den Benutzer dazu aufzufordern, indem Sie das -FFlag verwenden. Dies ist fast immer der Simulation interaktiver Eingaben mit einer Pipe vorzuziehen (es ist einfacher, selbstdokumentierender und was ist, wenn etwas Unerwartetes passiert und die Frage etwas anderes ist, wie das Gerät, das bereits montiert ist?). Auf der anderen Seite müssen Sie in einigen Situationen (mit einigen Dienstprogrammen) möglicherweise eine Pipe yoder yesein Dienstprogramm verwenden, daher ist es eine gute Technik, sich dessen bewusst zu sein.

Aus der Beschreibung der -FFlagge in man mkfs.ext3:

Kraft mke2fs ein Dateisystem zu erstellen, auch wenn das angegebene Gerät nicht eine Partition auf einem Block getrennte Einrichtung, oder wenn andere Parameter keinen Sinn machen. Um mke2fs zu zwingen , ein Dateisystem zu erstellen, auch wenn das Dateisystem verwendet zu werden scheint oder gemountet ist (eine wirklich gefährliche Sache), muss diese Option zweimal angegeben werden.

So können Sie verwenden mkfs.ext3 -F /dev/sdc.

Um es noch einmal zu wiederholen, sollten Sie dies wahrscheinlich überhaupt nicht tun, da Dateisysteme fast immer auf einer Partition erstellt werden sollten .

Eliah Kagan
quelle
Danke für die Hilfe! Sie haben sicherlich recht. Ich habe jetzt eine Partition erstellt, auf der ich ein Dateisystem erstellt habe.
user3185936
Im Großen und Ganzen wird Linux-Software gut damit umgehen, aber Windows wird es als leer ansehen und anbieten, es zu formatieren. Dies kann auch zu Problemen bei der Installation eines Bootloaders auf der Festplatte führen und Sie daran hindern, die Größe zu ändern und später eine weitere Partition hinzuzufügen.
Psusi
@psusi Vor einiger Zeit hatte ich Probleme in Ubuntu, Dateisysteme, die keine Partitionen enthalten, auf dem Desktop zu erkennen und automatisch zu mounten. Ich bin mir nicht sicher, ob das Problem bei udisksNautilus, einer Kombination aus beiden oder etwas anderem lag. Ich glaube, es kann auch Probleme beim Booten mit einem Dateisystem geben, das sich nicht auf einer Partition befindet.
Eliah Kagan
5

Es gibt keine -yOption für mkfs.ext3, Sie können dies überprüfen, indem Sie die Handbuchseite ( man mkfs.ext3) lesen . Es gibt jedoch ein Programm namens yes, das speziell dafür entwickelt wurde, das zu tun, was Sie wollen:

NAME
   yes - output a string repeatedly until killed

Sie könnten also rennen:

 yes | mkfs.ext3  /dev/sdc

Beachten Sie jedoch , dass Sie versuchen, ein Dateisystem auf dem gesamten Gerät anstatt auf einer einzelnen Partition zu erstellen, und dies ist wahrscheinlich nicht das, was Sie tun möchten. Sie sollten zuerst eine Partition auf der Festplatte erstellen und dann ein Dateisystem auf dieser Partition erstellen.

Terdon
quelle
Gibt es das Gegenteil für no?
Petah
@ Petah können Sie verwenden yes no. Das yesProgramm wiederholt alles, was Sie ihm geben (siehe man yes).
Terdon