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
- First Stage Bootloader
- 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
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-4-bootloader-configuration
BOOT_ORDER
0xf14
Try USB
first, followed by SD
then repeat ✅
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#BOOT_ORDER
Conditional filters
[all]
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
$ 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
手动刷入系统镜像,并修改配置文件 🚀
简单方便,亲测有效,推荐方式 ✅
- 设置开机,自动开启
SSH
ssh
创建一个空的 ssh
文件, 文件没有扩展名,放到 U 盘根目录下
- 配置默认的
Wi-Fi
信息
wpa_supplicant.conf
# Wi-Fi 配置文件
$ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
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
}
- 配置 SSH 登录的
用户名
和密码
userconf.txt
$ cat /boot/userconf.txt
piraspberry
=> 加密后 /4g6TptuTP5B6
pi:/4g6TptuTP5B6
- 配置 bootloader 的
启动模式
config.txt
# 编辑
$ sudo vim /boot/config.txt
$ sudo code /boot/config.txt
# 查看
$ cat /boot/config.txt
otg_mode=1
✅
- 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 盘中 💩💩💩
- Raspberry Pi Imager (GUI 可视化操作)
Using
Raspberry Pi Imager
to update thebootloader
This is the recommended route to updating the bootloader.
这是更新引导加载程序
的推荐途径。
steps:
-
Download
Raspberry Pi Imager -
Select a
spare
SD card. The contents will getoverwritten
! -
Launch
Raspberry Pi Imager -
Select
Misc utility images
under Operating System -
Select
Bootloader
-
Select a
boot-mode
i.e. SD Card Boot (recommended),USB Boot
or Network Boot. -
Select SD card and then
Write
-
Boot
the Raspberry Pi withthe new image
andwait for
at least10 seconds
. -
The
green activity LED
will blink with asteady pattern
and theHDMI display
will begreen
on success. -
Power off
the Raspberry Pi andremove
the SD card.
https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#imager
- raspi-config (交互式命令行操作)
$ sudo raspi-config
$ sudo reboot
-
Update
Raspberry Pi OS to getthe latest version
of therpi-eeprom
package. -
Run
sudo raspi-config
-
Select
Advanced
Options -
Select
Bootloader
Version -
Select
Default
for factory default settings orLatest
for the latest stable bootloader release. -
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
# 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
# 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
- 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
- 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
- VLC
# new ✅
- 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 发布文章使用:只允许注册用户才可以访问!文章来源:https://www.toymoban.com/news/detail-462102.html
原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!文章来源地址https://www.toymoban.com/news/detail-462102.html
到了这里,关于How to boot the Raspberry Pi system from a USB Mass Storage Device All In One的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!