저는 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
그 후에는 계속해서그럽 설치.