본문 바로가기

잡동사니 백과

nouveau unknown chipset 오류(또는 recovering journal 오류) 해결

Ubuntu는 드라이버(그래픽카드, 무선랜카드 등)와의 호환 문제가 쉽게 발생하는 OS다.

특히 그래픽 카드 드라이버로 인한 문제가 자주 발생하는 것이,
머신 러닝(Machine Learning) 학습을 위해서는 Linux 체제 OS인 Ubuntu가 효율적이고 환경이 잘 되어 있기 때문에,
머신 러닝을 위한 PC를 셋업하다가, 또는 셋업한 뒤에 문제가 자주 발생하게 된다.

나도 최근에, 학습용으로 세팅했던 Ubuntu를 오랜만에 재부팅 했더니 위와 같은 화면이 나타나면서, 부팅이 더 진행되지 않는 증상이 발생했는데...
nouveau는 Ubuntu의 기본 그래픽 카드 드라이버라고 생각하면 되는데, 이와 관련된 오류가 나타나면 보통은 Nvidia의 그래픽 카드 드라이버와의 충돌 문제일 것이다.
여기서 잠깐!
그래픽 카드(줄여서 GPU): 물리적인 부품(HardWare)
그래픽 카드 드라이버(GPU Driver): GPU를 제대로 사용할 수 있게 도와주는 프로그램(SoftWare)

아무튼 그래서 위와 같이 "nouveau 0000:3b:00.0: unknown chipset (192000a1)" 이런 식으로 생긴 오류가 발생하며,
부팅이 불가하다면 'GPU Driver를 삭제하고 재설치' 하는 방법이 해결법이 될 때가 많다.

단지 내 경우엔 부팅 실패 시의 오류 메세지가 항상 일정하지 않고, 아래와 같은 variation 또한 여러 번 나타났기 때문에,
다른 문제(Disk 저장소 문제)를 의심하면서 파일 시스템 검사(fsck)를 통해 문제를 해결하고자 했었다.
실제로 검사 후 진행되는 복구 과정을 통해 일부 문제있던 데이터가 복구 되었지만, 그 후에 재부팅을 해도 증상은 동일했기 때문에 fsck 과정은 딱히 필요한 과정은 아닐것이다.

하지만 GPU Driver 재설치 과정을 거쳐도 정상부팅이 되지 않는다면, 글 아래의 fsck 과정을 거쳐보는 것도 추천한다.
- GPU Driver 재설치
1. GRUB 진입하기
먼저 부팅되지 않는 PC에 커맨드를 내리기 위해서 GRUB(Ubuntu의 부트로더 인터페이스)에 진입해야 한다.
부팅 단계에서 shift 또는 esc 키를 꾹 누르면 GRUB에 진입할 수 있는데, 처음부터 마냥 누르고 있다고 들어가지는 것이 아니고 부팅 중 특정 단계에서 입력이 들어가야 하므로 shift와 esc를 그냥 한 2초씩 번갈아 누르다보면 들어가진다.

대강 위와 비슷한 화면이 나타날 건데(배경색도 다를 수 있음),
(recovery mode)가 붙은 선택지를 골라 들어가주자.

2. 터미널 진입하기
그러면 이제 대강 이러한 선택지들이 나타날 건데, 이 중 root를 골라 들어가준다.

여기서 "root@사용자이름:~# " 으로 나타나는 터미널에 필요한 커맨드를 입력하면 된다.
위 화면은 아래 커맨드를 입력한 결과인데, /dev/sdb5에 Linux가 설치된 것을 확인할 수 있다.

sudo fdisk -l

이 커맨드는 굳이 해볼 필요 없다. 단, 아래에 기술할 fsck를 해보려면 위와 같은 결과를 참고하면 좋다.

3. nvidia GPU Driver 삭제하기
앞서,문제의 원인은 Ubuntu 기본 GPU Driver / Nvidia GPU Driver 간의 충돌 문제일 것이라고 이야기를 꺼냈다.
그리고 이러한 충돌에 대한 해결책으로 나에게 맞았던 건 각 2개 GPU Driver의 삭제 후 재설치였다.

또다른 해결책으로 Ubuntu 기본 GPU Driver의 비활성화가 있지만, 나는 이것을 진행해도 문제가 해결되지 않았었다.
('Ubuntu 기본 GPU Driver의 비활성화'하는 방법은 'nouveau 비활성화' 키워로 구글링하면 자세한 글이 많다.)

sudo apt-get remove --purge nvidia-*

위 커맨드로 nvidia 관련 패키지를 삭제하되, 결과를 지켜보면 GPU Driver 버전을 알 수 있다.
나의 경우는 535 버전이 설치되어 있었고,
위 커맨드로 다 삭제되지 않은 GPU 관련 내용을 지우기 위해 아래 커맨드를 실행했다.

sudo apt purge *535*
sudo apt autoremove

이제 Ubuntu 기본 GPU Driver를 재설치한다.(삭제는 안했지만 뭔가 꼬여있을 수 있으니 재설치)

4. Ubuntu 기본 GPU Driver 재설치
여기서 잠깐!! 우리가 recovery mode로 들어와서 터미널에 접근한 것인데, 이 상태에서 네트워크 연결이 꺼져있을 수가 있다..! 따라서 아래의 커맨드 입력 시에 'Failed to fetch ~' 오류가 나타나면,
Ctrl + D 를 눌러 글 상단의 'Recovery Menu' 초기 화면으로 복귀한 뒤 network - Enable networking 을 진행한 후 다시 root로 진입해주어야 한다.

sudo apt install xserver-xorg-video-nouveau

별다른 오류없이 진행되었다면 기기 재부팅 후, 다시 GRUB 및 root에 진입해주자

sudo reboot

다시 돌아왔다면, 다음으로 넘어가자

5. Nvidia GPU 재설치

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt install nvidia-driver-535

두번째 line의 버전 숫자는 여러분이 원래 설치했던 nvidia GPU Driver 버전에 맞게 입력하면 된다.
이제 다시 재부팅하면 여러분의 Ubuntu가 돌아올 것이다..!(아마도)

sudo reboot

 

-----파일 시스템 검사 및 복구(fsck)-----
이하의 내용은 아마도 필요 없겠지만..
나의 경우 처음에 문제의 원인을 잘못 파악했을 때 진행했던 내용이기 때문에, 결과적으로 fsck도 하고서 위의 GPU 재설치를 진행을 한 결과, 문제가 완전히 해결되었던 것일 수도 있다.

먼저 부팅 시 발생했던 오류를 다시 보면, 항상 nouveau 오류가 뜨는 것은 아니고 아래와 같은 variation이 있었는데,

이러한 오류만 봤을 때에는 파일 시스템 문제가 의심되어 fsck를 진행했다.

단, 위와 같이 문제가 되는 저장소가 '주 저장소'인 경우엔 GRUB에 들어가도 fsck를 진행할 수 없으니,
우분투 설치용 USB를 꽂고, 그 USB로 부팅한 후에 fsck를 진행해야 한다.

GRUB에서 주 저장소의 fsck를 시도한 예

이에 대한 방법은 간단히 정리하면,
1. 부팅 시에 F2, Del 버튼을 번갈아 연타하여 BIOS 모드 진입하기(GRUB이랑은 다르게 생겼다)
2. BIOS 모드에서 Boot 메뉴를 찾아서, Boot Priority 를 기본 저장소(보통은 SSD)에서 우분투 설치용 USB로 변경하기
3. BIOS 모드에서 Save & Reset 혹은 그와 비슷한 맥락의 선택지를 찾아 BIOS모드 종료하기
4. 재부팅이 완료되면 'Try Ubuntu without installing' 선택하기
5. 부팅이 되면 터미널을 하나 열고,

sudo fsck -f /dev/sdb5

명령 입력하기(sdb5 대신에 본인의 오류에서 나타나는 저장소 이름 입력, 저장소 list 확인: $ sudo fdisk -l)
6. 진행 사항에 대해 질문이 나오면 그냥 Enter를 눌러 전부 Yes 처리하기
7. 종료되면 sudo reboot로 재부팅

부디 여러분의 PC가 정상부팅 되기를