Bạn thường khởi động Raspberry Pi từ thẻ SD (micro). Nhưng đôi khi điều đó không thuận lợi như vậy. Gần đây, các nhà phát triển của dòng máy tính mini đã bổ sung thêm hai chế độ khởi động mới: USB và Network. Với chế độ USB, bạn khởi động Raspberry Pi từ hệ điều hành trên thẻ USB hoặc ổ cứng mà bạn kết nối qua USB.
Với chế độ mạng, bạn thậm chí không cần thiết bị lưu trữ cục bộ: Raspberry Pi tải hệ điều hành của nó qua mạng từ một máy tính khác. Bằng cách này, bạn cũng có thể dễ dàng khởi động nhiều Raspberry Pis thông qua hệ điều hành trên máy tính trung tâm. Nếu bạn cập nhật hệ điều hành trung tâm đó, tất cả Raspberry Pis của bạn sẽ tự động chạy phiên bản mới nhất.
01 Chế độ khởi động thử nghiệm
Các chế độ khởi động mới là thử nghiệm và được phát triển cho Raspberry Pi 3. Mã khởi động cần thiết cho việc này nằm trong BCM2837: bộ xử lý của Raspberry Pi 3. Nếu bạn có Raspberry Pi 1, 2 hoặc Zero, bạn cũng có thể sử dụng sử dụng các chế độ khởi động mới, nhưng theo cách vòng vo: định dạng thẻ sd với fat32, sao chép tệp bootcode.bin vào thẻ và khởi động Pi của bạn từ thẻ này. Điều đó có thể không hoàn tất nếu không có thẻ SD, nhưng bạn có thể khởi động Pi của mình từ USB hoặc mạng.
02 Sự cố có thể xảy ra với USB
Khởi động từ USB không phải lúc nào cũng hoạt động. Ví dụ: một số thanh USB bật quá chậm. Ổ cứng gắn ngoài cũng không phải lúc nào cũng phản hồi trong vòng hai giây, thời gian mã khởi động chờ theo mặc định. Bạn có thể tăng thời gian chờ đó lên năm giây, nhưng một số ổ đĩa thậm chí còn chưa sẵn sàng. Các thanh USB khác có các yêu cầu rất cụ thể đối với giao thức truyền thông mà mã khởi động Raspberry Pi 3 (giới hạn ở 32 kB ROM) không đáp ứng được. Vì vậy, bạn có thể phải thử một số đĩa.
03 Nâng cấp Firmware
Chúng tôi giả sử bạn đang chạy Raspbian trên Raspberry Pi của mình. Nếu không, hãy tải xuống một hình ảnh và đặt nó vào thẻ SD bằng chương trình Win32DiskImager và khởi động Pi từ đó. Đầu tiên, hãy làm mới tất cả các kho lưu trữ bằng sudo apt-get cập nhật. Nếu bạn đang chạy Raspbian Lite (phiên bản không có giao diện đồ họa), trước tiên hãy chạy sudo apt-get cài đặt bản cập nhật rpi vì phiên bản Raspbian tối thiểu đó không có gói cập nhật rpi. Sau đó cập nhật chương trình cơ sở từ 'chi nhánh tiếp theo 'với sudo BRANCH = rpi-update tiếp theo.
04 Bật chế độ USB
Mở tệp cấu hình khởi động bằng sudo nano /boot/config.txt và thêm lệnh program_usb_boot_mode = 1 đến cuối cùng. Lưu tệp bằng Ctrl + O và thoát nano bằng Ctrl + X. Khởi động lại Pi của bạn với khởi động lại sudovà sau khi khởi động lại, hãy đảm bảo rằng chế độ USB đã được bật. Bạn làm điều đó với lệnh vcgencmd otp_dump | grep 17:, sẽ trả về một số kết thúc bằng 0x3020000a. Sau đó mở lại tệp cấu hình khởi động và xóa lệnh program_usb_boot_mode = 1, vì vậy bạn không vô tình bật chế độ khởi động USB trên một Pi khác mà bạn lắp thẻ SD này vào.
05 Phân vùng lưu trữ USB
Bây giờ hãy kết nối thiết bị lưu trữ USB với Pi của bạn. Phân vùng thiết bị này với sudo chia tay / dev / sda. Tạo một bảng phân vùng mới với mktable msdos và xác nhận với đúng mà bạn muốn hủy tất cả dữ liệu trên đĩa. Sau đó, tạo một phân vùng fat32 100 megabyte với mkpart chất béo chính32 0% 100M và một phân vùng ext4 chiếm phần còn lại của đĩa với mkpart chính ext4 100M 100%. Xem các thay đổi bằng bản in và đóng lại với từ bỏ. Sau đó, tạo hệ thống tệp khởi động với sudo mkfs.vfat -n BOOT -F 32 / dev / sda1 và hệ thống tệp gốc với sudo mkfs.ext4 / dev / sda2.
06 Bản sao Raspbian
Cài đặt chương trình rsync với sudo apt-get install rsync. Sau đó, tạo một thư mục mới với sudo mkdir / mnt / usb và gắn kết hệ thống tệp ext4 của bộ lưu trữ USB trên đó với sudo mount / dev / sda2 / mnt / usb /. Sau đó, tạo một thư mục khởi động với sudo mkdir / mnt / usb / boot và gắn kết hệ thống tệp khởi động trên đó với sudo mount / dev / sda1 / mnt / usb / boot /. Bây giờ sao chép hệ thống Raspbian bạn đang chạy từ thẻ SD vào hệ thống tệp trên bộ lưu trữ USB của bạn. Bạn làm điều đó với lệnh sudo rsync -ax --progress / / boot / mnt / usb. Hãy kiên nhẫn vì nó có thể mất một lúc.
07 Chroot
Bộ lưu trữ USB hiện chứa một bản sao Raspbian đang chạy của bạn, nhưng không phải mọi thứ đều giống hệt nhau. Ví dụ, hệ thống mới cần các khóa ssh khác nhau. Do đó, hãy chuyển đến bộ lưu trữ USB với cd / mnt / usb và gắn kết một số hệ thống tệp đặc biệt với sudo mount --bind / dev dev, sudo mount --bind / sys sys và sudo mount --bind / proc proc. Sau đó, nhập một trình duyệt Chrome (thay đổi gốc) ra với sudo chroot .. Tất cả các lệnh bạn thực hiện bây giờ sẽ được thực thi trong hệ thống trên bộ lưu trữ USB, không còn trong hệ thống trên thẻ SD.
08 khóa ssh mới
Bây giờ bạn là người dùng root trong chroot. Đầu tiên, xóa các khóa ssh hiện có vì đó là những khóa chúng tôi đã sao chép từ hệ thống của thẻ sd. Bạn làm điều đó với rm / etc / ssh / ssh_host *. Sau đó, tạo các khóa ssh mới bằng cách định cấu hình lại máy chủ OpenSSH với dpkg-cấu hình lại máy chủ openssh. Sau đó, thoát khỏi chroot với lối ra. Tất cả các lệnh bạn thực hiện bây giờ sẽ được thực thi lại trong hệ thống trên thẻ SD. Sau đó, ngắt kết nối các hệ thống tệp đặc biệt với sudo umount dev, sudo umount sys và sudo umount proc.
09 Tùy chỉnh hệ thống tệp gốc
Bây giờ hãy đảm bảo Pi đang sử dụng hệ thống tệp gốc trên bộ lưu trữ USB thay vì hệ thống trên thẻ SD. Vì vậy, bạn sửa đổi tệp /boot / cmdline.txt trên với sudo sed -i "s, root = / dev / mmcblk0p2, root = / dev / sda2,"/mnt/usb/boot/cmdline.txNS. Làm tương tự trong tệp / etc / fstab: sudo sed -i "s, / dev / mmcblk0p, / dev / sda," / mnt / usb / etc / fstab. Sau đó, truy cập thư mục chính của bạn với cd, ngắt kết nối hệ thống tệp khỏi bộ lưu trữ usb với sudo umount / mnt / usb / boot và sudo umount / mnt / usb và tắt Pi với sudo poweroff. Rút cáp nguồn, tháo thẻ SD và cắm lại cáp nguồn. Nếu mọi việc suôn sẻ, Pi của bạn bây giờ sẽ khởi động từ bộ lưu trữ USB của bạn.