summaryrefslogtreecommitdiff
path: root/fs/initramfs/init
diff options
context:
space:
mode:
authorThomas Petazzoni <thomas.petazzoni@free-electrons.com>2011-08-04 21:38:59 +0200
committerPeter Korsgaard <jacmet@sunsite.dk>2011-08-04 21:52:21 +0200
commit10a130f91e5b947e2d2558443ff09b1686eac273 (patch)
treec3b025ad7e25fa990ff75b724381230d3b7d539d /fs/initramfs/init
parentf940d7602ca0810da0432638d2ce8441d6486991 (diff)
initramfs/init: make sure that 0, 1, 2 fds are available
As the kernel doesn't automatically mount devtmpfs when an initramfs is used, commit 424888e47431db738f5f9b3c6392435bfce7a842 has introduced a small wrapper script that mounts devtmpfs before starting the real init. Unfortunately, the problem is that in this case, the init process runs without any 0, 1 and 2 file descriptors, so none of the messages/errors printed by the various initialization scripts can be seen. This is due to the fact the init process relies on 0, 1 and 2 being opened by the kernel before init is started. However, as /dev/console isn't present on the filesystem at the time the kernel tries to open the console to create the 0, 1 and 2 file descriptors, the kernel fails on this and prints the famous "Warning: unable to open an initial console". The proposed workaround is to actually open 0, 1 and 2 to /dev/console in the wrapper script, right after mounting the devtmpfs filesystem, and before starting the real init. The "Warning" from the kernel is still shown, but at least the messages from the init scripts are visible. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'fs/initramfs/init')
-rwxr-xr-xfs/initramfs/init3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/initramfs/init b/fs/initramfs/init
index 751cb270f..a27548217 100755
--- a/fs/initramfs/init
+++ b/fs/initramfs/init
@@ -1,4 +1,7 @@
#!/bin/sh
# devtmpfs does not get automounted for initramfs
/bin/mount -t devtmpfs devtmpfs /dev
+exec 0</dev/console
+exec 1>/dev/console
+exec 2>/dev/console
exec /sbin/init $*