A little question about safe mode
Alexander Yerenkow
yerenkow at gmail.com
Fri Oct 19 09:03:16 UTC 2012
2012/10/18 Andriy Gapon <avg at freebsd.org>:
> on 18/10/2012 18:33 Andriy Gapon said the following:
>> on 18/10/2012 18:20 Andriy Gapon said the following:
>>> My guess is that the easiest way to avoid this ambiguity and the confusion that it
>>> causes (like the problem you described above) is to prepend "/dev/", if it's
>>> missing, right in vfs_mountroot.c before calling kernel_mount().
>>
>> A patch (not tested):
>>
>> --- a/sys/kern/vfs_mountroot.c
>> +++ b/sys/kern/vfs_mountroot.c
>> @@ -676,6 +676,7 @@ static int
>> parse_mount(char **conf)
>> {
>> char errmsg[255];
>> + char devbuf[MNAMELEN];
>> struct mntarg *ma;
>> char *dev, *fs, *opts, *tok;
>> int delay, error, timeout;
>> @@ -693,6 +694,11 @@ parse_mount(char **conf)
>> parse_advance(&tok);
>> dev = tok;
>>
>> + if (dev[0] != '\0' && strncmp(dev, "/dev/", 5) != 0) {
>> + snprintf(devbuf, sizeof(devbuf), "/dev/%s", dev);
>> + dev = devbuf;
>> + }
>> +
>> if (root_mount_mddev != -1) {
>> /* Handle substitution for the md unit number. */
>> tok = strstr(dev, "md#");
>>
>>
>
> Oops, the patch incorrectly assumes that all "device names" are device names,
> which is incorrect e.g. for ZFS. Maybe some other filesystems too.
> So don't try it :-)
I think correct patch should fix path and prepend "/dev/" only for
ufs:, for now.
Or at least help should mention this moment.
>
> --
> Andriy Gapon
--
Regards,
Alexander Yerenkow
More information about the freebsd-current
mailing list