写在前面
假如我们有一块树莓派4B(RPi 3b似乎有更简单的方法),在SD卡上运行着Raspbian的系统,现在我需要把这个系统原封不动地搬到其他USB设备(硬盘/U盘)上, 然后让树莓派开机地时候从USB设备启动系统。需要的东西有:
- 一块树莓派
- 一块硬盘/U盘 (SSD/HDD,我花30块钱淘宝了一个二手的机械硬盘160G,然后又买了条SATA转USB的线,希望这个硬盘不会很快就挂掉)
- 原来装好系统的SD卡
设置硬盘启动的过程
参考资料: https://zhuanlan.zhihu.com/p/143865746 https://www.jianshu.com/p/60c2631dc1aa https://blog.csdn.net/potomac/article/details/107095996 https://www.tomshardware.com/amp/how-to/boot-raspberry-pi-4-usb
更新系统
sudo apt update
sudo apt full-upgrade
编辑/etc/default/rpi-eeprom-update文件
这个文件只有一行,设法把FIRMWARE_RELEASE_STATUS值从“ critical”更改为“ beta”
更新 EEPROM
# Check the current version
sudo rpi-eeprom-update
# Update to latest
sudo rpi-eeprom-update -a
这个因为是最近的测试版(2020年5月)才支持USB启动的,所以需要更新。
重启
然后查看版本信息
vcgencmd bootloader_version
写作此文时查看到的固件版本更新日期是2020年7月
复制SD卡
这里可以直接用Raspbian随附的SD卡复印机应用程序(菜单-附件),将SD卡复制到你的USB储存器上,简单省事,便于操作。
手动更新个别文件
在GitHub上下载 /boot目录下的* .dat和* .elf文件(一共16个),替换你的USB设备boot分区下的这16个文件。 不必下载整个仓库,只要替换这16个文件就好。
完成 插电吧
拔下SD卡,插上USB,开机吧。之前所有的配置都会保留,包括WiFi,文件。
然而我插上HDD后并没有达到预想中的效果。虽然和SD卡一样能用,但打开文件的速度似乎比SD卡更慢了,开机时间也长了,运行噪音也大了。追求速度的有条件的还是换SSD吧。
如果硬要比较HDD比SD卡有什么优势的话,可能就是便宜(尤其二手的),容量大(可以做NAS),寿命长,以及不容易丢(SD卡很容易我就找不到了)
其他故障解决
连不上WiFi
如果没有外接显示器的话,连不上wifi=连不上VNC=没有显示屏,问题还是很难办的
网上找了几份教程,亲测可用,放这里备用
检查是哪一个接口来支持无线连接的:
iwconfig
以防万一,你得确认下以使此接口服务是启动着的:
sudo ip link set wlan0 up
一但确认了无线接口是工作着的,就可以用如下命令来扫描附近的无线网络了:
sudo iw dev wlan0 scan | less
一旦配置文件修改完成后,在后台启动此命令:
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
最后,无论是连到开放的网络还是加密的安全网络,您都得获取 IP 地址。简单地使用如下命令:
sudo dhcpcd wlan0
如果一切顺利的话,应该已经通过 DHCP 获取到了一个全新的本地 IP,这个过程是在后台自动完成的。如果想确认下是否真正连接上的话,可以再一次输入如下命令检查:
iwconfig
su -
//进入root用户,输入密码
ifconfig wlan0
ifconfig wlan0 up
iwlist wlan0 scan | grep SSID
//扫描wifi
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
//查看WiFi配置文件
echo "ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN
" >/etc/wpa_supplicant/wpa_supplicant.conf
//覆盖原有的配置文件,重新写入文件头
wpa_passphrase "<SSID>" "<密码明文>" >> /etc/wpa_supplicant/wpa_supplicant.conf
//替换尖角括号内容,写入文件
wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
//这两个应该都可以或有一个可以连接WiFi
killall wpa_supplicant
//如有必要,用上述指令杀死进程
简单运行一下树莓派
点亮LED二极管
二极管,杜邦线,面包板等需要自备
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(11,GPIO.OUT)
GPIO.output(11,GPIO.HIGH)
time.sleep(5)
GPIO.output(11,GPIO.LOW)
for i in range(5):
GPIO.output(11,GPIO.HIGH)
time.sleep(0.5)
GPIO.output(11,GPIO.LOW)
time.sleep(0.5)
GPIO.cleanup()
实现呼吸灯效果:
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
p = GPIO.PWM(11, 50) # 引脚为 11 频率为 50Hz
p.start(0)
try:
while 1:
for dc in range(0, 101, 5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
for dc in range(100, -1, -5):
p.ChangeDutyCycle(dc)
time.sleep(0.1)
except KeyboardInterrupt:
#ctrl+C break
pass
p.stop()
GPIO.cleanup()
录制视频
外接摄像头(虽然像素不咋滴)可以控制树莓派录制视频
from picamera import PiCamera
recordTime=int(input("输入录像时间"))
#初始化摄像头
camera = PiCamera()
#录制的视频存放位置
h264_fullname=video_kit.gen_h264_filepath()
#开始录制
camera.start_recording(h264_fullname)
#录制时间 单位秒
sleep(recordTime)
#停止录制
camera.stop_recording()
当作一台电脑来使用
预装的操作系统是有图形界面的,外接显示器,或者使用VNC远程桌面控制,可以听歌、看视频(卡卡的)、写代码(虽然这有点画蛇添足,都有了一台可以远程控制的电脑了,为什么还需要用树莓派来干这些事呢)