ZynqLinux最小系统系列—— 7、Petalinux ubifs分区自动挂载以及用户脚本自启动提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 前言
- 创建自启动脚本
- 总结
前言
接上一篇,我们已经完成了Petalinux最小系统的搭建,并且手动挂载了ubifs分区。但是如何在上电的时候让其自动挂载还没实现。我接触的应用的一般情况下,LINUX系统起来之后都需要自动运行一个脚本用于指向位于FLASH中的用户sh文件,这样用户开发就可以以这个sh文件作为起点,进行更上一层的开发。
创建自启动脚本那我们现在就需要一个这样的startup文件,系统加载完成之后接下来就来执行这个shell脚本文件,这个sh脚本文件要包含以下内容
1、 挂载QPSI中的user1为ubifs分区挂载点为/flash/user1
2、 同时再这个sh文件的最后,要指向位于/flash/user1中的user.sh脚本
petalinux-create -t apps --template install -n startup --enable
在project-spec/meta-user/recipes-apps文件夹内会出现startup文件夹
在startup/files内有startup文件,将其内容修改为我们需要的内容:
#!/bin/sh mkdir -p /flash/user1 ubiattach /dev/ubi_ctrl -m 4 sleep 1 if [ -e /dev/ubi0_0 ]; then mount -t ubifs /dev/ubi0_0 /flash/user1 else ubiformat /dev/mtd4 ubiattach /dev/ubi_ctrl -m 4 ubimkvol /dev/ubi0 -N qspi_ubi0 -m mount -t ubifs /dev/ubi0_0 /flash/user1 fi echo "PetaLinux GO GO GO" sh /flash/user1/user.sh
同时在startup文件夹内的startup.bb文件,需要修改为:
#
# This file is the startup recipe.
#
SUMMARY = "Simple startup application"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://startup
"
S = "${WORKDIR}"
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
inherit update-rc.d
INITSCRIPT_NAME = "startup"
INITSCRIPT_PARAMS = "start 99 S ."
do_install() {
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${S}/startup ${D}${sysconfdir}/init.d/startup
}
FILES_${PN} += "${sysconfdir}/*"
然后重新进行工程的编译
Petalinux-build
编译完成后,重新打包,并且烧写。
重新上电,如果最末尾有如下打印,则表示ubifs文件分区挂载成功
如果是第一次挂载,/flash/user1应该为空,会提示user.sh文件不存在。那么我们把user.sh文件放进去,我们可以通过ftp方式放进去,把网口插上,设置一个IP地址
Ifconfig eth0 192.168.197.241
在windows文件浏览器中输入 ftp://192.168.197.241
把准备好的user.sh和test.sh文件放到/flash/user1文件夹中去
User.sh
#!/bin/sh cd /flash/user1 sh test.sh & echo "user app can use!!!!"
Test.sh
#!/bin/sh sleep 5 ifconfig eth0 192.168.197.241
重新上点,发下如下打印,则表示User.sh运行起来了
在查询下IP 地址,本地网口的IP地址也配置上了,实验成功。
有了这些基础,后面就可以把更复杂的应用通过user.sh来进行加载和启动了。



