Cách sử dụng Cygwin để sao chép hình ảnh từ thẻ nhớ SD


30

Tóm lại, tôi đang làm việc trên máy Windows 7 và tôi muốn loại bỏ hình ảnh khỏi thẻ SD (sao lưu thẻ từ Raspberry Pi ). Tôi đang cố gắng sử dụng Cygwin , nhưng không có nhiều thành công.

Kiểm tra /devthư mục, có vẻ như thẻ SD của tôi đang hiển thị sddsdd1. Tuy nhiên, khi tôi chạy lệnh sau:

dd if=/dev/sdd of=RPi.img

Tôi nhận được như sau:

dd: mở '/ dev / sdd': Quyền bị từ chối

Tôi đã sử dụng dd trên máy Mac và trong Linux mà không gặp vấn đề gì, sử dụng cú pháp tương tự. Tôi còn thiếu gì với Cygwin?


Bạn đã thử dd if=/dev/sdd1 of RPi.imgchưa
Kruug

Nếu tôi làm điều đó, tôi chỉ nhận được một tệp ~ 59 MB từ Thẻ nhớ SD 4 GB. Về cơ bản, tôi chỉ nhận được phần thẻ mà Windows "nhìn thấy" khi bạn lắp thẻ vào đầu đọc. Đây không phải là hình ảnh đầy đủ.
GrandAdmirus

Bạn có thể sử dụng máy Linux hoặc Linux LiveCD thay vì thử trong Windows không?
Kruug

Các máy ảo Linux dường như không thấy Thẻ nhớ SD (đã dùng thử VMware Player và VirtualBox) vì tôi đang sử dụng trình đọc nội bộ trên máy tính xách tay. Sau đó, để tắt nó .... Tôi cũng không có ổ ghi CD trong máy tính xách tay. :) Tôi có một máy Mac ở nhà mà tôi có thể sử dụng, tôi chỉ cố gắng tìm thứ gì đó phù hợp với tình hình hiện tại của mình .... và tìm hiểu xem nó có khả thi không. Có vẻ như cygwin nên đã làm việc.
GrandAdmirus

4
Tôi thấy rằng tôi cũng có thể sử dụng 'cat / Proc / phân vùng' để lấy tên của Thẻ nhớ SD đính kèm.
GrandAdmirus

Câu trả lời:


27

Bạn nhận được Permission deniedlỗi, bởi vì bạn không root. Nghe có vẻ lạ trong bối cảnh của Cygwin, nhưng nó trở về nhà.

Khi bạn truy vấn trạng thái của bạn ( id) trong trình bao Cygwin thường khởi động, bạn sẽ nhận được một cái gì đó như thế:

$ id
uid=1001(user) gid=545(Users) groups=545(Users),555(Remote Desktop Users),513(None)
$ dd if=/dev/sda bs=1000 count=1 | wc -c
dd: opening `/dev/sda': Permission denied
0

Trong Windows 7, mẹo để trở thành rootCygwin là bắt đầu phiên nâng cao , nghĩa là nhấp chuột phải vào biểu tượng Cygwin của bạn và chọn Run as Administrator . Bây giờ bạn vẫn không phải là rootchính nó, nhưng ít nhất là trong rootnhóm của:

$ id
uid=1001(user) gid=545(Users) groups=545(Users),0(root),544(Administrators),555(Remote Desktop Users),513(None)

Và bây giờ, ddhoạt động như bạn đã quen với nó từ Un * x:

$ dd if=/dev/sda bs=1000 count=1 | wc -c
1+0 records in
1+0 records out
1000 bytes (1.0 kB) copied, 0.00104424 s, 958 kB/s
1000

Rất thú vị, và điều đó làm việc. Cảm ơn! Mặc dù cả phương pháp này và Công cụ hình ảnh USB đều cung cấp giải pháp, tôi sẽ chấp nhận câu trả lời này vì nó liên quan trực tiếp hơn đến câu hỏi ban đầu của tôi.
GrandAdmirus

Tôi không phải là thành viên của root theo cách này. Có gì thay đổi không?
Pysis

1
@Pysis: Tôi vẫn có thể trở thành root theo cách này với phiên bản cygwin hiện tại ( CYGWIN_NT-6.1-WOW 2.7.0 (0.306 / 5/3) 2017/02/12 13:13 i686 Cygwin ) kể từ bản cập nhật hôm nay. Có lẽ stackoverflow.com/q / 4090495 trên SO có thể giúp ích cho bạn?!
mpy

Có vẻ như tôi có 2.6.1 từ cygwin1.dll ( cygcheck). Tôi không nhận được "0 (root)", nhưng tôi nhận được "114 (Tài khoản cục bộ và thành viên của nhóm Quản trị viên"), "544 (Quản trị viên)" và "405504 (Cấp độ bắt buộc cao)" thay vì "401408 ( Mức bắt buộc trung bình) "trên hệ thống Windows 10 Pro x64-bit của tôi. Bối cảnh là tôi muốn chạy fdisk, nhưng dường như vẫn không giúp được gì, mặc dù tôi có thể chạy các công cụ khác với quyền truy cập đặc quyền tốt, chẳng hạn như ddtrên tệp luồng thiết bị khối, chỉ tò mò ở đây.
Pysis

@Pysis: Điều này có liên quan đến W10?! - Thật không may, tôi chỉ có thể suy đoán khi tôi sử dụng W7 mà thôi.
mpy

11

Gần đây tôi đã phải sao chép một ổ USB sang ổ khác trên windows. Ổ đĩa của tôi là một multiboot với phần mềm bổ sung, vì vậy tôi không muốn sao chép tất cả các tệp trên FS. DD là một lựa chọn rõ ràng, nhưng tôi không có trên linux nên có một vài điều tôi phải làm để nó hoạt động.

Tôi đã cài đặt Cygwin và làm như sau.

đầu tiên tôi phải tìm ra thiết bị / dev / sdX của tôi là gì. Để làm như vậy chạy lệnh này trong cygwin. (MIPO: Đảm bảo bạn bắt đầu cygwin với quyền riêng tư của quản trị viên .. * Nhấp chuột phải vào cygwin và "Chạy với tư cách quản trị viên")

    cat /proc/partitions
which should output:
   8 0 3813383838 sda
   8 1       4031 sda3 C:\
   8 15  30588303 sdb 
   8 15  30588303 sdb1 E:\
   8 21  30530020 sdc
   8 22  30530020 sdc1 F:\

vv ... Ở đây bạn có thể thấy rõ ràng để tôi sao chép ổ F: ổ đĩa của mình sang ổ E: Tôi sẽ đưa ra lệnh sau.

Thực tế còn một bước nữa, bạn phải tìm ra root thiết bị của mình. Hãy tìm một sd * có kích thước của thiết bị của bạn. Điều này có thể dễ dàng vì kích thước nên được biết đến như 8GB, 16GB, 32GB được mở rộng dưới dạng byte như hình trên.

dd if=/dev/sdc of=/dev/sdb bs=8M

Hình ảnh của tôi là 32gb .. và tôi không muốn chỉ ngồi và chờ đợi với một con trỏ nhấp nháy .. Tôi muốn xem tiến trình nên tôi đã cài đặt "pv" trong cygwin.

dd if=/dev/sdc | pv | dd of=/dev/sdb bs=8M

Bây giờ nếu bạn muốn sao chép ngón tay cái vào một hình ảnh, hãy làm như sau.

dd if=/dev/sdX | pv | dd of=/cygdrive/c/Users/Myname/Desktop/mythumbdrive.img bs=8M

Hi vọng điêu nay co ich


2

Một cái gì đó như USB Image Tool sẽ làm gì?
Hoặc, bạn có khăng khăng sử dụng Cygwin? ...


Không khăng khăng sử dụng Cygwin. Công cụ đó hơi lạ khi hiển thị Thẻ nhớ SD (đôi khi thông tin sẽ biến mất, nhưng có lẽ đó là Windows đang làm gì đó) nhưng nó dường như hoạt động và nó THỰC SỰ NHANH CHÓNG. Tôi có một tệp 4 GB đang ngồi trên máy tính của mình, đó là kích thước tôi mong đợi. Tôi nghĩ rằng tôi sẽ khác nó với một phiên bản từ lệnh 'dd' thực tế chỉ để đảm bảo. NẾU có vẻ tốt, tôi sẽ chấp nhận câu trả lời của bạn. Cảm ơn!
GrandAdmirus

Chà, các tập tin không khớp nhưng đó có thể là lỗi của tôi. Tôi nghĩ rằng tôi đã khởi động RPi sau khi lấy hình ảnh đầu tiên, không nghĩ về nó. Chà, ít nhất tôi có bản sao lưu mà tôi muốn bây giờ và tôi có một công cụ để thử nghiệm trên con đường hoạt động trong Windows. Trường hợp xấu nhất tôi sẽ lái xe về nhà và sử dụng máy tính / HĐH lành mạnh. :)
GrandAdmirus

2

Tôi đã thành công với dd cho Windows , mà tôi tin là viết lại chứ không phải là một cổng. Đó là nguồn mở và không dựa vào Cygwin.

Tôi đặc biệt thích dd --listlệnh, trong đó liệt kê tất cả các thiết bị đĩa cùng với đủ thông tin để xác định cái tôi muốn.


1

HDD Raw Copy Tool có thể tạo các bản sao của thẻ SD. Nếu bạn chọn "Ảnh thô (ảnh dd)" trong hộp thoại lưu thì nó sẽ giống hệt với ảnh được tạo bằng dd. Bạn có thể khôi phục hình ảnh quá.

Tôi biết điều đó không được thực hiện thông qua cygwin, nhưng cá nhân tôi sẽ không tin tưởng vào việc truy cập các thiết bị thô.


Nơi nào bạn có tùy chọn để lưu một hình ảnh thô? Tôi đã thấy nơi bạn có thể chọn nguồn (Thẻ nhớ SD) và đích (HDD), nhưng sau đó chỉ có một nút Bắt đầu. Vì không rõ chuyện gì sẽ xảy ra tiếp theo, tôi đã rời khỏi chương trình.
GrandAdmirus

Trước tiên, bạn bấm đúp vào ổ đĩa của bạn, sau đó trên màn hình tiếp theo, bạn bấm đúp vào tùy chọn "Tệp" nơi bạn có thể chọn nơi lưu hình ảnh.
yuikonnu

0

Tôi thấy rằng RaspberryPi.org hiện đang đề xuất Win32 Disk Imager để ghi hình ảnh vào Thẻ nhớ SD. Nó cũng sẽ đọc hình ảnh từ thẻ, vì vậy tôi đang dùng thử ngay bây giờ.


Tôi từ chối chạm vào cái đó vì có báo cáo về việc làm hỏng đĩa hệ thống của bạn. Hiếm, nhưng nó phụ thuộc vào phần cứng và tôi sẽ không mạo hiểm.
tjmoore
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.