부트 로더를 어떻게 재실행합니까?


150

달리는 sudo apt-get -f installThe link /vmlinuz.old is a damaged link과 :

you may need to re-run your boot loader[grub]

전체 출력은 다음과 같습니다.

user@chrubuntu:~$ sudo apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
  linux-image-3.13.0-32-generic linux-image-extra-3.13.0-32-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
user@chrubuntu:~$ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-3.13.0-32 linux-headers-3.13.0-32-generic
  linux-image-3.13.0-32-generic linux-image-extra-3.13.0-32-generic
0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
After this operation, 270 MB disk space will be freed.
Do you want to continue? [Y/n] y
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = "en
en",
    LC_ALL = (unset),
    LC_TIME = "en",
    LC_MONETARY = "en",
    LC_ADDRESS = "en",
    LC_TELEPHONE = "en",
    LC_NAME = "en",
    LC_MEASUREMENT = "en",
    LC_IDENTIFICATION = "en",
    LC_NUMERIC = "en",
    LC_PAPER = "en",
    LANG = (unset)
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
(Reading database ... 232120 files and directories currently installed.)
Removing linux-headers-3.13.0-32-generic (3.13.0-32.57) ...
Removing linux-headers-3.13.0-32 (3.13.0-32.57) ...
Removing linux-image-extra-3.13.0-32-generic (3.13.0-32.57) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
update-initramfs: Deleting /boot/initrd.img-3.13.0-32-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
The link /initrd.img.old is a damaged link
Removing symbolic link initrd.img.old 
 you may need to re-run your boot loader[grub]
Removing linux-image-3.13.0-32-generic (3.13.0-32.57) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
update-initramfs: Deleting /boot/initrd.img-3.13.0-32-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic
The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]
user@chrubuntu:~$

부트 로더를 어떻게 재실행합니까?


2
을 사용할 때 동일한 문제가 발생 apt-get autoremove하지만 Eliah Kagan이 대답에서 grub이 재부팅 할 때 제대로 작동하는 것 같습니다.
Mark Mikofski

답변:


189

에 따르면 움블의 대답제거 커널 후 손상 / vmlinuz를하고 /initrd.img 심볼릭 링크 (에 서버 오류 부트 로더는 / GRUB2-하는 그것이, 여기 GRUB 인 경우), 당신은이 상황에서 아무것도 할 필요가 없습니다.

다른 부트 로더 (적어도 LILO )의 경우 부트 로더 구성을 수동으로 실행해야 할 수도 있습니다.

당신이 경우 않았다 기존 커널을 확인하고 구성을 업데이트 GRUB 말할 필요, 실행은 sudo update-grub그렇게 할 것입니다. 그리고 그것을 실행하는 데 아무런 해가 없습니다. 그러나이 경우에는 필요하지 않습니다.


확인 내가 그들에게 그대를 실행
TevinYoungz

3
@TevinYoungz 괜찮습니다. sudo update-grub해를 입히지 말아야합니다.
Eliah Kagan

5
"때때로"라는 단어는 과소 평가입니다.
Simon Richter

9
이 오류와 해결 방법은 가장 어리석은 설계 실수로 인해 상을받을 수 있다고 생각합니다. update-grub대신 grub 명령 대신 grub-update논리적 이름 을 사용하고 99.99 %의 경우 수정 (명령)을 지정하지 못하는 경우가 있습니다.
sorin

@ sorin 어딘가에 버그 보고서가 있는지 궁금합니다.
Mateusz Konieczny

31

grub의 경우 오류가 약간 이상합니다.

apt가 새 커널 버전을 설치하면 / vmlinuz 및 /initrd.img가 /vmlinuz.old 및 /initrd.img.old로 이동합니다 (그런 다음 여전히 현재 활성 커널을 가리키고 있습니다. 다시 .old 확장자, 이는 "커널 설치 제거 후 손상된 링크"에 링크 된 스토리와 다르며 / vmlinuz /initrd.img라는 두 개의 새 파일을 만듭니다.

를 실행하면 apt-get autoremove(메시지가에 의해 생성되지 않은 apt-get -f install) 이전에 활성화 된 커널을 제거합니다 (자동 제거를 실행하기 전에 설치 후 재부팅 했습니까?)? 링크가 유효하지 않습니다.

커널 자체를 제거하면 autoremove 자체가 update-grub을 호출합니다.

run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-32-generic /boot/vmlinuz-3.13.0-32-generic

금후:

The link /vmlinuz.old is a damaged link
Removing symbolic link vmlinuz.old 
 you may need to re-run your boot loader[grub]

따라서 autoremove는 다음을 수행합니다.

  1. 오래된 커널을 제거
  2. update-grub을 실행하십시오.
  3. update-grub은 제거 된 파일에 연결된 .old 파일을 제거합니다.

걱정할 것이 없습니다 :-)

문안 인사.


2
마지막 dist 업그레이드 후 재부팅하지 않으면 어떻게됩니까? 그리고 뭐? 절대 재부팅하지 않습니다. 그것은 newbs를위한 것입니다.
Evan Carroll

2
재부팅하지 않으면 새 커널을 메모리에 넣을 방법이 없습니다.
simpleuser

또한 재부팅하기 전에 커널 영역 (일반적으로 / boot)에 /vmlinuz&& /initrd.img링크되어 있는지 확인하는 것이 좋습니다 . 답변 노트로 ".old"파일 '손상된 링크'는 걱정할 것이 없습니다. ^
bshea 16:16에

12

$ sudo update-grub

오래된 패키지를 삭제 / 제거하려는 경우에도 수행 할 수 있습니다

$ dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge


3.X 이미지 만있는 경우 모든 것을 삭제합니다. 맞습니까?
Harkály Gergő

기술적으로 첫 번째 명령은 질문에 대답합니다. pkg 유지 보수에 대해 더 추가 할 이유가 없습니다.
bshea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.