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
- 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

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
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
手动刷入系统镜像,并修改配置文件

- 设置开机,自动开启
SSH
ssh
创建一个空的 ssh 文件, 文件没有扩展名,放到 U 盘根目录下
- 配置默认的
Wi-Fi信息
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
pi
raspberry => 加密后 /4g6TptuTP5B6
pi:/4g6TptuTP5B6
- 配置 bootloader 的
启动模式
config.txt
# 编辑
$ sudo vim /boot/config.txt
$ sudo code /boot/config.txt
# 查看
$ cat /boot/config.txt
otg_mode=1

# 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/ 更改启动模式
bugs ️️️
- U 盘必须要使用
FAT32格式,最大支持 32 GB - 树莓派需先要插入一个烧录了树莓派系统的
SD 卡,才能修改启动模式 - 树莓派需要
有线网络连接,用于从网上下载镜像到 U 盘中 - 树莓派需要连接
鼠标、键盘,用于U 盘启动后,从网络的安装镜像到 U 盘中
- Raspberry Pi Imager (GUI 可视化操作 )
Using
Raspberry Pi Imagerto update thebootloader
This is the recommended route to updating the bootloader.
这是更新引导加载程序的推荐途径。
steps:
DownloadRaspberry Pi ImagerSelect a
spareSD card. The contents will getoverwritten!LaunchRaspberry Pi ImagerSelect
Misc utility imagesunder Operating SystemSelect
BootloaderSelect a
boot-modei.e. SD Card Boot (recommended),USB Bootor Network Boot.Select SD card and then
WriteBootthe Raspberry Pi withthe new imageandwait forat least10 seconds.The
green activity LEDwill blink with asteady patternand theHDMI displaywill begreenon success.Power offthe Raspberry Pi andremovethe SD card.





https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#imager
- raspi-config (交互式命令行操作 )
$ sudo raspi-config
$ sudo reboot
UpdateRaspberry Pi OS to getthe latest versionof therpi-eeprompackage.Run
sudo raspi-configSelect
AdvancedOptionsSelect
BootloaderVersionSelect
Defaultfor factory default settings orLatestfor 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
$ 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]
( 反爬虫测试!打击盗版️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 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
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, 禁止转载 ️,侵权必究️!
How to boot the Raspberry Pi system from a USB Mass Storage Device All In One的更多相关文章
- Raspberry Pi Kernel Compilation 内核编译官方文档
elinux.org/Raspberry_Pi_Kernel_Compilation#Use_the_provided_compiler Software & Distributions: S ...
- A new comer playing with Raspberry Pi 3B
there are some things to do for raspberry pi 3b for the first time: 1, connect pi with monitor/KB/mo ...
- 最简单的RASPBERRY PI wifi配置
Setting up Wifi with the Command Line SIMON MONK This tutorial works best if your router is broad ...
- Virtual servers on a Raspberry Pi with the light weight OS virtualization system Docker!
转自:http://www.hyggeit.dk/2014/02/virtual-servers-on-raspberry-pi-with.html Virtual servers on a Rasp ...
- RASPBERRY PI 外设学习资源
参考: http://www.siongboon.com/projects/2013-07-08_raspberry_pi/index.html Raspberry Pi Get st ...
- Raspberry Pi UART with PySerial
参考:http://programmingadvent.blogspot.hk/2012/12/raspberry-pi-uart-with-pyserial.html Raspberry Pi UA ...
- Adding an On/Off switch to your Raspberry Pi
http://www.raspberry-pi-geek.com/Archive/2013/01/Adding-an-On-Off-switch-to-your-Raspberry-Pi#articl ...
- Turn Your Raspberry Pi Into a WiFi Hotspot with Edimax Nano USB EW-7811Un (RTL8188CUS chipset)
http://www.daveconroy.com/turn-your-raspberry-pi-into-a-wifi-hotspot-with-edimax-nano-usb-ew-7811un- ...
- 转:Raspberry Pi(树莓派)试用小记
近期入手一树莓派卡片机,体验了一下它的强大,写篇报告,推广一下哈! 机器截图: 基础参数: CPU:700 MHz, ARM11 内存:512M(还有一种是256M的) 支持GPU加速(高清视频无压力 ...
- [树莓派(raspberry pi)] 02、PI3安装openCV开发环境做图像识别(详细版)
前言 上一篇我们讲了在linux环境下给树莓派安装系统及入门各种资料 ,今天我们更进一步,尝试在PI3上安装openCV开发环境. 博主在做的过程中主要参考一个国外小哥的文章(见最后链接1),不过其教 ...
随机推荐
- 68.C++中的const
编写程序过程中,我们有时不希望改变某个变量的值.此时就可以使用关键字 const 对变量的类型加以限定. 初始化和const 因为const对象一旦创建后其值就不能再改变,所以const对象必 ...
- 人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文”
按照固有思维方式,人们总以为人工智能是一个莫测高深的行业,这个行业的人都是高智商人群,无论是写文章还是和人讲话,总是讳莫如深,接着就是蹦出一些"高级"词汇,什么"神经网络 ...
- 使用golang+antlr4构建一个自己的语言解析器(完结篇)
Goland 中Antlr4插件 在goland中安装Antlr4插件,用于识别输入的字符在在语法文件中生成的语法树的样子,大概就是如下的摸样 下载步骤: 1.点击文件中的设置选项 2.在插件目录下输 ...
- MQTT(EMQX) - Java 调用 MQTT Demo 代码
POM <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse ...
- InnoDB Buffer Pool改进LRU页面置换
由于硬盘和内存的造价差异,一台主机实例的硬盘容量通常会远超于内存容量.对于数据库等应用而言,为了保证更快的查询效率,通常会将使用过的数据放在内存中进行加速读取. 数据页与索引页的LRU 数据页和索引页 ...
- 存储论——经济订货批量的R实现
存储论又称库存理论,是运筹学中发展较早的分支.早在 1915 年,哈李斯(F.Harris)针对银行货币的储备问题进行了详细的研究,建立了一个确定性的存贮费用模型,并求得了最佳批量公式.1934 年威 ...
- [设计模式/网络/WebServer/Nginx]设计模式之代理模式(网络代理 : 正向代理与反向代理)【7】
1 代理模式 1.1 模式定义 代理模式(Proxy Pattern):为其他对象提供一种代理服务以对这个被代理的对象进行控制访问.[ 设计模式.面向对象程序设计思想的鼻祖----GoF] Subje ...
- OctConv:八度卷积复现
摘要:不同于传统的卷积,八度卷积主要针对图像的高频信号与低频信号. 本文分享自华为云社区<OctConv:八度卷积复现>,作者:李长安 . 论文解读 八度卷积于2019年在论文<Dr ...
- Docker介绍下载安装、制作镜像及容器、做目录映射、做端口映射
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...
- 好奇心驱使下试验了 chatGPT 的 js 代码的能力
手边的项目中有个函数,主要实现图片分片裁剪功能.可以优化一下. 也想看看 chatGPT 的代码理解能力,优化能力,实现能力,用例能力. 于是有了这篇文章. 实验结果总结: chatGPT 确实强大, ...