Arch GRUB yêu cầu /run/lvm/lvmetad.socket trên đĩa không lvm


18

Tôi đang chạy tập lệnh này dựa trên quy trình thiết lập ArchWiki . Nó không thành công ở bước cấu hình GRUB

Tôi đang sử dụng archlinux-2013.12.01-dual.iso bên trong VMware Player với ram 1 GB, sdalà 810 MB. Tôi cũng đã gắn một chia sẻ CIFS trên máy chủ.

# 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

Tôi có:

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

Tôi đã không cài đặt phân vùng / ổ 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 Là:

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

Trông giống như một lỗi - "vui lòng gửi báo cáo lỗi với /boot/grub/grub.cfg.new tệp được đính kèm"
Panther

1
Bạn đang chạy grsec? Bạn có đủ bộ nhớ?
cúc

@ warl0ck: sự an toàn? Tôi đang sử dụng tiêu chuẩn archlinux-2013.12.01-dual.isobên trong VMware Player với ram 384 MB. sdalà 810 MB. Trên ISO thứ cấp sr1, tôi đã chạy tập lệnh để cài đặt Vim và gắn kết chia sẻ CIFS trên máy chủ.
antonio

Câu trả lời:


22

Tôi đã chạy qua cùng một vấn đề vừa rồi, và tìm thấy một cách giải quyết khác. Về cơ bản, nó liên quan đến việc làm cho /runthư mục máy chủ có sẵn cho khách.

Đầu tiên, chúng tôi gắn kết /runnơi khách có thể truy cập. Tôi sẽ giả định rằng phân vùng cài đặt của bạn được gắn kết tại/mnt

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

Sau đó, chúng tôi chen vào khách và gắn máy chủ của chúng tôi /run/lvmvào khách/run

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

Sau đó, bạn có thể chạy grub-mkconfiggrub-installkhông có bất kỳ lỗi LVM. Điều này cũng làm cho các lệnh hoạt động nếu bạn đang cài đặt với LVM, với giá trị của nó.

Khi thực hiện, hãy nhớ umount /run/lvmtrước khi exiting chroot.


6

Sau khi nghiên cứu được kích hoạt bởi @guest, tôi thấy rằng có một lỗi rõ ràng trong grub-mkconfigtập lệnh của trình trợ giúp /etc/grub.d/10_linux, điều này làm cho mục nhập GRUB initramfs dự phòng không tương thích với hệ thống menu con GRUB. Vì việc sử dụng initramfs dự phòng rất cụ thể đối với Arch và các dẫn xuất, nó không được hỗ trợ bởi ngược dòng grub-mkconfig. Một sửa chữa dứt khoát vẫn đang được tiến hành. Xem thêm chi tiết về bug.archlinux.org

Do đó, một cách giải quyết tạm thời là vô hiệu hóa các menu con trong GRUB, bằng cách nối thêm:

GRUB_DISABLE_SUBMENU=y

để /etc/default/grub.

Thật không may, bằng cách vô hiệu hóa các menu con, tôi chỉ tránh được lỗi thứ hai grub-mkconfig.

Vì vậy:

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

Tôi vẫn nhận được:

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

Tôi chưa bao giờ cài đặt phân vùng / ổ LVM và, như bạn có thể thấy từ câu hỏi của mình, tôi đã phân vùng và định dạng hệ thống. Dù sao, sau khi sửa lỗi GRUB, tôi đã thử cả hai:

systemctl start lvmetad

systemctl start lvmetad.service

và tôi chạy pacstraplại, không thành công.

Lỗi hiện tại không nghiêm trọng như

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

diễn ra suôn sẻ và tôi có thể khởi động từ $DEV.


Trả lời câu hỏi của riêng bạn là tốt, không cần phải đưa nó vào một bài viết wiki cộng đồng.
terdon

1
Tôi không thể biết đây là câu trả lời hay câu hỏi khác
Michael Mrozek

@MichaelMrozek: Vâng, đó là câu trả lời / giải pháp một phần cho câu hỏi: lỗi thứ hai đã được sửa; đáng chú ý nhất, lỗi đầu tiên bây giờ cho thấy không quan trọng đối với thiết lập Arch. Tôi vẫn đang điều tra và hy vọng cái sau cũng sẽ được sửa.
antonio

3

Tôi đã có cùng một vấn đề nhưng tôi tìm thấy một giải pháp phù hợp với mình: chỉ cần loại bỏ os-prober.


1
ví dụ đơn giản của tôi, điều này là ok. Nhưng trong trường hợp bạn có các hệ điều hành khác và muốn có menu multiboot, bạn có thiết lập các mục theo cách thủ công không?
antonio

1
Đừng xóa os-prober, chỉ cần vô hiệu hóa bit thực thi của nó: chmod -x /etc/grub.d/30_os-probervà nó sẽ xóa cảnh báo.
NuclePeon

Đây thực sự không phải là một giải pháp - os-prober gần như là một phần thiết yếu của grub trừ khi bạn chỉ sử dụng một hệ thống.
daboross


0

Đối với thông báo lỗi đầu tiên, grub không thể kết nối với trình nền siêu dữ liệu LVM, hãy thử chạy lệnh này với quyền root (sẽ khởi động nó):

systemctl start lvmetad

Và cách thứ hai, hãy thử tăng RAM được phân bổ cho VM của bạn, có lẽ 512Mvà chạy lại grub.


Tôi đặt ram lên tới 1 GB, systemctl start lvmetad(chạy bên ngoài chroot) không đưa ra bất kỳ thông báo lỗi nào. Nhưng chạy lại grub-mkconfigbên trong arch-chrootcho chính xác cùng một lỗi (bao gồm cả lỗi mem).
antonio
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.