Điểm:-1

dd toàn bộ thẻ SD vào một phân vùng trên ổ cứng

lá cờ cn

Câu hỏi cụ thể này có liên quan đến Raspberry Pi, nhưng trên thực tế, đây là một câu hỏi chung.

Vì vậy, tôi có thẻ SD với hệ thống RPI chạy trên đó bao gồm hai phân vùng:

Đĩa /dev/mmcblk0: 59,5 GiB, 63864569856 byte, 124735488 cung
Đơn vị: cung từ 1 * 512 = 512 byte
Kích thước cung (logic/vật lý): 512 byte / 512 byte
Kích thước I/O (tối thiểu/tối ưu): 512 byte / 512 byte
Loại nhãn đĩa: dos
Mã định danh đĩa: 0xf4481065

Khởi động thiết bị Bắt đầu Kết thúc Sector Kích thước Loại Id
/dev/mmcblk0p1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/mmcblk0p2 532480 124735487 124203008 59.2G 83 Linux

Ngoài ra, tôi có một ổ cứng gắn ngoài được kết nối, hoạt động như một bộ lưu trữ dữ liệu hiện bao gồm bốn phân vùng:

Đĩa /dev/sda: 1,8 TiB, 2000398934016 byte, 3907029168 cung
Kiểu đĩa: EZRZ-00Z5HB0    
Đơn vị: cung từ 1 * 512 = 512 byte
Kích thước cung (logic/vật lý): 512 byte / 4096 byte
Kích thước I/O (tối thiểu/tối ưu): 4096 byte / 4096 byte
Loại nhãn đĩa: gpt
Mã định danh đĩa: 9E92BCDF-4CF7-4ECE-ABCD-5B6794FE747E

Thiết bị Bắt đầu Kết thúc Sector Kích thước Loại
/dev/sda1 2048 125831167 125829120 Hệ thống tệp Linux 60G
/dev/sda2 125831168 754976767 629145600 Hệ thống tệp Linux 300G
/dev/sda3 754976768 2331002879 1576026112 751.5G hệ thống tập tin Linux
/dev/sda4 2331002880 3907028991 1576026112 751.5G hệ thống tập tin Linux

Điều tôi muốn làm là chuyển hệ thống RPI của mình từ thẻ SD sang phân vùng đầu tiên của ổ cứng. Tôi có thể sử dụng lệnh sau để sao chép toàn bộ thẻ SD (hai phân vùng) vào phân vùng đầu tiên của ổ cứng không?

dd if=/dev/mmcblk0 of=/dev/sda1 ...

Vì phân vùng đích lớn hơn một chút (các cung 124735488 so với 125829120), tôi hy vọng rằng phân vùng ổ cứng đầu tiên sẽ được chia làm hai (khởi động và root) và tất cả những người khác sda2, sda3, v.v. sẽ vẫn nguyên vẹn. Vì vậy, sau thao tác này, tôi sẽ có thể khởi động từ ổ cứng thay vì thẻ SD (tất nhiên là sau khi kiểm tra tất cả các UUID có thể thay đổi sau khi di chuyển).

AFAIK sẽ ổn thôi, nhưng hiện tại tôi không có khả năng kiểm tra quy trình này. Vì vậy, muốn kiểm tra lại mọi thứ và chắc chắn 100% không làm hỏng toàn bộ hệ thống.

cập nhật Có, tôi hiểu rằng nội dung sda1 sẽ bị hủy vĩnh viễn.

Điểm:2
lá cờ za

Các phân vùng dự kiến ​​​​sẽ không có phân vùng. Đây là hệ thống "một lớp", không phải "cây". Phân vùng sẽ không bị "chia đôi" một cách kỳ diệu, mặc dù nó sẽ chứa một bảng phân vùng hợp lệ. Hạt nhân sẽ không tự động thiết lập các thiết bị khối đặc biệt tương ứng với các phân vùng con đó. Vì vậy, mặc dù bạn chắc chắn có thể kết xuất toàn bộ thiết bị được phân vùng theo từng khu vực vào bất kỳ thứ gì, nhưng bạn phải thực hiện các thao tác thủ công bổ sung để truy cập dữ liệu trên các "phân vùng con" đó (ý tôi là, bạn sẽ cần một vòng lặp và diễn giải bảng phân vùng thủ công thiết lập thiết bị).

Phải nói rằng, lệnh bạn đưa ra chỉ có thể hủy dữ liệu trên /dev/sda1. Nó sẽ không chạm vào sda2, sda3 và như thế. Bạn sẽ không làm hỏng bất cứ điều gì trên chúng, ngay cả khi bạn sda1 không đủ lớn để chấp nhận kích thước đầy đủ của thẻ SD; trong trường hợp đó, dd sẽ dừng lại với một lỗi khi gặp lỗi ở cuối sda1. Nhưng phân vùng của bạn dường như không bị điều này.

ihorc avatar
lá cờ cn
Nhưng lệnh `dd` sao chép các khối thô, vì vậy nó hoạt động "một lớp" bên dưới các phân vùng. Do đó, nó thậm chí không biết nó sao chép (các) phân vùng nào. Vì vậy, theo hiểu biết của tôi, nó sẽ lấy tất cả các khối thẻ SD và đặt chúng vào các khu vực được đánh dấu sda1 của ổ cứng. Ngoài ra, vì nó hoạt động với các khối thô nên không cần thực hiện bất kỳ phân vùng nào trước `dd`. Dù sao thì nó cũng sẽ được viết lại. Mục đích của việc chỉ định phân vùng đích chỉ là để chỉ định phạm vi mà nó có thể ghi vào. Điều này cũng giống như `dd` vào tệp img và sau đó ghi img vào một phân vùng. Tôi có lầm không?
Nikita Kipriyanov avatar
lá cờ za
Bạn đúng rồi. Tôi đã nói chính xác điều tương tự, "bạn có thể kết xuất toàn bộ thiết bị được phân vùng theo từng khu vực thành bất kỳ thứ gì".Vì vậy, tôi đã giải thích rằng bạn sẽ không thể nói khởi động từ ổ cứng này, bởi vì trong khi dữ liệu vẫn ở đó, hệ thống **sẽ không tạo các thiết bị đặc biệt** với các hệ thống tệp thô để gắn kết. Nó sẽ không giải thích một bảng phân vùng trong phân vùng.
ihorc avatar
lá cờ cn
Vì vậy, giải pháp khả dụng duy nhất, trong trường hợp này, là tách sda1 theo cách thủ công (ví dụ: thành sda1 và sda5), sau đó `dd` hai phân vùng tương ứng? `mmcblk0p1->sda1` và `mmcblk0p2->sda5`?
Nikita Kipriyanov avatar
lá cờ za
Thành thật mà nói, tôi chưa bao giờ thử khởi động Raspberry Pi từ thẻ SD. Nếu nó có thể khởi động từ một phân vùng trên USB HDD (tôi tin rằng đây là những gì bạn có), thì vâng, điều đó sẽ hoạt động. Nhưng lưu ý rằng vị trí hệ thống tập tin gốc được lưu trữ trong `cmdline.txt`, vì vậy đừng quên điều chỉnh vị trí đó. Và hãy nhớ rằng Ổ cứng USB có độ trễ lớn hơn nhiều so với thẻ SD, vì vậy hệ thống có thể hiển thị hiệu suất đĩa chậm hơn.
Ginnungagap avatar
lá cờ gu
RaspberryPi không thể khởi động từ ổ cứng, nó sẽ luôn đọc phân vùng khởi động từ thẻ SD. Điều tốt nhất bạn có thể làm là di chuyển phân vùng gốc của mình sang ổ cứng, để lại /boot trên thẻ SD.
ihorc avatar
lá cờ cn
Đo không phải sự thật. Bạn có thể tìm thấy rất nhiều hướng dẫn về cách di chuyển hệ thống Raspberry Pi từ thẻ SD sang ổ cứng HDD/SSD bên ngoài. Thậm chí còn có một cài đặt riêng chịu trách nhiệm về mức độ ưu tiên khởi động https://docs.nextcloudpi.com/en/rpi4-chnage-boot-order. Hoặc `sudo rpi-eeprom-config` nếu bạn thích dòng lệnh hơn. Và, bạn có thể ngạc nhiên, thậm chí còn có chế độ Network Boot. Ít nhất thì điều này đúng với RPI4 với phiên bản bộ tải khởi động rpi-eeprom mới nhất, đối với những người khác thì không biết.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.