upgrade-manager fails to properly update /etc/fstab for hda -> sda change

Bug #209347 reported by Christer Edwards on 2008-03-30
2
Affects Status Importance Assigned to Milestone
udev (Ubuntu)
High
Scott James Remnant (Canonical)

Bug Description

Binary package hint: update-manager

I just did an upgrade from an up-to-date 6.06.2 machine to 8.04 beta using do-release-upgrade -d. Everything actually went very smoothly until the reboot at the end. On the reboot the partitions all failed to mount because they were all listed in the fstab as /dev/hdX, whereas the new current standard is /dev/sdX. I manually updated the /etc/fstab and everything worked fine.

The update manager utility should try to update this or, if detected at launch, instruct the user to transition to labels/UUID perhaps.

Michael Vogt (mvo) wrote :

Thanks for taking the time to report this bug and helping to make Ubuntu better. Could you please add the log files from '/var/log/dist-upgrade/' to this bugreport as attachments to your bug report? Thanks in advance.

Changed in update-manager:
importance: Undecided → High
status: New → Incomplete

attached are the files as requested.

Michael Vogt (mvo) wrote :

Thanks for your bugreport.

I can confirm this in my test-upgrade from dapper in kvm.

Changed in update-manager:
milestone: none → ubuntu-8.04
status: Incomplete → Confirmed
Michael Vogt (mvo) wrote :

The problem is caused by udev being split into volumeid and udev.

Changed in update-manager:
assignee: nobody → mvo
Michael Vogt (mvo) wrote :

The problem is the following bit in the volumeid.postinst:

 # Upgrade from dapper
 if [ -n "$2" ] && dpkg --compare-versions "$2" lt "093-0ubuntu5"; then
     mount_by_uuid_conversion
 fi

volumeid is not available on dapper yet so its not installed and $2 is empty.

Changed in udev:
assignee: mvo → nobody
Michael Vogt (mvo) wrote :

The best solution is probably to just run it the mount_by_uuid_conversion code from update-manager and add something to the release-notes about it (for people who want to manually upgrade).

if mounting by volumeid is not supported in dapper I'm sure mounting by LABEL is. Perhaps a simple utility to set labels and update the /etc/fstab to use LABEL= for the transition. I can try to hack something together..

Colin Watson (cjwatson) wrote :

It's not that mounting by UUID isn't supported in dapper - it's just that the volumeid package isn't there, and instead was part of udev, which confuses the maintainer script are-we-upgrading logic.

Automatically setting labels is not a good idea; they should be reserved to be set by the sysadmin. If you set them automatically then you tend to end up in the sort of mess created by Anaconda where it makes your root filesystem have LABEL=/ so you get confusion if you try to dual-boot with a different version of the same operating system.

Changed in udev:
assignee: nobody → keybuk
status: Confirmed → In Progress

Merging the volumeid package back into udev solves the problem; it was only separated in the first place to attempt to avoid the dependency cycle, and that hasn't worked

Changed in udev:
status: In Progress → Fix Committed

I just tried an upgrade again from a fresh dapper install and it worked perfectly. Looks like this can be closed.

Colin Watson (cjwatson) wrote :

Christer, since it's Fix Committed, we might as well wait for the upload. ;-)

I tested an update via the same method since this was committed and the upgrade went just fine. I documented what I did (for the successful upgrade) here:

http://ubuntu-tutorials.com/2008/04/03/dapper-to-hardy-direct-server-upgrade-works/

I'd say this is considered fixed.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package udev - 117-5

---------------
udev (117-5) hardy; urgency=low

  * Merge the "volumeid" package back into "udev", there is no particular
    gain to it being a separate binary package and it prevents the upgrade
    from dapper from migrating the fstab to UUID. LP: #209347.

  * debian/patches/00-git-bad-net-rules.patch:
    - Upstream patch from 118 to avoid creating persistent net rules
      which will match any device.
  * debian/patches/01-git-squashfs-lzma.patch:
    - Upstream patch from 118 to detect LZMA-compressed squashfs.
  * debian/patches/02-git-squashfs-endian.patch:
    - Upstream patch from 118 to detect endianness of LZMA squashfs.
  * debian/patches/03-git-vol_id-timeout-once.patch:
    - Upstream patch from 118 to only timeout once for unreadable devices.
      LP: #156184.
  * debian/patches/04-git-multiple-floppy-devices.patch:
    - Upstream patch from 118 to fix create_floppy_devices for more than
      one floppy device. Possibly LP: #132546.
  * debian/patches/05-git-vol_id-probe_all-readable.patch:
    - Upstream patch from 118 to check whether a device is readable before
      probing. Also LP: #156184.
  * debian/patches/00upstream-RUN-for-remove.patch:
    - Rename to 06-git-run-for-remove.patch so its in series with other
      git patches (this is from 119)
  * debian/patches/07-git-unlock-write_net_rules.patch:
    - Upstream patch from 119 to unlock rules after invalid match, correcting
      a bug introduced by 00-git-bad-net-rules.patch
  * debian/patches/08-git-vol_id-uuid-buffer.patch:
    - Upstream patch from 119 to correct UUID raw buffer usage.
  * debian/patches/09-git-update-ext.patch:
    - Upstream patch from 119 to update ext filesystem detection.
  * debian/patches/10-git-match-basename.patch:
    - Upstream patch from 119 to add match on the basename of an interface
      so we can deal with PS3 multiple interfaces with the same MAC.
  * debian/patches/11-git-persistent-change.patch:
    - Upstream patch from 119 to run persistent device rules on change
      events.
  * debian/patches/12-git-serialise-same-devno.patch:
    - Upstream patch from git to serialise multiple events with the same
      device number, fixes a race with serial ttys amongst other things.

  * 20-names.rules:
    - Add missing quotes for infiniband rules. LP: #192552.
    - Change "rdma_ucm" to "rdma_cm" (same bug).
  * 40-permissions.rules, 40-basic-permissions.rules:
    - Split out the most basic permissions into a separate file that can be
      used in the installer and initramfs. LP: #204108.
    - Add rules to place known USB serial devices that need libusb access
      in the dialout group. LP: #198757.
  * 65-persistent-storage.rules, 65-persistent-storage-tape.rules,
    65-persistent-input.rules, 66-persistent-storage-edd.rules:
    - Use upstream rule names for all rules. Also LP: #186686.
    - Add persistent-storage-edd.rules to installer and initramfs.
  * 80-programs.rules:
    - Pass $root/%k to create-floppy-devices, not $tempnode. LP: #132546.

 -- Scott James Remnant <email address hidden> Wed, 02 Apr 2008 18:59:56 +0100

Changed in udev:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers