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
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1756517

Title:
  grub-install: error: diskfilter writes are not supported

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1756517/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to