[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2651] 2009-10-25 Robert Millan <address@hidden>
From: |
Robert Millan |
Subject: |
[2651] 2009-10-25 Robert Millan <address@hidden> |
Date: |
Sun, 25 Oct 2009 15:23:49 +0000 |
Revision: 2651
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2651
Author: robertmh
Date: 2009-10-25 15:23:48 +0000 (Sun, 25 Oct 2009)
Log Message:
-----------
2009-10-25 Robert Millan <address@hidden>
* include/grub/fs.h [GRUB_UTIL] (struct grub_fs): Add
`reserved_first_sector' member.
* fs/ext2.c [GRUB_UTIL] (grub_ext2_fs): Initialize
`reserved_first_sector' to 1.
* fs/fat.c [GRUB_UTIL] (grub_fat_fs): Likewise.
* fs/ntfs.c [GRUB_UTIL] (grub_ntfs_fs): Likewise.
* fs/hfsplus.c [GRUB_UTIL] (grub_hfsplus_fs): Likewise.
* util/i386/pc/grub-setup.c (setup): Add safety check that probes for
filesystems which begin at first sector.
(options): New option --skip-fs-probe.
(main): Handle --skip-fs-probe and pass it to setup().
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/fs/ext2.c
trunk/grub2/fs/fat.c
trunk/grub2/fs/hfsplus.c
trunk/grub2/fs/ntfs.c
trunk/grub2/include/grub/fs.h
trunk/grub2/util/i386/pc/grub-setup.c
Property Changed:
----------------
trunk/grub2/
Property changes on: trunk/grub2
___________________________________________________________________
Modified: bzr:revision-info
- timestamp: 2009-10-25 16:14:08.677999973 +0100
committer: Robert Millan <address@hidden>
properties:
branch-nick: fix
+ timestamp: 2009-10-25 16:23:32.388999939 +0100
committer: Robert Millan <address@hidden>
properties:
branch-nick: trunk
Modified: bzr:revision-id:v3-single1-dHJ1bmsvZ3J1YjI.
- 1769 address@hidden
1770 address@hidden
1771 address@hidden
1772 address@hidden
1773 address@hidden
1774 address@hidden
1775 address@hidden
+ 1769 address@hidden
1770 address@hidden
1771 address@hidden
1772 address@hidden
1773 address@hidden
1774 address@hidden
1775 address@hidden
1776 address@hidden
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-10-25 15:14:25 UTC (rev 2650)
+++ trunk/grub2/ChangeLog 2009-10-25 15:23:48 UTC (rev 2651)
@@ -1,5 +1,19 @@
2009-10-25 Robert Millan <address@hidden>
+ * include/grub/fs.h [GRUB_UTIL] (struct grub_fs): Add
+ `reserved_first_sector' member.
+ * fs/ext2.c [GRUB_UTIL] (grub_ext2_fs): Initialize
+ `reserved_first_sector' to 1.
+ * fs/fat.c [GRUB_UTIL] (grub_fat_fs): Likewise.
+ * fs/ntfs.c [GRUB_UTIL] (grub_ntfs_fs): Likewise.
+ * fs/hfsplus.c [GRUB_UTIL] (grub_hfsplus_fs): Likewise.
+ * util/i386/pc/grub-setup.c (setup): Add safety check that probes for
+ filesystems which begin at first sector.
+ (options): New option --skip-fs-probe.
+ (main): Handle --skip-fs-probe and pass it to setup().
+
+2009-10-25 Robert Millan <address@hidden>
+
* include/grub/misc.h: Fix wrong evaluation of APPLE_CC.
(memset): Fix function prototype.
Modified: trunk/grub2/fs/ext2.c
===================================================================
--- trunk/grub2/fs/ext2.c 2009-10-25 15:14:25 UTC (rev 2650)
+++ trunk/grub2/fs/ext2.c 2009-10-25 15:23:48 UTC (rev 2651)
@@ -927,6 +927,9 @@
.label = grub_ext2_label,
.uuid = grub_ext2_uuid,
.mtime = grub_ext2_mtime,
+#ifdef GRUB_UTIL
+ .reserved_first_sector = 1,
+#endif
.next = 0
};
Modified: trunk/grub2/fs/fat.c
===================================================================
--- trunk/grub2/fs/fat.c 2009-10-25 15:14:25 UTC (rev 2650)
+++ trunk/grub2/fs/fat.c 2009-10-25 15:23:48 UTC (rev 2651)
@@ -855,6 +855,9 @@
.close = grub_fat_close,
.label = grub_fat_label,
.uuid = grub_fat_uuid,
+#ifdef GRUB_UTIL
+ .reserved_first_sector = 1,
+#endif
.next = 0
};
Modified: trunk/grub2/fs/hfsplus.c
===================================================================
--- trunk/grub2/fs/hfsplus.c 2009-10-25 15:14:25 UTC (rev 2650)
+++ trunk/grub2/fs/hfsplus.c 2009-10-25 15:23:48 UTC (rev 2651)
@@ -1021,6 +1021,9 @@
.label = grub_hfsplus_label,
.mtime = grub_hfsplus_mtime,
.uuid = grub_hfsplus_uuid,
+#ifdef GRUB_UTIL
+ .reserved_first_sector = 1,
+#endif
.next = 0
};
Modified: trunk/grub2/fs/ntfs.c
===================================================================
--- trunk/grub2/fs/ntfs.c 2009-10-25 15:14:25 UTC (rev 2650)
+++ trunk/grub2/fs/ntfs.c 2009-10-25 15:23:48 UTC (rev 2651)
@@ -1081,15 +1081,19 @@
return grub_errno;
}
-static struct grub_fs grub_ntfs_fs = {
- .name = "ntfs",
- .dir = grub_ntfs_dir,
- .open = grub_ntfs_open,
- .read = grub_ntfs_read,
- .close = grub_ntfs_close,
- .label = grub_ntfs_label,
- .uuid = grub_ntfs_uuid,
- .next = 0
+static struct grub_fs grub_ntfs_fs =
+ {
+ .name = "ntfs",
+ .dir = grub_ntfs_dir,
+ .open = grub_ntfs_open,
+ .read = grub_ntfs_read,
+ .close = grub_ntfs_close,
+ .label = grub_ntfs_label,
+ .uuid = grub_ntfs_uuid,
+#ifdef GRUB_UTIL
+ .reserved_first_sector = 1,
+#endif
+ .next = 0
};
GRUB_MOD_INIT (ntfs)
Modified: trunk/grub2/include/grub/fs.h
===================================================================
--- trunk/grub2/include/grub/fs.h 2009-10-25 15:14:25 UTC (rev 2650)
+++ trunk/grub2/include/grub/fs.h 2009-10-25 15:23:48 UTC (rev 2651)
@@ -68,6 +68,11 @@
/* Get writing time of filesystem. */
grub_err_t (*mtime) (grub_device_t device, grub_int32_t *timebuf);
+#ifdef GRUB_UTIL
+ /* Whether this filesystem reserves first sector for DOS-style boot. */
+ int reserved_first_sector;
+#endif
+
/* The next filesystem. */
struct grub_fs *next;
};
Modified: trunk/grub2/util/i386/pc/grub-setup.c
===================================================================
--- trunk/grub2/util/i386/pc/grub-setup.c 2009-10-25 15:14:25 UTC (rev
2650)
+++ trunk/grub2/util/i386/pc/grub-setup.c 2009-10-25 15:23:48 UTC (rev
2651)
@@ -86,7 +86,7 @@
static void
setup (const char *dir,
const char *boot_file, const char *core_file,
- const char *root, const char *dest, int must_embed, int force)
+ const char *root, const char *dest, int must_embed, int force, int
fs_probe)
{
char *boot_path, *core_path, *core_path_dev;
char *boot_img, *core_img;
@@ -251,6 +251,21 @@
if (grub_disk_read (dest_dev->disk, 0, 0, GRUB_DISK_SECTOR_SIZE, tmp_img))
grub_util_error ("%s", grub_errmsg);
+ if (dest_dev->disk->partition && fs_probe)
+ {
+ grub_fs_t fs;
+ fs = grub_fs_probe (dest_dev);
+ if (! fs)
+ grub_util_error ("Unable to identify a filesystem in %s; safety check
can't be performed.");
+
+ if (! fs->reserved_first_sector)
+ grub_util_error ("%s appears to contain a %s filesystem which isn't
known to "
+ "reserve space for DOS-style boot. Installing GRUB
there could "
+ "result in FILESYSTEM DESTRUCTION if valuable data is
overwritten "
+ "by grub-setup (--skip-fs-probe disables this "
+ "check, use at your own risk).", dest_dev->disk->name,
fs->name);
+ }
+
/* Copy the possible DOS BPB. */
memcpy (boot_img + GRUB_BOOT_MACHINE_BPB_START,
tmp_img + GRUB_BOOT_MACHINE_BPB_START,
@@ -556,6 +571,7 @@
{"device-map", required_argument, 0, 'm'},
{"root-device", required_argument, 0, 'r'},
{"force", no_argument, 0, 'f'},
+ {"skip-fs-probe", no_argument, 0, 's'},
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
{"verbose", no_argument, 0, 'v'},
@@ -580,6 +596,7 @@
-m, --device-map=FILE use FILE as the device map [default=%s]\n\
-r, --root-device=DEV use DEV as the root device [default=guessed]\n\
-f, --force install even if problems are detected\n\
+ -s, --skip-fs-probe do not probe for filesystems in DEVICE\n\
-h, --help display this message and exit\n\
-V, --version print version information and exit\n\
-v, --verbose print verbose messages\n\
@@ -613,7 +630,7 @@
char *dev_map = 0;
char *root_dev = 0;
char *dest_dev;
- int must_embed = 0, force = 0;
+ int must_embed = 0, force = 0, fs_probe = 1;
progname = "grub-setup";
@@ -666,6 +683,10 @@
force = 1;
break;
+ case 's':
+ fs_probe = 0;
+ break;
+
case 'h':
usage (0);
break;
@@ -767,7 +788,7 @@
setup (dir ? : DEFAULT_DIRECTORY,
boot_file ? : DEFAULT_BOOT_FILE,
core_file ? : DEFAULT_CORE_FILE,
- root_dev, grub_util_get_grub_dev (devicelist[i]), 1, force);
+ root_dev, grub_util_get_grub_dev (devicelist[i]), 1, force,
fs_probe);
}
}
else
@@ -776,7 +797,7 @@
setup (dir ? : DEFAULT_DIRECTORY,
boot_file ? : DEFAULT_BOOT_FILE,
core_file ? : DEFAULT_CORE_FILE,
- root_dev, dest_dev, must_embed, force);
+ root_dev, dest_dev, must_embed, force, fs_probe);
/* Free resources. */
grub_fini_all ();
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2651] 2009-10-25 Robert Millan <address@hidden>,
Robert Millan <=