Bug#985974: grub-common: grub-probe fails to parse lvm metadata with lvm type "cache-pool+METADATA_FORMAT"
Keyu Tao
taoky99 at outlook.com
Sat Mar 27 08:08:33 GMT 2021
Package: grub-common
Version: 2.02+dfsg1-20+deb10u4
Severity: important
In lvm.c (grub-core/disk/lvm.c) of grub2, grub_lvm_detect() will "skip" unknown LVM type.
However, the lv segment type "cache-pool+METADATA_FORMAT" has a policy_settings like this:
```
mcache {
id = "BJvm0E-9uCj-Ji6a-N37P-nEuL-evA4-ZDUxdt"
status = ["READ", "WRITE"]
flags = []
creation_time = 1594104910 # 2020-07-07 14:55:10 +0800
creation_host = "mirrors4"
segment_count = 1
segment1 {
start_extent = 0
extent_count = 393216 # 1.5 Terabytes
type = "cache-pool+METADATA_FORMAT"
data = "mcache_cdata"
metadata = "mcache_cmeta"
chunk_size = 2048
metadata_format = 2
cache_mode = "writethrough"
policy = "smq"
policy_settings {
migration_threshold=16384
}
}
}
```
The unexpected "}" of policy_settings will mislead grub_strchr (p, '}')
to "skip" the variable p to "}", and thus grub considers parsing done,
and ignores all lvm metadata after this segment.
It can bring the system unbootable. In our example, rootfs is a
mirror-type lv, and the "mirrors" in its segment references 2 lvs:
```
root {
id = "QqUaB2-R6JG-ZCFG-6LO9-KfKp-FsQx-6jeFp2"
status = ["READ", "WRITE", "VISIBLE"]
flags = []
creation_time = 1586435631 # 2020-04-09 20:33:51 +0800
creation_host = "mirrors4"
segment_count = 1
segment1 {
start_extent = 0
extent_count = 8192 # 32 Gigabytes
type = "mirror"
mirror_count = 2
mirror_log = "root_mlog"
region_size = 4096
mirrors = [
"root_mimage_0", 0,
"root_mimage_1", 0
]
}
}
```
However, on our production server,
the entries "root_mimage_0" and "root_mimage_1" are after the
"mcache" entry. And as grub ignores everything after mcache, grub-probe brings
an error "unknown node 'root_mimage_0'" and stops, leading to a failed
grub-install and grub-mkconfig. We cannot reboot our server now, but it
probably brings it unbootable any more.
I manually compiled the grub2 from sid (2.04-17), and it also doesn't
work.
-- Package-specific info:
*********************** BEGIN /proc/mounts
/dev/mapper/lug-root / ext4 rw,relatime,errors=remount-ro,stripe=64 0 0
/dev/sda2 /boot/efi vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/mapper/lug-docker /var/lib/docker ext4 rw,relatime,stripe=16 0 0
/dev/mapper/lug-home /home ext4 rw,relatime,stripe=32 0 0
/dev/mapper/lug-backup /mnt/backup ext4 rw,relatime,stripe=64 0 0
/dev/mapper/lug-log /var/log ext4 rw,noexec,relatime,stripe=32 0 0
/dev/mapper/lug-repo /srv xfs rw,nosuid,noexec,relatime,attr2,inode64,sunit=2048,swidth=2048,pqnoenforce 0 0
*********************** END /proc/mounts
*********************** BEGIN /boot/grub/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="0"
fi
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
else
menuentry_id_option=""
fi
export menuentry_id_option
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}
function load_video {
if [ x$feature_all_video_module = xy ]; then
insmod all_video
else
insmod efi_gop
insmod efi_uga
insmod ieee1275_fb
insmod vbe
insmod vga
insmod video_bochs
insmod video_cirrus
fi
}
if loadfont unicode ; then
set gfxmode=auto
load_video
insmod gfxterm
set locale_dir=$prefix/locale
set lang=C
insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ] ; then
set timeout=30
else
if [ x$feature_timeout_style = xy ] ; then
set timeout_style=menu
set timeout=5
# Fallback normal timeout code in case the timeout_style feature is
# unavailable.
else
set timeout=5
fi
fi
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue
### END /etc/grub.d/05_debian_theme ###
### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-14-amd64 ...'
linux /boot/vmlinuz-4.19.0-14-amd64 root=/dev/mapper/lug-root ro init=/lib/systemd/systemd quiet text
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-14-amd64
}
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-/dev/mapper/lug-root' {
menuentry 'Debian GNU/Linux, with Linux 4.19.0-14-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-14-amd64-advanced-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-14-amd64 ...'
linux /boot/vmlinuz-4.19.0-14-amd64 root=/dev/mapper/lug-root ro init=/lib/systemd/systemd quiet text
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-14-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-14-amd64-recovery-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-14-amd64 ...'
linux /boot/vmlinuz-4.19.0-14-amd64 root=/dev/mapper/lug-root ro single init=/lib/systemd/systemd
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-14-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-10-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-10-amd64-advanced-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-10-amd64 ...'
linux /boot/vmlinuz-4.19.0-10-amd64 root=/dev/mapper/lug-root ro init=/lib/systemd/systemd quiet text
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-10-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-10-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-10-amd64-recovery-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-10-amd64 ...'
linux /boot/vmlinuz-4.19.0-10-amd64 root=/dev/mapper/lug-root ro single init=/lib/systemd/systemd
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-10-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-8-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-8-amd64-advanced-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-8-amd64 ...'
linux /boot/vmlinuz-4.19.0-8-amd64 root=/dev/mapper/lug-root ro init=/lib/systemd/systemd quiet text
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-8-amd64
}
menuentry 'Debian GNU/Linux, with Linux 4.19.0-8-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.19.0-8-amd64-recovery-/dev/mapper/lug-root' {
load_video
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
echo 'Loading Linux 4.19.0-8-amd64 ...'
linux /boot/vmlinuz-4.19.0-8-amd64 root=/dev/mapper/lug-root ro single init=/lib/systemd/systemd
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.19.0-8-amd64
}
}
### END /etc/grub.d/10_linux ###
### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_uefi-firmware ###
menuentry 'System setup' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
### END /etc/grub.d/30_uefi-firmware ###
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###
### BEGIN /etc/grub.d/41_custom ###
if [ -f ${config_directory}/custom.cfg ]; then
source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
*********************** END /boot/grub/grub.cfg
*********************** BEGIN /proc/mdstat
cat: /proc/mdstat: No such file or directory
*********************** END /proc/mdstat
*********************** BEGIN LVM
--- Volume group ---
VG Name lug
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3196
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 6
Open LV 6
Max PV 0
Cur PV 3
Act PV 3
VG Size <74.51 TiB
PE Size 4.00 MiB
Total PE 19531509
Alloc PE / Size 16232449 / 61.92 TiB
Free PE / Size 3299060 / 12.58 TiB
VG UUID cyKU5g-xgI5-bf8M-Jk90-hq9R-Eggl-oEAJFj
--- Physical volume ---
PV Name /dev/sda3
VG Name lug
PV Size 36.38 TiB / not usable 1.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 9536895
Free PE 1624447
Allocated PE 7912448
PV UUID PiR3BA-lShQ-nRYK-MKxC-nO7u-xmR2-tGUGpw
--- Physical volume ---
PV Name /dev/sdb3
VG Name lug
PV Size 36.38 TiB / not usable 1.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 9536895
Free PE 1630590
Allocated PE 7906305
PV UUID RmQoNo-7w5R-Rhp1-MirE-mkfU-3SLg-36AN1x
--- Physical volume ---
PV Name /dev/sdc1
VG Name lug
PV Size <1.75 TiB / not usable 2.98 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 457719
Free PE 44023
Allocated PE 413696
PV UUID 5dSf39-r45B-IIBU-NW7E-sQfY-QjAa-AClVk4
--- Logical volume ---
LV Path /dev/lug/root
LV Name root
VG Name lug
LV UUID QqUaB2-R6JG-ZCFG-6LO9-KfKp-FsQx-6jeFp2
LV Write Access read/write
LV Creation host, time mirrors4, 2020-04-09 20:33:51 +0800
LV Status available
# open 1
LV Size 32.00 GiB
Current LE 8192
Mirrored volumes 2
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:3
--- Logical volume ---
LV Path /dev/lug/home
LV Name home
VG Name lug
LV UUID AJIOAG-SdcF-WElm-EEmM-pzXh-tRmx-Yxcj2A
LV Write Access read/write
LV Creation host, time mirrors4, 2020-04-09 20:40:48 +0800
LV Status available
# open 1
LV Size 64.00 GiB
Current LE 16384
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 512
Block device 254:4
--- Logical volume ---
LV Path /dev/lug/docker
LV Name docker
VG Name lug
LV UUID sI0l3n-LICr-h5uX-ttSk-EcJD-hdB6-PYq5dh
LV Write Access read/write
LV Creation host, time mirrors4, 2020-04-09 22:25:25 +0800
LV Status available
# open 1
LV Size 64.00 GiB
Current LE 16384
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:5
--- Logical volume ---
LV Path /dev/lug/repo
LV Name repo
VG Name lug
LV UUID b1SybT-KDRq-k8ut-afoc-JsKh-UqIu-NN7bPA
LV Write Access read/write
LV Creation host, time mirrors4, 2020-04-09 23:15:09 +0800
LV Cache pool name mcache
LV Cache origin name repo_corig
LV Status available
# open 1
LV Size 60.00 TiB
Cache used blocks 99.99%
Cache metadata blocks 0.12%
Cache dirty blocks 0.00%
Cache read hits/misses 383892876 / 3726092755
Cache wrt hits/misses 4123825198 / 1668935867
Cache demotions 1082149516
Cache promotions 1082149526
Current LE 15728640
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:9
--- Logical volume ---
LV Path /dev/lug/log
LV Name log
VG Name lug
LV UUID xunv59-iR9M-D8jA-SBwn-GX5L-NmKi-S7R8bE
LV Write Access read/write
LV Creation host, time mirrors4, 2020-04-10 00:28:22 +0800
LV Status available
# open 1
LV Size 200.00 GiB
Current LE 51200
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 512
Block device 254:10
--- Logical volume ---
LV Path /dev/lug/backup
LV Name backup
VG Name lug
LV UUID w8Te3L-51ZS-n7FY-DKXq-NWzL-zcR9-r5oe03
LV Write Access read/write
LV Creation host, time mirrors4, 2020-08-15 14:45:21 +0800
LV Status available
# open 1
LV Size 8.00 GiB
Current LE 2048
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:11
*********************** END LVM
*********************** BEGIN /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root 11 Aug 16 2020 dm-name-lug-backup -> ../../dm-11
lrwxrwxrwx 1 root root 10 Aug 16 2020 dm-name-lug-docker -> ../../dm-5
lrwxrwxrwx 1 root root 10 Aug 16 2020 dm-name-lug-home -> ../../dm-4
lrwxrwxrwx 1 root root 11 Oct 21 23:06 dm-name-lug-log -> ../../dm-10
lrwxrwxrwx 1 root root 10 Aug 23 2020 dm-name-lug-repo -> ../../dm-9
lrwxrwxrwx 1 root root 10 Aug 16 2020 dm-name-lug-root -> ../../dm-3
lrwxrwxrwx 1 root root 10 Aug 16 2020 dm-uuid-LVM-cyKU5gxgI5bf8MJk90hq9REggloEAJFjAJIOAGSdcFWElmEEmMpzXhtRmxYxcj2A -> ../../dm-4
lrwxrwxrwx 1 root root 10 Aug 16 2020 dm-uuid-LVM-cyKU5gxgI5bf8MJk90hq9REggloEAJFjQqUaB2R6JGZCFG6LO9KfKpFsQx6jeFp2 -> ../../dm-3
lrwxrwxrwx 1 root root 10 Aug 23 2020 dm-uuid-LVM-cyKU5gxgI5bf8MJk90hq9REggloEAJFjb1SybTKDRqk8utafocJsKhUqIuNN7bPA -> ../../dm-9
lrwxrwxrwx 1 root root 10 Aug 16 2020 dm-uuid-LVM-cyKU5gxgI5bf8MJk90hq9REggloEAJFjsI0l3nLICrh5uXttSkEcJDhdB6PYq5dh -> ../../dm-5
lrwxrwxrwx 1 root root 11 Aug 16 2020 dm-uuid-LVM-cyKU5gxgI5bf8MJk90hq9REggloEAJFjw8Te3L51ZSn7FYDKXqNWzLzcR9r5oe03 -> ../../dm-11
lrwxrwxrwx 1 root root 11 Oct 21 23:06 dm-uuid-LVM-cyKU5gxgI5bf8MJk90hq9REggloEAJFjxunv59iR9MD8jASBwnGX5LNmKiS7R8bE -> ../../dm-10
lrwxrwxrwx 1 root root 10 Oct 21 23:05 lvm-pv-uuid-5dSf39-r45B-IIBU-NW7E-sQfY-QjAa-AClVk4 -> ../../sdc1
lrwxrwxrwx 1 root root 10 Oct 21 23:05 lvm-pv-uuid-PiR3BA-lShQ-nRYK-MKxC-nO7u-xmR2-tGUGpw -> ../../sda3
lrwxrwxrwx 1 root root 10 Oct 21 23:05 lvm-pv-uuid-RmQoNo-7w5R-Rhp1-MirE-mkfU-3SLg-36AN1x -> ../../sdb3
lrwxrwxrwx 1 root root 9 Aug 16 2020 scsi-3600605b00f17712026223d5126af9f43 -> ../../sda
lrwxrwxrwx 1 root root 10 Aug 16 2020 scsi-3600605b00f17712026223d5126af9f43-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Aug 16 2020 scsi-3600605b00f17712026223d5126af9f43-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct 21 23:05 scsi-3600605b00f17712026223d5126af9f43-part3 -> ../../sda3
lrwxrwxrwx 1 root root 9 Aug 16 2020 scsi-3600605b00f177860261f79abae9611f4 -> ../../sdb
lrwxrwxrwx 1 root root 10 Aug 16 2020 scsi-3600605b00f177860261f79abae9611f4-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Aug 16 2020 scsi-3600605b00f177860261f79abae9611f4-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Oct 21 23:05 scsi-3600605b00f177860261f79abae9611f4-part3 -> ../../sdb3
lrwxrwxrwx 1 root root 9 Aug 16 2020 scsi-3600605b00f17786026223e2d33c1767b -> ../../sdc
lrwxrwxrwx 1 root root 10 Oct 21 23:05 scsi-3600605b00f17786026223e2d33c1767b-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 9 Aug 16 2020 wwn-0x600605b00f17712026223d5126af9f43 -> ../../sda
lrwxrwxrwx 1 root root 10 Aug 16 2020 wwn-0x600605b00f17712026223d5126af9f43-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Aug 16 2020 wwn-0x600605b00f17712026223d5126af9f43-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Oct 21 23:05 wwn-0x600605b00f17712026223d5126af9f43-part3 -> ../../sda3
lrwxrwxrwx 1 root root 9 Aug 16 2020 wwn-0x600605b00f177860261f79abae9611f4 -> ../../sdb
lrwxrwxrwx 1 root root 10 Aug 16 2020 wwn-0x600605b00f177860261f79abae9611f4-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Aug 16 2020 wwn-0x600605b00f177860261f79abae9611f4-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 10 Oct 21 23:05 wwn-0x600605b00f177860261f79abae9611f4-part3 -> ../../sdb3
lrwxrwxrwx 1 root root 9 Aug 16 2020 wwn-0x600605b00f17786026223e2d33c1767b -> ../../sdc
lrwxrwxrwx 1 root root 10 Oct 21 23:05 wwn-0x600605b00f17786026223e2d33c1767b-part1 -> ../../sdc1
*********************** END /dev/disk/by-id
*********************** BEGIN /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 10 Aug 16 2020 44c95dba-2f34-4f7a-bc14-7f225ce03e18 -> ../../dm-3
lrwxrwxrwx 1 root root 11 Aug 16 2020 472723f7-00b5-483b-9f64-cba490e91338 -> ../../dm-11
lrwxrwxrwx 1 root root 10 Aug 16 2020 88d87210-c0e9-4caf-a209-25cf99aa7829 -> ../../dm-5
lrwxrwxrwx 1 root root 10 Aug 16 2020 90C7-B8FD -> ../../sda2
lrwxrwxrwx 1 root root 10 Aug 23 2020 9d7274b8-25d5-491e-a9da-36337d9c5266 -> ../../dm-9
lrwxrwxrwx 1 root root 10 Aug 16 2020 a4342e78-1aab-4bab-bef0-361827ec5565 -> ../../dm-4
lrwxrwxrwx 1 root root 11 Oct 21 23:06 b3cd819f-4742-46d8-9fcb-5dab1768316f -> ../../dm-10
*********************** END /dev/disk/by-uuid
-- System Information:
Debian Release: 10.8
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.0-10-amd64 (SMP w/80 CPU cores)
Kernel taint flags: TAINT_WARN
Locale: LANG=C.UTF-8, LC_CTYPE=zh_CN.UTF-8 (charmap=UTF-8), LANGUAGE=C.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages grub-common depends on:
ii gettext-base 0.19.8.1-9
ii libc6 2.28-10
ii libdevmapper1.02.1 2:1.02.155-3
ii libefiboot1 37-2+deb10u1
ii libefivar1 37-2+deb10u1
ii libfreetype6 2.9.1-3+deb10u2
ii libfuse2 2.9.9-1+deb10u1
ii liblzma5 5.2.4-1
Versions of packages grub-common recommends:
pn os-prober <none>
Versions of packages grub-common suggests:
ii console-setup 1.193~deb10u1
pn desktop-base <none>
pn grub-emu <none>
pn multiboot-doc <none>
pn xorriso <none>
-- no debconf information
More information about the Pkg-grub-devel
mailing list