I wrote:
> Looking at the syslog, apt says it's going to use /media/cdrom as
> the moint point but then mount seems to be run with /cdrom.
> Screenshot of this weirdness attached.
That was a red herring, apt was not using /cdrom. (d-i does)
Forgotten screenshot attached anyway.
> I see that the generated fstab on kFreeBSD contains:
>
> /dev/cd0 /media/cdrom0 cd9660 ro,auto 0 0
>
> Why is the mount point different? I don't know yet. If I correct this
> to use "/media/cdrom0", then apt-cdrom add works in d-i with no further
/media/cdrom <-- correction: removing the "0" works..
> changes.
/media/cdrom is a symlink to /media/cdrom0. Seems that that
configuring apt to use the /media/cdrom symlink, while the fstab has
/media/cdrom0 works on Linux, but somehow not on kFreeBSD.
Aha! On Linux, "mount /media/cdrom" will follow the symlink and mount
/media/cdrom0 as configured in fstab. On kfreeBSD, mount does not have
those smarts, it seems.
The underlying problem on kFreeBSD is that "mount /media/cdrom" fails.
If mount on kFreeBSD cannot handle a symlinked mount point, then d-i
should not configure the mount points like that. (It also sets up /media/usb
as a symlink to /media/usb0.) That will fix apt-cdrom as well as allowing
users to hand-mount removable media as they probably expect to be able to.
I propose the attached patch to partman-target. I have tested it,
and it works.
--
see shy jo
Attachment:
cdrom.png
Description: PNG image
commit a7d3da962eae2d8d950984c780fa8d6d911acb48
Author: Joey Hess <joey@kitenet.net>
Date: Tue Feb 1 13:58:50 2011 -0400
Fix cdrom mountpoint setup on kFreeBSD
On kFreeBSD, mount does not follow symlinks in the mountpoint, so the way
mount points were set up for removable media caused problems. So on that OS
only, rather than making /media/cdrom -> /media/cdrom0, and putting
/media/cdrom0 in /etc/fstab, instead make /media/cdrom a directory, and put
/media/cdrom in /etc/fstab. This way¸ "mount /media/cdrom", "mount
/media/usb" etc all work, and so does apt-setup add. Closes: #611569
(Note that additional CD devices will be set up as /media/cdrom1, etc, same
as before. This leads to the minor inconsistency on kFreeBSD that "mount
/media/cdrom1" is needed for the second CD, while "mount /media/cdrom0"
won't work for the first, but I don't see a way to avoid that.)
diff --git a/debian/changelog b/debian/changelog
index 1a71ffa..666c8bf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,24 @@
partman-target (72) UNRELEASED; urgency=low
+ [ Christian Perrier ]
* Point users to blkid instead of non-existing vol_id (on the
installed system) in /etc/fstab file header
Closes: #608996
+ [ Joey Hess ]
+ * On kFreeBSD, mount does not follow symlinks in the mountpoint, so
+ the way mount points were set up for removable media caused problems.
+ So on that OS only, rather than making /media/cdrom -> /media/cdrom0,
+ and putting /media/cdrom0 in /etc/fstab, instead make /media/cdrom
+ a directory, and put /media/cdrom in /etc/fstab. This way¸
+ "mount /media/cdrom", "mount /media/usb" etc all work, and so does
+ apt-setup add. Closes: #611569
+ (Note that additional CD devices will be set up as /media/cdrom1, etc,
+ same as before. This leads to the minor inconsistency on kFreeBSD that
+ "mount /media/cdrom1" is needed for the second CD, while
+ "mount /media/cdrom0" won't work for the first, but I don't
+ see a way to avoid that.)
+
-- Christian Perrier <bubulle@debian.org> Wed, 05 Jan 2011 19:28:49 +0100
partman-target (71) unstable; urgency=low
diff --git a/finish.d/fstab_removable_media_entries b/finish.d/fstab_removable_media_entries
index 41f36dd..d0dd60f 100755
--- a/finish.d/fstab_removable_media_entries
+++ b/finish.d/fstab_removable_media_entries
@@ -33,13 +33,20 @@ populate_media () {
options=$3
shift; shift; shift
mkdir -p /target$MEDIA
- if [ "$1" ]; then
+ symlink_to_0=1
+ if [ "`udpkg --print-os`" = kfreebsd ]; then
+ symlink_to_0=""
+ fi
+ if [ "$1" ] && [ "$symlink_to_0" ] ; then
rm_dir_or_link /target$MEDIA/$category
ln -s ${category}0 /target$MEDIA/$category
fi
number=0
while [ "$1" ]; do
mount_point="$MEDIA/$category$number"
+ if [ ! "$symlink_to_0" ] && [ "$number" = 0 ]; then
+ mount_point="$MEDIA/$category"
+ fi
addfstab "$1" "$mount_point" "$fs" "$options" 0 0
rm_dir_or_link /target$mount_point
mkdir -p /target$mount_point
Attachment:
signature.asc
Description: Digital signature