내용1.



페도라 코어6 에서 yum을 이용하여 소스를 설치 할 수 있다.


yum 을 이용하여 소스 설치 하기


#yum install elfutils-libelf-devel rpmdevtools yum-utils

#yumdownloader -e core-source -e updates-source –source kernel

#rpm -ivh kernel-KERNEL_VERSION.FCx.src.rpm



커널 개발 디렉토리 만들기


#rpmbuild -bp –target $(uname -m) /usr/src/redhat/SPECS/kernel-2.6.spec



위 명령은  위에서받은 커널 소스를 압축 풀어서 target이 가리키는 폴더에 넣는 것 뿐이다.

uname -m 이 명령어는 시스템의 하드웨어를 출력한다. 64비트런이 가능한 하드웨어는 현제 운영체제가 32비트라고 해도 i686이 뜬다.

uname -i를 사용하면 현재 시스템이 사용하고 있는 시스템 arch가 나온다.


편의를 위해 심볼릭 링크 걸기


#ln -s /usr/src/redhat/BUILD/kernel-2.6.23/linux-2.6.23.x86_64   /usr/src/linux

 위에서 진한 부분은 target이 어떻게 되느냐에 따라서 달라지므로 수정해서 쓰자.



* 커널 컴파일시 /usr 디렉토리에 많은 용량의 파일들이 생성된다.


만약 /usr 파티션이 별도로 파티셔닝이 되어 있는데 용량이 부족하다면


mkdir /home/src


rsync -avr /usr/srv/ /home/src    –> rsync를 이용하는 이유는 퍼미션을 그대로 가져가기 위해.. cp로 하면 에러의 소지가 있음.


mv /usr/srv /usr/srv_orig


ln -s /home/src /usr/src
home 파티션이가 실행권한이 있게 마운트되 있어야 함. 없다면 mount -o remount,rw /home


커널 설정 맞추기!!!   .config

위에서 target이 i386이 라고 해서 i386 arch로 컴파일 되는 것이 아니다.

커널 소스가 위치한 폴더에, 위의 경우 /usr/src/linux

.config라는 파일이 있다. 그리고 confs라는 폴더에 보면 여러가지 arch마다의 설정이 들어있다.

make menuconfig를 하면 .config가 만들어 지는 것인데 confs 디렉토리에 있는 파일들을 각 arch별로 미리 조금씩 설정된 것이라고 보면 된다.

그런데 크로스 컴파일등의 경우를 제외하고 일반의 경우에 현제 컴퓨터의 커널을 업데이트 하고 싶은 것이라면 현재 시스템의 설정과 동일한 설정을 가지고 시작해야 할것이다.

이 설정 파일은 다행히도 /boot/ 디렉토리에 있다.
(물론 페도라가 그렇다는 것이다. 다른 배포판은 모르겠다.)

/boot/config-커널 버전

형태를 띄고 있다. 이 파일을 작업 디렉토리인 /usr/src/linux/.config 로 복사를 하자, 덮어 쓰는 것이다.


# cp /boot/config-커널 버전 /usr/src/linux/.config

커널명 바꾸기


vi로 /usr/src/linux/Makefile을 연다
"EXTRAVERSION= -prep" 부분의 -prep 를 —> -78.0.22-patch.ELsmp 이런식으로 바꾼다.


EXTRAVERSION외의 SUBLEVEL, VERSION, PATCHLEVEL 부분등을 바꾸게 되면 컴파일 도중 에러가 발생됨.



컴파일


make mrproper  –> 기존 config 파일이 날라갈 수 있으므로 주의해서 실행.

make menuconfig

make

make modules_install

make install

내용2.


커널컴파일 : 커널을 설치하려면 컴파일러가 필요하다 gcc 같은것.


커널설치전 설치가 되어있어야 하는것들.
cpp
gcc
db4-devel
dev86
flex
gcc-c++
libstdc++-devel
libtermcap-devel
ncurses-devel
pam-devel
bison


yum -y cpp gcc db4-devel dev86 flex gcc-c++ libstdc++-devel libtermcap-devel ncurses-devel pam-devel bison


이라고 한후


//nothing to do 라고 나오면 그건 설치가 되있다는 것이다.


//rpm -qa로 확인을 해라.ㅋ


1. alt+f2로 두번째 터미널 open


2. wget ftp://125.128.26.8/linux-2.6.22.6.tar.bz2


3. rdate -s time.bora.net


// 시간을 정확하게 맞추는 것이다
// 왜 맞추냐? 시간을 정확히 맞추고 최신커널버전을 풀어야지 되기때문이다


설치를 하는거라서 그렇다!


4. tar xfj linux-2.6.22.6.tar.bz2 -C /usr/src(j는 bz2를 푸는 옵션)
-C 옵션 //경로를 지정하는 옵션.


5. cd /usr/src/linux-2.6.22.6


6. make mrproper


//기존 컴파일 흔적을 삭제.


7. make menuconfig


cf)커널컴파일을 재설치 새로 하는 것은 아주 중요하다 초급자와 중급자의 차이


잘못하면 커널의 혼란으로 부팅이 안되는 경우가 있다.


커널 버전마다 메뉴의 순서가 다를수도 잇으니 잘 살펴보고 해야 한다. !!


8. putty로 원격접속을 하여 분위기를 내보자!!


9. 앗. 아까 루트로 로그인을 막아놨었다.


  일반유저로 로그인을 하고(없다면 useradd 명령어 사용) "su -" 명령어를 사용하여 루트권한을 획득하자.


10. 첫번째 줄에서 들어가 보면 시험중인버전을 사용한다라고 되있는내용이있다 그것을 체크 해제


11. 5번째 processor~ 그줄. 다시 5째 processor family 를 보면 성능이 이상하게되어있다. 컴터를 성능에 맞는걸로!!


  cf)M은 미선택.


12. 6번째 전원관리 Power 어쩌고 그것은 // 노트북같은것에 필요 서버에는 필요없다 다 해제!!


13. 7번째 Bus 옵션 // ISA support -> 구형장치에서 사용하던 버스장치 -> 해제


14. 9번째 네트워킹 // 블루투스가 있다.->해제 와이어리스가있다.->무선이다->해제


   네트워킹 옵션->밑에 –Security Marking 에서 방화벽을 할때 네트웍 패킷 필터링 프레임워크가 있다. 그것관련 수정이다.


15. 10번째 디바이스 // 중요 잘못설정하면 커널패닉이나 오류가 난다.


  //Parallel -> 프리터가 사용하는 포트 ->해제


  //SCSI -> IDE로 만들었기 때문에 해제.


  //I20 device supprot -> 뭔지 모를것-_- 그러므로 해제


  //ISDN -> adsl 나오기 전에 나온 장비.(한국통신이 이걸밀다가 망했다-_-;)->안사용한다 해제.


  //I2C suppor->해제


  //Hardwware Monitoring->해제


  //Multimedia device -> 서버로 사용하기 때문에 해제.


  //sound -> 사운드를 안설치해서 해제


  //USB -> 이것도…해제;


  //여기서 다시 위로~ Network device support로. 들어가자.


   -> Ethernet(1000 mbit, 10000 mbit) 해제, 토큰링 해제, fddi 해제, ppp 해제


  //Ethernet 10 or 100 mbit으로 들어가서 사용하는 랜카드를 사용한다. 여기선 사용 랜카드 드라이브 빼고 전부다 삭제한다.


  -> 설치할때 편하게 하기 위해서라지만 필요한 것만 있으면 된다.


16. 11번째 File system
 //ROM file system support 만 체크 하고 나와라~


17.  숨긴파일은 .config라는 파일이 생긴다.


   내가 설정한 내용이 들어가있는 파일이 생긴다. ls -a로 확인해보자.


  10개의 컴퓨터를 해야한다면 이파일을 복사하면 되겠다!


  .config 내용 확인 -> less .config


18. make


19. make modules_install


20. make install


21. 18.19.20 번하려면 한개를 할때 마다 기다려야 하므로 && 연산자를 활용하여 시작하자


   -> 40분에서 50분이나? ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ


22. echo $? -> 이렇게 입력 하면 0 이면 정상 1 이상 값이면 오류이다.


23. vi /boot/grub/grub.conf


    -> 10행 default=0 변경


24. reboot->vmware는 금새 되지만. 실제컴퓨터는 재부트하는 10분이상 걸린다.


25. reboot후 원격으로 일반유저로 접속시에는 문제가 없다. 그러나 로컬로 일반유저 접속을 하면.


    에러가 나면서 -어쩌구저쩌구 keymap error 이라구 나온다.(안나면 다행이구.)-언어맵핑이 제대로 안됐을때 에러가 나는것.


    어찌해야 할까?


    //-> kbd라는 패키지를 루트로 로그인해서 설치하면 된다.(………내이름 이니셜……….ㄷㄷㄷ)


    //yum -y install kbd


26. 커널컴파일의 이유:예전커널의 문제점이나 보안의 취약했기 때문이다.]


   그럼 이제 설치를 했으니까. 예전커널을 삭제하자


   예전커널도 rpm 패키지이다.


   rpm -qa | grep kernel


   rpm -e kernel –nodeps명령으로 구 커널 삭제!!!!!

내용3.(패치하기)


cd /usr/local/H-source/rr2640-linux-src-v1.2/product/rr2640/linux


make patchkernel KERNELDIR=/usr/src/linux/ KERNEL_VER=2.6

커널 컴파일

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다