NetBSD Problem Report #55379
From tsutsui@ceres.dti.ne.jp Fri Jun 12 18:11:01 2020
Return-Path: <tsutsui@ceres.dti.ne.jp>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(Client CN "mail.NetBSD.org", Issuer "mail.NetBSD.org CA" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 2840E1A9219
for <gnats-bugs@gnats.NetBSD.org>; Fri, 12 Jun 2020 18:11:01 +0000 (UTC)
Message-Id: <202006121810.05CIAqoR004888@ceres.dti.ne.jp>
Date: Sat, 13 Jun 2020 03:10:52 +0900 (JST)
From: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
Reply-To: tsutsui@ceres.dti.ne.jp
To: gnats-bugs@NetBSD.org
Cc: tsutsui@ceres.dti.ne.jp
Subject: sysinst creates suspicious "/dev/ /cdrom cd9660 ro,noauto" in fstab
X-Send-Pr-Version: 3.95
>Number: 55379
>Category: install
>Synopsis: sysinst creates suspicious "/dev/ /cdrom cd9660 ro,noauto" in fstab
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: install-manager
>State: closed
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Fri Jun 12 18:15:00 +0000 2020
>Closed-Date: Mon Sep 28 18:52:22 +0000 2020
>Last-Modified: Mon Sep 28 18:55:01 +0000 2020
>Originator: Izumi Tsutsui
>Release: NetBSD 9.0
>Organization:
>Environment:
System: NetBSD 9.0 (RAMDISK) #0: Fri Feb 14 00:06:28 UTC 2020
mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/cobalt/compile/RAMDISK
Architecture: maybe all
Machine: all
>Description:
After installation on Gxemul cobalt emulation without CD-ROM,
sysinst creates the following /targetroot/etc/fstab:
---
# mount /dev/wd0a /targetroot
# cat /targetroot/etc/fstab
# NetBSD /etc/fstab
# See /usr/share/examples/fstab/ for more examples.
/dev/wd0a / ffs rw 1 1
# /dev/wd0e /stand ??? rw 0 0
/dev/wd0b none swap sw,dp 0 0
kernfs /kern kernfs rw
ptyfs /dev/pts ptyfs rw
procfs /proc procfs rw
/dev/ /cdrom cd9660 ro,noauto
tmpfs /var/shm tmpfs rw,-m1777,-sram%25
#
---
I wonder if "/dev/" for /cdrom is intentional.
>How-To-Repeat:
Proceed installation by sysinst on systems without CD-ROM drive.
>Fix:
In src/usr.sbin/sysinst/disks.c, it looks to try to detect
a proper device name for a CD-ROM drive:
---
/*
* Helper function for get_default_cdrom, gets passed a device
* name and a void pointer to default_cdrom_data.
*/
static bool
get_default_cdrom_helper(void *state, const char *dev)
{
struct default_cdrom_data *data = state;
if (!is_cdrom_device(dev, false))
return true;
strlcpy(data->device, dev, data->max_len);
strlcat(data->device, "a", data->max_len); /* default to partition a */
data->found = true;
return false; /* one is enough, stop iteration */
}
/*
* Set the argument to the name of the first CD devices actually
* available, leave it unmodified otherwise.
* Return true if a device has been found.
*/
bool
get_default_cdrom(char *cd, size_t max_len)
{
struct default_cdrom_data state;
state.device = cd;
state.max_len = max_len;
state.found = false;
if (enumerate_disks(&state, get_default_cdrom_helper))
return state.found;
return false;
}
:
done_with_disks:
if (cdrom_dev[0] == 0)
get_default_cdrom(cdrom_dev, sizeof(cdrom_dev));
/* Add /kern, /proc and /dev/pts to fstab and make mountpoint. */
scripting_fprintf(f, "kernfs\t\t/kern\tkernfs\trw\n");
scripting_fprintf(f, "ptyfs\t\t/dev/pts\tptyfs\trw\n");
scripting_fprintf(f, "procfs\t\t/proc\tprocfs\trw\n");
scripting_fprintf(f, "/dev/%s\t\t/cdrom\tcd9660\tro,noauto\n",
cdrom_dev);
---
But there is no check a return value of the get_default_cdrom().
I don't know the name "/dev/" is intentional, but I think
it's much better to choose either of the following:
(1) Omit the "/dev/ /cdrom noauto" line if no CD-ROM is detected
(2) Use "/dev/cd0a" by default
Actually /dev/cd0a is appropriate on most systems.
(exceptions are only rare mcd(4) and gdrom(4)?)
Note there are functional duplication of "detect CD-ROM media"
in src/usr.sbin/sysinst/utils.c.
---
Izumi Tsutsui
>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed
State-Changed-By: martin@NetBSD.org
State-Changed-When: Mon, 28 Sep 2020 18:52:22 +0000
State-Changed-Why:
Fixed, thanks!
From: "Martin Husemann" <martin@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/55379 CVS commit: src/usr.sbin/sysinst
Date: Mon, 28 Sep 2020 18:51:34 +0000
Module Name: src
Committed By: martin
Date: Mon Sep 28 18:51:34 UTC 2020
Modified Files:
src/usr.sbin/sysinst: disks.c
Log Message:
PR 55379: avoid creating bogus /etc/fstab lines for /dev/cd* if no
cdrom is available.
To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/usr.sbin/sysinst/disks.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.46 2020/01/03 16:35:01 leot Exp $
$NetBSD: gnats_config.sh,v 1.9 2014/08/02 14:16:04 spz Exp $
Copyright © 1994-2020
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.