Vraag Hoe een harddisk resetten (verwijder Mbr en verwijder partities) van de commandoregel met een script zonder opnieuw op te starten?


Om vanuit een schone toestand te starten, moet ik de harde schijf naar een lege status resetten via de opdrachtregel.

Het gaat niet om het uitvoeren van een wisprogramma, de gegevens hoeven niet te worden overschreven.

Deze vraag lijkt veel op Alle partities verwijderen vanaf de opdrachtregel

De oplossing werkt daar best goed,

dd if=/dev/zero of=/dev/sda bs=512 count=1 conv=notrunc

maar als ik met zo'n overschreven schijf wil werken, krijg ik de foutmelding dat het apparaat nog steeds in gebruik is.

root@grml ~ # blockdev --rereadpt /dev/sda
BLKRRPART: Device or resource busy

of

root@grml ~ # partprobe
Error: Partition(s) 2, 3 on /dev/sda have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Error: Partition(s) 2, 3 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.

Dus ik moet alles wat "zit" op het apparaat handmatig uitschakelen

umount /mnt/debootstrap
umount /mnt/debootstrap/tmp
umount /mnt/debootstrap/var/log
umount /mnt/debootstrap/var
umount /mnt/debootstrap/home
service mdadm stop
service lvm2 stop
vgremove vg_main
pvremove /dev/md1
mdadm --stop /dev/md0
mdadm --stop /dev/md1
mdadm --remove /dev/md0
mdadm --remove /dev/md1

daarna partprobe opdracht werkt.

is er een commando dat eenvoudiger werkt? net zoals

harddiskreset /dev/sda

dus het kan gemakkelijk worden gebruikt op systemen met verschillende partitie / lvm / md-indeling?


5
2018-01-15 00:27


oorsprong


Naast rebooten, wat heeft het je aangeraden om te doen? Wat is de context hier? - Michael Hampton♦
ik weet niet zeker of ik je vragen begrijp. ik wil een debian-systeem booten met een bash-script dat setup-opslag gebruikt. om ervoor te zorgen dat het script altijd werkt, moet de harde schijf in het doelsysteem eerder worden geleegd / gereset. is dat de context waar je om vroeg? dan zou ik mijn vraag uitbreiden. het leek mij niet relevant, want ik ben gewoon op zoek naar een commando dat in staat is om mbr & partities van de harde schijf te verwijderen ... - c33s
U moet de MBR wissen voor je hebt de partities ingesteld. Het lijkt erop dat je hier bent na je hebt ze opgezet! - Michael Hampton♦
Ah ha! Ik heb het begrepen. Om het te laten werken (van een LiveCD) moest ik dit eerst doen: sudo wipefs -a / dev / sdb - fdisk -l toonde geen partitietabellen op / dev / sdb - dan - sudo dd if = / dev / sda of = / dev / sdb werkte om een ​​opstartbare kopie van de primaire schijf te maken. - SDsolar


antwoorden:


Ik heb hier altijd eenvoudigweg van gescheiden. Het werkt goed voor het wijzigen van het type disklabel en het toevoegen / verwijderen van partities, vooral omdat het moderne grote HDD's aankan, in tegenstelling tot fdisk.

Je kan lopen

$ sudo parted /dev/sda

Hiermee worden de dingen op gang gebracht en kom je in de parted terminal. U kunt vervolgens de Help-opdracht uitvoeren om alle beschikbare opdrachten weer te geven. Het is zelfverklarend.

Ik zal vermelden dat ja je moet wel alle partities hebben van de schijf die je niet gemount wilt formatteren. Als je gewoon op zoek was naar een snellere manier om alle partities te unmounten, dan denk ik dat je het zou kunnen doen met een regex in de opdracht umount, maar dat lijkt gek.

Met behulp van parted om de HDD te beheren hoefde ik nooit een update van de schijf of iets dergelijks te forceren.

Om een ​​schijf volledig te vernieuwen voor gloednieuw gebruik, doe ik meestal het volgende:

1) begin te scheiden door te rennen sudo parted /dev/sda

2) vind bestaande partities door ze te gebruiken print

3) verwijder bestaande partities door te draaien rm 1 vervang 1 door het partitienummer dat u wilt verwijderen. Herhaal vervolgens voor alle resterende partities op de schijf.

4) reset het disklabel door het uit te voeren mklabel gpt Ik gebruik het gpt-labeltype maar u kunt de standaard msdos gebruiken of wat uw voorkeur ook heeft. Hier is een lijst met typen schijflabels

5) Maak nieuwe partities door te draaien mkpart Dit zal u door de wizard voor het aanmaken van partities leiden. De begin- en eindpunten worden standaard ingesteld op sectoren. U kunt dit wijzigen door het unit commando voordat je begint mkpart Op deze manier kunt u het specificeren in GB of TB of MB enz.

6) controleer uw resultaten met print om uw nieuwe partitietabelinformatie te bekijken

7) Vervolgens moet je de partities formatteren. Dit zou niet moeten gebeuren door uit elkaar te gaan, hoewel sommige opties hiervoor beschikbaar zijn. Ik zou in plaats daarvan willen voorstellen om te lopen quit om de parted terminal te verlaten en vervolgens te gebruiken mkfs om de partities te formatteren. Vergeet niet om 'mkfs' uit te voeren op / dev / sda1 in plaats van / dev / sda omdat je de partitie formatteert en niet de schijf als geheel.

Dat is het zo'n beetje.

Ik hoop dat dit je vraag beantwoordt.

Hier is ook de online handleiding met uiteenzetting ter referentie: https://www.gnu.org/software/parted/manual/html_node/index.html

BEWERK:

Het OP wilde dit soort dingen doen vanuit een script en niet vanuit een terminal. U kunt hetzelfde soort procedure uitvoeren via een script door parted uit te voeren via enkele regelopdrachten in plaats van binnen de parted terminal.

Bijvoorbeeld het commando

$ sudo parted /dev/sda print

Drukt de drive-informatie en partitietabel af op de bash-console die vervolgens kan worden gemanipuleerd met grep, enz. Om variabelen te maken of wat u maar wilt in een bash-script.


2
2018-01-15 01:41



ik heb het nodig geautomatiseerd van een niet manueel manuscript van de terminal - c33s
Wacht op je originele bericht vermeldt geen script. Van welk deel ben je aan het scripten? Ik denk dat je gescheiden commando's kunt uitvoeren zonder in de parted terminal te gaan. Dat weet ik echter niet zeker. - KroniK907
Gewoon om te bevestigen, je kunt parted van single line-commando's uitvoeren. Bijvoorbeeld parted /dev/sda print zal de partitietabel voor / dev / sda afdrukken. Je kunt hetzelfde doen als hierboven beschreven, alleen met opdrachten met één regel als je het moet doen binnen een bash-script. - KroniK907
maar ik moet weten wat de naam van het apparaat zal zijn om de opdracht te gebruiken parted /dev/sda ook moet ik weten hoeveel partities er op de drive om te bellen zijn rm 1, ik ben op zoek naar een opdracht om de schijf eenvoudig schoon te maken, dus ik kan het opnieuw partitioneren, zonder alle handmatige dingen te doen om md's te sluiten en lv's te verwijderen enzovoort. - c33s
1) je moet nog steeds weten wat de naam van het apparaat zal zijn voor het uitvoeren van een dd-opdracht ... niet zeker wat je daar krijgt. Grijp gewoon door df als de omvormer is gemonteerd. Hoe ben je van plan om een ​​"script" te maken als je de locatie van de schijf niet kunt vinden? 2) het is gemakkelijk genoeg om te rennen parted $drive print en grep de resultaten om alle beschikbare partitienummers te vinden en sla ze vervolgens op in een array. Gebruik vervolgens deze waarden om uit te voeren parted $drive rm $partition. Al deze dingen zijn vrij eenvoudig bash-scripting. - KroniK907


De wipefs programma kunt u eenvoudig de ondertekening van de partitietabel verwijderen:

wipefs -a /dev/sda

U moet echter nog steeds elk proces stoppen dat het apparaat gebruikt, zoals LVM.

Van man wipefs

wipefs kunnen bestandssysteem-, raid- of partitietabel-handtekeningen wissen (magie   strings) van het opgegeven apparaat om de handtekeningen onzichtbaar te maken   voor libblkid.

wipefs wist het bestandssysteem zelf noch andere gegevens van   het apparaat. Bij gebruik zonder opties worden alle lijsten met wipefs weergegeven   zichtbare bestandssystemen en de verschuivingen van hun basishandtekeningen.

wipefs roept de BLKRRPART ioctl op als deze een a heeft gewist   partitietabelhandtekening om de kernel over de verandering te informeren.


2
2018-05-02 19:27



Dit deed het voor mij. Dank je. - SDsolar