[Bug 1756517] [NEW] grub-install: error: diskfilter writes are not supported
TJ
ubuntu at iam.tj
Sat Mar 17 09:07:39 UTC 2018
Public bug reported:
This has and continues to affect all releases of Ubuntu including 18.04
and probably beyond.
This bug is to track potential fixes to allow writes for some common
scenarios - the easiest being a RAID-1 mirror where it is just a case of
mapping the writes to the underlying device nodes.
In summary, upstream GRUB has a 'diskfilter' module for dealing with LVM
(lvm2), Device Mapper (dmsetup), Multiple Device (mdadm). The module
only supports reading from these devices.
When trying to install to such a device the operation fails with:
$ grub-install /dev/md0
Installing for i386-pc platform.
grub-install: error: diskfilter writes are not supported.
There are work-arounds which involve identifying and operating on the
underlying device, e.g: for a RAID-1 mirror:
$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sda[0]
244198400 blocks super 1.0 [2/2] [UU]
$ grub-install /dev/sda
$ grub-install /dev/sdb
These cam be sub-optimal in some circumstances as well as breaking some
standard OS package-upgrade operations.
The responsible code is ./grub-core/disk/diskfilter.c:
static grub_err_t
grub_diskfilter_write (grub_disk_t disk __attribute ((unused)),
grub_disk_addr_t sector __attribute ((unused)),
grub_size_t size __attribute ((unused)),
const char *buf __attribute ((unused)))
{
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
"diskfilter writes are not supported");
}
The read functionality gives some indication of how the write operation might be organised:
grub_diskfilter_read()
>read_lv()
>>read_segment()
>>>grub_diskfilter_read_node()
>>>>grub_disk_read()
It should be possible to factor out and re-use the common device and
offset calculation code from these functions since all but the actual
grub_disk_write() only do in-memory operations.
Related bugs:
Bug #701351 "grub-install fails to install on a raid1 array" (same issue)
Bug #1274320 "Error: diskfilter writes are not supported" (boot-time fix)
** Affects: grub2 (Ubuntu)
Importance: Low
Assignee: TJ (tj)
Status: Triaged
** Changed in: grub2 (Ubuntu)
Status: New => Triaged
** Changed in: grub2 (Ubuntu)
Importance: Undecided => Low
** Changed in: grub2 (Ubuntu)
Assignee: (unassigned) => TJ (tj)
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to grub2 in Ubuntu.
https://bugs.launchpad.net/bugs/1756517
Title:
grub-install: error: diskfilter writes are not supported
Status in grub2 package in Ubuntu:
Triaged
Bug description:
This has and continues to affect all releases of Ubuntu including
18.04 and probably beyond.
This bug is to track potential fixes to allow writes for some common
scenarios - the easiest being a RAID-1 mirror where it is just a case
of mapping the writes to the underlying device nodes.
In summary, upstream GRUB has a 'diskfilter' module for dealing with
LVM (lvm2), Device Mapper (dmsetup), Multiple Device (mdadm). The
module only supports reading from these devices.
When trying to install to such a device the operation fails with:
$ grub-install /dev/md0
Installing for i386-pc platform.
grub-install: error: diskfilter writes are not supported.
There are work-arounds which involve identifying and operating on the
underlying device, e.g: for a RAID-1 mirror:
$ cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdb[1] sda[0]
244198400 blocks super 1.0 [2/2] [UU]
$ grub-install /dev/sda
$ grub-install /dev/sdb
These cam be sub-optimal in some circumstances as well as breaking
some standard OS package-upgrade operations.
The responsible code is ./grub-core/disk/diskfilter.c:
static grub_err_t
grub_diskfilter_write (grub_disk_t disk __attribute ((unused)),
grub_disk_addr_t sector __attribute ((unused)),
grub_size_t size __attribute ((unused)),
const char *buf __attribute ((unused)))
{
return grub_error (GRUB_ERR_NOT_IMPLEMENTED_YET,
"diskfilter writes are not supported");
}
The read functionality gives some indication of how the write operation might be organised:
grub_diskfilter_read()
>read_lv()
>>read_segment()
>>>grub_diskfilter_read_node()
>>>>grub_disk_read()
It should be possible to factor out and re-use the common device and
offset calculation code from these functions since all but the actual
grub_disk_write() only do in-memory operations.
Related bugs:
Bug #701351 "grub-install fails to install on a raid1 array" (same issue)
Bug #1274320 "Error: diskfilter writes are not supported" (boot-time fix)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1756517/+subscriptions
More information about the foundations-bugs
mailing list