当前位置:首页 > 公众号精选 > 嵌入式微处理器
[导读]树莓派4可以不用SD卡启动? 1.说明 2.什么是PXE启动 3.树莓派4设置PXE启动 4.关键配置参数说明 5.配置TFTP服务器 6.网络文件系统 6.1 主机上设置NFS文件系统 6.2 树莓派上设置启动NFS的rootfs脚本 1.说明 Raspberry Pi 4具有一个SPI连接的EEPROM(4MBits / 51

树莓派4可以不用SD卡启动?


  • 1.说明

  • 2.什么是PXE启动

  • 3.树莓派4设置PXE启动

  • 4.关键配置参数说明

  • 5.配置TFTP服务器

  • 6.网络文件系统

    • 6.1 主机上设置NFS文件系统

    • 6.2 树莓派上设置启动NFS的rootfs脚本


1.说明

Raspberry Pi 4具有一个SPI连接的EEPROM(4MBits / 512KB),其中包含用于启动系统的代码,并替换了先前在SD卡的启动分区中找到的bootcode.bin。请注意,如果Pi 4的SD卡的启动分区中存在bootcode.bin,则将其忽略。

也就是说,树莓派4的启动方式可以从SPI的EEPROM启动了。关于为什么需要这个EEPROM官方的说法是:

1.与以前的Raspberry Pi型号相比,Raspberry Pi 4的启动过程和SDRAM的设置要复杂得多,因此,永久包含在SoC ROM中的代码固有的风险更大。

2.USB已移至PCIe总线,千兆位以太网驱动程序与以前的型号完全不同,因此,再次将其永久固定在SoC的ROM中是不可行的。

3.小容量SPI EEPROM允许在现场修复错误并在启动后添加功能。

4.本地可修改状态意味着Raspberry Pi 4上的网络或USB大容量存储启动不需要OTP引导模式设置。Pi4上没有用户可修改的OTP引导模式位。

本文就讲述一下如何设置树莓派启动,而改为网络启动的方式(TFTP),目前树莓派U盘启动方式还不完善。虽然不用SD卡启动,但是操作EEPROM的时候,还是要借助SD卡进行启动Linux,然后将启动固件写入到eeprom中。下面来详细说明一下这个过程。

2.什么是PXE启动

PXE是用来通过网络引导系统的。也就是系统通过网络进行启动,这样就不用硬盘,从服务器中获取系统镜像。

当安装大量设备系统的时候,如果有了PXE启动,那么就可以大大加快系统的安装的速度。

上面就是基本的一个PXE启动的流程。

3.树莓派4设置PXE启动

树莓派4上有EEPROM,可以将启动固件放到EEPROM中。但是不幸的是,操作树莓派自带的EEPROM需要树莓派的系统,也就是必须最开始的时候,需要制作启动树莓派4的SD卡镜像,然后通过SD卡启动Linux后,修改EEPROM中的内容。

关于如何制作树莓派SD卡镜像,可以参考我下面的文章:

树莓派4最小化安装Linux

三个前提条件:

1.登录控制台(用户名:pi,密码:raspberry)

2.树莓派要能够连接网络

3.可以安装配置rpi-config程序

3.1 安装rpi-eeprom

rpi-eeprom是在树莓派固件中操作树莓派4的eeprom的程序,通过下面的命令进行安装。

sudo apt-get updatesudo apt-get full-upgradesudo apt-get install rpi-eeprom

以上操作如果下载比较慢可以更换国内的源进行:

修改sources.list文件

sudo vim /etc/apt/sources.list

用#注释掉之前的源,然后新增

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contribdeb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

接着修改raspi.list

sudo vim /etc/apt/sources.list.d/raspi.list

同样注释掉之前的源

修改如下:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

修改完成就OK了。

安装完成,检测一下eeprom现有的配置。

vcgencmd bootloader_config

可以见到如下信息

以上的信息是我以及配置好了的,最开始的信息可能不是这个。但是没关系,接下来教你设置。

第一步:提取配置文件

cp /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-01-17.bin pieeprom.binrpi-eeprom-config pieeprom.bin > bootconf.txt

将配置文件进行拷贝,并且放到指定的目录。pieeprom.bin就是配置文件,然后导出成txt文件。该文件的作用与之前树莓派SD卡中的config.txt类似。

第二步:设置bootconf.txt中的内容

我配置的内容如下:

[all]BOOT_UART=1WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000TFTP_IP=192.168.12.194TFTP_PREFIX=1BOOT_ORDER=0x21SD_BOOT_MAX_RETRIES=3NET_BOOT_MAX_RETRIES=5TFTP_PREFIX_STR=raspi4/[none]FREEZE_VERSION=0

后面会解释一下其中的内容。

第三步:将配置写回pieeprom.bin文件中

rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin

这一步用于将配置文件写回。

第四步:将pieeprom.bin烧录到eeprom中

sudo rpi-eeprom-update -d -f ./pieeprom-new.bin

看到如下输出信息即可

此时将SD卡取出,就可以看到系统从eeprom起来。

4.关键配置参数说明

BOOT_UART【关注】

如果设置为1,表示使能GPIO 14和 15的输出,也就是我们可以连接串口打开信息。其串口参数为波特率115200,8位,无奇偶校验位,1位的停止位。

对于有串口调试助手的,建议用硬件串口输出信息,所以该位设置为1。

WAKE_ON_GPIO

如果为1,则“ sudo halt”将以低功耗模式运行,直到GPIO3或GLOBAL_EN短路接地。

TFTP_PREFIX【关注】

为了支持每个Pi的唯一TFTP引导目录,引导加载程序会在文件名前面加上设备特定的目录。如果在前缀目录中都找不到start4.elf和start.elf,则清除前缀。在较早的型号上,序列号用作前缀,但是,在Pi4上,不再从序列号生成MAC地址,这使得很难通过检查DHCPDISCOVER数据包在服务器上自动创建tftpboot目录。为此,可以将TFTP_PREFIX定制为MAC地址,固定值或序列号(默认)。

0 - Use the serial number e.g. "9ffefdef/"1 - Use the string specified by TFTP_PREFIX_STR2 - Use the MAC address e.g. "DC-A6-32-01-36-C2/" Default: 0

这里我设置成1,让后设置TFTP_PREFIX_STR路径。

TFTP_PREFIX_STR【关注】

当TFTP_PREFIX设置为1的时候,可以设置TFTP_PREFIX_STR的路径。例如

TFTP_PREFIX_STR=raspi4/

这是为了告诉树莓派4,到哪个目录下去找启动文件。由于可能有不同的树莓派固件,所以这里会不同。

TFTP_IP

设置TFTP服务器的IP地址,树莓派的IP地址是通过DHCP自动获取的。

TFTP_IP=192.168.12.194

BOOT_ORDER

该参数配置了不同的启动模式

  • 0x0 - NONE (stop with error pattern)
  • 0x1 - SD CARD
  • 0x2 - NETWORK

启动模式是一个32bit的通过特定的位来决定的。如果设置0x21,表示网络启动失败时通过SD卡进行启动。

如果设置成0x2则表示网络启动失败,不通过SD卡启动。这里我们设置成0x21。

5.配置TFTP服务器

如果不用SD卡,让树莓派4启动,那么启动固件必须放在TFTP服务的特定的目录中。

这里我在Ubuntu上搭建了一个TFTP服务器。

第一步:安装tftpd-hpa

sudo apt-get install tftp-hpa tftpd-hpa

第二步:编辑脚本文件

sudo gedit /etc/default/tftpd-hpa

脚本内容如下:

# /etc/default/tftpd-hpa TFTP_USERNAME="tftp"TFTP_DIRECTORY="/home/bigmagic/tftpboot/" //tftpboot绝对路径TFTP_ADDRESS=":69"TFTP_OPTIONS="--secure"

第三步:启动服务器

service tftpd-hpa restart

之后还需要做的事情就是

sudo chmod 777 /home/bigmagic/tftpboot/ -R

让目录权限变成可以访问权限。

/home/bigmagic/tftpboot/创建目录,用于存放SD卡上的启动文件

mkdir raspi4

最后将SD卡中的文件放到树莓派4中。

6.网络文件系统

操作系统起来后,如果要挂在SD卡或者网络文件系统,肯定是需要指定网络文件系统的。之前在SD卡上制作启动文件的时候,我们是将跟文件系统放在SD卡上所以通过PXE启动后的效果如下:

找不到SD卡,通过网络方式启动

从网络中读取相关的文件。

可以看到检测不到sd卡上的文件系统。接着我们需要通过网络启动文件系统。

6.1 主机上设置NFS文件系统

因为我们的文件系统是在NFS上,所以主机上设置NFS文件系统是让树莓派访问文件系统。

其实前面的TFTP是引导系统,而这个NFS则是为了让rootfs从NFS上启动。

sudo apt install nfs-kernel-server

接着编辑nfs的相关配置

echo "/home/bigmagic/nfs/client1 *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports

设置权限

chmod 777 nfs/ -R

然后启动服务

sudo service nfs-kernel-server restart

6.2 树莓派上设置启动NFS的rootfs脚本

由于现在树莓派4上没有了SD卡,启动脚本在/home/bigmagic/tftpboot/raspi4中。所以去修改cmdline.txt文件。

修改文件内容如下:

console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.12.194:/nfs/client1,vers=4.1,proto=tcp rw ip=dhcp rootwait elevator=deadline

启动ip地址自行修改。

接着执行

接下来要做的事情就是将我们的跟文件系统拷贝到/home/bigmagic/nfs/client1目录下。

此目录可以从我们之前制作的SD卡的rootfs文件系统中进行拷贝。

操作完成后输入

echo "192.168.12.194:/tftpboot /boot nfs defaults,vers=4.1,proto=tcp 0 0" | sudo tee -a /home/bigmagic/nfs/client1/etc/fstab

以上操作后便可启动网络文件系统了。

7.总结

上述介绍了树莓派4不用SD卡启动系统的办法,对于树莓派4来说,可以通过内置的EEPROM进行启动固件的存放。通过这种方式,可以为内核调试增加了许多方便的地方。这种对于做开发树莓派的人来说,可以专注于程序的开发,不用为频繁的插拔卡带来烦恼。同时这种方式对镜像升级也提供了很多便利。


本文授权转载自公众号“嵌入式IoT”,作者bigmagic

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

嵌入式ARM

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭