CHROOT 내에서 "UPDATE-GRUB"하는 방법

CHROOT 내에서 "UPDATE-GRUB"하는 방법

저는 Windows 10과 Ubuntu 18.04를 이중 부팅하고 있습니다. 최근에 Windows 10을 업데이트했는데 그 이후로 Linux로 부팅할 수 없습니다. 때때로 업데이트로 인해 Linux 파티션 부팅이 엉망이 되었지만 항상 grub 명령줄을 통해 문제를 해결할 수 있었습니다. 이건 전혀 다른 문제인 것 같습니다.

이것이 중복된 경우 사과드립니다. 제가 본 모든 관련 질문에서 질문자는 일반적으로 복구 메뉴에 접근할 수 있거나 정상적으로 부팅할 수 있지만 복구 모드로 들어갈 수 없습니다.

grub에서 부팅 프로세스를 성공적으로 시작할 수 있지만 그 이후에는 Ubuntu 로그인 화면에 접근할 수 없습니다. grub(2.02)을 입력한 후 "Ubuntu" 또는 "Ubuntu용 고급 옵션"으로 이동하면 다음과 같은 네 가지 옵션이 있습니다.

Ubuntu, with Linux  4.18.0-21-generic
Ubuntu, with Linux  4.18.0-21-generic (recovery mode)
Ubuntu, with Linux  4.18.0-20-generic
Ubuntu, with Linux  4.18.0-20-generic (recovery mode)

네 가지 중 하나를 시작하면 grub이 성공적으로 종료되고 일련의 화면 출력이 시작됩니다. 그러나 그래픽 로그인 창, 로그인 프롬프트 또는 대화형 항목에는 도달하지 않습니다. 여기서는 일반적으로 마지막 5줄을 입력하겠습니다.

[   OK   ] Reached target Local Encrypted Volumes.
[   OK   ] Reached target Local File Systems (Pre).
[   OK   ] Listening on Load/Save RF Kill Switch Status /dev/rfkill Watch
[   OK   ] Reached target Sound Card.
[   OK   ] Found device WDC_WDBNCE5000PNC SSD.

그러면 아무 일도 일어나지 않습니다. 컴퓨터를 다시 시작하려면 전원 버튼을 6초 동안 누르고 있어야 합니다. 새로 설치하지 않은 경우 아이디어가 있는 사람이 있습니까?

이전 내용을 알고 싶은 사람이 있으면 여기에 기록해 드리겠습니다. 제가 받을 수 있는 도움에 감사드립니다.

편집: @K9spud의 조언을 따랐을 때 일어난 일은 다음과 같습니다. fsck깨끗이 돌아와서 다행이에요. 저는 chrootLinux 설치를 루트 디렉토리로 사용했는데 /var/boot.log가 원래 나열된 것보다 훨씬 더 많이 진행된 것을 발견했습니다. 제가 발견한 한 가지 항목은 제가 게시한 로그 끝에 있는 장치가 마운트에 실패했다는 것입니다. 아마도 제가 설정을 /etc/fstab잘못했기 때문일 것입니다. 로그의 마지막 메시지는 다음과 같습니다.

[  OK   ] Started Show Plymouth Boot Screen

/etc/fstab에서 문제가 있는 줄을 제거하면 시스템이 정상적으로 부팅됩니다.

핵심요약: 잘못 구성하면 /etc/fstab로그인 화면이 표시되지 않습니다.

답변1

이것은 대답하기 어려운 질문일 수 있습니다. 가장 간단한 대답은 새로 설치하는 것입니다. 그러나 이전 설치에 이미 많은 데이터/사용자 정의가 투자되어 있으면 짜증납니다.

내 컴퓨터라면 Ubuntu USB 설치 썸 드라이브에서 라이브 모드로 Ubuntu를 부팅하고 하드 디스크를 뒤져 무엇이 잘못되었는지 파악하고 복구하려고 시도할 것입니다.

가장 먼저 할 수 있는 일은 모든 것의 백업 이미지를 만드는 것입니다. 문제를 처음 해결하려고 하면 상황이 더 악화될 수 있기 때문입니다.

다음으로 Linux 파티션에서 fsck를 실행하여 파티션이 손상되지 않았는지 확인했습니다. fsck가 깨끗하고 훌륭하게 돌아오면 모든 데이터가 그대로 남아 있으며 필요한 경우 어떤 방식으로든 복구할 수 있습니다. fsck에서 많은 오류가 발생하면 설치가 완료되지 않았고 파티션이 손상되었으며 새로 설치하기 전에 검색할 수 있는 사용자 정의 데이터 외에는 복구할 가치가 없다고 말하고 싶습니다.

fsck를 통과한 후 Linux 파티션을 마운트하고 "chroot"를 사용하여 마치 Linux 설치에서 부팅한 것처럼 Linux 설치 내에서 작업을 시작합니다. chroot 환경 내에서 dev, sys, proc 등을 마운트하는 작업을 수행한 다음 "update-grub"을 실행하여 grub을 다시 설치할 수 있습니다. "update-grub"을 실행하면 부팅할 수 없는 이유를 설명할 수 있는 몇 가지 오류가 나타날 수 있습니다.

"update-grub"이 중요한 내용을 드러내지 않고 작동하는 경우 /var/log를 뒤져 로그 파일에 시스템 부팅 실패 이유를 나타낼 수 있는 오류가 표시되는지 확인할 수 있습니다.

그 외에도 모든 오류 메시지를 직접 확인하고 무엇이 손상되고 무엇이 손상되지 않았는지 평가하지 않고서 무엇을 제안해야 할지 잘 모르겠습니다.

Windows가 Linux 설치를 거의 고려하지 않아 때때로 Linux가 부팅되지 않는다는 점은 매우 실망스럽습니다. 따라서 Windows와 이중 부팅 시스템을 사용하는 것을 전혀 피하고 싶습니다. Microsoft가 향후 Linux 설치를 엉망으로 만드는 것에 대해 더욱 주의를 기울이고 개선하기를 바랍니다.

답변2

CHROOT 내에서 "UPDATE-GRUB"하는 방법

  1. Linux Live 모드에서 Ubuntu USB Thumb 드라이브로 부팅하세요. BIOS가 시스템에 맞는 올바른 모드(UEFI 대 Legacy/MBR)로 USB 드라이브를 부팅하는지 확인하세요. 그렇지 않으면 update-grub이 작동하는 데 큰 문제가 발생하게 됩니다.

  2. 라이브 Linux로 부팅한 후 터미널을 열고 다음 명령을 통해 작업을 시작하세요.

mkdir linux

sudo mount /dev/sdXX linux

("/dev/sdXX"를 하드 드라이브의 Linux 파티션에 대해 올바른 장치/파티션 번호로 바꾸십시오. 파티션 테이블을 살펴보고 무엇이 무엇인지 알아보려면 "gparted"를 실행해야 할 수도 있습니다)

sudo chroot linux /bin/bash

mount -t devtmpfs udev /dev

mount -t proc proc /proc

mount -t sysfs sysfs /sys

update-grub

(일부 시스템에는 /boot 및/또는 /boot/efi에 대한 몇 가지 추가 "마운트" 명령이 필요할 수 있습니다. 필요한 경우 마운트 방법을 알아내려면 시스템의 /etc/fstab 파일을 참조하십시오.)

모든 것이 제대로 작동한다면 "update-grub"은 다음과 같이 표시되어야 합니다.

Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.15.0-48-generic
Found initrd image: /boot/initrd.img-4.15.0-48-generic
Adding boot menu entry for EFI firmware configuration
done

나에게는 update-grub이 시스템을 다시 부팅하는 데 필요한 전부였지만 어떤 사람들에게는 grub이 MBR이나 UEFI가 사용하는 모든 것에서 완전히 사라진 경우 "grub-install"도 사용해야 할 수도 있습니다.

모든 작업이 오류 없이 완료되면 종료하기 전에 chroot 환경 내에서 이전에 마운트한 모든 항목을 마운트 해제해야 합니다. 그렇지 않으면 Ubuntu를 종료할 때 Linux 파티션을 깔끔하게 마운트 해제하는 데 어려움을 겪게 됩니다.

umount /sys

umount /proc

umount /dev

exit

sudo umount linux

sync

관련 정보