xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

How to boot the Raspberry Pi system from a USB Mass Storage Device All In One

How to boot the Raspberry Pi system from a USB Mass Storage Device All In One

如何从 USB 启动树莓派引导系统 / 如何从 USB 大容量存储设备启动 Raspberry Pi 系统

Raspberry Pi 4 Boot Flow

  1. First Stage Bootloader
  2. Second Stage Bootloader

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-boot-flow

# 查看
$ rpi-eeprom-config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0

[all]
BOOT_ORDER=0xf14
# 编辑
$ sudo -E rpi-eeprom-config --edit

image

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration

BOOT_ORDER

image

0xf14 Try USB first, followed by SD then repeat ✅

image

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER

Conditional filters [all]

image

https://www.raspberrypi.com/documentation/computers/config_txt.html#conditional-filters

officail documents

USB Mass Storage Boot

This page explains how to boot your Raspberry Pi from a USB mass storage device such as a flash drive or a USB hard disk.
本页介绍如何从 USB 大容量存储设备(例如闪存驱动器USB 硬盘)启动 Raspberry Pi。

The bootloader in Raspberry Pi 400 and newer Raspberry Pi 4B boards support USB boot by default, although the BOOT_ORDER bootloader configuration may need to be modified.
Raspberry Pi 400 和较新的 Raspberry Pi 4B 板中的引导加载程序默认支持 USB 引导,但可能需要修改 BOOT_ORDER 引导加载程序配置。

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#usb-mass-storage-boot

https://github.com/raspberrypi/documentation/blob/develop/documentation/asciidoc/computers/raspberry-pi/boot-msd.adoc

EEPROM Configuration

$ rpi-eeprom-config
# OR
$ vcgencmd bootloader_config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0

[all]
BOOT_ORDER=0xf14

image

$ sudo rpi-eeprom-update

$ sudo rpi-eeprom-update -a
$ sudo reboot
BOOTLOADER: up to date
   CURRENT: Wed Jan 11 17:40:52 UTC 2023 (1673458852)
    LATEST: Wed Jan 11 17:40:52 UTC 2023 (1673458852)
   RELEASE: default (/lib/firmware/raspberrypi/bootloader/default)
            Use raspi-config to change the release.

  VL805_FW: Using bootloader EEPROM
     VL805: up to date
   CURRENT: 000138c0
    LATEST: 000138c0

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#updating-the-eeprom-configuration

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration

手动刷入系统镜像,并修改配置文件 🚀

简单方便,亲测有效,推荐方式 ✅

image

  1. 设置开机,自动开启 SSH

ssh

创建一个空的 ssh 文件, 文件没有扩展名,放到 U 盘根目录下

  1. 配置默认的 Wi-Fi 信息

wpa_supplicant.conf

# Wi-Fi 配置文件
$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf

image

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
  scan_ssid=1
  ssid="your Wi-Fi name ❓"
  psk="your Wi-Fi password ❓"
  proto=RSN
  key_mgmt=WPA-PSK
  pairwise=CCMP
  auth_alg=OPEN
}

  1. 配置 SSH 登录的用户名密码

userconf.txt

$ cat /boot/userconf.txt

image

pi
raspberry => 加密后 /4g6TptuTP5B6

pi:/4g6TptuTP5B6
  1. 配置 bootloader 的启动模式

config.txt

# 编辑
$ sudo vim /boot/config.txt
$ sudo code /boot/config.txt
# 查看
$ cat /boot/config.txt

otg_mode=1

image

  • SD Card
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
# fix BCM bug ❓
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]

# mini URAT 暂时注释掉 https://www.cnblogs.com/xgqfrms/p/17365120.html#5173367
# dtoverlay=pi3-miniuart-bt
# force_turbo=1

program_usb_boot_mode=1
  • USB Disk
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]

solutions

changing the boot mode / 更改启动模式

warnings ⚠️⚠️⚠️ (太麻烦了,不推荐)

  • U 盘必须要使用 FAT32 格式,最大支持 32 GB
  • 树莓派需先要插入一个烧录了树莓派系统的 SD 卡,才能修改启动模式 💩
  • 树莓派需要有线网络连接,用于从网络下载镜像到 U 盘中 💩💩
  • 树莓派需要连接鼠标、键盘,用于U 盘启动后,从网络的安装镜像到 U 盘中 💩💩💩

image

image

  1. Raspberry Pi Imager (GUI 可视化操作)

Using Raspberry Pi Imager to update the bootloader

This is the recommended route to updating the bootloader.
这是更新引导加载程序的推荐途径。

steps:

  1. Download Raspberry Pi Imager

  2. Select a spare SD card. The contents will get overwritten!

  3. Launch Raspberry Pi Imager

  4. Select Misc utility images under Operating System

  5. Select Bootloader

  6. Select a boot-mode i.e. SD Card Boot (recommended), USB Boot or Network Boot.

  7. Select SD card and then Write

  8. Boot the Raspberry Pi with the new image and wait for at least 10 seconds.

  9. The green activity LED will blink with a steady pattern and the HDMI display will be green on success.

  10. Power off the Raspberry Pi and remove the SD card.

image

image

image

image

image

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#imager

  1. raspi-config (交互式命令行操作)
$ sudo raspi-config

$ sudo reboot
  1. Update Raspberry Pi OS to get the latest version of the rpi-eeprom package.

  2. Run sudo raspi-config

  3. Select Advanced Options

  4. Select Bootloader Version

  5. Select Default for factory default settings or Latest for the latest stable bootloader release.

  6. Reboot

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspi-config

other useful commands

$ pinout
# Pi Model 4B  V1.5

$ lsusb
# Bus 001 Device 003: ID 0951:1665 Kingston Technology Digital DataTraveler SE9

$ cat /etc/hosts
127.0.0.1	localhost
::1		localhost ip6-localhost ip6-loopback
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

127.0.1.1	raspberrypi
$ cd /proc && ls -alth

$ cat /proc/cpuinfo
Revision	: d03115
Serial		: 1000000052e87fab
Model		: Raspberry Pi 4 Model B Rev 1.5

$ cat /proc/version
Linux version 6.1.21-v8+ (dom@buildbot) (aarch64-linux-gnu-gcc-8 (Ubuntu/Linaro 8.4.0-3ubuntu1) 8.4.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023

$ cat /proc/meminfo
MemTotal:        7998788 kB
MemFree:         7124364 kB
MemAvailable:    7564892 kB

$ cat /proc/partitions

temperature

# temperature
$ vcgencmd measure_temp
# temp=50.6'C
$ vcgencmd measure_temp | egrep -o '[0-9]*\.[0-9]*'
# 50.6
$ vcgencmd measure_volts core
# volt=0.8600V

$ vcgencmd measure_clock arm
# frequency(48)=600169920

$ vcgencmd get_mem arm
# arm=947M
$ vcgencmd get_mem gpu
# gpu=76M


$ vcgencmd otp_dump | grep 17
17:000008b0
29:ad178054

$ df -h

# 查看磁盘列表:
$ sudo fdisk -l
Disk /dev/mmcblk0: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes

Disk /dev/sda: 7.22 GiB, 7747397632 bytes, 15131636 sectors
Disk model: DataTraveler 2.0

# 查看 block 块文件挂载信息
$ lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    1  7.2G  0 disk 
|-sda1        8:1    1  256M  0 part /boot
`-sda2        8:2    1    7G  0 part /
mmcblk0     179:0    0 29.7G  0 disk 
|-mmcblk0p1 179:1    0  256M  0 part /media/pi/bootfs
`-mmcblk0p2 179:2    0 29.5G  0 part /media/pi/rootfs

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_GB.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=
$ hostname -I
192.168.18.168 fd80:eae6:1258:0:91a5:54b6:d817:ecc2 
$ cat /etc/rc.local
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

demos

# defualt config ❓
$ cat /boot/config.txt
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]

64GB USB Disk bootloader ✅

# GPU Memory ✅
gpu_mem=100
# $ vcgencmd get_mem gpu
# gpu=100M
# https://www.cnblogs.com/xgqfrms/p/17437862.html
# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# 超频 🚀
# arm_freq=1800
# https://www.cnblogs.com/xgqfrms/p/17428351.html

# USB 启动 ✅
program_usb_boot_mode=1


# $ cat /boot/config.txt
# $ sudo vim /boot/config.txt
# $ vcgencmd otp_dump | grep 17
# 3020000a
# https://www.cnblogs.com/xgqfrms/p/17436522.html


# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable infrared communication.
#dtoverlay=gpio-ir,gpio_pin=17
#dtoverlay=gpio-ir-tx,gpio_pin=18

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

# Automatically load overlays for detected cameras
camera_auto_detect=1

# Automatically load overlays for detected DSI displays
display_auto_detect=1

# Enable DRM VC4 V3D driver
dtoverlay=vc4-kms-v3d
max_framebuffers=2

# Run in 64-bit mode
arm_64bit=1

# Disable compensation for displays with overscan
disable_overscan=1

[cm4]
# Enable host mode on the 2711 built-in XHCI USB controller.
# This line should be removed if the legacy DWC2 controller is required
# (e.g. for USB device mode) or if USB support is not required.
otg_mode=1

[all]

[pi4]
# Run as fast as firmware / board allows
arm_boost=1

[all]

# GPU Memory ✅
gpu_mem=100

# $ vcgencmd get_mem gpu
# gpu=100M
# https://www.cnblogs.com/xgqfrms/p/17437862.html


# $ cat /boot/config.txt

(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

Updating and Upgrading Raspberry Pi OS

$ cat /etc/apt/sources.list

deb http://deb.debian.org/debian bullseye main contrib non-free
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
# Uncomment deb-src lines below then 'apt-get update' to enable 'apt-get source'
#deb-src http://deb.debian.org/debian bullseye main contrib non-free
#deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
#deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
  1. APT
$ sudo apt update

$ sudo apt full-upgrade

$ sudo apt clean
# install package
$ sudo apt install tree
$ sudo apt install tree -y

# 卸载软件包
$ sudo apt remove tree
$ sudo apt remove tree -y

# 完全删除软件包及其关联的配置文件
$ sudo apt purge tree
  1. apt-get
$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get clean

https://www.raspberrypi.com/documentation/computers/os.html#updating-and-upgrading-raspberry-pi-os

Playing Audio and Video

  1. VLC
# new ✅

  1. OMXPlayer
# old ❌
$ omxplayer <name of media file>

$ omxplayer example.mp4
$ omxplayer example.mp3

https://www.raspberrypi.com/documentation/computers/os.html#playing-audio-and-video

Using a USB webcam

$ sudo apt install fswebcam

# user group
$ sudo usermod -a -G video <username>

# 拍照
$ fswebcam image.jpg

$ fswebcam -r 1280x720 image-720p.jpg

$ fswebcam -r 1280x720 --no-banner image-no-banner.jpg

$ chmod 777 webcam.sh
# OR
$ chmod +x webcam.sh

$ ./webcam.sh
#!/usr/bin/env bash

DATE=$(date +"%Y-%m-%d_%H%M")
fswebcam -r 1280x720 --no-banner /home/pi/webcam/$DATE.jpg

https://www.raspberrypi.com/documentation/computers/os.html#using-a-usb-webcam

fix: USB 启动后, 使用 sudo raspi-config 无法修改回 SD 启动 bug ❌

USB Disk 启动系统引导 / U 盘启动系统引导

SD 卡启动系统引导

EEPROM

SD Card

https://www.cnblogs.com/xgqfrms/p/17461907.html#5183632

https://www.cnblogs.com/xgqfrms/p/17437862.html#5183762
https://www.cnblogs.com/xgqfrms/p/17437862.html#5183763

refs

https://www.raspberrypi.com/news/pi-3-booting-part-i-usb-mass-storage-boot/

https://www.cnblogs.com/xgqfrms/p/17436522.html#5180599

vcgencmd

https://www.cnblogs.com/xgqfrms/p/17303351.html



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2023-05-28 14:02  xgqfrms  阅读(355)  评论(12编辑  收藏  举报