Re: Patch 0727d35de ("Make initramfs honor CONFIG_DEVTMPFS_MOUNT") breaks boot

From: Leo Yan
Date: Thu May 25 2017 - 09:45:03 EST


The previous email was rejected by LKML. So resend again.

On Thu, May 25, 2017 at 09:39:32PM +0800, Leo Yan wrote:
> Hi Rob, Yury,
>
> On Mon, May 22, 2017 at 8:05 PM, Yury Norov <ynorov@xxxxxxxxxxxxxxxxxx>
> wrote:
>
> > Hi Rob,
> >
> > I found that next-20170522 fails to boot on arm64 machine with the
> > following log:
> > [...]
> > [4.179509] Freeing unused kernel memory: 1088K
> > Loading, please wait...
> > mount: mounting udev on /dev failed: Device or resource busy
> > W: devtmpfs not available, falling back to tmpfs for /dev
> > Couldn't get a file descriptor referring to the console
> > Begin: Loading essential drivers ... done.
> > Begin: Running /scripts/init-premount ... done.
> > Begin: Mounting root file system ... Begin: Running
> > /scripts/local-top ... done.
> > chvt: can't open console
> > Gave up waiting for root device. Common problems:
> > - Boot args (cat /proc/cmdline)
> > - Check rootdelay= (did the system wait long enough?)
> > - Check root= (did the system wait for the right device?)
> > - Missing modules (cat /proc/modules; ls /dev)
> > chvt: can't open console
> > ALERT! /dev/sda does not exist. Dropping to a shell!
> > Couldn't get a file descriptor referring to the console
> >
> >
> > BusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash)
> > Enter 'help' for a list of built-in commands.
> >
> > (initramfs)
> >
> > Bisect points to your patch (attached below). If I revert it, everything
> > becomes fine. If you need to know something more about my environment,
> > feel free to ask me.
> >
>
> At my side, I also can reproduce this failure on Hikey board with Debian
> rootfs,
> finally the debian rootfs cannot be mounted successfully, the booting log
> is:
> http://termbin.com/akar
>
> From the log, the failures are exactly same with Yury's reporting:
> mount: mounting udev on /dev failed: Device or resource busy
> ...
> ALERT! /dev/disk/by-partlabel/system does not exist. Dropping to a
> shell!
>
> After applied this patch, the kernel mounts mount devtmpfs on '/dev', then
> later
> udev cannot mount again for devfs. Finally cannot find rootfs path from
> '/dev/disk/by-partlabel/system'. So after I comment out below sentence, the
> rootfs can boot up again.
>
> diff --git a/init/main.c b/init/main.c
> index 9ec09ff..2ea93d1 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -1050,8 +1050,8 @@ static noinline void __init kernel_init_freeable(void)
> ramdisk_execute_command = NULL;
> prepare_namespace();
> } else if (IS_ENABLED(CONFIG_DEVTMPFS_MOUNT)) {
> - sys_mkdir("/dev", 0755);
> - devtmpfs_mount("/dev");
> + //sys_mkdir("/dev", 0755);
> + //devtmpfs_mount("/dev");
> }
>
> /* Open the /dev/console on the rootfs, this should never fail */
>
> Thanks,
> Leo Yan