[linux-yocto] With my layer, Systemd not invoking my application at startup

Vipin Nair vipin.jn at gmail.com
Mon Jun 29 04:57:04 PDT 2015


Any update on this.

I am not sure if my mail reached the Yocto project group, as I have not
recieved any acknowledgment till now.

Kindly let me know if I have to register somewhere to be eligible to post
query on this group.

Thanks
Vipin

On Sat, Jun 27, 2015 at 7:09 PM, Vipin Nair <vipin.jn at gmail.com> wrote:

> Hi All,
>
> I have  created a layer (my first layer) and have build it with WindRiver
> media which uses Systemd for the startup services.
>
> As per my application need, I have to create a new user on the final image
> and change the owner permissions of certain files to the new user.
> Since I could not get it done on the build machine, I have written the
> post install script such that it gets executed on the  target board during
> the 1st boot cycle
> and from within the post install script I am creating the new user and
> changing the file ownership. And this works.
>
> But the only problem I have now is that, even though I register my service
> with Systemd at pre-install (or postinstall) section (using the systemctl
> enable command)
> my service is not getting launched by Systemd during the 1st boot. On
> subsequent reboots, it invokes my service at boot up.
>
> As part of debugging I just modified my postinstall script, such that it
> gets executed on the board (i.e without the exit 1)  and not executed on
> the 1st boot. After that I see that
> systemd invokes my service at boot up.  So I wonder if Systemd ignores the
> services for which post-install is not invoked at build machine ?
>
> Now I am confused on how to solve this problem.
>
> Only 2 approaches comes to my mind :
> 1) Run the postinstall on the board only (not on 1st boot)  - But with
> this (i.e running the postinstall section on board) I don't see the new
> user creation happening and as a result it fails to change the file
> ownership.
>
> 2) Somehow force systemd to invoke my service at startup (even with
> postinstall running during 1st boot)  - But I don't know what I have to do
> to achieve this.
>
> Here is the brief of my recipe file :
> -----------------------------------------------
>
> DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd',
> 'systemd-systemctl-native', '', d)}"
>
>
> do_install() {
> ------------
> ------------
> #if systemd configured
> install -m 0755 -d ${D}/lib/systemd/system
> cp ${WORKDIR}/${MA_BIN_DIR}/my_ser.service ${D}/lib/systemd/system/
> ------------
> ------------
> }
>
> pkg_preinst_${PN}() {
> ------------
> ------------
>
> if [  "$IS_SYSTEMD_CONFIGURED" = "yes" ] ; then
> systemctl --root=$D enable my_ser.service    # Have tried executing it
> only on postinstall, but it does not help.
> fi
> ------------
> ------------
> }
>
> pkg_postinst_${PN}() {
> ------------
> ------------
> if [  "$IS_SYSTEMD_CONFIGURED" = "yes" ] ; then
> systemctl --root=$D enable ma.service
> fi
>  if [ x"$D" = "x" ] ; then
>  # Create group and user
> groupadd test_grp
> useradd -r -s /sbin/nologin -g  test_grp test_usr
>  chown test_usr:test_grp /etc/test_folder/*
>  if [  "$IS_SYSTEMD_CONFIGURED" = "yes" ] ; then
> if [ "$1" == 1 ] || [ "$1" = 2 ] ; then  # only install and upgrade
> scenario, not to exeute on 1st boot
> systemctl daemon-reload
> systemctl start my_ser.service
> fi
> else
> exit 1
> fi
> }
>
> I am new to the yacto project and the layer approach. So kindly guide me
> on how to resolve this issue.
>
> Also if this is not the right group to get help on this issue, please
> suggest about the relevant group.
>
> Thanks
> Vipin
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/linux-yocto/attachments/20150629/b642099c/attachment.html>


More information about the linux-yocto mailing list