poky-tiny: Add tiny-init mechanism for poky-tiny distro
cover poky-tiny: Add tiny-init mechanism for poky-tiny distro
Provide a basic functional init mechanism for poky-tiny. This defines a new "tiny" DISTRO_FEATURE in poky-tiny.conf, updates the busybox config based on this DISTRO_FEATURE, and creates a new tiny-init recipe which is made the default VIRTUAL-RUNTIME_init_manager for poky-tiny.
The busybox changes are for oe-core to avoide a bbappend in meta-yocto. That one patch is CC'd to oe-core.
The following changes since commit 7f017cab0b3e4d5a4fc356eccd8eb8429b0531d0:
connman: bump PR and add some comments (2012-06-13 13:11:23 +0100)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib dvhart/tiny
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=dvhart/tiny
Darren Hart (3):
poky-tiny: Define the "tiny" DISTRO_FEATURE
busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
tiny-init: Basic init mechanism for poky-tiny
meta-yocto/conf/distro/poky-tiny.conf | 8 ++---- meta-yocto/recipes-core/tiny-init/files/init | 21 ++++++++++++++++ .../recipes-core/tiny-init/files/rc.local.sample | 23 +++++++++++++++++ meta-yocto/recipes-core/tiny-init/tiny-init.bb | 26 ++++++++++++++++++++ meta/recipes-core/busybox/busybox.inc | 2 + 5 files changed, 75 insertions(+), 5 deletions(-) create mode 100644 meta-yocto/recipes-core/tiny-init/files/init create mode 100644 meta-yocto/recipes-core/tiny-init/files/rc.local.sample create mode 100644 meta-yocto/recipes-core/tiny-init/tiny-init.bb
Signature · 1 line
1.7.5.4
PATCH 1/3 poky-tiny: Define the "tiny" DISTRO_FEATURE
Enable recipes such as busybox to modify their configuration based on a DISTRO_FEATURE for tiny distributions.
--- meta-yocto/conf/distro/poky-tiny.conf | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-)
meta-yocto/conf/distro/poky-tiny.conf +2 -4
@@ -31,9 +31,6 @@ require conf/distro/poky.conf DISTRO = "poky-tiny" -# FIXME: consider adding a new "tiny" feature -#DISTRO_FEATURES_append = " tiny" - # Distro config is evaluated after the machine config, so we have to explicitly # set the kernel provider to override a machine config. PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-tiny"
@@ -84,7 +81,8 @@ DISTRO_FEATURES_USB = "usbhost" #DISTRO_FEATURES_USBGADGET = "usbgadget" #DISTRO_FEATURES_WIFI = "wifi" -DISTRO_FEATURES = "${DISTRO_FEATURES_TINY} \ +DISTRO_FEATURES = "tiny \ + ${DISTRO_FEATURES_TINY} \ ${DISTRO_FEATURES_NET} \ ${DISTRO_FEATURES_USB} \ ${DISTRO_FEATURES_USBGADGET} \
Signature · 1 line
1.7.5.4
PATCH 2/3 busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
In reply to Darren HartWhen building very small systems, it can be useful to spawn a shell from a simple init script, rather than a full System V Init process. This requires the shell be the session leader and be able to open the controlling terminal if it is to have job control.
Enable CONFIG_CTTYHACK and CONFIG_SETSID to enable this for distros defining the "tiny" DISTRO_FEATURE.
--- meta/recipes-core/busybox/busybox.inc | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
meta/recipes-core/busybox/busybox.inc +2 -0
@@ -57,6 +57,8 @@ def features_to_busybox_settings(d): busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem) busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem) busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem) return "\n".join(cnf), "\n".join(rem) # X, Y = ${@features_to_uclibc_settings(d)}
Signature · 1 line
1.7.5.4
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
Note that this is a part of a larger series. The other patches are against meta-yocto, but the busybox change seemed more appropriate here than in a bbappend in meta-yocto.
At some point poky-tiny may need to come into oe-core, until then...
Quoted 28 lines · Darren Hart
When building very small systems, it can be useful to spawn a shell from a simple init script, rather than a full System V Init process. This requires the shell be the session leader and be able to open the controlling terminal if it is to have job control.
Enable
CONFIG_CTTYHACKandCONFIG_SETSIDto enable this for distros defining the "tiny"DISTRO_FEATURE.Signed-off-by Darren Hart <[email protected]>CC OE Core <[email protected]>--- meta/recipes-core/busybox/busybox.inc | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)meta/recipes-core/busybox/busybox.inc +2
-0@@ -57,6 +57,8 @@ def features_to_busybox_settings(d): busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem) busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem) busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem) return "\n".join(cnf), "\n".join(rem) # X, Y = ${@features_to_uclibc_settings(d)}
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel
Re: [OE-core] [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 2 lines · Darren Hart
At some point poky-tiny may need to come into oe-core, until then...
why do you think so. micro is also a distro with similar goals lives outside of OE-Core infact any distros live outside oe-core -----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk/Zi60ACgkQuwUzVZGdMxSg/gCfUHIMxUBVSOWrPP5geIykH1pJ xpkAniMD6AZAnQfMA82Ri3EdjkDLkBlk
=Jyew
-----END PGP SIGNATURE-----
Re: [OE-core] [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 6 lines · Khem Raj
Quoted 2 lines · Darren Hart
At some point poky-tiny may need to come into oe-core, until then...
why do you think so. micro is also a distro with similar goals lives outside of OE-Core infact any distros live outside oe-core
Note I'm not arguing for it one way or the other. I could see people wanting it to come in with linux-yocto-tiny already in oe-core. Or, it might make more sense to move linux-yocto-tiny to meta-yocto and just keep it all contained in meta-yocto. That's fine with me too.
- --
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJP2lNoAAoJEKbMaAwKp364GmwH/3wmP5TTnZ2oReLwaNFOkdCh aKMr7EVm0ZOfb2j8vS2oRBg3C5AQ4aV7CR3w3OmXt+0tRlTF2P/M5XT2WgB90YUA aeFM9znTs4DWSkUHw0Kr9O+kmb2WE6jXJUMxcmk9rId03XhykZBKKjVjUQXON8hQ oL8u3s83IOL1fPLIUbJEg28LuOW25O0jQftZBeAqiX5tG8nC10m0HZFry0FqN/UG MggLVSmUOEVioS1Z3rYHxValFqs/LFEtr3B+8sEgILFOM+kKE0LbJUbup2vS1eoh YbhA2pzPsqLKswJAdkgv11QLvJ0fT9osrsBTUe7uIEPJHQG0YRawIFk8pS8BxZU= =OZf4
-----END PGP SIGNATURE-----
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
In reply to Darren Hart-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 26 lines · Darren Hart
When building very small systems, it can be useful to spawn a shell from a simple init script, rather than a full System V Init process. This requires the shell be the session leader and be able to open the controlling terminal if it is to have job control.
Enable
CONFIG_CTTYHACKandCONFIG_SETSIDto enable this for distros defining the "tiny"DISTRO_FEATURE.Signed-off-by Darren Hart <[email protected]> CC: OE Core<[email protected]> ---
meta/recipes-core/busybox/busybox.inc | 2 ++ 1 files changed, 2
insertions(+), 0 deletions(-)(quoted diff) +0
-0b/meta/recipes-core/busybox/busybox.inc index 5b83d32..d07ba7e 100644 --- a/meta/recipes-core/busybox/busybox.inc +++ b/meta/recipes-core/busybox/busybox.inc @@ -57,6 +57,8 @@ def
features_to_busybox_settings(d):busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem)busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem)busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem)+busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem)+busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem)return "\n".join(cnf), "\n".join(rem)
Quoted 1 line
# X, Y = ${@features_to_uclibc_settings(d)}
Enabling cttyhack and setsid could be a good thing in general (thinking of initramfs kind of images) so I would propose to enable it by default
and not introduce another distro knob here. How much does busybox code size grow which these two features turned on.?
otherwise second best thing is to keep it in poky-tiny distro layer which wants to set the policy
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk/ZjTsACgkQuwUzVZGdMxSXwACfX44Ffs5G4hhW9q9toubwxZYn Ag4AnijTe1TbzrGZfHaHw+qZY/IQAzlA
=mTVi
-----END PGP SIGNATURE-----
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 28 lines · Khem Raj
Quoted 26 lines · Darren Hart
When building very small systems, it can be useful to spawn a shell from a simple init script, rather than a full System V Init
process. This requires the shell be the session leader and be
able to open the controlling terminal if it is to have job control.Enable
CONFIG_CTTYHACKandCONFIG_SETSIDto enable this for distros defining the "tiny"DISTRO_FEATURE.Signed-off-by Darren Hart <[email protected]> CC: OE Core<[email protected]> ---
meta/recipes-core/busybox/busybox.inc | 2 ++ 1 files changed,
2 insertions(+), 0 deletions(-)(quoted diff) +0
-0b/meta/recipes-core/busybox/busybox.inc index 5b83d32..d07ba7e 100644 --- a/meta/recipes-core/busybox/busybox.inc +++ b/meta/recipes-core/busybox/busybox.inc @@ -57,6 +57,8 @@ def
features_to_busybox_settings(d):busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem)busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem)busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem)+busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem)
+busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem)return "\n".join(cnf), "\n".join(rem)
Quoted 6 lines
Quoted 1 line
# X, Y = ${@features_to_uclibc_settings(d)}
Enabling cttyhack and setsid could be a good thing in general (thinking of initramfs kind of images) so I would propose to enable it by default and not introduce another distro knob here. How much does busybox code size grow which these two features turned on.?
So this struck me as strange, but I did it twice to make sure I didn't mess something up:
BEFORE
- -rwxr-xr-x 1 dvhart dvhart 2799417 2012-06-15 15:06 busybox
- -rwxr-xr-x 1 dvhart dvhart 547872 2012-06-15 15:06 busybox_stripped
AFTER (w/ SETSID and CTTYHACK)
- -rwxr-xr-x 1 dvhart dvhart 2805195 2012-06-15 14:45 busybox
- -rwxr-xr-x 1 dvhart dvhart 547872 2012-06-15 15:05 busybox_stripped
DELTA
busybox: 5778
busybox_stripped: 0
The difference is <6k for the unstripped binary, and 0 bytes for the stripped binary. It must have something to do with the way busybox builds and enables features. The above was using my host strip command. I also tried building the rootfs with and without these features and comparing the cross-stripped binaries in the rootfs, delta is also 0 bytes.
So the cost is "negligible" and there is a clear advantage to having these two options enabled. I'll resend with a two line change to the defconfig to enable them.
- --
Darren
Quoted 9 lines
otherwise second best thing is to keep it in poky-tiny distro layer which wants to set the policy
_______________________________________________ Openembedded-core mailing list [email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
- --
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJP27WMAAoJEKbMaAwKp364Hf0IAKpHOMWy63ZPYwN+Ay7wXPf1 KaUe4fWGBIMNJqS5FGJyhxBnWMdXJceAKMP6Wo2nIa/kvjat//IME8v41xwAb+mD 5sjZpkcBE02CFq9rZmHfiTTPbYC7iS8a6Dz5n/fTLb79b189Jv3Rx/G3GCN4ioeC xqwVU8zmdtkrHfU+UonR5G4HdNMCjOCFETLWcWW6DNTsj5PmazJV2cMIZTYJEr43 G/EyvO2fz/n+y53dsI04zwNEXuyr0pjurCK7dXt9oxlOnDvE276yS1b0Xihwm3cW G/h0udSeQ3fcF91vCxdYMAlQNJyMqiCOCeSW5gOVe6NKs+kuxzRqYFSEfD0gtmY= =aZeL
-----END PGP SIGNATURE-----
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Quoted 59 lines · Darren Hart
Quoted 28 lines · Khem Raj
Quoted 26 lines · Darren Hart
When building very small systems, it can be useful to spawn a shell from a simple init script, rather than a full System V Init process. This requires the shell be the session leader and be able to open the controlling terminal if it is to have job control.
Enable
CONFIG_CTTYHACKandCONFIG_SETSIDto enable this for distros defining the "tiny"DISTRO_FEATURE.Signed-off-by Darren Hart <[email protected]> CC: OE Core<[email protected]> ---
meta/recipes-core/busybox/busybox.inc | 2 ++ 1 files
changed, 2 insertions(+), 0 deletions(-)(quoted diff) +0
-0b/meta/recipes-core/busybox/busybox.inc index 5b83d32..d07ba7e
100644 --- a/meta/recipes-core/busybox/busybox.inc +++
b/meta/recipes-core/busybox/busybox.inc @@ -57,6 +57,8 @@ deffeatures_to_busybox_settings(d):busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem)busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem)busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem)+busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem)+busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem)return "\n".join(cnf), "\n".join(rem)Quoted 7 lines
Quoted 1 line
# X, Y = ${@features_to_uclibc_settings(d)}
Enabling cttyhack and setsid could be a good thing in general (thinking of initramfs kind of images) so I would propose to enable it by default and not introduce another distro knob here. How much does busybox code size grow which these two features turned on.?
So this struck me as strange, but I did it twice to make sure I didn't mess something up:
BEFORE -rwxr-xr-x 1 dvhart dvhart 2799417 2012-06-15 15:06 busybox -rwxr-xr-x 1 dvhart dvhart 547872 2012-06-15 15:06
busybox_strippedAFTER (w/ SETSID and CTTYHACK) -rwxr-xr-x 1 dvhart dvhart 2805195 2012-06-15 14:45 busybox -rwxr-xr-x 1 dvhart dvhart 547872 2012-06-15 15:05
busybox_strippedDELTA busybox: 5778
busybox_stripped: 0The difference is <6k for the unstripped binary, and 0 bytes for the stripped binary. It must have something to do with the way busybox builds and enables features. The above was using my host strip command. I also tried building the rootfs with and without these features and comparing the cross-stripped binaries in the rootfs, delta is also 0 bytes.
Quoted 3 lines
So the cost is "negligible" and there is a clear advantage to having these two options enabled. I'll resend with a two line change to the defconfig to enable them.
Sorry, I hit the menuconfig/sstate bug. There is a 2560 byte difference for including these two features. Seems reasonable to me. A new patch has been sent to the list.
- --
Darren
Quoted 15 lines
-- Darren
Quoted 9 lines
otherwise second best thing is to keep it in poky-tiny distro layer which wants to set the policy
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
Quoted 5 lines
_______________________________________________ Openembedded-core mailing list [email protected]
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
- --
Darren Hart
Intel Open Source Technology Center
Yocto Project - Linux Kernel
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iQEcBAEBAgAGBQJP273OAAoJEKbMaAwKp364D7EH/2RsItQ6k5y610GbII1Emz/n hX85K/T9f0Pooj9axNtM9E+W3X3AoRlDCRkhlKsZo8YqYnnTCcohYhVpoH0mrnN6 CtnW3e7usrAkoRjw/1COfRUuzGnxZRhE1BY7zW2+EKEYbFOeHFTw35erxOaTK8Cc huemQLgmtfSYnMJjig8WEDETmlKy1dBHpRscRHUdJkkivKMJdv4M3ASZ9fAG21HB fCXO6D6pRy2B60NJJ/7VKAuvB0o64ZOlK4rjuUPL+goGayQTwt85giB5Vk2K3zkT n1ekvtBezgYg/3Av9B16kwoiKEWZzZ2qDvSkpCh4u6bzTcXeJAaWaaYUyhQGojU= =Yn5h
-----END PGP SIGNATURE-----
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
In reply to Darren Hartmeta/recipes-core/busybox/busybox.inc def features_to_busybox_settings(d): · line 64
Quoted 13 lines · Darren Hart
meta/recipes-core/busybox/busybox.inc +2
-0@@ -57,6 +57,8 @@ def features_to_busybox_settings(d): busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem) busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem) busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem) return "\n".join(cnf), "\n".join(rem) # X, Y = ${@features_to_uclibc_settings(d)}
What exactly is the mission of the "tiny" DISTRO_FEATURE? It doesn't seem very wholesome for it to be enabling a random grab-bag of bits in busybox (or anywhere else).
If poky-tiny wants those features enabled then it can, and should, ship its own configuration for busybox which turns them on. I think that would be better than further proliferation of switches in oe-core.
p.
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
Quoted 13 lines · Phil Blundell
Quoted 12 lines · Darren Hart
meta/recipes-core/busybox/busybox.inc +2
-0@@ -57,6 +57,8 @@ def features_to_busybox_settings(d): busybox_cfg('nls', distro_features, 'CONFIG_LOCALE_SUPPORT', cnf, rem) busybox_cfg('ipv4', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV4', cnf, rem) busybox_cfg('ipv6', distro_features, 'CONFIG_FEATURE_IFUPDOWN_IPV6', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_SETSID', cnf, rem) + busybox_cfg('tiny', distro_features, 'CONFIG_CTTYHACK', cnf, rem) return "\n".join(cnf), "\n".join(rem)
Quoted 5 lines
meta/recipes-core/busybox/busybox.inc def features_to_busybox_settings(d): · line 64
Quoted 1 line
meta/recipes-core/busybox/busybox.inc +0
-0# X, Y = ${@features_to_uclibc_settings(d)}What exactly is the mission of the "tiny"
DISTRO_FEATURE? It doesn't seem very wholesome for it to be enabling a random grab-bag of bits in busybox (or anywhere else).
The idea is to avoid having to bbappend busybox and other recipes basically. I can see how "tiny" is different than "ipv4" as it isn't explicit it what it enables, making it a "grab-bag" as you put it.
I could come up with a term that describes systems without complex init systems that need to be able to setup their own shells easily.
Another approach would be to just consider these two features and decide if they shouldn't just be part of the oe-core busybox defconfig anyway. I don't see why setsid shouldn't be. I can see arguments against cttyhack (as it is a hack), but I wouldn't think either should be a huge deal to just include. I thought the DISTRO_FEATURE was a reasonable compromise between that and having to maintain a bbappend outside of oe-core.
Quoted 5 lines
If poky-tiny wants those features enabled then it can, and should, ship its own configuration for busybox which turns them on. I think that would be better than further proliferation of switches in oe-core.
How would you feel about just including these two features in the defconfig then?
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel
Re: [PATCH 2/3] busybox: Add setsid and cttyhack for tiny DISTRO_FEATURE
Quoted 7 lines · Darren Hart
Another approach would be to just consider these two features and decide if they shouldn't just be part of the oe-core busybox defconfig anyway. I don't see why setsid shouldn't be. I can see arguments against cttyhack (as it is a hack), but I wouldn't think either should be a huge deal to just include. I thought the
DISTRO_FEATUREwas a reasonable compromise between that and having to maintain a bbappend outside of oe-core.
Well, you don't need to maintain a .bbappend as such: you can just provide your own, completely custom config file for busybox. That's what micro does, what shr does (I think), and what I would suggest that most DISTROs with non-trivial configuration requirements should probably do.
I think most folks do actually use a .bbappend to fiddle FILESPATH in order to get the configuration file picked up, but I'm fairly sure you could do this with a bit of suitable magic in your distro config file and avoid the .bbappend altogether.
Quoted 2 lines
How would you feel about just including these two features in the defconfig then?
Not massively enthusiastic, simply because the logical conclusion of that approach is that we end up with basically everything in busybox turned on. If we're going to go along that path then I think I would prefer us to be up-front about it and just make the oe-core default configuration for busybox be a "maximum features enabled" one.
p.
PATCH 3/3 tiny-init: Basic init mechanism for poky-tiny
In reply to Darren HartCurrently poky-tiny images will boot and run /bin/sh, which results in error messages to the console about being unable to open the tty and job control being disabled.
The shell must be session leader to open the tty, and the tty must not be /dev/console (it should be a vt or a physical tty like ttyS0), the tty is required for job control (handling signals, etc.).
The goals of poky-tiny are to be an initial starting point from which to build a distribution that does what you want, and NOTHING more.
This patch results in a system that boots with the virtual filesystems mounted, the local network interface up, and a shell with job control running, and a hook (/etc/rc.local) for easy customization. Nothing else.
Thanks to Tim Bird for his suggestion to include support for rc.local by default.
--- meta-yocto/conf/distro/poky-tiny.conf | 2 +- meta-yocto/recipes-core/tiny-init/files/init | 21 ++++++++++++++++ .../recipes-core/tiny-init/files/rc.local.sample | 23 +++++++++++++++++ meta-yocto/recipes-core/tiny-init/tiny-init.bb | 26 ++++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletions(-) create mode 100644 meta-yocto/recipes-core/tiny-init/files/init create mode 100644 meta-yocto/recipes-core/tiny-init/files/rc.local.sample create mode 100644 meta-yocto/recipes-core/tiny-init/tiny-init.bb
meta-yocto/conf/distro/poky-tiny.conf +1 -1
@@ -93,7 +93,7 @@ DISTRO_FEATURES = "tiny \ # Use tmpdevfs and the busybox runtime services VIRTUAL-RUNTIME_dev_manager = "" VIRTUAL-RUNTIME_login_manager = "" -VIRTUAL-RUNTIME_init_manager = "" +VIRTUAL-RUNTIME_init_manager = "tiny-init" VIRTUAL-RUNTIME_keymaps = "" # FIXME: Consider adding "modules" to MACHINE_FEATURES and using that in
meta-yocto/recipes-core/tiny-init/files/init new file +21 -0
@@ -0,0 +1,21 @@ +#!/bin/sh + +# Mount the Linux kernel virtual filesystems +mount none -t proc /proc +mount none -t sysfs /sys +mkdir /dev/pts +mount none -t devpts /dev/pts + +ifup lo + +# Allow for distro or local customizations +if [ -f /etc/rc.local ] ; then + source /etc/rc.local +fi + +# Become session leader and try to find a real tty (e.g. ttyS0) +while true; do + setsid cttyhack sh + echo "Console sh exited with $?, respawning..." + sleep 1 +done
meta-yocto/recipes-core/tiny-init/files/rc.local.sample new file +23 -0
@@ -0,0 +1,23 @@ +#!/bin/sh + +# Start services and customize the boot process here. +echo "Running /etc/rc.local..." + +# Use init scripts included with packages such as dropbear +#/etc/init.d/dropbear start + +# Spawn a getty manually +#setsid /sbin/getty 115200 ttyS2 + +# Print a banner +#echo "You are running a poky-tiny image brought to you by the Yocto Project." + +# Setup a debugging environment +#mkdir /debugfs +#mount none -t debugfs /debugfs + +# Load modules (note: linux-yocto-tiny does not have module support by default) +#modprobe yourdriver + +# DO NOT run any long running tasks or loops as these will delay +# the /init script and the console shell.
meta-yocto/recipes-core/tiny-init/tiny-init.bb new file +26 -0
@@ -0,0 +1,26 @@ +SUMMARY = "Poky-tiny init" +DESCRIPTION = "Basic init system for poky-tiny" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +PR = "r0" + +SRC_URI = "file://init \ + file://rc.local.sample \ + " + +do_configure() { + : +} + +do_compile() { + : +} + +do_install() { + install -d ${D}${sysconfdir} + install -m 0755 ${WORKDIR}/init ${D} + install -m 0755 ${WORKDIR}/rc.local.sample ${D}${sysconfdir} +} + +FILES_${PN} = "/init ${sysconfdir}/rc.local.sample"
Signature · 1 line
1.7.5.4