Arch GRUB demande /run/lvm/lvmetad.socket sur un disque non lvm

18

J'exécute ce script basé sur la procédure d'installation d' ArchWiki . Il échoue à l' étape de configuration de GRUB

J'utilise archlinux-2013.12.01-dual.iso dans VMware Player avec 1 Go de RAM, sdasoit 810 Mo. J'ai également monté un partage CIFS sur la machine hôte.

# DEV=sda
# PART=sda1
# echo "1,,L,*" | sfdisk /dev/$DEV
# mkfs.ext3 /dev/$PART
# mount /dev/$PART /mnt
# pacstrap -i /mnt base 
# genfstab -U -p /mnt >> /mnt/etc/fstab
# arch-chroot /mnt 
# pacman -S grub
# pacman -S os-prober
# grub-mkconfig -o /boot/grub/grub.cfg

Je reçois:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  No volume groups found
error: out of memory.
error: syntax error.
error: Incorrect command.
error: syntax error.
Syntax error at line 164
Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
/boot/grub/grub.cfg.new file attached.done

Je n'ai pas installé de partitions / lecteurs LVM.

# fdisk -l /dev/sda

Disk /dev/sda: 819 MiB, 858783744 bytes, 1677312 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000d5a2a

Device    Boot Start       End Blocks  Id System
/dev/sda1       2048   1677311 837632  83 Linux


# lsblk 

NAME              MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0                 2:0    1     4K  0 disk 
sda                 8:0    0   819M  0 disk 
└─sda1              8:1    0   818M  0 part /mnt
sr0                11:0    1   522M  0 rom  /run/archiso/bootmnt
sr1                11:1    1    10M  0 rom  
loop0               7:0    0 224.2M  1 loop /run/archiso/sfs/root-image
loop1               7:1    0   1.4G  1 loop 
└─arch_root-image 254:0    0   1.4G  0 dm   /
loop2               7:2    0   1.4G  0 loop 
└─arch_root-image 254:0    0   1.4G  0 dm   /

/boot/grub/grub.cfg.new est:

#
# 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 ###
insmod part_gpt
insmod part_msdos
if [ -s $prefix/grubenv ]; then
  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 [ x$feature_default_font_path = xy ] ; then
   font=unicode
else
insmod part_msdos 
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  9d1d349e-d061-4e0f-9312-be19ca2dcb74
else
  search --no-floppy --fs-uuid --set=root 9d1d349e-d061-4e0f-9312-be19ca2dcb74
fi
    font="/usr/share/grub/unicode.pf2"
fi

if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=$prefix/locale
  set lang=en_US
  insmod gettext
fi
terminal_input console
terminal_output gfxterm
set timeout=5
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Arch Linux, with Linux core repo kernel' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-true-9d1d349e-d061-4e0f-9312-be19ca2dcb74' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos 
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  9d1d349e-d061-4e0f-9312-be19ca2dcb74
    else
      search --no-floppy --fs-uuid --set=root 9d1d349e-d061-4e0f-9312-be19ca2dcb74
    fi
    echo    'Loading Linux core repo kernel ...'
    linux   /boot/vmlinuz-linux root=UUID=9d1d349e-d061-4e0f-9312-be19ca2dcb74 rw  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initramfs-linux.img
}
menuentry 'Arch Linux, with Linux core repo kernel (Fallback initramfs)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-core repo kernel-fallback-9d1d349e-d061-4e0f-9312-be19ca2dcb74' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos 
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  9d1d349e-d061-4e0f-9312-be19ca2dcb74
    else
      search --no-floppy --fs-uuid --set=root 9d1d349e-d061-4e0f-9312-be19ca2dcb74
    fi
    echo    'Loading Linux core repo kernel ...'
    linux   /boot/vmlinuz-linux root=UUID=9d1d349e-d061-4e0f-9312-be19ca2dcb74 rw  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initramfs-linux-fallback.img
}
menuentry 'Arch Linux' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-9d1d349e-d061-4e0f-9312-be19ca2dcb74' {
    load_video
    set gfxpayload=keep
    insmod gzio
    insmod part_msdos 
    insmod ext2
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  9d1d349e-d061-4e0f-9312-be19ca2dcb74
    else
      search --no-floppy --fs-uuid --set=root 9d1d349e-d061-4e0f-9312-be19ca2dcb74
    fi
    echo    'Loading Linux core repo kernel ...'
    linux   /boot/vmlinuz-linux root=UUID=9d1d349e-d061-4e0f-9312-be19ca2dcb74 rw  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initramfs-linux-fallback.img
}
submenu 'Advanced options for Arch Linux' $menuentry_id_option 'gnulinux-advanced-9d1d349e-d061-4e0f-9312-be19ca2dcb74' {

### 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/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 ###

### BEGIN /etc/grub.d/60_memtest86+ ###
### END /etc/grub.d/60_memtest86+ ###
antonio
la source
Ressemble à un bogue - "veuillez déposer un rapport de bogue avec le fichier /boot/grub/grub.cfg.new attaché"
Panther
1
Utilisez-vous grsec? Avez-vous assez de mémoire?
daisy
@ warl0ck: grsecurity? J'utilise la norme archlinux-2013.12.01-dual.isoà l' intérieur de VMware Player avec 384 Mo de RAM. sdaest de 810 Mo. Sur une image ISO secondaire sr1, j'ai exécuté un script pour installer Vim et pour monter un partage CIFS sur la machine hôte.
antonio

Réponses:

22

J'ai rencontré le même problème tout à l'heure et j'ai trouvé une autre solution de contournement. Fondamentalement, cela implique de mettre le /runrépertoire des hôtes à la disposition de l'invité.

Tout d'abord, nous montons /runlà où il est accessible par l'invité. Je suppose que votre partition d'installation est montée à/mnt

mkdir /mnt/hostrun
mount --bind /run /mnt/hostrun

Ensuite, nous chroot dans l'invité, et montons notre hôte /run/lvmdans l'invité/run

arch-chroot /mnt /bin/bash
mkdir /run/lvm
mount --bind /hostrun/lvm /run/lvm

Vous pouvez ensuite exécuter grub-mkconfiget grub-installsans aucune erreur LVM. Cela fait également en sorte que les commandes se comportent si vous installez avec LVM, pour ce que cela vaut.

Une fois terminé, n'oubliez pas de le faire umount /run/lvmavant exitle chroot.

Chris
la source
6

Après des recherches déclenchées par @guest, j'ai trouvé qu'il y avait un bug apparent dans le grub-mkconfigscript d'aide /etc/grub.d/10_linux, ce qui rend l'entrée GRUB de replram initramfs non compatible avec le système de sous-menu GRUB. Comme l'utilisation d'un initramfs de secours est très spécifique à Arch et aux dérivés, il n'est pas pris en charge par l'amont grub-mkconfig. Une solution définitive est toujours en cours. Voir plus de détails sur bugs.archlinux.org

Une solution temporaire consiste donc à désactiver les sous-menus dans GRUB, en ajoutant:

GRUB_DISABLE_SUBMENU=y

à /etc/default/grub.

Malheureusement, en désactivant les sous-menus, j'évite seulement la deuxième erreur soulevée par grub-mkconfig.

Donc avec:

# arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg

Je reçois toujours:

Generating grub configuration file ...
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  WARNING: Failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  /run/lvm/lvmetad.socket: connect failed: No such file or directory
  No volume groups found

Je n'ai jamais installé de partitions / lecteurs LVM et, comme vous pouvez le voir dans ma question, j'ai partitionné et formaté le système. Quoi qu'il en soit, après avoir corrigé l'erreur GRUB, j'ai essayé les deux:

systemctl start lvmetad

et

systemctl start lvmetad.service

et j'ai couru à pacstrapnouveau, sans succès.

L'erreur actuelle n'est pas critique car

arch-chroot /mnt grub-install --target=i386-pc --recheck /dev/$DEV

se passe bien et je peux démarrer $DEV.

antonio
la source
Répondre à votre propre question est bien, il n'est pas nécessaire d'en faire un article wiki communautaire.
terdon
1
Je n'arrive pas à savoir s'il s'agit d'une réponse ou d'une autre question
Michael Mrozek
@MichaelMrozek: Eh bien, c'est une réponse / solution partielle à la question: la deuxième erreur est corrigée; plus particulièrement, la première erreur montre maintenant non cruciale pour la configuration d'Arch. J'étudie toujours et j'espère que ce dernier sera corrigé aussi.
antonio
3

J'ai eu le même problème mais j'ai trouvé une solution qui fonctionne pour moi: il suffit de la supprimer os-prober.

Blackhalo
la source
1
pour ma simple instance, c'est ok. Mais dans le cas où vous avez d'autres systèmes d'exploitation et souhaitez un menu multiboot, définissez-vous les entrées manuellement?
antonio
1
Ne supprimez pas os-prober, désactivez simplement son bit exécutable: chmod -x /etc/grub.d/30_os-proberil devrait supprimer l'avertissement.
NuclearPeon
Ce n'est vraiment pas une solution - os-prober est à peu près une partie essentielle de grub à moins que vous n'utilisiez qu'un seul système.
daboross
0

Pour le premier message d'erreur, grub ne peut pas se connecter au démon de métadonnées LVM, essayez d'exécuter cette commande en tant que root (ce qui la démarrera):

systemctl start lvmetad

Et le deuxième, essayez d'augmenter la RAM allouée à votre machine virtuelle, peut 512M- être , et réexécutez grub.

Marguerite
la source
J'ai réglé le RAM sur 1 Go, systemctl start lvmetad(exécuté en dehors de chroot) ne donne aucun message d'erreur. Mais la réexécution à l' grub-mkconfigintérieur arch-chrootdonne exactement la même erreur (y compris l'erreur mem).
antonio