업데이트 관리자가 GRUB를 제거했습니다. Ubuntu로 돌아가는 방법은 무엇입니까?

업데이트 관리자가 GRUB를 제거했습니다. Ubuntu로 돌아가는 방법은 무엇입니까?

저는 Ubuntu 14.04를 실행하고 항상 정기적으로(거의 매일) 업데이트합니다. 오늘 7월 8일 Ubuntu 업데이트가 평소와 다르게 동작했습니다. "모든 업데이트를 설치할 수 있는 것은 아닙니다."라고 말하고 "부분 업데이트"를 제안했습니다. 시도해본 적은 없지만 우분투를 신뢰합니다. 업데이트 목록에서 제가 발견한 것 중 하나는 부트로더 GRUB였지만, 저는 Ubuntu를 신뢰합니다.

완료 후 다시 시작하라는 메시지가 표시되고 다시 시작하면 Windows로 직접 부팅됩니다. 즉, GRUB가 효과적으로 제거되었으며 지금 Ubuntu로 부팅할지 여부를 선택할 수 없습니다. 나는 Linux나 Windows 모두에서 큰 어려움을 겪는 사람은 아니지만 Windows 8에서는 훨씬 더 장애가 있다고 느낍니다(단지 번들로 제공됨).

노트북에 Ubuntu가 아직 존재하나요? 그렇다면 가능한 한 빨리 어떻게 다시 돌아갈 수 있나요? (주말에 프레젠테이션을 해야 하는데 새 시스템을 설정하고 백업 데이터를 가져오는 속도가 느립니다.)


Christian Benke의 답변에 따라 grub-install에 실패했습니다.


이제 우분투 USB 스틱으로 시스템을 조사하고 있습니다.

ubuntu@ubuntu:~$ sudo parted -l
Model: ATA TOSHIBA THNSNJ25 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name                  Flags
 1      1049kB  1075MB  1074MB  ntfs            Basic data partition  hidden, diag
 2      1075MB  1180MB  105MB   fat32           Basic data partition  boot
 3      1180MB  1314MB  134MB   ntfs            Basic data partition  msftres
 4      1314MB  44.7GB  43.4GB  ntfs            Basic data partition  msftdata
 6      44.7GB  46.7GB  2000MB  linux-swap(v1)
 7      46.7GB  244GB   197GB   ext4
 5      244GB   256GB   12.1GB  ntfs            Basic data partition  hidden, diag

빠른 "sudo mkdir /media/[mountpoint]" 다음에 "sudo mount /dev/sda[X] /media/[mountpoint]"를 사용하면 파티션을 검사할 수 있습니다.

/dev/sda1  Windows boot files
/dev/sda2  EFI files
/dev/sda3  Empty
/dev/sda4  Windows system
/dev/sda5  Toshiba recovery
/dev/sda6  Ubuntu swap partition (not mountable)
/dev/sda7  Ubuntu system

분명히 /dev/sda7은 내가 계속하고 싶은 것입니다.

ubuntu@ubuntu:~$ sudo mkdir /media/oldroot
ubuntu@ubuntu:~$ sudo mount /dev/sda7 /media/oldroot
ubuntu@ubuntu:~$ sudo mount --bind /dev /media/oldroot/dev
ubuntu@ubuntu:~$ sudo mount --bind /proc /media/oldroot/proc
ubuntu@ubuntu:~$ sudo mount --bind /sys /media/oldroot/sys
ubuntu@ubuntu:~$ sudo chroot /media/oldroot /bin/sh 
# lsb_release -d
Description:    Ubuntu 14.04.2 LTS
# grub-install /dev/sda
Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.
# exit

분명히 grub-install은 /dev/sda2에서 EFI 파일을 찾지 못했지만 사전에 /media/oldroot/boot/efi에 마운트하면 제대로 작동하는 것처럼 보였습니다.

ubuntu@ubuntu:~$ sudo mount /dev/sda2 /media/oldroot/boot/efi
ubuntu@ubuntu:~$ sudo chroot /media/oldroot /bin/sh 
# lsb_release -d
Description:    Ubuntu 14.04.2 LTS
# grub-install /dev/sda
Installing for x86_64-efi platform.
Installation finished. No error reported.
# update-grub
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.16.0-43-generic
Found initrd image: /boot/initrd.img-3.16.0-43-generic
Found linux image: /boot/vmlinuz-3.16.0-41-generic
Found initrd image: /boot/initrd.img-3.16.0-41-generic
Found linux image: /boot/vmlinuz-3.16.0-40-generic
Found initrd image: /boot/initrd.img-3.16.0-40-generic
Found linux image: /boot/vmlinuz-3.16.0-39-generic
Found initrd image: /boot/initrd.img-3.16.0-39-generic
Found linux image: /boot/vmlinuz-3.16.0-38-generic
Found initrd image: /boot/initrd.img-3.16.0-38-generic
Found linux image: /boot/vmlinuz-3.16.0-37-generic
Found initrd image: /boot/initrd.img-3.16.0-37-generic
Found linux image: /boot/vmlinuz-3.16.0-36-generic
Found initrd image: /boot/initrd.img-3.16.0-36-generic
Found linux image: /boot/vmlinuz-3.16.0-34-generic
Found initrd image: /boot/initrd.img-3.16.0-34-generic
Found linux image: /boot/vmlinuz-3.16.0-33-generic
Found initrd image: /boot/initrd.img-3.16.0-33-generic
Adding boot menu entry for EFI firmware configuration
done
# exit    

그러나 이것은 문제를 해결하지 못했습니다. 재부팅 시 GRUB가 표시되지 않고 다시 Windows로 직접 이동합니까? 지금까지 감사했습니다. 이번에는 어떤 문제가 있는 것 같나요?


영향을 받은 패키지를 다시 설치하지 못함


제안된 대로 apt/history.log 파일을 살펴보고 GRUB 작동을 중지시킨 "부분 업데이트" 중에 어떤 일이 발생했는지 확인합니다. 안타깝게도 여기에는 7월 8일 업데이트에 대한 항목이 포함되어 있지 않습니다.

ubuntu@ubuntu:~$ cat /media/summer7/var/log/apt/history.log

Start-Date: 2015-07-03  09:32:40
Commandline: aptdaemon role='role-commit-packages' sender=':1.79'
Upgrade: lightdm:amd64 (1.10.5-0ubuntu1, 1.10.5-0ubuntu1.1), liblightdm-gobject-1-0:amd64 (1.10.5-0ubuntu1, 1.10.5-0ubuntu1.1)
End-Date: 2015-07-03  09:32:42

Start-Date: 2015-07-05  20:02:01
Commandline: aptdaemon role='role-commit-packages' sender=':1.85'
Upgrade: libxcomp3:amd64 (3.5.0.31-0~605~ubuntu14.04.1, 3.5.0.32-0~668~ubuntu14.04.1), nxproxy:amd64 (3.5.0.31-0~605~ubuntu14.04.1, 3.5.0.32-0~668~ubuntu14.04.1), irqbalance:amd64 (1.0.6-2ubuntu0.14.04.1, 1.0.6-2ubuntu0.14.04.2)
End-Date: 2015-07-05  20:02:04

Start-Date: 2015-07-07  20:00:24
Commandline: aptdaemon role='role-commit-packages' sender=':1.81'
Install: linux-image-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1), linux-headers-3.16.0-43:amd64 (3.16.0-43.58~14.04.1), linux-headers-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1), linux-image-extra-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1), linux-signed-image-3.16.0-43-generic:amd64 (3.16.0-43.58~14.04.1)
Upgrade: linux-signed-image-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), libfontembed1:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), linux-image-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), cups-browsed:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), linux-signed-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), cups-filters-core-drivers:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), cups-filters:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5), libgtksourceview2.0-0:amd64 (2.10.5-1ubuntu2, 2.10.5-1ubuntu2.14.04.1), linux-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), linux-libc-dev:amd64 (3.13.0-55.94, 3.13.0-57.95), libgtksourceview2.0-common:amd64 (2.10.5-1ubuntu2, 2.10.5-1ubuntu2.14.04.1), linux-headers-generic-lts-utopic:amd64 (3.16.0.41.33, 3.16.0.43.34), libcupsfilters1:amd64 (1.0.52-0ubuntu1.4, 1.0.52-0ubuntu1.5)
End-Date: 2015-07-07  20:01:11

실제로 보면 길이가 좀 작은 것 같죠? 또한 마지막 항목은 파일을 마지막으로 터치한 시점과 비교하여 2시간 후의 미래입니다.

ubuntu@ubuntu:~$ ls -l /media/summer7/var/log/apt/history.log
-rw-r--r-- 1 root root 1925 Jul  7 18:01 /media/summer7/var/log/apt/history.log

그렇다면 여기서 파일 손상을 보고 있는 것이 아닐까요? 아 글쎄, apt-get 업데이트를 시도했지만 작동하지 않았습니다.

ubuntu@ubuntu:~$ sudo mount --bind /dev /media/oldroot/dev
ubuntu@ubuntu:~$ sudo mount --bind /proc /media/oldroot/proc
ubuntu@ubuntu:~$ sudo mount --bind /sys /media/oldroot/sys
ubuntu@ubuntu:~$ sudo chroot /media/oldroot apt-get update

다음과 같이 "해결할 수 없음" 오류로 인해 모든 항목을 가져오지 못했습니다.이 질문. 다음은 실패합니다

ubuntu@ubuntu:~$ sudo chroot /media/oldroot ping dk.archive.ubuntu.com
ping: unknown host dk.archive.ubuntu.com

/media/oldroot/etc/resolv.conf 파일은 완전히 비어 있습니다. 이것은 나쁜 징조인가요?

답변1

당신과 같은 날 나에게도 같은 문제가 일어났습니다. 나는 몇 가지 작업을 하고 있었고 우분투는 부분 업데이트를 제안했고 이에 따랐으며 어제 대부분의 시간을 grub을 다시 설치하는 데 보냈습니다(소용이 없었습니다).

내 설치는 Windows 8.1을 사용한 이중 부팅이었으므로 Windows 파티션 외에 세 개의 Linux 파티션이 있었습니다. 하나는 시스템용("/"), 하나는 홈용("/home"), 하나는 스왑용이었습니다. 부팅 복구를 사용하여 grub을 다시 설치할 수 없어서 우분투 썸 드라이브를 사용하여 부팅하고 설치 프로그램을 시작했습니다.

하고 싶은 것이 무엇인지 물었을 때 나는 다른 것을 선택했습니다. 그런 다음 원래 시스템 디렉터리 "/"를 루트 파티션으로 설정하고 설치 프로그램에 이를 포맷하라고 지시했습니다. 스왑을 스왑으로, 홈 디렉터리를 "/home"으로 설정했지만 설치 프로그램에 홈 디렉터리를 포맷하지 말라고 지시했습니다.

또한 설치 프로그램에게 파티션이 아닌 디스크(내 경우에는 /dev/sda)에 부트로더를 설치하라고 지시했습니다. 설치가 완료되고 재부팅 시 grub이 나타나 우분투와 Windows 8.1로 재부팅할 수 있었습니다.

내 홈 디렉토리는 완전히 손상되지 않았고 데스크탑 배경과 .bashrc가 자동으로 로드되었으며, 프로그램 재설치를 시작하면 자동으로 팀뷰어, 크롬 등에 다시 로그인되었습니다.

별도의 /home 및 시스템 파티션이 있는 경우 이것이 최선의 해결 방법일 수 있습니다. 데이터 손실이 없으며 재설치에 시간이 오래 걸리지 않습니다.

답변2

다음과 같은 작은 부팅 가능한 라이브 시스템을 사용할 수 있습니다.그르믈그리고 명령chroot깨진 부트로더를 수정하기 위해 이전 시스템으로 돌아가세요.

live-cd로 부팅한 후 설치된 Linux 시스템의 파일 시스템에 액세스하려고 합니다. 따라서 가장 먼저 해야 할 일은 설치된 Linux의 루트 파티션을 마운트하는 것입니다(live-cd 환경의 루트 사용자로).

# mkdir /media/oldroot
# mount /dev/sda1 /media/oldroot

Linux 파티션이 어느 것인지 확실하지 않은 경우 사용 가능한 모든 파티션을 마운트하고 어느 파티션이 루트 파티션인지 확인하십시오.

기능적인 chroot 환경을 얻기 위한 다음 단계는 의사 파일 시스템(/개발자,/proc,/sys) 방금 마운트한 루트 파티션 내부의 live-cd 환경에서:

# mount --bind /dev /media/oldroot/dev
# mount --bind /proc /media/oldroot/proc
# mount --bind /sys /media/oldroot/sys

이제 시스템을 루트할 준비가 되었습니다. 즉, live-cd의 환경을 설치된 시스템으로 "대체"한다는 의미입니다./bin/sh설치된 환경에서 명령 프롬프트로:

# chroot /media/oldroot /bin/sh
# 

이전에 설치된 Linux를 사용하고 있는지 확인하세요.

# lsb_release -d
Description:    Ubuntu 14.04.2 LTS

chroot에서 실행해 보세요.

# grub-install /dev/sda

하드 디스크의 마스터 부트 레코드에 grub-bootloader를 다시 설치하십시오.

grub2가 실제로 제거되었고 grub-install이 존재하지 않는 경우 grub2 패키지를 USB 스틱에 복사하여 다시 설치할 수 있습니다.

다음에서 deb 파일을 다운로드하세요.http://packages.ubuntu.com/trusty/grub2그리고 USB 메모리에 복사하세요. chroot 내부에 USB 스틱을 마운트합니다(Alt-F2를 사용하여 live-cd 환경에서 두 번째 tty를 가져와 USB 스틱을 마운트한 후 나중에 Alt-F1을 사용하여 chroot 환경으로 다시 전환).

-- Press <Alt-F2> to get to the second tty of the live-cd-env
# mkdir /media/oldroot/media/<yourusername>/usb_stick
# mount /dev/sdb1 /media/oldroot/media/<youruser>/usb_stick

-- Press <Alt-F1> to get back to the first tty to our chroot
# cd /media/<yourusername>/usb_stick
# ls
dpkg -i grub2_2.02~beta2-9_amd64.de
# dpkg -i grub2_2.02~beta2-9_amd64.deb

그 후에는 계속해서그럽 설치.

관련 정보