LVM에 Windows + 우분투가 포함된 이중 부팅 시스템이 있습니다.
/dev/sda1 -> efi
/dev/sda2-4 -> windows
/dev/sda5 -> LVM
/dev/vgsys/root -> /
/dev/vgsys/home -> /home
해당 드라이브가 손상되기 시작하여 최근에 새 SSD로 옮겼습니다. 일부 손상된 프로그램(예: wpasupplicant 및 sed ㅋㅋㅋ)을 전송하고 다시 설치한 후 시스템은 내가 바보처럼 행동하고 시스템 업그레이드를 수행하고 재부팅했을 때까지 grub이 과거 실수 전에는 본 적이 없는 일부 내용을 뱉어내는 것을 보았음에도 불구하고 제대로 작동했습니다. 이제 시스템이 부팅되지 않으며 시스템 복구를 통해 드라이브를 부팅하여 이유를 찾으려고 합니다.
나는 grub을 지우고 다시 설치하려고 시도했는데, 이는 내가 겪고 있던 일부 문제를 해결하는 것처럼 보였지만 (물론 백업이 없는 일부 사용자 정의 grub 구성 설정을 잃어버리는 대가로) 실행할 때마다 grub-install
또는 update-grub
이상하고 끔찍한 일이 발생합니다. 온라인에서 오류 기록을 찾을 수 없습니다. 제가 직접 복사해서 100% 정확하지 않을 수도 있습니다.
File descriptor 4 (/dev/sda1) leaked on vgs invocation. Parent PID 12201: grub-install
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared to allow empty values.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as array.
Internal error: cfg tree element not declared as array.
Internal error: cfg tree element not declared as array.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as integer.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as array.
Ignoring invalid activation/mlock_filter entry in config file
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as integer.
Ignoring too small pv_min_size 0KB, using default 512KB.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as boolean.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared to allow empty values.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as integer.
Internal error: cfg tree element not declared as string.
Internal error: cfg tree element not declared as array.
Expecting string in devices/types in config file
_control_fd: close failed: Bad file descriptor
그러다가 또 그런 일이 일어나는 것 같았어요.
사실 예전에 본 적 있어요 File descriptor 4 (/dev/sda1) leaked on vgs invocation. Parent PID 12201: grub-install
.주장한 바에 의하면해가없는. 일부 다른 오류는 LVM과 관련된 것으로 보이 pv_min_size
므로 이는 일반적으로 LVM 문제인 것으로 추측됩니다.
grub-install
efi와 부팅 파티션으로 생성된 외부 썸 드라이브에서 다음을 수행해 보았습니다 .
umount /boot/efi
mv /boot /boot.bad
mkdir /boot
mount /dev/sdb2 /boot
mkdir /boot/efi
mount /dev/sdb1 /boot/efi
grub-install --efi-directory=/boot/efi
실제로 오류가 수신되지 않습니다. 하지만 실행할 때마다 update-grub
이러한 오류가 다시 발생합니다. 그것들은 어디에서 왔으며 어떻게 해결합니까?
업데이트: 찾았습니다이 페이지cfg tree element..
거기에 몇 가지 뉴스가 있는데 , 이것이 무엇을 의미하는지 궁금합니다...
답변1
@psusi가 지적했듯이 문제는 내 lvm 바이너리가 손상되었다는 것입니다. 나는 달렸다
apt-cache depends lvm2 | grep Depends | awk '{print $2}' | xargs apt install --reinstall -y
apt install --reinstall -y lvm2
lvm2와 모든 종속성을 다시 설치하면 문제가 해결되었습니다.