-
리눅스 커널 컴파일 중 ( 비지 모드로 빠질경우 )OS 운영체제/삽질 2020. 3. 22. 19:24
최신 커널을 사용하기 위해 새로운 커널 소스를 받고 성공적으로 컴파일 한 뒤 install 까지 마친 후 Reboot 과정에서 오류가 생겼다.
부트로더 (GRUB) 에게 최신 버전 커널 (5.5.11) 을 선택한 뒤 부팅할 시 다음과 같이 비지모드로 빠져버린 것이다.
+ 부트로더란 ?
부트로더는 리눅스라는 운영체제가 부팅되기 까지 부팅의 전과정을 진행해 주는 부팅전문 프로그램이라고 생각하면 된다. 이때 형재 리눅스라는 운영체제에서 대부분 사용하는 부트로더 프로그램이 GRUB인 것이다. 따라서 해당 부트로더에게 " 어떤 커널로 실행시켜줘 ~ " 라고 말해준다면 해당 커널이 메모리로 적제되어 상주하게 된다.
이는 컴파일 후 설치과정에서 한가지를 빠뜨렸기 때문이다.
커널 크기 문제때문에 initrd 라는 것을 사용하는데 ( 커널 소스 컴파일 -> 모듈 컴파일 -> 실행 -> 재부팅 ) 과정에서 새로운 커널에 맞는 initrd 을 생성해주지 않았기 때문이다.
initramfs(초기 램 파일 시스템, initial RAM file system의 준말)는 초기 파일 시스템의 Cpio 아카이브이며, 리눅스 시작 프로세스가 실행될 때 메모리에 로드된다. 루트 파일시스템에 리눅스 커널이 마운트되고, 이것으로 인해 초기화 프로세스가 시작된다. 이것은 실제 루트 파일 시스템이 로딩되기 몇 개의 태스크 이전에 완료된다. 그러므로 초기 램 파일 시스템은 모든 장치 드라이버를 포함하고, 실제 루트 파일시스템을 마운트하는 도구를 가질 것을 요구한다.[1]
initrd 은 부트 로더에 의해 RAM 디스크를 읽어 들이는 능력을 제공하는것으로 즉 initrd 은 커널에 바인딩 되어 커널 부팅 절차의 일부로 동작하게 된다. 따라서 새로운 커널에 대응하는 초기 램 파일 시스템을 생성해주기 않았기 때문에 위와같은 오류가 발생한 것이다.
해결 방법
위와 같이 관리자 권한으로 initrd 생성 후 다시 install 과정을 거치면 된다.
위와같이 성공적으로 initrd.img 라는 새로운 커널 5.5.11 버전에 해당하는 파일이 생성된 것을 볼 수있다. 이제 install 과정을 거치면 아래와 같이 boot 디렉터리에 있는 initrd.img 5.5.11 이라는 새로 생성한 초기 램 파일 시스템이 등록 된 것을 볼 수 있다.
ㅇ
'OS 운영체제 > 삽질' 카테고리의 다른 글
리눅스 옛날 버전에 4.7 이상 커널 컴파일 시 에러 (0) 2020.03.22