pkgkernel
이 문서는 안녕 리눅스 1.2 ~ 1.3에서 사용하는 Package 관리도구에 대한 설명 입니다. 안
녕리눅스 2 부터는 Yum Repository를 이용하여 package를 관리하므로, 안녕 리눅스 2 이상
의 사용자들은 이 문서를 참고할 필요가 없습니다.
pkgkernel 은 안녕 리눅스의 커널을 관리하는 프로그램입니다. 커널의 설치 및 업데이트와
삭제, 정보 출력등을 지원합니.
안녕의 커널은 다음과 같이 구성이 됩니다.
kernel 펜티엄 2 이상의 CPU 용 커널
kernel-PIII 펜티엄 3 CPU 용 커널
kernel-PIV 펜티엄 4 CPU 용 커널
kernel-bigmem 펜티엄 4 CPU 용 및 4G 이상의 메모리용 커널
kernel-headers 커널 헤더 파일
kernel-source 안녕 커널 소스
이 코드들은 pkgkernel 을 사용할 때 필요한 코드들이니 잘 인식을 하시고 있어야 합니다.
kernel-source 는 안녕의 커널을 재구성 하실때 외에는 필요가 없습니다. 커널 프로그래밍
시에는 kernel-headers 만 있으면 됩니다.
다음은 pkgkernel 의 사용 예 입니다.
1. 기본 사용법
2. 커널 정보 보기
3. 커널 설치/업데이트 하기
4. 커널 삭제 하기
1. 기본 사용법
Hanterm - pkgkernel --help |
[oops@main dir]$ pkgkernel --help
PKGADM v.2.0.0 : 커널 관리 툴
사용법: /usr/sbin/pkgkernel [옵션] [커널이름-버전-릴리즈]
옵션:
-v|--verbose 상세 출력
-i|--info 현재 커널 정보 출력
-r|--remove 커널 삭제
-n|--noansi 안시 출력 사용 안함
-f|--force 같은 버전이나 예전 버전을 강제로 설치
-h|--help 도움말 (현재 메세지).
예제:
* 커널 리스트 보기
/usr/sbin/pkgkernel -i
/usr/sbin/pkgkernel -i kernel-PIV
* 커널 삭제
/usr/sbin/pkgkernel -r kernel-PIV
/usr/sbin/pkgkernel -r kernel-PIV-2.4.20-20
* 커널 설치
version format => epoch:version-release
/usr/sbin/pkgkernel kernel-PIV
/usr/sbin/pkgkernel kernel-PIV-1:2.4.20-20
[oops@main dir]$
|
2. 커널 정보 보기
커널 정보는 -i 옵션으로 볼 수가 있습니다. -i 옵션은 현재 Packages System 에서 제공
하는 current 커널 정보와 현재 시스템에 설치 되어 있는 정보를 제공합니다.
만약 자신의 CPU 가 Pentium4 라면 pkgkernel -i kerne-PIV 명령을 실행하여 kernel-PIV
용으로 제공하는 모든 버전을 확인할 수 있습니다.
Hanterm - pkgkernel -i |
[oops@main dir]$ pkgkernel -i
* 커널 데이터베이스 정보
kernel => 3:2.4.22-2
kernel-PIII => 3:2.4.22-2
kernel-PIV => 3:2.4.22-2
kernel-bigmem => 3:2.4.22-2
kernel-BOOT => 3:2.4.22-2
kernel-headers => 3:2.4.22-2
kernel-source => 3:2.4.22-2
주의 : pkgkernel -i 커널패키지이름 명령을 이용하면
지원 가능한 커널 버전을 확인할 수 있습니다
* 현재 설치되어 있는 커널 정보
kernel-PIV => 1:2.4.20-20
2:2.4.22-1 boot
kernel-headers => 2:2.4.22-1
kernel-source => 1:2.4.20-20
[oops@main dir]$
[oops@main dir]$ pkgkernel -i kernel-PIV
* 커널 데이터베이스 정보
kernel-PIV => 1:2.4.20-21
3:2.4.22-2 *
1:2.4.20-20
* 현재 설치되어 있는 커널 정보
kernel-PIV => 1:2.4.20-20
2:2.4.22-2 boot
[oops@main dir]$
|
커널 데이터베이스 정보에서 * 는 Packages System 의 current kernel 을 의미하며 설치
되어 있는 정보에서 boot 는 현재 부팅되어 있는 커널을 의미합니다. 커널은 기본적으로
중복 설치로 관리를 합니다.
3. 커널 설치/업데이트 하기
커널은 중복 설치로 관리가 되기 때문에 실제로 설치 모드나 업데이트 모드의 차이가 없
습니다.
단 주의할 것은, 커널을 설치하면, /boot 에서 링크로 처리되어 있는 것들이 새로 설치한
커널의 것으로 교체가 되기 때문에, 새로 설치한 커널로 부팅할 것이 아니라면 이 링크를
수작업으로 복구해 주셔야 합니다. 대상 링크들은
/boot/System.map
/boot/kernel.h
/boot/vmlinuz
입니다. 이 파일들은 항상 가장 마지막에 설치한 커널의 정보로 향하고 있기 때문입니다.
Hanterm - pkgkernel kernel-PIV |
[oops@main dir]$ pkgkernel kernel-PIV
kernel-PIV : 성공
[oops@main dir]$
[oops@main dir]$ pkgkernel -i kernel-PIV
* 커널 데이터베이스 정보
kernel => 3:2.4.22-2
kernel-PIII => 3:2.4.22-2
kernel-PIV => 3:2.4.22-2
kernel-bigmem => 3:2.4.22-2
kernel-BOOT => 3:2.4.22-2
kernel-headers => 3:2.4.22-2
kernel-source => 3:2.4.22-2
주의 : pkgkernel -i 커널패키지이름 명령을 이용하면
지원 가능한 커널 버전을 확인할 수 있습니다
* 현재 설치되어 있는 커널 정보
kernel-PIV => 1:2.4.20-20
2:2.4.22-1 boot
3:2.4.22-2
kernel-headers => 3:2.4.22-2
kernel-source => 1:2.4.20-20
[oops@main dir]$
|
만약, current 버전이 아닌 상외 버전이나 하위 버전을 설치할 경우에는, 버전을 명기해
줍니다. 버전 포맷은 pkgadd 에서와 비슷합니다. Epoch:Version-Release 로 사용합니다.
이 정보는 -i 옵션에서 확인할 수 있습니다.
Hanterm - pkgkernel kernel-PIV |
[oops@main dir]$ pkgkernel kernel-PIV-1:2.4.20-21
kernel-PIV : 성공
[oops@main dir]$
|
설치를 한 커널로 부팅을 하실 것이라면 다음의 과정을 수행 하셔야 합니다. 먼저
/boot/System.map
/boot/kernel.h
/boot/vmlinuz
파일들의 링크가 새로 설치한 커널의 파일로 되어 있는지 확인 하여야 합니다. 다음 과
정은 아래의 예제를 참고 합니다. 아래의 예제는 현재 2.4.22-1PIV 로 부팅이 되어 있고
2.4.22-2PIV 를 설치한 후에 리부팅을 하기 위한 과정입니다.
Hanterm - lilo -R 2.4.22-2PIV |
[oops@main dir]$ lilo
Added 2.4.22-2PIV
Added 2.4.22-1PIV *
Added 2.4.20-20PIV
[oops@main dir]$
[oops@main dir]$ lilo -R 2.4.22-2PIV
[oops@main dir]$
[oops@main dir]$ reboot
[oops@main dir]$
|
위이 과정은 커널 설치 후에, lilo 를 실행하여, /etc/lilo.conf 에 새로 등록된 커널의
정보를 MBR 에 기록하게 합니다. 이 상태는 새로운 커널정보를 MBR 에 기록만 하지 실제
부팅은 여전히 현재 부팅이 되어 있는 2.4.22-1PIV 로 하게 됩니다.
두번째, lilo -R 작업은 디폴트 부팅 커널은 그대로 유지한 채, 다음 한 번만 지정한 커
널로 부팅을 하게 하는 옵션입니다. 커널이라는 것이 부팅한다고 무조건 올라온다는 보
장이 없기 때문에 이런 식으로 부팅을 한후에, 부팅에 실패하면, 그냥 cool 부팅을 다시
하면 이전 커널로 올라오게 하는 방법입니다. 안녕의 부트로더가 grub 를 사용하지 않고
lilo 를 사용하는 가장 큰 이유가 여기에 있습니다.
이 과정 후, 새로운 커널이 정상적으로 올라오면 /etc/lilo.conf 의 default= 옵션의 값
을 새로운 커널의 label 로 지정하시고 다시 lilo 를 실행하여 부팅 커널을 변경해 주시
면 됩니다. 역시 이 과정에서도 /boot 에 있는 3개의 symlink 파일의 목적지를 잘 체크
해야 합니다.
4. 커널 삭제하기
커널 삭제는 -r 옵션을 사용합니다만, 중요한 것은 커널은 중복 설치이기 때문에 꼭 버
전을 사용해야 한다는 것입니다.
삭제를 할 경우는 버전 형식이 다르니 주의 하셔야 합니다. 삭제시의 버전 형식은 Epoch
를 제외한 Version-Release 입니다.
Hanterm - pkgkernel -r |
[oops@main dir]$ pkgkernel -r kernel-PIV-2.4.20-20
kernel-PIV : 2.4.20-20 삭제 성공
[oops@main dir]$
[oops@main dir]$ ls -l /boot/System.map /boot/kernel.h /boot/vmlinuz
lrwxrwxrwx 1 root root 22 11월 17 20:33 System.map -> System.map-2.4.22-2PIV
lrwxrwxrwx 1 root root 20 11월 17 20:33 kernel.h -> kernel.h-2.4.22-2PIV
lrwxrwxrwx 1 root root 19 11월 17 20:33 vmlinuz -> vmlinuz-2.4.22-2PIV
[oops@main dir]$
|
삭제 후에는 꼭 /boot 에 있는 3개의 링크들의 방향을 확인하셔야 합니다. 부팅을 할 커
널을 향해 있도록 수정을 해 주셔야 합니다.
|