yocto linux修改ip,Yocto构建的linux后安装脚本

我最终做了shibley写的东西。这里有一个详细的HOWTO:

创建一个新层

把所需层无论你的其他层。我的目录是stuff,位于build目录旁边。

进行以下的文件/目录:

meta_mylayer

├── conf

│   └── layer.conf

└── recipes-core

└── mylayer-initscript

├── initscript.bb

└── files

├── initscript.service

└── initscript.sh

meta_mylayer是新图层的名称。

让我们在conf/layer.conf定义层,并告诉它在哪里搜索食谱:

BBPATH .= ":${LAYERDIR}"

BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "meta-mylayer"

BBFILE_PATTERN_meta-mylayer := "^${LAYERDIR}/"

BBFILE_PRIORITY_meta-mylayer = "99"

食谱是由的.bb文件的名称来定义。该图层只有一个配方,名称为initscript。

initscript.bb包含配方信息。下面的食谱将增加我们的启动脚本服务,并把实际的安装脚本,initscript.sh,到/usr/sbin/

SUMMARY = "Initial boot script"

DESCRIPTION = "Script to do any first boot init, started as a systemd service which removes itself once finished"

LICENSE = "CLOSED"

PR = "r3"

SRC_URI = " \

file://initscript.sh \

file://initscript.service \

"

do_compile() {

}

do_install() {

install -d ${D}/${sbindir}

install -m 0755 ${WORKDIR}/initscript.sh ${D}/${sbindir}

install -d ${D}${systemd_unitdir}/system/

install -m 0644 ${WORKDIR}/initscript.service ${D}${systemd_unitdir}/system

}

NATIVE_SYSTEMD_SUPPORT = "1"

SYSTEMD_PACKAGES = "${PN}"

SYSTEMD_SERVICE_${PN} = "initscript.service"

inherit allarch systemd

install -d将创建需要指定路径的任何目录,而install -m 0644将指定的文件复制与644组的权限。${D}是目标目录,默认情况下它是${WORKDIR}/image

创建systemd服务定义

我不会进入太多的细节有关的工作原理systemd,而是要贴服的定义:

[Unit]

Description=start initscript upon first boot

[Service]

Type=simple

ExecStart=/bin/sh -c 'sleep 5 ; /usr/sbin/initscript.sh'

请注意脚本位置/usr/sbin/ - 这就是它将被我们上面的do_install函数的最后一行复制的位置。

最后,我们initscript.sh脚本本身:

#!/bin/sh

logger "starting initscript"

# do some work here. Mount rootfs as rw if needed.

logger "initscript work done"

#job done, remove it from systemd services

systemctl disable initscript.service

logger "initscript disabled"

注册层

我们需要注册一个新的层,使知道bitbake的它的存在。 编辑build/conf/bblayers.conf文件,并添加下面一行到BASELAYERS变量:

${TOPDIR}/../stuff/meta-mylayer \

既然承认bitbake的我们的图层,我们需要把我们的配方添加到图像。 编辑build/conf/local.conf并将initscript配方添加到IMAGE_INSTALL_append变量。以下是在Python旁边添加的样子。

IMAGE_INSTALL_append = " python initscript"

运行构建

运行构建像你通常做。例如:

bitbake angstrom-lxde-image

安装构建和启动后的第一次,你initscript.sh将被执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值