방금 sudo do_release_upgrade
AWS EC2 Ubuntu 13.10 서버에서 14.04로 업그레이드하려고했습니다. 다음 메시지가 나타날 때까지 모든 것이 잘 진행되었습니다.
A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally modified. What would you like to do about menu.lst? * install the package maintainer's version * keep the local version currently installed * show the differences between the versions * show a side-by-side difference between the versions * show a 3-way difference between available versions * do a 3-way merge between available versions (experimental) * start a new shell to examine the situation <Ok>
나는 확실히 menu.lst를 수정하지 않았으므로 로컬 수정이 아마존이하고 있다고 가정합니다. “현재 설치된 로컬 버전 유지”옵션을 선택하고 최선을 다하겠습니다.
그러나 왜이 메시지가 표시됩니까? 이것이 올바른 메시지 처리 방법입니까?
답변
이 문제는 다양한 문제로 인해 발생할 수 있으므로 단일 솔루션이 없습니다. 이 단계는 EC2에서 작동해야합니다.
출처:
이 문제는 Grub 레거시 구성 에서 로컬 및 원격 변경 충돌로 인해 발생 합니다. Grub 레거시와 Grub2는 다른 구성 위치를 사용합니다.
- 기존 유산 :
/boot/grub/menu.lst
- 그럽 2 :
/boot/grub/grub.cfg
원인 :
아마 Amazon EBS 지원 AMI를 사용하고있을 것입니다. 인스턴스는 사전 빌드 된 기본 이미지 (스냅 샷)에서 루트 파일 시스템을 구성합니다. grub 구성이 스냅 샷에 작성되었지만 UCF 레지스트리가 올바르게 제거되지 않았습니다. 이는 menu.lst
구성이 로컬로 수정 되었다고 생각하는 스냅 샷이 있음을 의미합니다 . 자세한 내용은 여기에서 찾을 수 있습니다 : https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1485685
우분투가 grub에 UCF를 사용하는 이유는 여기에 설명되어 있습니다 : https://askubuntu.com/a/147079
해결책 :
작동하는 일반적인 솔루션 중 하나는 menu.list를 제거하고 다시 구성하는 것입니다. 이는 ucf 레지스트리 항목 및 구성 파일이 동일한 해시로 해석되도록합니다.
#Remove the menu.lst config.
sudo rm /boot/grub/menu.lst
# Generate a new configuration file.
sudo update-grub-legacy-ec2 -y
#Upgrade the configuration
sudo apt-get dist-upgrade -qq --force-yes
두 번째 해결책은 UCF 구성을 수정하여 관리자 변경 사항을 자동으로 수락하는 것입니다.
unset UCF_FORCE_CONFFOLD
export UCF_FORCE_CONFFNEW=YES
ucf --purge /var/run/grub/menu.lst
sudo apt-get dist-upgrade -qq --force-yes
기권:
이 문제는 매우 광범위하며 사용 사례는 필요한 솔루션에 영향을 미칩니다. 가능하면 grub2로 업그레이드하는 것이 좋습니다. 시스템 파일을 수정하지 않고 Grub2를 구성 할 수 있습니다.
우분투 트래커에는 다양한 솔루션이 제공되고 이슈 보고서가 열립니다. 나는 그들 모두와 연결하고 싶지만 담당자가 없습니다.
행운을 빕니다 🙂
답변
이 질문의 나의 버전은 간다 : “내가 한 최근 EC2에서 자동 커널 upates 있고, apt-get autoremove -y
후에도. sudo update-grub
난 단지 참조 3.13.0-48
에 나와 /boot/grub/menu.lst
있지만 설치 커널 사이에 I 오전 나사 어떻게.?”
내 대답 : “아마도 나사로 고정되지 않았습니다. 다른 Ubuntu 시스템 menu.lst
에는 존재하지 않으며 update-grub
구성을 /boot/grub/grub.cfg
대신 사용하는 것 같습니다. menu.lst
EC2의 Ubuntu AMI의 이상한 아티팩트이거나 패키징 또는 로컬 구성 관리와 상호 작용하는 것 같습니다. “
답변
개인적으로 저는 “버전 간 차이”를 보여주고 변경 사항을주의 깊게 확인한 다음 “개발”AWS 인스턴스의 새로운 차이점을 실험 해 보려고합니다. 내가 좀 더주의를 기울 였다면, 단순히 변경 사항에 대한 매뉴얼 페이지를 읽으면됩니다. .
또는이 가상 머신을 복제하고, 업그레이드를 수행하고, 어떤 일이 발생하는지 확인하고, 실패 할 경우 새 VM을 정리하고 다른 선택으로 프로세스를 다시 시작할 수 있습니다. 가상 머신은 이러한 이유만으로도 좋습니다.
답변
방금 OVH의 VPS와 동일한 “문제”에 부딪 쳤습니다.
필자의 경우 (그리고 인터넷 검색 중에 찾은 다른 많은 사람들) 유일한 변경 사항은 공백이었습니다.
그들이 어디에서 왔는지 모르겠지만, 당신이 선택 show the differences between the versions
하고 대답은 No non whitespace changes detected
단지 관리자 버전을 취하는 것입니다.
답변
당신의 선택
- 버전 간의 차이점을 보여
그때
- 패키지 관리자 버전을 설치하십시오
또는
- 현재 설치된 로컬 버전 유지
어쨌든, 당신은 지금 실행할 수 있습니다
ls -hl /boot/grub/menu.lst*
diff --suppress-common-lines /boot/grub/menu.lst*