리눅스의 생명줄은 바로 커널입니다. GNU/Linux의 작동 방식에 익숙하다면 알겠지만, 리눅스 곧 커널 그 자체입니다. 나머지 모든 것들은 커널과 상호작용하는 도구일 뿐이죠. 이러한 도구들이 실질적인 작업을 수행해 주지만, 커널 없이는 아무것도 할 수 없습니다.
운영체제의 커널은 우리 몸의 심혈관계와 비슷합니다. 평소에는 존재를 잊고 지내다가, 문제가 발생했을 때에야 비로소 그 중요성을 깨닫게 되죠. 자주 있는 일은 아니지만, 커널 업그레이드 역시 실패할 수 있습니다. 업데이트된 커널 때문에 컴퓨터를 사용할 수 없게 되었다면, 이제 다운그레이드를 고려할 때입니다.
1단계: 이전 커널로 부팅하기
다행히 최근에 커널을 업데이트했다면, 기존의 이전 커널은 거의 항상 그대로 남아 있습니다. 예외적인 경우는 이전 커널을 즉시 삭제한 경우뿐인데, 이는 좋은 습관이 아닙니다.
이전 커널로 부팅하려면 먼저 컴퓨터를 재시작해야 합니다. GRUB가 로드될 때 키를 눌러 일반적이지 않은 옵션을 선택해야 할 수도 있습니다. 일부 시스템에서는 이 화면에서 바로 이전 커널 목록이 표시되지만, 우분투(Ubuntu)의 경우 "Ubuntu 고급 옵션(Advanced options for Ubuntu)" 메뉴로 들어가야 이전 커널을 찾을 수 있습니다.
이전 커널을 선택하면 시스템으로 정상적으로 부팅되며, 모든 것이 예전처럼 작동할 것입니다. 만약 여전히 문제가 발생한다면, 원인이 커널이 아닐 가능성도 있으니 다른 요소도 점검해 보세요.
2단계: 문제가 되는 커널 제거하기
부팅 후 모든 기능이 정상적으로 작동한다면, 업그레이드된 커널이 문제의 원인일 가능성이 높습니다. 매번 부팅할 때마다 이전 커널을 선택하는 방법도 있지만, 문제가 되는 커널 자체를 제거하는 것이 더 현명한 해결책입니다.
사용 중인 배포판의 패키지 관리 도구를 활용하면 됩니다. 구체적인 방법은 시스템마다 다르며, 제거하려는 커널의 정확한 버전 번호를 알아야 합니다. 버전 정보는 부팅 시 GRUB 화면에서 확인할 수 있습니다.
우분투 등 apt 기반 배포판이라면 다음과 같은 명령어를 사용할 수 있습니다:
sudo apt remove linux-image-VERSION-generic linux-headers-VERSION-generic
VERSION 부분에는 제거하려는 문제 커널의 정확한 버전 번호를 입력하세요. 커널을 삭제하지 않고 일정 기간 업데이트만 보류하고 싶다면 아래 명령어를 사용하세요:
sudo apt-mark hold linux-image-generic linux-headers-generic
3단계: 같은 문제 재발 방지하기
이런 종류의 문제를 피하는 가장 간단한 방법 중 하나는 새 커널이 출시되자마자 즉시 업데이트하지 않는 것입니다. 업데이트를 미루면 다른 사용자들의 커널 문제 신고가 올라오는지 지켜볼 시간적 여유가 생깁니다. 특히 본인과 유사한 하드웨어 환경을 사용하는 사용자의 사례에 주목하세요.
안정성이 최우선이라면 LTS(Long Term Support) 배포판을 선택하는 것도 좋은 방법입니다. LTS 배포판은 보안 업데이트를 제외하면 업데이트 빈도가 낮기 때문에, 일반적인 배포판보다 안정성을 더 확신할 수 있습니다.
자주 묻는 질문
Q1. 커널을 다운그레이드하면 문제가 생길 수 있나요?
운영체제의 핵심 부분을 다루는 만큼 언제나 가능성은 있습니다. 하지만 단순히 업그레이드만 진행한 상태라면 이전 커널로 되돌리는 과정에서 큰 문제가 발생하는 경우는 드뭅니다.
다만 드라이버나 커널과 직접 통신하는 소프트웨어에서 오류가 발생할 수 있습니다. 해당 소프트웨어의 이전 버전이 삭제되었거나 함께 업데이트된 경우라면, 이들 역시 다운그레이드해야 할 수 있습니다.
Q2. 커널 업데이트가 내 시스템에서 잘 작동할지 미리 알 수 있나요?
앞서 언급했듯이, 대규모 업그레이드 전에 사용자 후기를 확인하는 습관이 큰 도움이 됩니다. 사용 중인 리눅스 배포판의 공식 포럼이나 커뮤니티를 살펴보고 심각한 문제를 겪는 사용자가 있는지 확인하세요. 많은 사용자가 같은 문제를 호소하고 있다면, 문제가 해결될 때까지 업그레이드를 미루는 것이 좋습니다.
Q3. 내 시스템에 설치된 커널 목록은 어떻게 확인하나요?
설치된 커널을 확인하는 명령어는 배포판에 따라 다양합니다. 대부분의 배포판에서 작동하는 명령어는 다음과 같습니다:
find /boot/vmli*
아치 리눅스(Arch Linux) 및 아치 기반 배포판에서는 다음을 사용하세요:
pacman -Q linux
우분투, 데비안(Debian) 및 이들을 기반으로 하는 시스템에서는 아래 명령어를 사용합니다:
dpkg --list | grep linux-image
레드햇(Red Hat), 페도라(Fedora) 등 유사한 배포판에서는 아래 명령어를 사용하세요:
rpm -qa kernel
위 목록이 전부는 아니지만 상당수 배포판을 커버합니다. 다른 배포판을 사용한다면 해당 배포판의 공식 문서를 참고하세요.
Q4. 현재 사용 중인 커널 버전은 어떻게 확인하나요?
아주 간단한 명령어 하나로 확인할 수 있습니다. 터미널을 열고 다음을 입력하세요.
uname -rs
실행 중인 커널의 버전 정보가 담긴 문자열이 출력됩니다. 출력 결과는 대략 다음과 같은 형태입니다:
Linux 5.11.0-41-generic
마무리: 부팅 프로세스의 이해
커널 관련 문제를 처리하는 가장 쉬운 방법은 다운그레이드지만, 유일한 방법은 아닙니다. 또한 부팅 문제를 일으키는 요소는 커널만이 아닙니다. 시스템이 시작되지 않으면 정말 답답한 상황이 되죠.
인터넷 검색으로 해결책을 찾는 것도 유용하지만, 시스템 내부에서 무슨 일이 일어나는지 이해하고 있으면 문제 해결이 한결 수월해집니다. 시스템 시작 시 어떤 일이 벌어지는지 더 잘 이해하고 싶다면, 리눅스 부팅 프로세스에 대한 가이드를 참고해 보세요.