커널 패치 & 컴파일 ( SOURCE )
인터넷 제국에서 가져온 글입니다.
저도 아직 시도는 해보지 않았는데...
지금 해볼려구요..
혹시 이 부분 시도 해 보신분 댓글 남겨 주세엽
오늘(2004년 6월 21일) 공지한 리눅스 커널에 발생한 보안홀에대한 해결책인
커널 업그레이드 방법에대한 간단한 방법을 설명하겠습니다. 해당 시스템에
따라 달라질수있으므로 어디까지나 참고문서로 사용하시길 바라며 자신의 시
스템에 맞게끔 설치하시길 바랍니다.
[ 패치 후 소스로 컴파일하기 ]
* 커널 소스 컴파일의 가장 일반적인 예시입니다.
* 실제와 다른 부분이 존재할수도 있으니 참고 하시기 바랍니다.
* 레드햇 6.2를 설치했다면 modutils 패키지를 업데이트 해야 할 것입니다.
만약 커널 2.4 버젼대의 컴파일 시 modutils 버전이 2.4.0보다 버전보다 낮은 상태에서 모듈 컴파일을 한다면 에러가 납니다.
꼭 modutils를 업그레이드 해야 모듈 컴파일을 할 수 있습니다.
modutils를 업하면 예전의 /etc/conf.modules가 /etc/modules.conf 로 변경이 됩니다.
다음의 ftp 사이트에서 구할 수 있습니다.
ftp://ftp.kr.kernel.org/pub/linux/utils/kernel/modutils/v2.4/
해당 커널 버전에 맞는 rpm 파일을 다운받으셔서 업데이트 하시기 바랍니다.
[kernel 패치 방법]
* 커널 소스 다운로드 장소 : ftp://ftp.kr.kernel.org/pub/linux/kernel/v2.4
* 패치파일은 아래와 같습니다.
##########################################################
diff -Nru a/include/asm-i386/i387.h b/include/asm-i386/i387.h
--- a/include/asm-i386/i387.h 2004-06-15 20:38:27 -07:00
+++ b/include/asm-i386/i387.h 2004-06-15 20:38:27 -07:00
@@ -34,7 +34,7 @@
#define clear_fpu( tsk ) do { \
if ( tsk->flags & PF_USEDFPU ) { \
- asm volatile("fwait"); \
+ asm volatile("fnclex ; fwait"); \
tsk->flags &= ~PF_USEDFPU; \
stts(); \
} \
###########################################################
또는 아래 URL 에서 다운로드하시면 됩니다.
2.4.2x (x86)
http://linux.bkbits.net:8080/linux-2.4/gnupatch@40cdf6f8V7sOe5n96HA5Q7r9uDRvJQ
# cd /usr/src
# tar -xvzf linux-2.4.26.tar.gz
# cd /usr/src/linux-2.4.26
# patch -p1 < patch.txt
[kernel 컴파일 방법]
# make mrproper
# make menuconfig
-> 서버의 환경에 맞게 메뉴 옵션을 설정하시기 바랍니다.
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
# cd arch/i386/boot
# cp /usr/src/linux-커널버전/arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
# mv /usr/src/linux-커널버전/System.map /boot/System.map-2.4.25 -> 옆의 숫자는 커널 버전입니다.
# cd /boot
# ln -s System.map-2.4.26 System.map
# cd /boot
# mkinitrd initrd-2.4.26.img 2.4.26/kernel/drivers
* 다음은 lilo 에 대한 설정입니다.
3. /etc/lilo.conf 수정하기
해당 패키지를 정상적으로 설치완료한후에는 /etc/lilo.conf 파일을 수정하여
부팅시 새로운 커널로 부팅이 되게끔 설정해 줘야합니다.
[root@hostech]# vi /etc/lilo.conf
prompt
timeout=50
default=linux-new -> 여기에적힌 부분이 부팅시 적용되는 이미지
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
[ 추가해야할 부분 ]
----------------------------------------------------
image=/boot/vmlinuz-2.4.26
label=linux-new
initrd=/boot/initrd-2.4.26.img
read-only
root= root파티션 추가 예)/dev/sda3
---------------------------------------------------
[ 끝 ]
image=/boot/vmlinuz-2.4.20-28.9smp
label=linux
initrd=/boot/initrd-2.4.20-28.9smp.img
read-only
root=/dev/sda3
기존의 커널 이미지 설정 위에다 [ 추가할부분 ] 이라고 표시된 내용을 설
정합니다. 그리고 반드시 default 이란 지시어에 새롭게 추가된 이미지의
label에 정의되어있는 이름을 적어셔야합니다.
#root 파티션확인 방법
[root@hostech]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda3 8180152 5012868 2751748 65% /
위와 같이 Mounted on 이 /로 되있는 부분이 root 파티션입니다.
4. lilo 실행하기
lilo.conf 파일을 완벽히 수정한 후 아래의 명령으로 정상적인 설정이 이루
어 졌는지 확인합니다.
[root@hostech]# lilo
Added linux-new *
Added linux
*로 표시된 부분이 기본 커널 이미지로 정의된 부분이며 서버 리부팅시 해당
이미지로 부팅이되게 됩니다.
문제가 있을시는 error 메시지를 출력하게 됩니다.
5. 리부팅후 패치여부 확인하기
4번까지 완벽히 적용되었다면 이제 시스템을 리부팅시켜 새로운 커널로 부팅이
정상적으로 되는지 확인해야합니다. 부팅후 아래의 명령어로 새로운 커널이 적
용되었는지 확인해 보시길 바라며 아울러 보안홀 체크도 확인해 보시길 바랍니다.
[root@hostech]# uname -a
Linux server 2.4.26 #1 SMP Sat Jun 19 11:22:57 KST 2004 i686 unknown
주의) 잘못된 커널업그레이드는 시스템에 막대한 영향을 미치므로 업그레이드시 주
의 하시길 바랍니다.
이상입니다.
저도 아직 시도는 해보지 않았는데...
지금 해볼려구요..
혹시 이 부분 시도 해 보신분 댓글 남겨 주세엽
오늘(2004년 6월 21일) 공지한 리눅스 커널에 발생한 보안홀에대한 해결책인
커널 업그레이드 방법에대한 간단한 방법을 설명하겠습니다. 해당 시스템에
따라 달라질수있으므로 어디까지나 참고문서로 사용하시길 바라며 자신의 시
스템에 맞게끔 설치하시길 바랍니다.
[ 패치 후 소스로 컴파일하기 ]
* 커널 소스 컴파일의 가장 일반적인 예시입니다.
* 실제와 다른 부분이 존재할수도 있으니 참고 하시기 바랍니다.
* 레드햇 6.2를 설치했다면 modutils 패키지를 업데이트 해야 할 것입니다.
만약 커널 2.4 버젼대의 컴파일 시 modutils 버전이 2.4.0보다 버전보다 낮은 상태에서 모듈 컴파일을 한다면 에러가 납니다.
꼭 modutils를 업그레이드 해야 모듈 컴파일을 할 수 있습니다.
modutils를 업하면 예전의 /etc/conf.modules가 /etc/modules.conf 로 변경이 됩니다.
다음의 ftp 사이트에서 구할 수 있습니다.
ftp://ftp.kr.kernel.org/pub/linux/utils/kernel/modutils/v2.4/
해당 커널 버전에 맞는 rpm 파일을 다운받으셔서 업데이트 하시기 바랍니다.
[kernel 패치 방법]
* 커널 소스 다운로드 장소 : ftp://ftp.kr.kernel.org/pub/linux/kernel/v2.4
* 패치파일은 아래와 같습니다.
##########################################################
diff -Nru a/include/asm-i386/i387.h b/include/asm-i386/i387.h
--- a/include/asm-i386/i387.h 2004-06-15 20:38:27 -07:00
+++ b/include/asm-i386/i387.h 2004-06-15 20:38:27 -07:00
@@ -34,7 +34,7 @@
#define clear_fpu( tsk ) do { \
if ( tsk->flags & PF_USEDFPU ) { \
- asm volatile("fwait"); \
+ asm volatile("fnclex ; fwait"); \
tsk->flags &= ~PF_USEDFPU; \
stts(); \
} \
###########################################################
또는 아래 URL 에서 다운로드하시면 됩니다.
2.4.2x (x86)
http://linux.bkbits.net:8080/linux-2.4/gnupatch@40cdf6f8V7sOe5n96HA5Q7r9uDRvJQ
# cd /usr/src
# tar -xvzf linux-2.4.26.tar.gz
# cd /usr/src/linux-2.4.26
# patch -p1 < patch.txt
[kernel 컴파일 방법]
# make mrproper
# make menuconfig
-> 서버의 환경에 맞게 메뉴 옵션을 설정하시기 바랍니다.
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
# cd arch/i386/boot
# cp /usr/src/linux-커널버전/arch/i386/boot/bzImage /boot/vmlinuz-2.4.26
# mv /usr/src/linux-커널버전/System.map /boot/System.map-2.4.25 -> 옆의 숫자는 커널 버전입니다.
# cd /boot
# ln -s System.map-2.4.26 System.map
# cd /boot
# mkinitrd initrd-2.4.26.img 2.4.26/kernel/drivers
* 다음은 lilo 에 대한 설정입니다.
3. /etc/lilo.conf 수정하기
해당 패키지를 정상적으로 설치완료한후에는 /etc/lilo.conf 파일을 수정하여
부팅시 새로운 커널로 부팅이 되게끔 설정해 줘야합니다.
[root@hostech]# vi /etc/lilo.conf
prompt
timeout=50
default=linux-new -> 여기에적힌 부분이 부팅시 적용되는 이미지
boot=/dev/sda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
[ 추가해야할 부분 ]
----------------------------------------------------
image=/boot/vmlinuz-2.4.26
label=linux-new
initrd=/boot/initrd-2.4.26.img
read-only
root= root파티션 추가 예)/dev/sda3
---------------------------------------------------
[ 끝 ]
image=/boot/vmlinuz-2.4.20-28.9smp
label=linux
initrd=/boot/initrd-2.4.20-28.9smp.img
read-only
root=/dev/sda3
기존의 커널 이미지 설정 위에다 [ 추가할부분 ] 이라고 표시된 내용을 설
정합니다. 그리고 반드시 default 이란 지시어에 새롭게 추가된 이미지의
label에 정의되어있는 이름을 적어셔야합니다.
#root 파티션확인 방법
[root@hostech]# df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda3 8180152 5012868 2751748 65% /
위와 같이 Mounted on 이 /로 되있는 부분이 root 파티션입니다.
4. lilo 실행하기
lilo.conf 파일을 완벽히 수정한 후 아래의 명령으로 정상적인 설정이 이루
어 졌는지 확인합니다.
[root@hostech]# lilo
Added linux-new *
Added linux
*로 표시된 부분이 기본 커널 이미지로 정의된 부분이며 서버 리부팅시 해당
이미지로 부팅이되게 됩니다.
문제가 있을시는 error 메시지를 출력하게 됩니다.
5. 리부팅후 패치여부 확인하기
4번까지 완벽히 적용되었다면 이제 시스템을 리부팅시켜 새로운 커널로 부팅이
정상적으로 되는지 확인해야합니다. 부팅후 아래의 명령어로 새로운 커널이 적
용되었는지 확인해 보시길 바라며 아울러 보안홀 체크도 확인해 보시길 바랍니다.
[root@hostech]# uname -a
Linux server 2.4.26 #1 SMP Sat Jun 19 11:22:57 KST 2004 i686 unknown
주의) 잘못된 커널업그레이드는 시스템에 막대한 영향을 미치므로 업그레이드시 주
의 하시길 바랍니다.
이상입니다.
|
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기
댓글 2개
2.6버전대의 커널 컴파일이 더 쉽더군요. 그냥 컴파일만 하는 것이라면 한 서너번 정도 삽질해 보면 몸으로 익힐 수 있습니다... --aaa 부디 성공하시길...