Làm cách nào để đặt lại Harddisk (xóa Mbr & xóa phân vùng) khỏi Dòng lệnh bằng tập lệnh mà không cần khởi động lại?


8

Để bắt đầu từ trạng thái sạch, tôi cần đặt lại đĩa cứng về trạng thái trống từ dòng lệnh.

Đây không phải là về việc chạy một tiện ích xóa sạch, dữ liệu không phải ghi đè.

Câu hỏi này khá giống với Xóa tất cả các phân vùng khỏi dòng lệnh

Giải pháp ở đó hoạt động khá tốt,

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

nhưng nếu tôi muốn làm việc với một đĩa bị ghi đè như vậy, tôi sẽ gặp lỗi khi thiết bị vẫn đang được sử dụng.

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

hoặc là

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.

Vì vậy, tôi phải tắt thủ công mọi thứ "ngồi" trên thiết bị

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

sau đó partprobelệnh hoạt động.

Có một số lệnh làm việc đơn giản hơn? giống

harddiskreset /dev/sda

vì vậy nó có thể dễ dàng được sử dụng trên các hệ thống có bố cục phân vùng / lvm / md khác nhau?


1
Bên cạnh việc khởi động lại, đó là những gì nó khuyên bạn nên làm gì? Bối cảnh ở đây là gì?
Michael Hampton

tôi không chắc nếu tôi hiểu câu hỏi của bạn. Tôi muốn bootstrap một hệ thống debian với tập lệnh bash đang sử dụng thiết lập-lưu trữ. để đảm bảo tập lệnh luôn hoạt động, ổ cứng trong hệ thống đích cần được xóa / đặt lại trước đó. đó có phải là bối cảnh bạn yêu cầu? sau đó tôi sẽ mở rộng câu hỏi của tôi. nó dường như không liên quan đến tôi, vì tôi chỉ tìm kiếm một lệnh có thể xóa mbr & phân vùng khỏi ổ cứng ...
c33s

Bạn nên xóa MBR trước khi thiết lập phân vùng. Có vẻ như ở đây, bạn đang làm như vậy sau khi bạn thiết lập chúng!
Michael Hampton

À ha! Tôi hiểu rồi. Để làm cho nó hoạt động (từ LiveCD) trước tiên tôi phải làm điều này: sudo wipefs -a / dev / sdb - fdisk -l không hiển thị bảng phân vùng trên / dev / sdb - sau đó - sudo dd if = / dev / sda của = / dev / sdb đã làm việc để tạo một bản sao có thể khởi động của ổ đĩa chính.
SDsolar

Câu trả lời:


5

Các wipefschương trình cho phép bạn dễ dàng xóa chữ ký phân vùng-bảng:

wipefs -a /dev/sda

Bạn vẫn phải dừng bất kỳ quá trình sử dụng thiết bị nào, chẳng hạn như LVM.

Từ man wipefs

wipefs có thể xóa các chữ ký hệ thống tập tin, đột kích hoặc bảng phân vùng (chuỗi ma thuật) khỏi thiết bị được chỉ định để làm cho các chữ ký trở nên vô hình đối với libblkid.

wipefs không tự xóa hệ thống tập tin cũng như bất kỳ dữ liệu nào khác khỏi thiết bị. Khi được sử dụng mà không có bất kỳ tùy chọn nào, wipefs liệt kê tất cả các hệ thống tệp hiển thị và phần bù của chữ ký cơ bản của chúng.

wipefs gọi BLKRRPART ioctl khi nó đã xóa một chữ ký bảng phân vùng để thông báo cho kernel về sự thay đổi.


2

Tôi đã luôn luôn đơn giản sử dụng chia tay cho việc này. Nó hoạt động tốt để thay đổi loại đĩa và thêm / xóa phân vùng, đặc biệt là vì nó có thể xử lý các ổ cứng lớn hiện đại không giống như fdisk.

Bạn có thể chạy

$ sudo parted /dev/sda

Điều này sẽ giúp mọi thứ bắt đầu và đưa bạn vào thiết bị đầu cuối chia tay. Sau đó, bạn có thể chạy lệnh trợ giúp để hiển thị tất cả các lệnh có sẵn. Nó rất tự giải thích.

Tôi sẽ đề cập rằng có bạn phải có tất cả các phân vùng của đĩa bạn muốn định dạng không đếm được. Nếu bạn chỉ đơn giản là tìm kiếm một cách nhanh hơn để ngắt kết nối tất cả các phân vùng, tôi đoán bạn có thể làm điều đó với một biểu thức chính quy trong lệnh umount nhưng điều đó có vẻ ngớ ngẩn.

Sử dụng parted để quản lý ổ cứng Tôi chưa bao giờ phải làm mới đĩa hoặc bất cứ thứ gì tương tự.

Để làm mới hoàn toàn một ổ đĩa cho việc sử dụng hoàn toàn mới, tôi thường làm như sau:

1) bắt đầu chia tay bằng cách chạy sudo parted /dev/sda

2) tìm bất kỳ phân vùng hiện có bằng cách chạy print

3) xóa các phân vùng hiện có bằng cách chạy rm 1thay thế 1 bằng số phân vùng bạn muốn xóa. Sau đó lặp lại cho tất cả các phân vùng còn lại trên đĩa.

4) đặt lại nhãn đĩa bằng cách chạy mklabel gptTôi sử dụng loại nhãn gpt nhưng bạn có thể sử dụng msdos tiêu chuẩn hoặc bất cứ sở thích nào của bạn. Dưới đây là danh sách các loại đĩa

5) Tạo phân vùng mới bằng cách chạy mkpartĐiều này sẽ chạy bạn thông qua trình hướng dẫn tạo phân vùng. Điểm bắt đầu và điểm kết thúc được mặc định cho các ngành. Bạn có thể thay đổi điều này bằng cách chạy unitlệnh trước khi chạy mkpartCách này bạn có thể chỉ định nó theo GB hoặc TB hoặc MB, v.v.

6) kiểm tra kết quả của bạn bằng cách sử dụng printđể xem thông tin bảng phân vùng mới của bạn

7) Sau đó, bạn cần định dạng các phân vùng. Điều này không nên được thực hiện thông qua chia tay mặc dù một số tùy chọn cho việc này có sẵn. Tôi sẽ đề nghị thay vì chạy quitđể thoát khỏi thiết bị đầu cuối chia tay và sau đó sử dụng mkfsđể định dạng các phân vùng. Hãy nhớ chạy 'mkfs' trên / dev / sda1 thay vì / dev / sda vì bạn đang định dạng phân vùng chứ không phải toàn bộ đĩa.

Đó là về nó.

Tôi mong bạn trả lời câu hỏi này.

Ngoài ra, đây là hướng dẫn chia tay trực tuyến để tham khảo: https://www.gnu.org/software/parted/manual/html_node/index.html

BIÊN TẬP:

OP muốn làm điều này từ một kịch bản chứ không phải từ một thiết bị đầu cuối. Bạn có thể thực hiện cùng một loại thủ tục thông qua một tập lệnh bằng cách chạy parted thông qua các lệnh dòng đơn thay vì trong terminal terminal.

Ví dụ lệnh

$ sudo parted /dev/sda print

Sẽ in thông tin ổ đĩa và bảng phân vùng lên bàn điều khiển bash, sau đó có thể được thao tác bằng grep vv để tạo biến hoặc bất cứ điều gì bạn muốn trong tập lệnh bash.


tôi cần nó tự động từ một tập lệnh không thủ công từ thiết bị đầu cuối
c33s

Đợi bài viết gốc của bạn không đề cập đến một kịch bản. Phần nào của điều này là kịch bản? Tôi nghĩ rằng bạn có thể chạy các lệnh chia tay mà không cần đi vào thiết bị đầu cuối chia tay. Tôi không chắc chắn về điều đó mặc dù.
KroniK907

Chỉ cần xác nhận, bạn có thể chạy parted từ các lệnh dòng đơn. Ví dụ parted /dev/sda printsẽ in ra bảng phân vùng cho / dev / sda. Bạn có thể làm điều tương tự mà tôi mô tả ở trên chỉ với các lệnh dòng đơn nếu bạn cần thực hiện trong tập lệnh bash.
KroniK907

Nhưng tôi phải biết tên của thiết bị sẽ là gì để sử dụng lệnh. parted /dev/sdaTôi cũng phải biết có bao nhiêu phân vùng trên ổ đĩa để gọi rm 1, tôi đang tìm một lệnh để làm sạch đĩa, vì vậy tôi có thể phân vùng lại nó, mà không làm tất cả các công cụ thủ công để tắt md's loại bỏ lv và như vậy.
c33s

1) bạn vẫn phải biết tên của thiết bị sẽ chạy lệnh dd ... không chắc bạn đang nhận được gì ở đó. Chỉ cần grep qua dfnếu ổ đĩa được gắn kết. Làm thế nào để bạn có kế hoạch tạo ra một "kịch bản" nếu bạn không thể có được vị trí của ổ đĩa? 2) đủ dễ dàng để chạy parted $drive printvà grep kết quả để tìm tất cả các số phân vùng có sẵn và sau đó lưu trữ chúng trong một mảng. Sau đó sử dụng các giá trị đó để chạy parted $drive rm $partition. Tất cả những thứ này là kịch bản bash khá đơn giản.
KroniK907

0

Sử dụng phiên bản fdisk không tương tác được cải tiến, đó là sfdisk

Để xóa bảng phân vùng, sử dụng lệnh này:

sfdisk --delete /dev/sda

0

Về cơ bản, lỗi này

Lỗi: Phân vùng 1 trên / dev / sdc đã được viết, nhưng chúng tôi không thể thông báo cho kernel về sự thay đổi, có thể là do nó / chúng đang được sử dụng. Do đó, (các) phân vùng cũ sẽ vẫn được sử dụng. Bạn nên khởi động lại ngay bây giờ trước khi thực hiện các thay đổi tiếp theo.

hiển thị khi bạn bỏ lỡ một số tham số trong khi phân vùng đĩa của bạn. Bạn có thể khắc phục lỗi này bằng cách xem xét kỹ các tham số mà bạn đã xác định trong khi phân vùng.

Sử dụng: fdisk -lđể kiểm tra các thông số của đĩa của bạn:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.