2006-09-23 Robert Millan * util/i386/pc/getroot.c (grub_guess_root_device): Stop using grub_util_biosdisk_get_grub_dev to convert system device to GRUB device. * util/grub-emu.c: Use grub_util_biosdisk_get_grub_dev with the string returned by grub_guess_root_device. * util/i386/pc/grub-setup.c: Ditto. * util/i386/pc/grub-probefs.c: Ditto. * util/i386/pc/grub-probefs.c: Rename to ... * util/i386/pc/grub-probe.c: ... this. * DISTLIST: Update reference to grub-probefs. * conf/i386-efi.mk: Ditto. * conf/i386-efi.rmk: Ditto. * conf/i386-pc.mk: Ditto. * conf/i386-pc.rmk: Ditto. * util/i386/pc/grub-install.in: Ditto. * util/i386/pc/grub-probe.c: Add --target=(fs|device|drive) option to choose which information we want to print. Index: DISTLIST =================================================================== RCS file: /sources/grub/grub2/DISTLIST,v retrieving revision 1.36 diff -u -r1.36 DISTLIST --- DISTLIST 4 Jun 2006 12:59:19 -0000 1.36 +++ DISTLIST 23 Sep 2006 07:16:31 -0000 @@ -253,7 +253,7 @@ util/i386/pc/grub-install.in util/i386/pc/grub-mkdevicemap.c util/i386/pc/grub-mkimage.c -util/i386/pc/grub-probefs.c +util/i386/pc/grub-probe.c util/i386/pc/grub-setup.c util/i386/pc/misc.c util/powerpc/ieee1275/grub-install.in Index: conf/i386-efi.mk =================================================================== RCS file: /sources/grub/grub2/conf/i386-efi.mk,v retrieving revision 1.15 diff -u -r1.15 i386-efi.mk --- conf/i386-efi.mk 22 Sep 2006 00:27:38 -0000 1.15 +++ conf/i386-efi.mk 23 Sep 2006 07:16:31 -0000 @@ -6,7 +6,7 @@ # Utilities. bin_UTILITIES = grub-mkimage -#sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probefs +#sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probe # For grub-mkimage. grub_mkimage_SOURCES = util/i386/efi/grub-mkimage.c util/misc.c \ @@ -41,8 +41,8 @@ # For grub-mkdevicemap. #grub_mkdevicemap_SOURCES = util/i386/pc/grub-mkdevicemap.c util/misc.c -# For grub-probefs. -#grub_probefs_SOURCES = util/i386/pc/grub-probefs.c \ +# For grub-probe. +#grub_probefs_SOURCES = util/i386/pc/grub-probe.c \ # util/i386/pc/biosdisk.c util/misc.c util/i386/pc/getroot.c \ # kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ # fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \ Index: conf/i386-efi.rmk =================================================================== RCS file: /sources/grub/grub2/conf/i386-efi.rmk,v retrieving revision 1.9 diff -u -r1.9 i386-efi.rmk --- conf/i386-efi.rmk 28 May 2006 23:01:43 -0000 1.9 +++ conf/i386-efi.rmk 23 Sep 2006 07:16:31 -0000 @@ -6,7 +6,7 @@ # Utilities. bin_UTILITIES = grub-mkimage -#sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probefs +#sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probe # For grub-mkimage. grub_mkimage_SOURCES = util/i386/efi/grub-mkimage.c util/misc.c \ @@ -23,8 +23,8 @@ # For grub-mkdevicemap. #grub_mkdevicemap_SOURCES = util/i386/pc/grub-mkdevicemap.c util/misc.c -# For grub-probefs. -#grub_probefs_SOURCES = util/i386/pc/grub-probefs.c \ +# For grub-probe. +#grub_probefs_SOURCES = util/i386/pc/grub-probe.c \ # util/i386/pc/biosdisk.c util/misc.c util/i386/pc/getroot.c \ # kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ # fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \ Index: conf/i386-pc.mk =================================================================== RCS file: /sources/grub/grub2/conf/i386-pc.mk,v retrieving revision 1.78 diff -u -r1.78 i386-pc.mk --- conf/i386-pc.mk 22 Sep 2006 00:27:38 -0000 1.78 +++ conf/i386-pc.mk 23 Sep 2006 07:16:32 -0000 @@ -183,7 +183,7 @@ # Utilities. bin_UTILITIES = grub-mkimage -sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probefs +sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probe # For grub-mkimage. grub_mkimage_SOURCES = util/i386/pc/grub-mkimage.c util/misc.c \ @@ -339,20 +339,20 @@ -include grub_mkdevicemap-util_misc.d -# For grub-probefs. -grub_probefs_SOURCES = util/i386/pc/grub-probefs.c \ +# For grub-probe. +grub_probefs_SOURCES = util/i386/pc/grub-probe.c \ util/i386/pc/biosdisk.c util/misc.c util/i386/pc/getroot.c \ kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \ fs/minix.c fs/hfs.c fs/jfs.c kern/fs.c kern/env.c fs/fshelp.c \ fs/xfs.c fs/affs.c fs/sfs.c fs/hfsplus.c -CLEANFILES += grub-probefs grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_hfsplus.o +CLEANFILES += grub-probe grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_hfsplus.o MOSTLYCLEANFILES += grub_probefs-util_i386_pc_grub_probefs.d grub_probefs-util_i386_pc_biosdisk.d grub_probefs-util_misc.d grub_probefs-util_i386_pc_getroot.d grub_probefs-kern_device.d grub_probefs-kern_disk.d grub_probefs-kern_err.d grub_probefs-kern_misc.d grub_probefs-fs_fat.d grub_probefs-fs_ext2.d grub_probefs-kern_parser.d grub_probefs-kern_partition.d grub_probefs-partmap_pc.d grub_probefs-fs_ufs.d grub_probefs-fs_minix.d grub_probefs-fs_hfs.d grub_probefs-fs_jfs.d grub_probefs-kern_fs.d grub_probefs-kern_env.d grub_probefs-fs_fshelp.d grub_probefs-fs_xfs.d grub_probefs-fs_affs.d grub_probefs-fs_sfs.d grub_probefs-fs_hfsplus.d -grub-probefs: $(grub_probefs_DEPENDENCIES) grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_hfsplus.o +grub-probe: $(grub_probefs_DEPENDENCIES) grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_hfsplus.o $(CC) -o $@ grub_probefs-util_i386_pc_grub_probefs.o grub_probefs-util_i386_pc_biosdisk.o grub_probefs-util_misc.o grub_probefs-util_i386_pc_getroot.o grub_probefs-kern_device.o grub_probefs-kern_disk.o grub_probefs-kern_err.o grub_probefs-kern_misc.o grub_probefs-fs_fat.o grub_probefs-fs_ext2.o grub_probefs-kern_parser.o grub_probefs-kern_partition.o grub_probefs-partmap_pc.o grub_probefs-fs_ufs.o grub_probefs-fs_minix.o grub_probefs-fs_hfs.o grub_probefs-fs_jfs.o grub_probefs-kern_fs.o grub_probefs-kern_env.o grub_probefs-fs_fshelp.o grub_probefs-fs_xfs.o grub_probefs-fs_affs.o grub_probefs-fs_sfs.o grub_probefs-fs_hfsplus.o $(LDFLAGS) $(grub_probefs_LDFLAGS) -grub_probefs-util_i386_pc_grub_probefs.o: util/i386/pc/grub-probefs.c +grub_probefs-util_i386_pc_grub_probefs.o: util/i386/pc/grub-probe.c $(CC) -Iutil/i386/pc -I$(srcdir)/util/i386/pc $(CPPFLAGS) $(CFLAGS) -DGRUB_UTIL=1 $(grub_probefs_CFLAGS) -MD -c -o $@ $< -include grub_probefs-util_i386_pc_grub_probefs.d Index: conf/i386-pc.rmk =================================================================== RCS file: /sources/grub/grub2/conf/i386-pc.rmk,v retrieving revision 1.69 diff -u -r1.69 i386-pc.rmk --- conf/i386-pc.rmk 22 Sep 2006 00:27:38 -0000 1.69 +++ conf/i386-pc.rmk 23 Sep 2006 07:16:32 -0000 @@ -51,7 +51,7 @@ # Utilities. bin_UTILITIES = grub-mkimage -sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probefs +sbin_UTILITIES = grub-setup grub-emu grub-mkdevicemap grub-probe # For grub-mkimage. grub_mkimage_SOURCES = util/i386/pc/grub-mkimage.c util/misc.c \ @@ -69,8 +69,8 @@ # For grub-mkdevicemap. grub_mkdevicemap_SOURCES = util/i386/pc/grub-mkdevicemap.c util/misc.c -# For grub-probefs. -grub_probefs_SOURCES = util/i386/pc/grub-probefs.c \ +# For grub-probe. +grub_probefs_SOURCES = util/i386/pc/grub-probe.c \ util/i386/pc/biosdisk.c util/misc.c util/i386/pc/getroot.c \ kern/device.c kern/disk.c kern/err.c kern/misc.c fs/fat.c \ fs/ext2.c kern/parser.c kern/partition.c partmap/pc.c fs/ufs.c \ Index: util/grub-emu.c =================================================================== RCS file: /sources/grub/grub2/util/grub-emu.c,v retrieving revision 1.30 diff -u -r1.30 grub-emu.c --- util/grub-emu.c 13 Jun 2006 22:50:01 -0000 1.30 +++ util/grub-emu.c 23 Sep 2006 07:16:32 -0000 @@ -185,7 +185,7 @@ /* Make sure that there is a root device. */ if (! args.root_dev) { - args.root_dev = grub_guess_root_device (args.dir ? : DEFAULT_DIRECTORY); + args.root_dev = grub_util_biosdisk_get_grub_dev (grub_guess_root_device (args.dir ? : DEFAULT_DIRECTORY)); if (! args.root_dev) { grub_util_info ("guessing the root device failed, because of `%s'", Index: util/i386/pc/getroot.c =================================================================== RCS file: /sources/grub/grub2/util/i386/pc/getroot.c,v retrieving revision 1.5 diff -u -r1.5 getroot.c --- util/i386/pc/getroot.c 14 Sep 2006 18:52:50 -0000 1.5 +++ util/i386/pc/getroot.c 23 Sep 2006 07:16:32 -0000 @@ -223,5 +223,5 @@ if (! os_dev) return 0; - return grub_util_biosdisk_get_grub_dev (os_dev); + return os_dev; } Index: util/i386/pc/grub-install.in =================================================================== RCS file: /sources/grub/grub2/util/i386/pc/grub-install.in,v retrieving revision 1.9 diff -u -r1.9 grub-install.in --- util/i386/pc/grub-install.in 14 Sep 2006 18:52:50 -0000 1.9 +++ util/i386/pc/grub-install.in 23 Sep 2006 07:16:32 -0000 @@ -33,7 +33,7 @@ grub_setup=${sbindir}/grub-setup grub_mkimage=${bindir}/grub-mkimage grub_mkdevicemap=${sbindir}/grub-mkdevicemap -grub_probefs=${sbindir}/grub-probefs +grub_probefs=${sbindir}/grub-probe rootdir= grub_prefix=/boot/grub modules= @@ -59,7 +59,7 @@ --grub-setup=FILE use FILE as grub-setup --grub-mkimage=FILE use FILE as grub-mkimage --grub-mkdevicemap=FILE use FILE as grub-mkdevicemap - --grub-probefs=FILE use FILE as grub-probefs + --grub-probe=FILE use FILE as grub-probe --no-floppy do not probe any floppy drive --recheck probe a device map even if it already exists @@ -92,8 +92,8 @@ grub_mkimage=`echo "$option" | sed 's/--grub-mkimage=//'` ;; --grub-mkdevicemap=*) grub_mkdevicemap=`echo "$option" | sed 's/--grub-mkdevicemap=//'` ;; - --grub-probefs=*) - grub_probefs=`echo "$option" | sed 's/--grub-probefs=//'` ;; + --grub-probe=*) + grub_probefs=`echo "$option" | sed 's/--grub-probe=//'` ;; --no-floppy) no_floppy="--no-floppy" ;; --recheck) Index: util/i386/pc/grub-probefs.c =================================================================== RCS file: /sources/grub/grub2/util/i386/pc/grub-probefs.c,v retrieving revision 1.3 diff -u -r1.3 grub-probefs.c --- util/i386/pc/grub-probefs.c 23 Apr 2006 13:37:36 -0000 1.3 +++ util/i386/pc/grub-probefs.c 23 Sep 2006 07:16:32 -0000 @@ -1,4 +1,4 @@ -/* grub-probefs.c - probe a filesystem module for a given path */ +/* grub-probe.c - probe device information for a given path */ /* * GRUB -- GRand Unified Bootloader * Copyright (C) 2005,2006 Free Software Foundation, Inc. @@ -47,6 +47,12 @@ #define DEFAULT_DEVICE_MAP DEFAULT_DIRECTORY "/device.map" +#define PRINT_FS 0 +#define PRINT_DRIVE 1 +#define PRINT_DEVICE 2 + +int print = PRINT_FS; + void grub_putchar (int c) { @@ -74,13 +80,33 @@ probe (const char *path) { char *device_name; + char *drive_name; grub_device_t dev; grub_fs_t fs; device_name = grub_guess_root_device (path); if (! device_name) { - fprintf (stderr, "cannot find a GRUB device for %s.\n", path); + fprintf (stderr, "cannot find a device for %s.\n", path); + return; + } + + if (print == PRINT_DEVICE) + { + printf ("%s\n", device_name); + return; + } + + drive_name = grub_util_biosdisk_get_grub_dev (device_name); + if (! drive_name) + { + fprintf (stderr, "cannot find a GRUB drive for %s.\n", drive_name); + return; + } + + if (print == PRINT_DRIVE) + { + printf ("(%s)\n", drive_name); return; } @@ -102,6 +128,7 @@ static struct option options[] = { {"device-map", required_argument, 0, 'm'}, + {"target", required_argument, 0, 't'}, {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'V'}, {"verbose", no_argument, 0, 'v'}, @@ -113,14 +140,15 @@ { if (status) fprintf (stderr, - "Try ``grub-probefs --help'' for more information.\n"); + "Try ``grub-probe --help'' for more information.\n"); else printf ("\ -Usage: grub-probefs [OPTION]... PATH\n\ +Usage: grub-probe [OPTION]... PATH\n\ \n\ -Probe a filesystem module for a given path.\n\ +Probe device information for a given path.\n\ \n\ -m, --device-map=FILE use FILE as the device map [default=%s]\n\ + -t, --target=(fs|drive|device) print filesystem module, GRUB drive or system device [default=fs]\n\ -h, --help display this message and exit\n\ -V, --version print version information and exit\n\ -v, --verbose print verbose messages\n\ @@ -138,12 +166,12 @@ char *dev_map = 0; char *path; - progname = "grub-probefs"; + progname = "grub-probe"; /* Check for options. */ while (1) { - int c = getopt_long (argc, argv, "m:hVv", options, 0); + int c = getopt_long (argc, argv, "m:t:hVv", options, 0); if (c == -1) break; @@ -157,6 +185,17 @@ dev_map = xstrdup (optarg); break; + case 't': + if (!strcmp (optarg, "fs")) + print = PRINT_FS; + else if (!strcmp (optarg, "drive")) + print = PRINT_DRIVE; + else if (!strcmp (optarg, "device")) + print = PRINT_DEVICE; + else + usage (1); + break; + case 'h': usage (0); break; Index: util/i386/pc/grub-setup.c =================================================================== RCS file: /sources/grub/grub2/util/i386/pc/grub-setup.c,v retrieving revision 1.18 diff -u -r1.18 grub-setup.c --- util/i386/pc/grub-setup.c 4 Jun 2006 15:56:55 -0000 1.18 +++ util/i386/pc/grub-setup.c 23 Sep 2006 07:16:32 -0000 @@ -669,7 +669,7 @@ } else { - root_dev = grub_guess_root_device (dir ? : DEFAULT_DIRECTORY); + root_dev = grub_util_biosdisk_get_grub_dev (grub_guess_root_device (dir ? : DEFAULT_DIRECTORY)); if (! root_dev) { grub_util_info ("guessing the root device failed, because of `%s'",