All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Cc: Damien Le Moal <dlemoal@kernel.org>,
	linux-amarula@amarulasolutions.com,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH v4 1/3] package/tinyinit: new package
Date: Sat, 14 Sep 2024 11:24:02 +0200	[thread overview]
Message-ID: <ZuVWMm4pkyz-M_IA@landeda> (raw)
In-Reply-To: <20240831120833.2915529-2-dario.binacchi@amarulasolutions.com>

Dario, All,

On 2024-08-31 14:08 +0200, Dario Binacchi spake thusly:
> This package contains a Linux init script suitable for resource-limited
> systems which can be used as an alternative to the one provided by
> Busybox.
> 
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> Cc: Yann E. MORIN <yann.morin.1998@free.fr>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
[--SNIP--]
> diff --git a/package/tinyinit/Config.in b/package/tinyinit/Config.in
> new file mode 100644
> index 000000000000..f68b030e7e0f
> --- /dev/null
> +++ b/package/tinyinit/Config.in
> @@ -0,0 +1,8 @@
> +config BR2_PACKAGE_TINYINIT
> +	bool "tinyinit"
> +	depends on BR2_INIT_TINYINIT
> +	imply BR2_PACKAGE_BUSYBOX

As discussed with together with the other maintainers at the dev-days,
we concluded that we do not want to use 'imply', at least not in this
case.

Indeed, imply is a soft requirement, that makes the target enabled by
default, but can still be de-selectable. In our case, busybox is already
enabled by default, so 'imply' has no impact.

Applied to master with 'imply' dropped, thanks!

Regards,
Yann E. MORIN.

> +	help
> +	  A Linux tiny initialization script suitable for resource
> +	  limited systems, which can be used as an alternative to the
> +	  one provided by Busybox.
> diff --git a/package/tinyinit/init b/package/tinyinit/init
> new file mode 100644
> index 000000000000..fbcb481010c2
> --- /dev/null
> +++ b/package/tinyinit/init
> @@ -0,0 +1,32 @@
> +#!/bin/sh
> +
> +# This script replaces the default busybox init process to avoid having that
> +# process staying alive and sleeping in the background, (uselessly) consuming
> +# precious memory.
> +
> +# Mount procfs and sysfs
> +/bin/mount -t proc proc /proc
> +/bin/mount -t sysfs sysfs /sys
> +
> +# When the kernel is directly booted, devtmpfs is not automatically mounted.
> +# Manually mount it if needed.
> +devmnt=$(mount | grep -c devtmpfs)
> +if [ "${devmnt}" -eq 0 ]; then
> +    /bin/mount -t devtmpfs devtmpfs /dev
> +fi
> +
> +# Use the /dev/console device node from devtmpfs if possible to not
> +# confuse glibc's ttyname_r().
> +# This may fail (E.G. booted with console=), and errors from exec will
> +# terminate the shell, so use a subshell for the test
> +if (exec 0</dev/console) 2>/dev/null; then
> +    exec 0</dev/console
> +    exec 1>/dev/console
> +    exec 2>/dev/console
> +fi
> +
> +# Clear memory to reduce page fragmentation
> +echo 3 > /proc/sys/vm/drop_caches
> +
> +# Finally, let's start an interactive shell
> +exec /bin/sh
> diff --git a/package/tinyinit/tinyinit.mk b/package/tinyinit/tinyinit.mk
> new file mode 100644
> index 000000000000..ac1f0f736e38
> --- /dev/null
> +++ b/package/tinyinit/tinyinit.mk
> @@ -0,0 +1,13 @@
> +################################################################################
> +#
> +# tinyinit
> +#
> +################################################################################
> +
> +define TINYINIT_INSTALL_TARGET_CMDS
> +	$(INSTALL) -m 0755 -D $(TINYINIT_PKGDIR)/init $(TARGET_DIR)/sbin/init
> +	# Downside: In non-initramfs systems the symlink isn't used/needed
> +	(cd $(TARGET_DIR); ln -sf /sbin/init init)
> +endef
> +
> +$(eval $(generic-package))
> diff --git a/system/Config.in b/system/Config.in
> index d7d59db47db7..974152bd23e6 100644
> --- a/system/Config.in
> +++ b/system/Config.in
> @@ -165,6 +165,15 @@ config BR2_INIT_TINI
>  
>  	  https://github.com/krallin/tini
>  
> +config BR2_INIT_TINYINIT
> +	bool "tiny init"
> +	select BR2_PACKAGE_TINYINIT
> +	select BR2_PACKAGE_SKELETON_INIT_NONE if BR2_ROOTFS_SKELETON_DEFAULT
> +	help
> +	  A Linux tiny initialization script suitable for resource
> +	  limited systems, which can be used as an alternative to the
> +	  one provided by Busybox.
> +
>  config BR2_INIT_NONE
>  	bool "Custom (none)"
>  	select BR2_PACKAGE_SKELETON_INIT_NONE if BR2_ROOTFS_SKELETON_DEFAULT
> -- 
> 2.43.0
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  parent reply	other threads:[~2024-09-14  9:24 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-31 12:08 [Buildroot] [PATCH v4 0/3] tinyinit and stm32f746_disco_sd_defconfig Dario Binacchi
2024-08-31 12:08 ` [Buildroot] [PATCH v4 1/3] package/tinyinit: new package Dario Binacchi
2024-09-02  0:26   ` Damien Le Moal via buildroot
2024-09-14  9:24   ` Yann E. MORIN [this message]
2024-08-31 12:08 ` [Buildroot] [PATCH v4 2/3] configs/stm32f746_disco_sd: new defconfig Dario Binacchi
2024-09-14 10:15   ` Yann E. MORIN
2024-08-31 12:08 ` [Buildroot] [PATCH v4 3/3] board/canaan/k210-soc: use tinyinit as Linux init process Dario Binacchi
2024-09-02  0:26   ` Damien Le Moal via buildroot
2024-09-14  9:35   ` Yann E. MORIN

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZuVWMm4pkyz-M_IA@landeda \
    --to=yann.morin.1998@free.fr \
    --cc=buildroot@buildroot.org \
    --cc=dario.binacchi@amarulasolutions.com \
    --cc=dlemoal@kernel.org \
    --cc=linux-amarula@amarulasolutions.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.