방금 Ubuntu Server 12.04를 실행하는 원격 컴퓨터를 업데이트했습니다. SSH를 통해서만 액세스할 수 있으며 이제 재부팅이 필요합니다. 새로운 커널이 설치된 것 같습니다. 매우 특정한 커널에서 부팅하도록 해야 합니다. 그렇지 않으면 작동이 중단됩니다. SSH를 통해 연결하고 있으므로 명령줄에서 다음 재부팅 시 GRUB2가 수행할 작업을 확인할 수 있는 방법이 있습니까?
주로 다음 사항을 확인해야 합니다.
Previous Linux Versions
머신은 올바른 커널에서 부팅됩니다(이제 " " 하위 메뉴 로 이동되었을 수 있음 ).GRUB_TIMEOUT
GRUB2 메뉴는 시간 초과 요청을 "순종"합니다(어떤 경우에는 에 지정된 매개변수 에도 불구하고 시스템이 GRUB2 부팅 메뉴에서 멈추는 것을 발견했습니다/etc/default/grub
).
그렇다면 다음 재부팅 시 GRUB2가 수행할 작업을 "시뮬레이트"하거나 진단할 수 있는 방법이 있습니까? "와 같은 일부 수표커널 yaddayaddayadda를 시작하고 yadda 초의 시간 초과를 활성화합니다."
가능성이 낮다는 건 알지만 진단 도구 같은 것이 있을 수도 있습니다(명령줄이어야 합니다... 연결된 컴퓨터에 X-Windows도 없습니다).
미리 감사드립니다!
답변1
내가 아는 한, 실제로 에뮬레이트하는 유일한 방법은 디스크를 가상 머신에 전달하는 것입니다.
저는 종종 데스크탑과 넷북용 커널은 물론 12개의 Linux Live CD와 부팅 옵션 memtest, DOS, Windows 등이 포함된 GRUB2 USB 스틱을 사용하여 이 작업을 수행합니다.
구성에서 무언가를 변경할 때(예: 다른 Live CD ISO 추가) KVM 세션에서 USB 스틱을 부팅하여 부팅 여부를 테스트할 수 있습니다.
불행하게도 시스템이 실제로 부팅된 다음 디스크에 쓰는 경우 이 솔루션은 치명적입니다! 파일 시스템은 호스트가 여전히 사용하고 있기 때문에 번창하고 게스트도 파일 시스템을 수리하고 사용하기 시작합니다.
따라서 안전하게 사용하려면 가상 머신이 읽기 전용 모드로 사용하는지 확인해야 합니다. 이를 달성하는 가장 안전한 옵션은 읽기 전용 루프 장치를 이용하는 것입니다.
# losstup --읽기 전용 --find --show /dev/sda /dev/loop42 # 동기화 # qemu-kvm -disk file=/dev/loop42, 읽기 전용
GRUB 자체는 쓰기 작업을 수행할 필요가 없으므로 무슨 일이 일어날지 정확히 볼 수 있어야 합니다. /boot의 최근 파일 수정 사항은 여전히 디스크가 아닌 메모리에만 상주할 수 있으므로 디스크가 동기화되었는지 확인하세요. /boot를 마운트 해제할 수 있다면 이것이 최선의 선택이 될 것입니다.
명령줄 질문에 대해서는 SSH를 통해 X를 실행할 수 있다는 점에 유의하세요(매우 느리긴 하지만). KVM은 VNC, 직렬 콘솔 및 기타 원격 기능도 제공합니다.
서버에서 가상 머신을 실행할 수 없는 경우(예: 가상 서버인 경우) NBD(네트워크 블록 장치)를 사용하여 네트워크를 통해 읽기 전용 또는 복사 모드로 서버 가상 머신을 실행할 수 있습니다. -쓰기 모드. 서버는 NBD를 지원할 필요도 없으며 서버 데몬만 실행하면 됩니다. 그러나 클라이언트는 커널에서 NBD를 지원해야 합니다.
물론, grub.cfg 파일만 읽고 이해할 수 있다면 전체 에뮬레이션 노력이 과도해 보일 것입니다. 안타깝게도 자동으로 생성된 콘텐츠는 불필요한 스타일로 인해 읽을 수 없게 될 수 있습니다.