On Tue, Jun 05, 2007 at 05:44:41AM +0000, Xin LI wrote:
> delphij     2007-06-05 05:44:41 UTC
> 
>   FreeBSD src repository
> 
>   Modified files:
>     usr.sbin/sysinstall  installUpgrade.c 
>   Log:
>   Write to slice name instead of directly to the disk device.
>   This fixes writing boot code upon upgrade.

> | @@ -363,7 +363,7 @@ media:
> |      }
> |  
> |      if (extractingBin)
> | -   vsystem("disklabel -B `awk '$2~/\\/$/ {print substr($1, 6, 3)}' 
> /etc/fstab`");
> | +   vsystem("disklabel -B `awk '$2~/\\/$/ {print substr($1, 6, 5)}' 
> /etc/fstab`");
> |      msgNotify("First stage of upgrade completed successfully!\n\n"
> |            "Next comes stage 2, where we attempt to resurrect your /etc\n"
> |            "directory!");

Well it doesn't fix anything actually; what if my root partition is ad12s2a ?
(which is not contrived; it is).

We actually need something more like:

       vsystem("disklabel -B `awk \
          '$1~/\\dev\\/(aacd|ad|afd|amrd|ar|da|idad|ipsd|mfid|mlxd|twed)/ && \
           $2~/\\/$/ {print substr($1, 1, index($1, \"s\") - 1)}' /etc/fstab`");

where the regex is built from every device name in device_names (which
even then doesn't cater for GEOM where devices might be called
anything).  This is something that would require a build tool, which is
why I haven't done it yet.

Ceri
-- 
That must be wonderful!  I don't understand it at all.
                                                  -- Moliere

Attachment: pgpyYbM3tEnXw.pgp
Description: PGP signature

Reply via email to