Có cách nào để khởi động từ ổ cứng ngoài được kết nối với thiết bị thông qua cổng USB (trái ngược với khởi động từ thẻ SD) không?
Có cách nào để khởi động từ ổ cứng ngoài được kết nối với thiết bị thông qua cổng USB (trái ngược với khởi động từ thẻ SD) không?
Câu trả lời:
Bây giờ, gần năm năm sau khi tác giả ban đầu hỏi câu hỏi này,
Raspberry Pi chính thức hỗ trợ khởi động từ thiết bị lưu trữ dung lượng lớn USB .
Tuy nhiên, điều này chỉ được hỗ trợ cho Raspberry Pi 3 . Đây là lý do tại sao:
Có thể khởi động Pi 1 hoặc Pi 2 bằng MSD không?
Không may măn. Mã khởi động chỉ được lưu trữ trong thiết bị BCM2837, do đó, Pi 1, Pi 2 và Pi Zero đều sẽ yêu cầu thẻ SD.
Không thể khởi động RPi từ USB trực tiếp theo nghĩa thực sự của từ này. Tuy nhiên, không có gì ngăn cản ai đó tạo một bản phân phối nhỏ có chứa / khởi động và một loại trình quản lý khởi động. Điều này sau đó có thể thực hiện khởi động từ USB hoặc thậm chí là môi trường kiểu PXE. Điều này có thể phù hợp với một thẻ SD nhỏ - thẻ 64 MB hiện có sẵn cho đồng xu. Tôi hy vọng rằng ai đó sẽ tung ra một bản phân phối cho việc này - nhưng chưa tìm thấy một bản nào cho đến nay.
Trong khi đó, bạn có thể di chuyển phân vùng gốc của mình vào đĩa cứng để có thời gian khởi động nhanh hơn, nhưng điều đó phần nào liên quan vì bạn sẽ cần phải có một hạt nhân hỗ trợ lưu trữ USB. Hướng dẫn tốt về cách làm điều này có thể được tìm thấy tại: http://mitchtech.net/raspberry-pi-root-fs-on-usb-drive/
Từ Raspberry Pi FAQ :
Bạn phải khởi động từ SD nhưng USB HD có thể chiếm quyền điều khiển sau khi khởi động ban đầu. Bạn không thể khởi động mà không có thẻ SD.
Thật vậy, nếu bạn có thể sống chỉ với phân vùng SD MS-DOS (/ boot) nơi hạt nhân cư trú, bạn có thể có / root và mọi thứ khác trên thiết bị bên ngoài. Thẻ nhớ USB hoặc ổ cứng vật lý đều tốt như ổ đĩa thứ cấp. Điều tốt là trừ khi bạn 'dd' đến vị trí sai, đây là một quy trình không phá hủy: một chỉnh sửa và bạn quay lại bản gốc,
Để thiết lập cấu hình này là khá dễ dàng. Bạn định cấu hình cài đặt của mình như bình thường và di chuyển / sao chép phân vùng EXT4 sang ổ đĩa ngoài.
Sử dụng fdisk
phân vùng '' ổ đĩa thứ cấp đã chọn của bạn, tạo một phân vùng có cùng kích thước hoặc lớn hơn mmcblk0p2 hiện tại của bạn (hoặc mmcblk0p5). Lưu cấu hình mới.
Tìm tên phân vùng, trong mẫu này, '/ dev / sda5', tuy nhiên, phân vùng này sẽ phụ thuộc vào cấu hình của bạn.
Sao chép phân vùng đang chạy (lưu ý: không nên sao chép phân vùng đang chạy, một số tệp ở trạng thái 'không ổn định' hoặc mở, tuy nhiên, hoạt động tốt):
dd if=/dev/mmcblk0p2 of=/dev/sda5 bs=10M
bây giờ, chỉnh sửa dòng sau trên tệp /boot/cmdline.txt và sửa đổi vị trí 'root':
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Để dòng mới này.
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda5 rootfstype=ext4 elevator=deadline rootwait
Lưu ý rằng phân vùng khởi động là MS-DOS, vì vậy nếu bạn phải sửa, bạn có thể gắn SD ở nơi khác và chỉnh sửa. Nếu khởi động thất bại, trình tải sẽ hiển thị trên màn hình (HDMI) của bạn các điểm lắp có sẵn.
Thiết lập này phụ thuộc vào thứ tự gắn kết. Số phân vùng có thể thay đổi nếu thiết bị được gắn trên một khe khác; bạn có thể làm cho vị trí này độc lập như sau.
Tìm thiết bị 'UUID'
blkid /dev/sda5
/dev/sda5: UUID="13d368bf-6dbf-4751-8ba1-88bed06bef77" TYPE="ext4"
hoặc tạo một cái mới
tune2fs -U random /dev/sda5
và nhận được tên mới được gán
blkid /dev/sda5
/dev/sda5: UUID="25b6aa72-ddc4-485e-8044-900ac24d662b" TYPE="ext4"
sau đó chỉnh sửa cmdline.txt đã sửa đổi trước đó thay đổi vị trí gốc thành:
root=UUID=25b6aa72-ddc4-485e-8044-900ac24d662b
Sau khi khởi động cấu hình mới, hãy chỉnh sửa fstab, xóa ghi chú cũ / mmcblk0p2: Đây là một tệp sẽ nằm trên 'new' / root device
Thay thế / dev / mmcblk0p% (% là phân vùng linux)
nano /etc/fstab
UUID=25b6aa72-ddc4-485e-8044-900ac24d662b ...
Trong raspbian, chỉ cần thay đổi root
cờ trong /boot/cmdline.txt
để root=/dev/sdaX
nơi X
là số của phân vùng thích hợp.
Để biết chi tiết về cách tải raspbian trên usb của bạn, v.v., bạn có thể kiểm tra tại đây http://blog.krastanov.org/2014/01/30/boote-pi-reliably-from-usb/
Tôi thay vì sử dụng các cửa sổ cho 100% sáng tạo.
Tôi đã sử dụng (miễn phí) 'Trình quản lý phân vùng MiniTool' và chỉ cần chuyển khởi động sang thẻ SD nhỏ nhất của tôi, có thể tự động mở rộng với trình quản lý phân vùng. Mở cmdline.txt
và thay đổi thành root=/dev/sda5
.
Trình quản lý phân vùng tương tự cho phép tôi sao chép ext4 sang 1TB di động của mình (FYI xóa tất cả các phân vùng khỏi ổ đĩa trước để bạn có không gian không phân vùng trước khi chuyển). Vala - khởi động. Tôi nhận thấy với ổ cứng tiêu chuẩn, thời gian truy cập hơi thiếu mặc dù chúng có tốc độ R / W rất nhanh so với hầu hết các thẻ SD.
Vấn đề duy nhất hiện tại tôi đang mở rộng phân vùng ext4 (root) từ 32GB gốc (của thẻ SD gốc của tôi). Vì vậy, hiện tại tôi chỉ có 32GB trong số 1TB. Hừm. Tôi chỉ là người mới với thiết bị đầu cuối và các lệnh của nó vì vậy phân vùng trong linux hơi khó hiểu, nhưng hướng dẫn này đã giúp RẤT tốt.