RPi 4: Boot config và recovery

Trên RPi 4, có thể xem cấu hình hiện tại trong EEPROM bằng câu lệnh

vcgencmd bootloader_config

Các tham số trên đều có thể thay đổi.

Các bước là trích ra đoạn cấu hình từ bootloader, sửa đổi tham số tùy nhu cầu, chèn lại vào file bootloader, rồi lập trình lại EEPROM. Cuối cùng reboot RPi để cấu hình mới có hiệu lực.

# Trích thông tin cấu hình từ file bootloader vào /tmp/bootconf.txt
rpi-eeprom-config /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin > /tmp/bootconf.txt

# Sửa đổi cấu hình, thí dụ bằng nano /tmp/bootconf.txt
# Lưu file cấu hình

# Chèn lại vào file bootloader
rpi-eeprom-config --out /tmp/pieeprom.bin --config /tmp/bootconf.txt /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin

# Flash bootloader mới vào EEPROM
sudo rpi-eeprom-update -d -f /tmp/pieeprom.bin

# Reboot RPi
sudo reboot

Tham số cấu hình bootloader

BOOT_UART

=1 cho phép UART debug output trên GPIO 14 và 15 (115200bps, 8 bits, no parity bits, 1 stop bit).
Default: 0
Version: All

WAKE_ON_GPIO

Nếu 1 ‘sudo halt‘ chạy ở mode năng lượng thấp nhất cho đến khi GPIO3 hoặc GLOBAL_EN được nối đất.
Default: 0 trong phiên bản gốc của bootloader (2019-05-10). Ở phiên bản mới hơn là 1.
Version: All

POWER_OFF_ON_HALT

Nếu 1 và WAKE_ON_GPIO=0 thì tắt hết PMIC outputs khi halt (shotdown). Đây là mode sử dụng năng lượng thấp nhất khi halt, có thể gâp lỗi với một số thiết bị HATs vì 5V vẫn còn. GLOBAL_EN phải được nối đất khi boot.
Default: 0
Version: 2019-07-15

FREEZE_VERSION

1: rpi-eeprom-update sẽ không tự động cập nhật trên board RPi. Tham số này không có tác dụng với EEPROM bootloader hoặc recovery.bin bởi vì bằng phần mềm không thể hoàn toàn chống ghi lên EEPROM. EEPROM update scripts cũng phải kiểm tra flag này.
Default: 0
Version: All

BOOT_ORDER

BOOT_ORDER cho phép cấu hình thứ tự các bootmode khác nhau. Đây là số nguyên không dấu 32 bit, mỗi ký số (không phải bit) biểu diễn một bootmode, bắt đầu từ kí số thấp nhất.

Thí dụ:

  • 0x21 nghĩa là thử SD trước rồi đến network boot, rồi dừng.
  • 0x2 thử network boot rồi dừng.

Bộ đếm được đặt lại khi chuyển sang boot mode kế tiếp.

BOOT_ORDER fields
BOOT_ORDER xác định thứ tự boot, được đọc từ phải sang trái, tối đa 8 ký số.

  • 0x0 – NONE (dừng khi gặp lỗi)
  • 0x1 – SD CARD
  • 0x2 – NETWORK
  • 0x3 – USB device boot (usbboot)[https://github.com/raspberrypi/usbboot] – Compute Module only.
  • 0x4 – Thiết bị lưu trữ USB
  • 0xf – RESTART (loop) – khởi động lại với thiết bị boot đầu tiên.

Default: 0x1
Version: pieeprom-2020-04-16.bin

Với pieeprom-2020-05-15.bin – BETA

  • Boot mode 0x0 sẽ thử SD boot nếu có SD card hoặc thay đổi SD card.
  • Boot mode mặc đinh là 0xf41, nghĩa là thử boot liên tục SD, rồi đến thiết bị lưu trữ USB.

MAX_RESTARTS

Nếu RESTART (0xf) boot mode khởi động lại nhiều hơn MAX_RESTARTS lần thì watchdog reset được gọi. Nói chung không khuyến khích dùng, nhưng hữu dụng khi test hay với hệ thống đàng xa mà cần reset hoàn toàn để giải quyết vấn đề phần cứng hay mạng.

Default: -1 (infinite)
Version: pieeprom-2020-05-15.bin – BETA

SD_BOOT_MAX_RETRIES

Số lần tối đa bootloader thử boot từ SD card.
-1 nghĩa là vô hạn
Default: 0
Version: pieeprom-2020-04-16.bin

NET_BOOT_MAX_RETRIES

Số lần tối đa bootloader thử boot từ network.
-1 nghĩa là vô hạn
Default: 0
Version: pieeprom-2020-04-16.bin

DHCP_TIMEOUT

Timeout tính bằng milli giây
Default: 45000
Minimum: 5000
Version: pieeprom-2020-04-16.bin

DHCP_REQ_TIMEOUT

Timeout tính bằng milli giây trước khi thử DHCP DISCOVER hay DHCP REQ.
Default: 4000
Minimum: 500
Version: pieeprom-2020-04-16.bin

TFTP_TIMEOUT

Timeout tính bằng milli giây cho một file được tải về qua TFTP.
Default: 15000
Minimum: 5000
Version: pieeprom-2020-04-16.bin

TFTP_IP

Địa chỉ IP (e.g. “192.168.1.99”) cho TFTP server thay cho IP nhận được từ DHCP.

Default: “”
Version: pieeprom-2020-04-16.bin

Cấu hình IP tĩnh

Nếu TFTP_IP và các options sau được đặt thì DHCP được bỏ qua và IP tĩnh sẽ được dùng. Nếu TFTP server trên cùng một subnet với client thì GATEWAY có thể bỏ qua.

CLIENT_IP

IP của client e.g. “192.168.0.32”
Default: “”
Version: pieeprom-2020-04-16.bin

SUBNET

Subnet address mask e.g. “255.255.255.0”
Default: “”
Version: pieeprom-2020-04-16.bin

GATEWAY

Địa chỉ gateway nếu TFTP server trên mạng con khác e.g. “192.168.0.1” Default: “”
Version: pieeprom-2020-04-16.bin

Tạo ổ đĩa USB boot được

  • Dùng Raspberry Pi Imager để flash Raspbian cho thiết bị lưu trữ USB. Các OS (distros) khác chưa được test và có thể cần update (thí dụ: u-boot).
  • Tải về các file update cho firmware *.elf *.dat từ Raspberry Pi Firmware Github repo.
  • Cách khác là dùng sudo rpi-update để update firmware trên SD card rồi sao chép file từ đây.
  • Sao chép các cập nhật này tới boot partition trên thiết bị USB. Từ bây giờ sudo rpi-update có thể dùng trong Raspbian trên USB boot device.

Thiết bị USB tương thích

Không có một tập hợp rõ ràng các thiết bị được hỗ trợ. Hãy thử với USB Flash hoặc SSD. HDD có thể cần được cấp nguồn và trong mọi trường hợp cần kiểm tra thiết bị hoạt động đúng với SD card bootmode.

Recovery: Sửa lỗi EEPROM

Nếu RPi 4 không boot được, có thể SPI EEPROM bị lỗi. Để kiểm tra, gở SD card, tắt điện, rồi mở điện. Nếu LED xanh lá không chớp thì đó là dấu hiệu EEPROM đã bị lỗi.

Raspberry Pi Imager là cách đơn giản nhất để sửa lỗi này, bằng cách tạo một SD card để lập trình lại EEPROM của Raspberry Pi 4:

  1. Tải về Raspberry Pi Imager.
  2. Click “CHOOSE OS”, chọn “Misc utility images” rồi “Pi 4 EEPROM boot recovery”.
  3. Gắn SD card, click “CHOOSE SD CARD”, chọn card vừa gắn vào, rồi click “WRITE”.
  4. Gắn recovery SD card vừa tạo vào RPi 4 rồi bật điện.
  5. RPi 4 sẽ tự sửa lỗi. Khi LED xanh lá chớp nhanh thì có thể tắt điện, gở bỏ recovery SD card, dùng RPi như bình thường.

Cách khác. tải về bootloader và tự tạo recovery SD card:

  1. Download the bootloader.
  2. Giải nén vào FAT-formatted SD card rỗng rồi gắn vào RPi 4.
  3. Bật điện rồi chờ đến khi LED xanh lá chớp nhanh.

Comments Off on RPi 4: Boot config và recovery

Filed under Software

Comments are closed.