模板: Raspberry-pi-Configuration

来自Waveshare Wiki
跳转至: 导航搜索

配置

raspi-config 工具

  • raspi-config是树莓派官方镜像自带的一个系统配置工具。
  • 如果您使用的是树莓派桌面,则可以使用"首选项"菜单中的图形化" 树莓派配置"应用程序来配置树莓派。
  • 要打开配置工具,请在命令行中键入以下内容:
    sudo raspi-config
  • 基本操作:键盘上的上、下键进行菜单项目的选择,回车键进入,左右键进行OK和cancel等按钮的选择,Esc键取消返回,空格键为选择定选项。最后改完后选择Finish退出即可,可能会重启。
  • 任何更改都将在重新启动后生效,您可以通过编辑config.txt设置。

选项列表

System Options

  • 树莓派的引导、登录和网络过程的各个部分进行配置更改。
    • Wireless LAN:树莓派无线上网设置,选择要连接的网络。
    • Audio:音频输出。
    • Password:树莓派的默认用户是pi密码raspberry。如果你不想让别人访问你的Pi,可以点击change修改密码。
    • Hostname:树莓派系统默认的主机名为raspberrypi,你可以修改自己专属的主机名 hostname
      Hostname水印新.gif
    • Boot / Auto Login:从此子菜单中,您可以选择是引导到控制台还是桌面,以及是否需要登录。如果您选择自动登录,您将以pi用户身份登录。
    • Network at Boot:使用此选项等待网络连接,然后再继续引导。
    • Splash Screen:启用或禁用启动时显示的启动画面。

Display Options

  • D2 Underscan 去除屏幕周围的黑边,将overscan禁用掉来让系统充分利用整个屏幕。
  • D4 Screen Blanking 启用/禁用屏幕空白。
  • D5 VNC Resolution:设置远程桌面VNC的分辨率。
  • D6 Composite:组合输出选项。

Interface Options

  • 在此子菜单中,有以下选项可启用/禁用:Camera、SSH、VNC、SPI、I2C、Serial、1-wire 和 Remote GPIO。
    • 例如我们启用ssh:
      Config-Ssh水印新.gif

Performance Options

  • P1 Overclock:适当的对树莓派的CPU进行超频,可以实现一些性能的提升,注意的是超频可能会减少树莓派的寿命,超频还会在一定程度上导致系统不稳定,建议不要更改,更改后会失去保修。
  • P2 GPU Memory:给GPU分配内存。中央处理器(CPU)和图形处理器(GPU)。树莓派上的内存是分一些给CPU用,分一些给GPU用的,GPU占用的默认是128M。
    • 如果你将你的树莓派用作文件服务器或Web服务器,不需要使用视频输出,你可以减少分配给GPU的内存数量(最少为16MB)。
    • 如果你用它来浏览网页,看视频甚至运行3D游戏,那么你应该为GPU分配较大的内存,从而提高GPU性能,使其更好地渲染3D游戏画面。
    • 如果你需要接入摄像头,则至少要为GPU分配128MB显存。
      Gpu-memory水印新.gif
  • P3 Overlay File System :启用/禁用只读文件系统

Localisation Options Configure language and regional settings

  • 本地化子菜单可以设置键盘布局、时区、区域设置和无线 LAN 国家代码。
    • Change Locale:语言和区域设置。
    • Change Timezone:设置时区。
    • WLAN Country:设置国家代码。例如我们配置国家代码:
      Config-wlan水印新.gif

Advanced Options

  • A1 Expand Filesystem :允许您扩展文件系统。扩展文件系统将最大化分区的大小以匹配物理TF卡上可用的大小。
  • A3 Compositor:启用/禁用xcompmgr组合管理器
  • A4 Network Interface Names:切换网卡命名规则。
  • A5 Network Proxy Settings:配置网络代理设置。
  • A6 Boot Order:选择网络或USB设备启动。
  • A7 Bootloader版本:选择最新或默认启动ROM软件。

Update

  • 将raspi-config工具更新到最新版本。

About raspi-config

  • 显示raspi-config版本信息。

config.txt 文件

  • 由于树莓派并没有传统意义上的BIOS,为了替代BIOS的功能,树莓派使用SD卡第一“boot”分区上的“config.txt”文件存储配置项。树莓派的config.txt文件会在ARM内核初始化之前被GPU读取。它位于SD卡的/boot(引导)分区上,并且必须以root身份进行编辑。
  • 更改里面的参数都需要重新启动树莓派后才会生效。Linux 启动后,您可以使用以下命令查看当前活动设置:
  • vcgencmd get_config <config>:这会显示一个特定的配置值,例如查看树莓派4B的CPU默认主频:
    vcgencmd get_config arm_freq

    Config-vcgencmd.png


    其中1800指的是1.8GHz。

  • 对于一些最早期推出的树莓派4,还采用旧版供电模块的PCB,官方表示也可以通过手动修改config.txt文件来超频,而且只要加入arm_freq=1800一行命令就行了,如果运行不稳定的话,再按50MHz逐级下调就好了,或者稍微加点电压。
  • config.txt文件由早期启动固件读取,因此文件格式非常简单。格式是每行上的单个property=value语句,其中value是整数或字符串。#通过以字符开头的一行,可以添加注释,或者可以注释掉和禁用现有的配置值。

AP

  • 建议本地访问,将屏幕、鼠标、网线和键盘连接到您的树莓派,启动树莓派,确保树莓派软件源是最新的,可以使用命令更新:
    sudo apt update
  • 记下树莓派连接到的以太网的 IP 配置:
    • 将192.168.4.0/24设置为树莓派无线客户端管理 IP 网络。如果 192.168.4.0/24这个网段IP 网络已被您的以太网 LAN 使用,请为无线选择另一个网段 IP 网络,例如192.168.10.0/24,
  • 准备好无线客户端(笔记本电脑、智能手机……)来测试您的新无线网络。

安装 AP 和管理软件

  1. 为了让树莓派创建无线热点,树莓派需要安装hostapd:
    sudo apt install hostapd
  2. 启用无线接热点服务,并将其设置为树莓派开机自启:
    sudo systemctl unmask hostapd 
    sudo systemctl enable hostapd
  3. 为了向无线客户端提供网络管理服务(DNS、DHCP),树莓派需要dnsmasq安装以下软件包:
    sudo apt install dnsmasq
  4. 正常情况下,我们写入的iptables规则将会在系统重启时消失,让防火墙规则重启后依旧有效,安装netfilter-persistent及其插件iptables-persistent。:
    sudo DEBIAN_FRONTEND=noninteractive apt install -y netfilter-persistent iptables-persistent

设置网络路由器

  1. 定义无线接口 IP 配置。 树莓派为无线网络运行 DHCP 服务器;这需要对树莓派中的无线接口 (wlan0)进行静态 IP 配置。树莓派还充当无线网络上的路由器的时候,我们一般会给它网络中的第一个 IP 地址:192.168.4.1. 要配置静态 IP 地址,请编辑配置文件dhcpcd,转到文件末尾并添加以下内容:
    sudo nano /etc/dhcpcd.conf
    interface wlan0
        static ip_address=192.168.4.1/24
        nohook wpa_supplicant
  2. 要让树莓派具有路由转发功能,需要配置一个树莓派的内核参数net.ipv4.ip_forward。这个参数指定了树莓派当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;值为1时表示允许IP转发,请使用以下命令创建一个文件,其内容如下:
    sudo nano /etc/sysctl.d/routed-ap.conf
    # Enable IPv4 routing
    net.ipv4.ip_forward=1
  3. 防火墙伪装是树莓派本身内建了一种称作”伪装”的简单机制,设定要使用”IP伪装”时,它会将内部与外部两个网络桥接起来,并自动解译由内往外或由外至内的IP地址,通常这个动作称为网络地址转换。树莓派这种”IP伪装”法,就是把你的IP藏起来,不让网络上的其他人看到。那我们就利用树莓派自带防火墙伪装“IP”来配置路由器:
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  4. 现在保存 IPv4(包括上面的规则)和 IPv6 的当前防火墙规则,由于 ipt­a­bles-per­sis­tent 在安装时已经把它作为一个服务设置为开机启动了,它在开机后会自动加载已经保存的规则:
    sudo netfilter-persistent save
  5. 为无线网络配置 DHCP 和 DNS 服务。DHCP 和 DNS 服务由dnsmasq默认配置文件用作模板,重命名默认配置文件并编辑一个新的:
    sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig 
    sudo nano /etc/dnsmasq.conf

    将以下内容添加到文件并保存:

    interface=wlan0 # Listening interface
    dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h
                    # Pool of IP addresses served via DHCP
    domain=wlan     # Local wireless DNS domain
    address=/gw.wlan/192.168.4.1
                    # Alias for this router
  6. 确保无线操作 世界各国对电信无线电频段的使用进行规范,在树莓派配置 WiFi 国家代码之前,5 GHz无线网络被禁用。在设置国家代码之前我们先禁用wifi,请执行以下命令:
    sudo rfkill unblock wlan

    此设置将在启动时自动恢复。接下来,我们将在接入点软件配置中定义适当的国家代码。

  7. 配置 AP 软件 创建hostapd位于 的配置文件,/etc/hostapd/hostapd.conf为您的新无线网络添加各种参数。
    sudo nano /etc/hostapd/hostapd.conf

    将以下信息添加到配置文件中。此配置假设我们使用的是通道 7,网络名称为waveshareRaspberry,密码为waveshare12345。请注意,名称和密码不应有引号。密码短语的长度应介于 8 到 64 个字符之间。

    country_code=CN
    interface=wlan0
    ssid=waveshareRaspberry
    hw_mode=g
    channel=7
    macaddr_acl=0
    auth_algs=1
    ignore_broadcast_ssid=0
    wpa=2
    wpa_passphrase=waveshare12345
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=TKIP
    rsn_pairwise=CCMP
    

    注意这一行country_code=CN:它将计算机配置为在中国使用正确的无线频率。现在我们身处中国,所以我们填入我们的国家代码CN,如果您不知道您的国家代码可以去wikipedia查找。

    要使用 5 GHz 频段,您可以将操作模式从 更改hw_mode=g为hw_mode=a。的可能值为hw_mode:

    a = IEEE 802.11a (5 GHz)(树莓派 3B+ 以上)

    b = IEEE 802.11b (2.4 GHz)

    g = IEEE 802.11g (2.4 GHz)

  8. 运行新的无线 AP 现在重新启动您的树莓派并验证无线接入点是否自动可用。
    sudo systemctl reboot
  9. 重新启动树莓派后,使用手机或者电脑就可以搜索无线网络。

HDMI配置

  • 在树莓派4B上,有两个微型HDMI端口。最多可驱动两台显示器,分辨率高达1080p,刷新率为60Hz。在 4K分辨率下,如果连接两台显示器,则刷新率限制为30Hz。您还可以以60Hz的刷新率以4K驱动单个显示器:这要求显示器连接到与USB-C 电源输入相邻的 HDMI 端口(标记为 HDMI0)。hdmi_enable_4kp60=1您还必须通过在config.txt中设置标志来启用4Kp60 输出。

HDMI 组和模式

  • HDMI 有两个常见的组:CEA(消费电子协会,电视通常使用的标准)和DMT(显示监视器计时,监视器通常使用的标准)。每个组都宣传一组特定的模式,其中一个模式描述了输出的分辨率、帧速率、时钟速率和纵横比。

模式支持

  • 在使用tvservice命令前,需要将默认的KMS驱动修改为FKMS驱动,修改方法:打开/boot目录下config.txt文件:
    sudo nano /boot/config.txt
    在config.txt中将
    dtoverlay=vc4-kms-v3d
    修改为
    dtoverlay=vc4-fkms-v3d
  • 您可以tvservice在命令行来确定您的设备支持哪些模式以及其他有用的数据:
    • tvservice -s显示当前 HDMI 状态,包括模式和分辨率
    • tvservice -m CEA列出所有支持的CEA模式
    • tvservice -m DMT列出所有支持的DMT模式

设置特定的HDMI模式

  • 修改config.txt文件下 hdmi_group和hdmi_mode这两行可以设置HDMI输出格式CEA或DMT。模式选择分辨率和帧速率。结合模式表和使用上述tvservice命令来准确了解您的设备支持哪些模式。
    hdmi_group=1   CEA模式
    hdmi_mode 分辨率 频率 屏幕尺寸 备注
    1 VGA(640×480) 60Hz 4:3
    2 480p 60Hz 4:3
    3 480p 60Hz 16:9
    4 720p 60Hz 16:9
    5 1080i 60Hz 16:9
    6 480i 60Hz 4:3
    7 480i 60Hz 16:9
    8 240p 60Hz 4:3
    9 240p 60Hz 16:9
    10 480i 60Hz 4:3 四倍像素
    11 480i 60Hz 16:9 四倍像素
    12 240p 60Hz 4:3 四倍像素
    13 240p 60Hz 16:9 四倍像素
    14 480p 60Hz 4:3 四倍像素
    15 480p 60Hz 16:9 四倍像素
    16 1080p 60Hz 16:9
    17 576p 50Hz 4:3
    18 576p 50Hz 16:9
    19 720p 50Hz 16:9
    20 1080i 50Hz 16:9
    21 576i 50Hz 4:3
    22 576i 50Hz 16:9
    23 288p 50Hz 4:3
    24 288p 50Hz 16:9
    25 576i 50Hz 4:3 四倍像素
    26 576i 50Hz 16:9 四倍像素
    27 288p 50Hz 4:3 四倍像素
    28 288p 50Hz 16:9 四倍像素
    29 576p 50Hz 4:3 四倍像素
    30 576p 50Hz 16:9 四倍像素
    31 1080p 50Hz 16:9
    32 1080p 24Hz 16:9
    33 1080p 25Hz 16:9
    34 1080p 30Hz 16:9
    35 480p 60Hz 4:3 四倍像素
    36 480p 60Hz 16:9 四倍像素
    37 576p 50Hz 4:3 四倍像素
    38 576p 50Hz 16:9 四倍像素
    39 1080i 50Hz 16:9 减少消隐
    40 1080i 100Hz 16:9
    41 720p 100Hz 16:9
    42 576p 100Hz 4:3
    43 576p 100Hz 16:9
    44 576i 100Hz 4:3
    45 576i 100Hz 16:9
    46 1080i 120Hz 16:9
    47 720p 120Hz 16:9
    48 480p 120Hz 4:3
    49 480p 120Hz 16:9
    50 480i 120Hz 4:3
    51 480i 120Hz 16:9
    52 576p 200Hz 4:3
    53 576p 200Hz 16:9
    54 576i 200Hz 4:3
    55 576i 200Hz 16:9
    56 480p 240Hz 4:3
    57 480p 240Hz 16:9
    58 480i 240Hz 4:3
    59 480i 240Hz 16:9
    60 720p 24Hz 16:9
    61 720p 25Hz 16:9
    62 720p 30Hz 16:9
    63 1080p 120Hz 16:9
    64 1080p 100Hz 16:9
    65
    66 720p 25Hz 64:27 适用pi4
    67 720p 30Hz 64:27 适用pi4
    68 720p 50Hz 64:27 适用pi4
    69 720p 60Hz 64:27 适用pi4
    70 720p 100Hz 64:27 适用pi4
    71 720p 120Hz 64:27 适用pi4
    72 1080p 24Hz 64:27 适用pi4
    73 1080p 25Hz 64:27 适用pi4
    74 1080p 30Hz 64:27 适用pi4
    75 1080p 50Hz 64:27 适用pi4
    76 1080p 60Hz 64:27 适用pi4
    77 1080p 100Hz 64:27 适用pi4
    78 1080p 120Hz 64:27 适用pi4
    79 1680×720 24Hz 64:27 适用pi4
    80 1680×720 25Hz 64:27 适用pi4
    81 1680×720 30Hz 64:27 适用pi4
    82 1680×720 50Hz 64:27 适用pi4
    83 1680×720 60Hz 64:27 适用pi4
    84 1680×720 100Hz 64:27 适用pi4
    85 1680×720 120Hz 64:27 适用pi4
    86 2560×720 24Hz 64:27 适用pi4
    87 2560×720 25Hz 64:27 适用pi4
    88 2560×720 30Hz 64:27 适用pi4
    89 2560×720 50Hz 64:27 适用pi4
    90 2560×720 60Hz 64:27 适用pi4
    91 2560×720 100Hz 64:27 适用pi4
    92 2560×720 120Hz 64:27 适用pi4
    93 2160p 24Hz 16:9 适用pi4
    94 2160p 25Hz 16:9 适用pi4
    95 2160p 30Hz 16:9 适用pi4
    96 2160p 50Hz 16:9 适用pi4
    97 2160p 60Hz 16:9 适用pi4
    98 4096×2160 24Hz 256:135 适用pi4
    99 4096×2160 25Hz 256:135 适用pi4
    100 4096×2160 30Hz 256:135 适用pi4
    101 4096×2160 50Hz 256:135 适用pi4
    102 4096×2160 60Hz 256:135 适用pi4
    103 2160p 24Hz 64:27 适用pi4
    104 2160p 25Hz 64:27 适用pi4
    105 2160p 30Hz 64:27 适用pi4
    106 2160p 50Hz 64:27 适用pi4
    107 2160p 60Hz 64:27 适用pi4
    hdmi_group=2   DMT模式
    hdmi_mode 分辨率 频率 屏幕尺寸 备注
    1 640×350 85Hz
    2 640×400 85Hz 16:10
    3 720×400 85Hz
    4 640×480 60Hz 4:3
    5 640×480 72Hz 4:3
    6 640×480 75Hz 4:3
    7 640×480 85Hz 4:3
    8 800×600 56Hz 4:3
    9 800×600 60Hz 4:3
    10 800×600 72Hz 4:3
    11 800×600 75Hz 4:3
    12 800×600 85Hz 4:3
    13 800×600 120Hz 4:3
    14 848×480 60Hz 16:9
    15 1024×768 43Hz 4:3 不适用树莓派
    16 1024×768 60Hz 4:3
    17 1024×768 70Hz 4:3
    18 1024×768 75Hz 4:3
    19 1024×768 85Hz 4:3
    20 1024×768 120Hz 4:3
    21 1152×864 75Hz 4:3
    22 1280×768 60Hz 15:9 减少消隐
    23 1280×768 60Hz 15:9
    24 1280×768 75Hz 15:9
    25 1280×768 85Hz 15:9
    26 1280×768 120Hz 15:9 减少消隐
    27 1280×800 60Hz 16:10 减少消隐
    28 1280×800 60Hz 16:10
    29 1280×800 75Hz 16:10
    30 1280×800 85Hz 16:10
    31 1280×800 120Hz 16:10 减少消隐
    32 1280×960 60Hz 4:3
    33 1280×960 85Hz 4:3
    34 1280×960 120Hz 4:3 减少消隐
    35 1280×1024 60Hz 5:4
    36 1280×1024 75Hz 5:4
    37 1280×1024 85Hz 5:4
    38 1280×1024 120Hz 5:4 减少消隐
    39 1360×768 60Hz 16:9
    40 1360×768 120Hz 16:9 减少消隐
    41 1400×1050 60Hz 4:3 减少消隐
    42 1400×1050 60Hz 4:3
    43 1400×1050 75Hz 4:3
    44 1400×1050 85Hz 4:3
    45 1400×1050 120Hz 4:3 减少消隐
    46 1440×900 60Hz 16:10 减少消隐
    47 1440×900 60Hz 16:10
    48 1440×900 75Hz 16:10
    49 1440×900 85Hz 16:10
    50 1440×900 120Hz 16:10 减少消隐
    51 1600×1200 60Hz 4:3
    52 1600×1200 65Hz 4:3
    53 1600×1200 70Hz 4:3
    54 1600×1200 75Hz 4:3
    55 1600×1200 85Hz 4:3
    56 1600×1200 120Hz 4:3 减少消隐
    57 1600×1200 60Hz 16:10 减少消隐
    58 1600×1200 60Hz 16:10
    59 1600×1200 75Hz 16:10
    60 1600×1200 85Hz 16:10
    61 1600×1200 120Hz 16:10 减少消隐
    62 1792×1344 60Hz 4:3
    63 1792×1344 75Hz 4:3
    64 1792×1344 120Hz 4:3 减少消隐
    65 1856×1392 60Hz 4:3
    66 1856×1392 75Hz 4:3
    67 1856×1392 120Hz 4:3 减少消隐
    68 1920×1200 60Hz 16:10 减少消隐
    69 1920×1200 60Hz 16:10
    70 1920×1200 75Hz 16:10
    71 1920×1200 85Hz 16:10
    72 1920×1200 120Hz 16:10 减少消隐
    73 1920×1440 60Hz 4:3
    74 1920×1440 75Hz 4:3
    75 1920×1440 120Hz 4:3 减少消隐
    76 2560×1600 60Hz 16:10 减少消隐
    77 2560×1600 60Hz 16:10
    78 2560×1600 75Hz 16:10
    79 2560×1600 85Hz 16:10
    80 2560×1600 120Hz 16:10 减少消隐
    81 1366×768 60Hz 16:9 不适用pi4
    82 1920×1080 60Hz 16:9 1080p
    83 1600×900 60Hz 16:9 减少消隐
    84 2048×1152 60Hz 16:9 减少消隐
    85 1280×720 60Hz 16:9 720p
    86 2366×768 60Hz 16:9 减少消隐

设置自定义HDMI模式

  • 根据自己的显示器参数自定义设置CVT 模式:
    hdmi_cvt=<宽度> <高度> <帧率> <尺寸> <边距> <交错> <rb>
  • 例如,我们使用的是7寸显示屏,分辨率为1024×600,帧率是60Hz,长宽比是15:9,我们就可以在/boot/config.txt最后加入以下代码:
    hdmi_cvt=1024 600 60 6 0 0 0
    hdmi_group=2
    hdmi_mode=87
    hdmi_drive=1
    
    • CVT参数含义是:
      • 分辨率为1024×600
      • 帧率60Hz
      • 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
      • 0=禁用边距,1=启用边距
      • 0=逐行,1=隔行
      • 0=正常,1=减少消隐
    • hdmi_group=2将HDMI输出组定义为DMT,但是我们查看DMT表格最后一个值是hdmi_mode=86,这里的hdmi_mode=87就是自定义模式。
    • hdmi_drive 1表示普通 DVI 模式(无声音);2表示普通 HDMI 模式(如果支持并启用,将发送声音)

旋转显示屏

  1. 在树莓派终端输入xrandr,查看主屏所在的HDMI-ID(大部分是HDMI-1):
  2. 输入以下命令可以旋转显示屏:
    xrandr --output HDMI-1 --rotate normal     旋转0度
    xrandr --output HDMI-1 --rotate left       旋转-90度
    xrandr --output HDMI-1 --rotate right      旋转+90度
    xrandr --output HDMI-1 --rotate inverted   旋转180度
    

板载模拟音频(3.5 毫米插孔)

  • 修改config.txt文件来更改模拟音频的驱动方式,启用或禁用一些固件功能。
  1. audio_pwm_mode
    • audio_pwm_mode=1从 3.5 毫米 AV 插孔中选择传统的低质量模拟音频。
    • audio_pwm_mode=2(默认)使用高级调制方案选择高质量的模拟音频。
  2. disable_audio_dither
    • 设置为1,可以禁止默认情况下的1LSB抖动音频输出。可解决某些情况下(如:将操作系统音量调小),产生的轻微背景噪音。
  3. enable_audio_dither
    • 设置为1,可以强制对所有深度的音频使用音频抖动。
  4. pwm_sample_bits
    • 该pwm_sample_bits用于调整模拟音频输出的位深度。默认位深度为11。

常用的开机自启

  • 本小节以自启OLED_1in5_test.py程序为例,该程序绝对路径是/home/pi/python/example/OLED_1in5_test.py,请结合自己实际文件和路径修改对应位置。

桌面自启

  1. 首先我们使用如下命令新建一个startup.sh:(树莓派默认在/home/pi)
    sudo touch startup.sh
  2. 打开startup.sh脚本文件,填入如下内容:
    #!/bin/sh
    sudo python3 python/example/OLED_1in5_test.py
  3. 赋予startup.sh脚本文件权限:
    sudo chmod 777 startup.sh
  4. 新建自启文件:
    cd .config && mkdir autostart
    cd autostart && sudo vim start.desktop
  5. 填入如下内容:
    [Desktop Entry]
    Type=Application
    Exec=/home/pi/startup.sh
  6. 重启树莓派:
    sudo reboot

在rc.local脚本中添加开机自启动程序

  • 打开/etc/rc.local脚本在exit 0前面增加一行:
    sudo python3 /home/pi/python/example/OLED_1in5_test.py &
  • 重启树莓派:
    sudo reboot

系统管理器设置开机自启

  • 在/etc/systemd/system/OLED_1in5_test.service新建一个自启服务对应的配置文件,填入如下内容:
    [Unit]
    Description=start oled
    
    [Service]
    Type=simple
    Restart=always
    RestartSec=5
    ExecStart=/home/pi/python/example/OLED_1in5_test.py
    
    [Install]
    WantedBy=multi-user.target
  • 启用一个服务,使它在系统启动时自动启动:
    sudo systemctl enable OLED_1in5_test.service
  • 重启:
    sudo systemctl restart OLED_1in5_test.service
  • 重启树莓派:
    sudo reboot
  • 如果想要禁用一个服务,使它在系统启动时不会自动启动:
    sudo systemctl disable OLED_1in5_test.service

USB启动

  • 由于TF卡读写速度相对比较慢,对性能就会有影响,我们可以将高速的固态硬盘通过USB接口来连接树莓派,使用USB启动,对树莓派的性能会有较大的提升。

器材准备

  • 树莓派4B主板
  • TF卡读卡器
  • 5V 3A电源适配器
  • 至少 8GB 的TF卡
  • Micro HDMI 转HDMI线
  • 带有HDMI接口的电脑显示器或电视
  • 带有USB转接口的固态硬盘,不推荐使用U盘和机械硬盘,读写速度提升不大

使用Raspberry Pi Imager设置USB启动

树莓派烧录引导程序

  • 将TF卡插入读卡器连接电脑,打开Raspberry Pi Imager软件。
  • 选择操作系统下的Misc utility images—>Bootloader—>USB Boot
  • 等待引导程序烧录完成后,我们将TF卡插到树莓派上开机。
  • 第一次开机需要耐心等待,当绿色LED将以稳定模式闪烁,7inch显示屏将呈绿色(或屏幕闪烁绿色),此时关闭树莓派并取出TF卡。

给固态硬盘安装树莓派系统

  • 打开Win32DiskImager或者Raspberry Pi Imager烧录镜像。
  • 安装完成系统后,将固态硬盘插入树莓派的USB3.0接口,等待开机成功就从硬盘启动树莓派系统了。

使用 raspi-config 设置USB启动

  • 将树莓派官方系统烧录到TF卡插到树莓派上开机,开机完成后,打开树莓派终端输入raspi-config
  • 选择Advanced Options—>Bootloader Order—>选择USB启动,重启树莓派。

适用于Ubuntu18.04和Ubuntu20.04

  • 上述教程只支持树莓派官方系统和Ubuntu22.04系统,对于想使用Ubuntu18.04系统和Ubuntu20.04系统的同学,还需要做如下配置:

更新EEPROM

  • 使用Raspberry Pi Imager烧录过引导程序就可以无需在升级EEPROM。
  • 使用树莓派官方系统raspi-config方法需要升级EEPROM,输入如下指令:
    sudo apt update
    sudo apt full-upgrade

更新固件

  • 下载更新的固件文件boot,将boot子目录中所有的.dat 与 .elf复制并覆盖到system-boot中。
  • 完整的firmware地址可以去GitHub上下载。

更新config.txt文件

  • Ubuntu18.04
  • 使用记事本打开config.txt文件,将[pi4]部分替换如下内容:
    [pi4]
    max_framebuffers=2
    dtoverlay=vc4-fkms-v3d
    boot_delay
    kernel=vmlinuz
    initramfs initrd.img followkernel
  • 对于Ubuntu18.04完成上述步骤,直接将 SSD 接入USB3.0的口启动即可使用。无需后面的操作。
  • Ubuntu20.04
  • 使用记事本打开config.txt文件,将[pi4]部分替换如下内容:
    [pi4]
    max_framebuffers=2
    dtoverlay=vc4-fkms-v3d
    boot_delay
    kernel=vmlinux
    initramfs initrd.img followkernel

解压内核(Ubuntu20.04后的版本需解压内核)

  • 找到vmlinuz使用7-zip工具解压缩后,将解压出来的vmlinuz~重命名为vmlinux

创建自动解压缩脚本

  • 在更新 Ubuntu 或其众多软件包之一期间,apt将创建一个新的内核映像。此映像将被压缩,并会导致树莓派在更新后无法启动。为了解决这个问题,需要创建一个脚本来在更新后解压缩新的内核映像。
  • 使用SSH远程软件连接树莓派,树莓派的IP地址查找参考 IP地址查询部分。
  • 登录名和登录密码都是ubuntu
  • 第一次登录,会进行一次密码修改。
  • 先输入当前默认密码:ubuntu,系统会提示你输入新的密码,输入新的密码后,系统让你确认新密码。
  • 修改成功SSH会自动断开,重新登陆使用修改后的密码。
  • 创建解压脚本
    sudo nano /boot/firmware/auto_decompress_kernel

    脚本内容如下

    #!/bin/bash -e
    # auto_decompress_kernel script
    #Set Variables
    BTPATH=/boot/firmware
    CKPATH=$BTPATH/vmlinuz
    DKPATH=$BTPATH/vmlinux
    #Check if compression needs to be done.
    if [ -e $BTPATH/check.md5 ]; then
       if md5sum --status --ignore-missing -c $BTPATH/check.md5; then
          echo -e "\e[32mFiles have not changed, Decompression not needed\e[0m"
          exit 0
       else
          echo -e "\e[31mHash failed, kernel will be compressed\e[0m"
       fi
    fi
    #Backup the old decompressed kernel
    mv $DKPATH $DKPATH.bak
    if [ ! $? == 0 ]; then
       echo -e "\e[31mDECOMPRESSED KERNEL BACKUP FAILED!\e[0m"
       exit 1
    else
       echo -e "\e[32mDecompressed kernel backup was successful\e[0m"
    fi
    #Decompress the new kernel
    echo "Decompressing kernel: "$CKPATH".............."
    zcat $CKPATH > $DKPATH
    if [ ! $? == 0 ]; then
       echo -e "\e[31mKERNEL FAILED TO DECOMPRESS!\e[0m"
       exit 1
    else
       echo -e "\e[32mKernel Decompressed Succesfully\e[0m"
    fi
    #Hash the new kernel for checking
    md5sum $CKPATH $DKPATH > $BTPATH/check.md5
    if [ ! $? == 0 ]; then
       echo -e "\e[31mMD5 GENERATION FAILED!\e[0m"
    else
       echo -e "\e[32mMD5 generated Succesfully\e[0m"
    fi
    #Exit
    exit 0

设置自动运行

  • 为了让我们刚刚创建的脚本在每次安装包时都能被调用
    sudo nano /etc/apt/apt.conf.d/999_decompress_rpi_kernel
    #写入以下内容
    DPkg::Post-Invoke {"/bin/bash /boot/firmware/auto_decompress_kernel"; };
    #设置为可运行权限
    cd  /etc/apt/apt.conf.d/
    sudo chmod +x 999_decompress_rpi_kernel
  • 完成设置后,我们可以使用apt安装软件包测试。