On 07/04/2015 06:42 AM, Vipin Nair wrote:
Any help on this problem ?
Vipin,
I relied to you and suggested sending it to the yo...@yoctoproject.org
list, which it appears you did. I also gave you some specific
suggestions about using the useradd and systemd bbclasses.
Sau!
On Sat, Jun 27, 2015 at 7:09 PM, Vipin Nair <vipin...@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
--
_______________________________________________
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto