Khởi động từ thanh / ổ USB ngoài?


44

Tôi biết không thể khởi động trực tiếp từ ổ / ổ USB ngoài, nhưng thay vào đó bạn phải khởi động từ thẻ SD và sau đó thiết bị bên ngoài có thể tiếp quản. Cách dễ nhất và ưa thích để thiết lập tính năng này, do đó khởi động từ thẻ SD và sau đó để một thiết bị bên ngoài tiếp quản?

Câu trả lời:


37

Nếu bạn có một hệ điều hành hiện có đang chạy trên Pi, thì trước tiên, sẽ rất hữu ích nếu bạn biết thiết bị USB có được hỗ trợ hay không. Bạn có thể làm điều này bằng cách gắn nó như bình thường:

mount /dev/sda1 /mnt 

Nếu thất bại thì bạn sẽ không thể sử dụng thiết bị USB làm phân vùng gốc mà không bật các mô-đun hạt nhân cho nó. Và vì điều đó bạn có thể cần phải biên dịch kernel của riêng bạn.

Nếu nó thành công thì nó sẽ hoạt động tốt với một số điều chỉnh các tham số khởi động mà Pi sử dụng:

Trên một hình ảnh hiện có, mở cmdline.txt, có thể được tìm thấy trên phân vùng khởi động và nhập các dòng sau:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text

Tất cả những gì bạn phải làm là flash hình ảnh đó vào thẻ SD và khởi động Pi. Nếu tất cả đều ổn, /dev/sda1nên là vị trí của ổ USB khi Pi khởi động, và do đó nó sẽ cố gắng sử dụng vị trí đó làm root. Các rootwaitthông số rất quan trọng vì nó sẽ làm cho quá trình khởi động treo cho đến khi ổ USB được công nhận. Không có nó, Pi có thể phàn nàn rằng vị trí đó không tồn tại.

Tôi khuyên bạn nên sao chép phân vùng gốc từ hình ảnh Raspberry Pi hiện có vào ổ USB của bạn và sử dụng nó để khởi động từ đó.

Hãy cho tôi biết nếu bạn cần thêm thông tin.


+1 Câu trả lời tuyệt vời. Không nên console=...ở đó?
Alex Chamberlain

2
Ngoài ra, bạn có thể sử dụng UUID trên dòng lệnh không?
Alex Chamberlain

Có, tôi đã cung cấp toàn bộ tệp và bạn đang nói về việc sử dụng UUID ở đâu?
Jivings

3
Cảm ơn bạn rất nhiều Jivings, tôi đã "flash" hình ảnh chính thức vào thanh USB của mình, sau đó sao chép nội dung từ partiiton sang thẻ SD và điều chỉnh cmdline.txt. Trong trường hợp của tôi, phân vùng gốc là / dev / sda2, bởi vì / dev / sda1 là phân vùng khởi động (không sử dụng) trên thanh usb. Tôi không cần rootwait trong trường hợp của tôi, nhưng thật tốt khi biết thông số này!
stefan.at.wpf

@ stefan.at.wpf (và Jivings) Bạn có thể sử dụng UUID thay vì /dev/sdx- ít nhất là trong /etc/fstab/- sau đó không thành vấn đề nếu xthay đổi.
Alex Chamberlain

4

Cách dễ nhất để thiết lập điều này là sử dụng BerryBoot . Nó hỗ trợ cài đặt đến hoặc từ một hoặc nhiều hình ảnh trên thẻ USB (hoặc trên chính thẻ SD) ra khỏi hộp thông qua giao diện GUI đẹp.

Để thiết lập, tất cả những gì bạn phải làm là sao chép ~ 70 MB tệp cài đặt vào thẻ SD được định dạng FAT32, chèn nó vào thiết bị của bạn và khởi động đi. Nó thậm chí còn có một danh sách các hình ảnh được cấu hình sẵn mà nó có thể tự động tải xuống và cài đặt cho bạn qua kết nối ethernet hoặc wi-fi.

Sau đó, bạn chọn HĐH mà bạn muốn được khởi động theo mặc định từ các hình ảnh có sẵn của mình và nếu bạn muốn thêm hình ảnh mới hoặc thay đổi mặc định vào một ngày sau đó, bạn chỉ cần nhấn enter trong quá trình khởi động để cấu hình lại!


di chuyển hình ảnh vào thẻ SD? Tôi nghĩ rằng chúng tôi muốn cài đặt nó trên một thanh USB?
Suhaib

Như OP đã tuyên bố, không thể khởi động trực tiếp một thanh USB trên Raspberry Pi - Bạn cần có thẻ SD với bộ tải khởi động được cài đặt để có thể chuyển quá trình sang thiết bị khác sau khi được cấp nguồn.
Nathan Dunn

2

ok, để làm rõ -

hơn nữa để trả lời @Jivings -

Có một số cách mà bạn có thể tham khảo một đĩa trong fstab. Sử dụng / dev / sdXX có thể không phải lúc nào cũng an toàn, vì thứ tự các đĩa scsi xuất hiện có thể không được đảm bảo.

Những gì tôi không biết, là nếu cấu hình khởi động hiểu bất cứ điều gì ngoại trừ nhãn thiết bị cơ bản. "root = / dev / sda1" tuy nhiên là một sự trừu tượng hóa, vì vậy trong lý thuyết root = LABEL = TEST có thể hoạt động. Tôi cần điều tra.

Tôi xin lỗi nếu tôi không rõ ràng. Tôi đã có một số kỹ năng để làm trong việc giải thích linux cho những người mới, rõ ràng.


1
Jivings: bạn có thể giải thích một số tham số trong ví dụ dòng comand của bạn cho chúng tôi không? Cảm ơn.
Michael Moriarty

Ông không bao giờ đề cập đến fstab. Tên thiết bị / phân vùng đích là một tham số kernel. Tôi tin rằng các quy ước đặt tên khác như UUID là có thể với các hạt nhân hiện đại, đặc biệt nếu chúng có các mô-đun initrd / initramfs.
jiggunjer
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.