최근 업데이트 후 컴퓨터가 더 이상 부팅되지 않습니다! 내가 결정할 수있는 것은 다음과 같습니다.
- 이것은 회사 IT에서 제공 한 최신 컴퓨터입니다. 최신 Intel CPU (Skylake 생성)가 있습니다.
- 컴퓨터는 Ubuntu 16.04를 실행합니다.
- 3 월에 컴퓨터가 마지막으로 올바르게 부팅되었습니다. 소프트웨어 업데이트 나 하드웨어 버그로 인해 문제가 발생했을 수 있습니다.
- 16.04를 실행하는 다른 컴퓨터에 거의 동일한 소프트웨어가 설치되어 있으며 (사용했습니다
apt-clone
) 제대로 작동합니다. 그것은 다른 하드웨어 (또한 amd64, 그러나 다른 CPU, 다른 GPU 등)를 가지고 있습니다. - 커널이 시작되고 initrd가 올바르게 작동합니다. 그래픽 모드에서 스플래시 화면으로 부팅하면 dm-crypt 볼륨의 암호를 묻는 메시지가 표시되며 마지막으로 표시되는 것은 성공적으로 마운트 된 것입니다.
- 로그인 프롬프트가 표시되기 전에 중단이 발생합니다. 컴퓨터가 멈 추면 하드 멈춤입니다. Alt+ 조차도 SysRq응답하지 않습니다. 팬이 완전히 폭발하기 때문에 CPU가 100 %로 멈췄습니다.
- 재부팅하기 전에 여전히 실행중인 커널이 있습니다. Grub 메뉴에서이 커널을 선택하면 동일한 잠금이 발생합니다. 이것은 기존 커널 커널 버그로 보이는데 다른 어떤 것에 의해 발생합니다.
- 스플래시 화면을 끄면 ( Grub
splash
의linux
명령 줄에서 제거 ) 여러 서비스가 시작된 후 잠 깁니다. Grub
init=/bin/sh
의linux
명령 행에 추가 하여 루트 쉘을 얻을 수 있습니다 . 나는 추가하여 더 얻을 수 있습니다systemd.unit=basic.target systemd.shell
이것은 많은 서비스를 시작하고 tty9에서 루트 쉘을 실행합니다.
systemctl start multi-user.target
해당 루트 셸에서 실행 하면 컴퓨터가 잠 깁니다. 따라서 이러한 서비스 중 하나에 의해 문제가 발생했을 수 있습니다.- 나는 실행
systemctl list-dependencies multi-user.target
서비스를 시작하는 것을 볼 수 있습니다. 나열된 종속성을 하나씩 수동으로 시작했으며 모든 것이 잘 시작되었습니다.
따라서 이것은 일부 소프트웨어에 의해 트리거되는 하드웨어 버그 (하나의 컴퓨터에서는 발생하지만 다른 컴퓨터에서는 발생하지 않기 때문에)처럼 보입니다. 그러나 어떤 소프트웨어? 컴퓨터가 너무 세게 잠기므로 로그를 얻을 수 없습니다. 유용한 콘솔 출력도 얻을 수 없습니다.
유용한 디버깅 기술 :
- Alt+ SysRq: magic SysRq key . 비상 재부팅과 같은 작업을 수행 할 수 있습니다. 커널은 매우 낮은 수준으로 커널에 액세스하므로 최악의 충돌을 제외하고는 모두 작동합니다. 제 경우에는 Alt+ SysRq가 응답하지 않아 충돌이 얼마나 깊이 진행되는지 보여줍니다.
- 부팅 매개 변수를 수정하려면 Shift전원을 켠 후 몇 초 동안 길게 누릅니다 . BIOS가 키보드를 초기화 한 후, 운영 체제를 부팅하기 전에이 키를 눌러야합니다. 이것은 만드는 삼류의 메뉴가 나타납니다.
- Grub 메뉴에서을 눌러 e메뉴 항목의 명령 줄을 편집합니다. Linux 부팅 매개 변수를 변경하려면로 시작하는 행으로 이동하십시오
linux
. 현대 우분투에서는“우분투 고급 옵션”에 오래된 커널이 있습니다. 명령 행을 원하는대로 변경했으면 Ctrl+ x를 눌러 부팅하십시오. 여기서 변경 한 내용은이 부팅에만 적용되며 디스크에는 저장되지 않습니다. linux
명령 행 에 유용한 옵션이 있습니다 .quiet nosplash
거의 모든 부팅 메시지를 숨 깁니다. 부팅 중에 콘솔에 메시지를 표시하려면 메시지를 제거하십시오. 문제를 진단 할 가능성이 있습니다.recovery
서비스가 거의없는 루트 셸을 제공합니다. 루트 비밀번호를 알아야합니다. "복구 모드"메뉴 항목이이를 사용합니다.init=/bin/sh
서비스가 전혀없는 루트 쉘을 제공합니다. 정상 부팅을 재개하려면을 실행하십시오exec init
. 이 시점에서 시스템화 된 옵션을 전달할 수 있습니다. 예exec init --unit=basic.target
를 들어 init 및 몇 가지 서비스를 시작하십시오 (로그인하는 방법이 시작되지 않으므로 다른 콘솔에서 쉘을 실행하는 것이 좋습니다). 루트 파일 시스템은 읽기 전용으로 마운트됩니다.mount -o remount,rw /
그것에 쓸 수 있도록 실행 하십시오.systemd.unit=basic.target
매우 기본적인 서비스를 시작합니다. 여기에는 로그인 방법이 포함되지 않습니다!systemctl set-default basic.target
루트 프롬프트에서 실행하여이를 기본값으로 만들 수 있습니다 . 원래 기본 대상을 복원하려면systemctl set-default graphical.target
(또는systemctl set-default multi-user.target
GUI가없는 서버)를 실행하십시오.systemd.debug-shell
tty9에서 루트 쉘을 시작합니다.systemctl enable debug-shell
루트 프롬프트에서 실행 하여 모든 부팅에 대해이를 활성화 할 수 있습니다 . 의 문제를 해결 한 후에는이 기능을 비활성화하십시오systemctl disable debug-shell
. Alt+ F9를 눌러 tty9로 전환하십시오.- Fedora 시스템 팁 , Arch Linux 부팅 문제 팁을 참조하십시오 .