嵌入式系统使用网络镜像或使用网络更新镜像
创始人
2024-02-05 09:03:44

在我们学习的过程中,有的时候需要多次修改镜像进行实验,那么直接在emmc上部署镜像就不是一个很好的选择了,将镜像部署到网络服务器上也许是最好的办法,你想啊,我们修改编译的新镜像就不用上传到emmc中,不用重新烧写,直接放到我们的电脑上,开发板启动的时候直接调用,这样不是更OK吗?
当然要实现这些功能,需要一些服务提前搭建好。

服务搭建

NFS服务搭建

1、ubuntu 下搭建nfs 服务器方法如下:
软件下载安装
forlinx@ubuntu:~# sudo apt-get install nfs-kernel-server nfs-common portmap
创建nfs 目录并解压文件系统(以rootfs.tar.bz2 文件系统为例,当前目录为根目录)
forlinx@ubuntu:~# cd /
forlinx@ubuntu:/# sudo mkdir nfs_rootfs
forlinx@ubuntu:/# sudo tar -xvf rootfs.tar.bz2 -C /nfs_rootfs/
修改配置文件
forlinx@ubuntu:/# sudo vim /etc/exports
在文件中添加以下配置:
/nfs_rootfs *(rw,sync,no_root_squash,no_subtree_check)
重启配置文件和服务
forlinx@ubuntu:/# sudo exportfs -rv
forlinx@ubuntu:/# sudo /etc/init.d/rpcbind restart
forlinx@ubuntu:/# sudo /etc/init.d/nfs-kernel-server restart
2、在开发板上验证nfs 服务器,执行完以下命令将nfs服务器挂载到开发板的/mnt目录,
root@imx6ulevk:~# mount -t nfs4 -o vers=4 192.168.0.57:/nfs_rootfs /mnt
挂载成功后,查看/mnt目录,会看到刚才解压的文件系统
root@imx6ulevk:~# ls /mnt/
注:192.168.0.57 为NFS 服务器主机ubuntu的IP,ubuntu的网络需设置为桥接模式,并跟开发板在同一网段,并将源码中的/OK6254-linux-fs/rootfs内容复制到/nfs_rootfs
如图:
在这里插入图片描述
开发板uboot阶段测试nfs
设置环境变量:
=> setenv ipaddr 172.16.0.141 //开发板ip
=> setenv serverip 172.16.0.142 //服务端ip
=> nfs /nfs_rootfs/bin/tar.tar //通过nfs下载文件
link up on port 1, speed 1000, full duplex
Using ethernet@8000000 device
File transfer via NFS from server 172.16.0.141; our IP address is 172.16.0.142
Filename ‘/nfs_rootfs/bin/tar.tar’.
Load address: 0x82000000
Loading: #################################################################
##############################
done
Bytes transferred = 482272 (75be0 hex)

TFTP服务搭建

1、安装服务器、客户端和守护进程
forlinx@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa xinetd
2、服务器配置
首先,在根目录下建一个tftpboot,并把属性改成任意用户可读写:
forlinx@ubuntu:~$ cd /
forlinx@ubuntu:~$ sudo mkdir tftpboot
forlinx@ubuntu:~$ sudo chmod 777 tftpboot
然后,进入目录 /etc/xinetd.d/,并在其中新建文件tftp,把指定的内容加入到tftp文件中:
forlinx@ubuntu:~$ cd /etc/xinetd.d/
forlinx@ubuntu:~$ sudo vim tftp
添加以下内容到tftp文件
service tftp
{
disable = no 138
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot -c
per_source = 11
cps = 100 2
}
最后,修改配置文件/etc/default/tftpd-hpa
forlinx@ubuntu:~$ sudo vim /etc/default/tftpd-hpa
修改为
TFTP_USERNAME=“tftp”
TFTP_DIRECTORY=“/tftpboot”
TFTP_ADDRESS=“0.0.0.0:69”
TFTP_OPTIONS=“–secure -l -c -s”
注意将“TFTP_DIRECTORY” 改为新建tftpboot目录所在的路径
3、重新启动服务
forlinx@ubuntu:~$ sudo /etc/init.d/xinetd reload
forlinx@ubuntu:~$ sudo /etc/init.d/xinetd restart
forlinx@ubuntu:~$ sudo /etc/init.d/tftpd-hpa restart
4、测试服务器
测试一下,在/tftpboot文件夹下新建立一个文件
forlinx@ubuntu:/tftpboot$ sudo touch abc
进入另外一个文件夹
forlinx@ubuntu:/tftpboot$ cd /home/
forlinx@ubuntu:/home$ sudo tftp 192.168.2.51 //192.168.2.51为本机IP
tftp> get abc
tftp> quit
forlinx@ubuntu:/home$ ls
abc
如果可以下载说明服务器已经安装成功,将开发板同PC通过网线进行连接后即可使用tftp下载文件。并将AM6254镜像Image和OK6254-C.dtb放入tftpboot文件夹中
开发板uboot阶段测试tftp
设置环境变量:
=> setenv ipaddr 172.16.0.141 //开发板ip
=> setenv serverip 172.16.0.142 //服务端ip
=> tftpboot Image //通过tftp下载文件
link up on port 1, speed 1000, full duplex
Using ethernet@8000000 device
TFTP from server 172.16.0.141; our IP address is 172.16.0.142
Filename ‘Image’.
Load address: 0x82000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################T
#################################################################
#################################################################
#################################################################
#################################################################
############
1.7 MiB/s
done
Bytes transferred = 20206080 (1345200 hex)

网络启动文件系统

=> setenv ipaddr 172.16.0.142 //开发板ip
=> setenv serverip 172.16.0.141 //服务端ipsetenv
=> setenv image Image
=> setenv fdt_file OK6254-C.dtb
=> setenv netargs “setenv bootargs console=ttyS2,115200 root=/dev/nfs rw ip=172.16.0.142:172.16.0.141:172.16.0.1:255.255.255.0::eth0:off nfsroot=172.16.0.141:/nfs_rootfs,v3,tcp”
=> setenv netboot “run netargs; tftpboot ${loadaddr} ${image}; tftpboot ${fdtaddr} ${fdt_file}; booti ${loadaddr} - ${fdtaddr}”
=> saveenv
Saving Environment to MMC… Writing to MMC(0)… OK
=> run netboot

网络更新镜像

网络启动完成后,将网络文件系统中的文件拷贝到mmcblk0p1、mmcblk0p2,命令如下:
cp /boot/Image /run/media/mmcblk0p2/boot/ //更新内核镜像
cp /boot/OK6254-C.dtb /run/media/mmcblk0p2/boot/ //更新设备树
cp /boot/u-boot.img /run/media/mmcblk0p1/ //更新u-boot镜像
sync

注:网络启动后开发板的文件系统就是虚拟机中放的文件系统,开发板原本的emmc中的文件系统在/run/media/mmcblk0p2/ ,所以只需要将网络文件系统中镜像复制到emmc文件系统中镜像的对应位置即可更新镜像。如果想自动更新,设置开机自启即可,开机自启设置查看开机自启应用文档。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...