On 08/09/13 at 09:35am, Vivek Goyal wrote:
> On Thu, Aug 08, 2013 at 03:18:11PM +0800, WANG Chao wrote:
> > Currently we don't respect noauto/nofail root mount options (from
> > rootflags kernel cmdline). We should map these two flags to the
> > corresponding boolean variable noauto and nofail when calling
> > add_mount().
> >
> > Signed-off-by: WANG Chao <[email protected]>
>
> Chao,
>
> Will this work for other mount points as specified by dracut command
> line --mount?
Yes. "nofail" has been always work _except_ for root fs mount (which is
this patch for).
>
> IOW, if I specify a mount point using --mount and specify "nofail" in
> filesystem options, and if that file system can't be mounted, what
> will happen. Will we continue to run pre-pivot service?
Yes, we can use rootflags=nofail to make initrd-root-fs.target "Wants"
sysroot.mount rather than strict "Requires".
For mounting non-root fs from /etc/fstab, we can either use systemd by
default or a dracut script running under pre-pivot hook if specified
rd.fstab=0.
Thanks
WANG Chao
>
> Thanks
> Vivek
>
> > ---
> >
> > Days ago, I sent a patch to add rd.weak_sysroot. It seems you guys don't
> > like
> > it, even me neither :(
> >
> > So I come up with this update. It looks more reasonable. With this patch, I
> > can
> > set rootflags=nofail to bypass sysroot failure, which blocking
> > initrd-root-fs.target.
> >
> > Please put your comments. Thanks!
> >
> > src/fstab-generator/fstab-generator.c | 6 +++++-
> > 1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/fstab-generator/fstab-generator.c
> > b/src/fstab-generator/fstab-generator.c
> > index c17299f..87b17cd 100644
> > --- a/src/fstab-generator/fstab-generator.c
> > +++ b/src/fstab-generator/fstab-generator.c
> > @@ -492,6 +492,7 @@ static int parse_new_root_from_proc_cmdline(void) {
> > char *w, *state;
> > int r;
> > size_t l;
> > + bool noauto, nofail;
> >
> > r = read_one_line_file("/proc/cmdline", &line);
> > if (r < 0) {
> > @@ -547,6 +548,9 @@ static int parse_new_root_from_proc_cmdline(void) {
> > }
> > }
> >
> > + noauto = !!strstr(opts, "noauto");
> > + nofail = !!strstr(opts, "nofail");
> > +
> > if (!what) {
> > log_debug("Could not find a root= entry on the kernel
> > commandline.");
> > return 0;
> > @@ -558,7 +562,7 @@ static int parse_new_root_from_proc_cmdline(void) {
> > }
> >
> > log_debug("Found entry what=%s where=/sysroot type=%s", what,
> > type);
> > - r = add_mount(what, "/sysroot", type, opts, 0, false, false, false,
> > + r = add_mount(what, "/sysroot", type, opts, 0, noauto, nofail,
> > false,
> > false, NULL, NULL, NULL,
> > SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline");
> >
> > return (r < 0) ? r : 0;
> > --
> > 1.8.3.1
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel