커널 패키지로 설치 시 주의사항

한국 데비안 사용자 모임
둘러보기로 가기 검색하러 가기

커널 패키지로 설치 시 주의사항에 대해 써주세요.

왜 커널을 패키지로 설치하는가

아직도 많은 초보자들이 커널컴파일이라는 작업으로 커널을 설치합니다. 커널을 컴파일하는 경우는 자기 시스템에 커널을 최적화시켜서 시스템을 조금이라도 빠르게 사용하기 위해서입니다. 하지만 초보자의 경우 커널패닉이나, 성공하더라도 오히려 커널 패키지로 설치하는것보다 무거워지는 어이없는 경우가 많습니다.

그리고 커널 패키지로 설치하나, 커널 컴파일을 해서 설치하나, 속도면에서 거의 비슷합니다. 저 같은 경우는 커널 컴파일하는 것을 그다지 좋아하지 않습니다. 아직도 귀찮은(?) 커널 컴파일이라는 작업을 하시는 분들께 커널 패키지로 설치하는 것을 권장드립니다

커널패키지로 설치시 커널패닉

커널을 패키지로 설치해 봅시다.

apt-cache pkgnames linux-image (혹은 kernel-image)         예전의 kernel-image에서 linux-image로 용어 변경되었습니다.
apt-cache pkgnames linux-headers                                 (단, sarge는 아직 kernel-image 인 듯)

이렇게 하면 커널 이미지가 워낙 많기 때문에 원하는 버전 중에서 고르라고 출력됩니다. 그러면 다시 정확히 선택해서 설치합니다. 커널 헤더도 역시 같은 방법으로 설치합니다. (참고로, bf2.4 버전은 아래 언급할 initrd 부분을 추가할 필요가 없는 패키지 입니다.)

ex) apt-get install linux-image-2.4.20-bf2.4 
      apt-get install linux-headers-2.4.20

커널을 패키지로 설치할 때 중간에 Y/N를 두 번 물어 봅니다. 처음은 커널 설치하면 어떻게 된다는 메세지로 N을 선택해야 합니다. 두 번째는 커널을 설치한다는 메세지로 Y를 선택합니다. 이때 경고 메세지를 보시면 /etc/lilo.conf에 initrd=/initrd.img라는 명령을 추가하라고 나옵니다.

/etc/lilo.conf 를 수정해봅시다.

image=/vmlinuz
     label=Linux
#     read-only
#     restricted

image=/vmlinuz
       initrd=/initrd.img
       label=Linux
       read-only
#       restricted
#       alias=1

이렇게 고칩니다. initrd=/initrd.img 부분은 수동으로 추가해 줘야 합니다. 수정 후에 리로를 재설치합니다.

#lilo
#restart

요즘은 알아서 지가 다, Lilo 설정하고 필요한 옵션 넣고, 이전 커널은 LinuxOLD로 돌려 줍니다. ^^ - 2007. 04 .06

만약 커널패닉이 나오면 LILO:가 나올 때 TAB을 눌러서 LILO 메뉴가 나오게 한 뒤, LinuxOLD를 선택하면 이전 커널로 부팅됩니다. 쉬운거지만 grub을 사용하는 경우 위의 패키지를 설치하면 자동으로 lilo가 뜨더군요.

grub-install /dev/hda 

명령으로 다시 grub을 설치합니다. /boot/grub/menu.lst 를 수정해서 새로운 커널을 사용할 메뉴를 추가 합니다.

ex) title    Debian GNU/Linux, kernel 2.4.20-bf2.4
   root     (hd0,1)    # 0는 primary 하드를 의미하구 1은 두번째 파티션 입니다. 첫번째 혹은 통이면 0으루..
   kernel   /vmlinuz root=/dev/hda2 ro                 # hda2는 2번째 파티션을 말하기 때문에 첫번째 혹은 통이면 1루..
   savedefault

initrd란

일반적으로 하드가 아닌 RAM을 가상 디스크처럼 만들어서 부팅이미지를 읽어들인 후 여기에 루트파일시스템을 만들고 마치 디스크를 쓰듯이 사용하는 방식입니다. initrd - initiate ramdisk(램디스크 초기화)로 풀이할 수 있겠습니다. 주로 CD만으로 동작하는 배포판에서 흔히 쓰는 방법입니다(Read-Only 방식). 일반적인 커널 컴파일을 할 때는 안 써도 됩니다.

부팅 시, 커널이 램에 올라와서 initrd를 램상에 풉니다 .그러면 initrd가 1차 root가 됩니다. 여기서 이제 커널 내에 없는(모듈로 만든), 부팅을 담당하는 하드 디스크의 콘트롤러 모듈과 / 파일시스템 모듈을 불러 들여서 실제 /를 마운트한 후 pivot_root를 실행합니다. 다음, chroot를 실행하여 실제 /가 이제 root가 되고(2차인 셈), /에서 기존 initrd root를 언마운트(상황에 따라 조금 다름)시킵니다. 이후 init(sysvinit)가 실행되고 부팅 절차가 이어집니다 pivot_root = 기존 루트 디렉터리를 새로운 루트가될 디렉터리하에 두어 unmount 를 가능하게 합니다... chroot = 기존 루트디렉터리로부터 새로운 루트디렉터리로 옮겨 여기서 완전한 기준 루트가 됩니다.. (Debianfree)

따라서 위 2개의 모듈

  • 부팅을 맡은 하드 디스크의 콘트롤러 모듈 : 메인보드에 맞는 IDE PCI 칩셋 모듈이나 SATA 컨트롤러
  • /의 파일 시스템 모듈 : 예를 들면 ext3, xfs, reiserfs 가운데 / 파티션의 파일 시스템

을 커널 안으로 직접 넣어주면 initrd는 필요없습니다.


데비안 패키지로 공급되는 커널에는 initrd가 반드시 들어갑니다. 패키지 커널은 범용성을 위해 대부분의 장치를 모듈로 만듭니다. initrd가 1차 루트가 되어 적당한 하드웨어 모듈을 올리고 커널이 /를 마운트합니다. 하드디스크를 예로 들어봅시다. initrd가 없다면 문제가 될 수 있죠. 먼저 스카시 장치가 인식돼야 하드를 시스템에서 인식할 텐데 모듈로 만들면 initrd 없이는 스카시 모듈을 올릴 수 없고, 루트 파티션도 마운트 할 수가 없게 됩니다. (Debianfree)

참고로 debian 패키지에서 bf24 이름붙여진 커널은 initrd image를 이용하지 않는 커널입니다.(따라서 추가적으로 lilo 설정을 바꾸실 필요가 없습니다.)

모듈올리기

처음 커널패키지로 설치하면 인터넷이 안 된다거나, 사운드가 안 된다거나 하는 문제들이 발생합니다. 그런 경우는 모듈이 로딩되지 않아서입니다. 처음 시작할 때 자세히 보시면 modprobe라는 내용이 휙 지나갈 겁니다. 그게 모듈을 올리는 프로그램입니다. 대부분 설치가 되어있을 겁니다.

apt-get install module-init-tools

하시면 설치가 됩니다.

현재 컴퓨터에 있는 모듈을 봅시다.

# lsmod

자기 컴퓨터의 모듈 내용을 보여줍니다. 많이 사용하시는 리얼텍8139 랜카드를 예로 들어보겠습니다. 리얼텍 8139 모듈은 8139too입니다. 없다면 올립니다.

# modconf

하면 모듈을 선택할수있는 창이 뜹니다. 네트워크 부분에서 8139를 선택하시면됩니다.

다른 모듈도 이런 식으로 하시면 되겠죠 ^^;

  • sarge에서 2.6.8-1-686-smp 설치 시에 IDE가 커널에 들어가지 않고 모듈로 된 경우도 있었습니다. ide-generic 을 /etc/modules 에 넣어주시면 되겠습니다.
  • 해당 하드웨어의 모듈을 참조하십시요 http://debianusers.org/DebianWiki/device_5fmodule

윈도우 98, 2000처럼 재부팅하셔야 됩니다. 이 내용은 게시판 질답란의 내용에다 추가하고 편집했습니다.

by deb(ddd71)


  • 커널과 헤더 패키지예와 grub의 경우 설정법 추가 -bat- 2003.10.6
  • proposed-update 소스리스트 추가 - 민우 - 2003.12.23
  • kernel-image에서 linux-image로 용어 변경 -rekcuf- 2006.1.8
  • Debianfree initrd 설명 추가..