kumquat-buildroot/fs
Timo Ketola 98a6f1fc02 fs/cpio: make initramfs init script survive 'console=' kernel argument
When booting with 'console=<empty>' in the kernel command line (as e.g.
U-Boot does with silent flags in effect), opening /dev/console fails.

As per POSIX [0], when iany redirection fails, the shell running exec
shal exit in error. So, when 'console=<empty>' is specified.
/dev/console can't be opened, and the redirection fails, and /init is
killed.

That behaviour was fixed on the kernel side with commit 2bd3a997befc2
(Open /dev/console from rootfs), present since 2.6.34, released in May
2010, so any [dr]ecent kernel will have that fix.

Furthermore, busybox will fix things up anyway (in bb_sanitize_stdio()),
falling back to opening /dev/null if no console is availble. systemd
does a similar thing (in make_console_stdio()), and sysvinit again has
a similar approach (in console_init()).

The archealogy search turned up those relevant commits:

    2011-08-04 10a130f91e initramfs/init: make sure that 0, 1, 2 fds are available
        introduces the three exec redirections in initramfs

    2011-09-06 3fac21ef8d cpio: fix boot with dynamic /dev
        introduces the three exec redirections in cpio

    2011-09-06 13a3afc536 fs/initramfs: refactor with fs/cpio
        dropped the initramfs tweaks to reuse the cpio ones

    2012-11-04 e1ebae700a fs/common: Create initial console device
        introduces the /dev/console char,5,1 pseudo device creation in
        cpio

    2018-03-31 dec061adce fs/cpio: don't extend packages' permissions table
        switched from the permission-table to a manual mknod to create
        /dev/console

The redirections were added before we could guarantee there was a
/dev/console in the rootfs.

We're now guaranteed to have /dev/console in an initramfs, and any recent
kernel will automatically open /dev/console before spawning /init.

The three redirections are useless now, and cause harm under certain
conditions. Drop them.

[0] https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_20_01

Signed-off-by: Timo Ketola <timo.ketola@exertus.fi>
Cc: Peter Korsgaard <peter@korsgaard.com>
[yann.morin.1998@free.fr:
  - extend commit log with the analysis done with Peter
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-04-25 14:06:34 +02:00
..
axfs fs: make it behave a bit more like the package infra 2018-01-03 21:58:07 +01:00
btrfs fs: don't use := when not needed 2019-10-27 10:35:06 +01:00
cloop fs: make it behave a bit more like the package infra 2018-01-03 21:58:07 +01:00
cpio fs/cpio: make initramfs init script survive 'console=' kernel argument 2020-04-25 14:06:34 +02:00
cramfs fs/cramfs: add xip option 2018-04-09 11:29:46 +02:00
erofs fs/erofs: add support for creating EROFS rootfs image 2020-03-19 18:43:15 +01:00
ext2 fs/ext2: pass a default string to filesystem label 2020-04-15 22:49:26 +02:00
f2fs fs: don't use := when not needed 2019-10-27 10:35:06 +01:00
initramfs fs/initramfs: fix show-info 2020-03-18 22:44:19 +01:00
iso9660 fs/*/*.mk: fix code style 2018-04-01 08:40:41 +02:00
jffs2 fs: don't use := when not needed 2019-10-27 10:35:06 +01:00
romfs fs: make it behave a bit more like the package infra 2018-01-03 21:58:07 +01:00
squashfs fs/squashfs: add zstd support 2018-04-25 23:39:04 +02:00
tar fs: don't use := when not needed 2019-10-27 10:35:06 +01:00
ubi fs: don't use := when not needed 2019-10-27 10:35:06 +01:00
ubifs fs: make it behave a bit more like the package infra 2018-01-03 21:58:07 +01:00
yaffs2 fs/yaffs2: fix code style 2018-04-01 07:55:22 +02:00
common.mk fs/common.mk: enable multithreaded xz compression 2019-08-03 19:29:47 +02:00
Config.in fs/erofs: add support for creating EROFS rootfs image 2020-03-19 18:43:15 +01:00