내용1.
페도라 코어6 에서 yum을 이용하여 소스를 설치 할 수 있다.
yum 을 이용하여 소스 설치 하기
#yumdownloader -e core-source -e updates-source --source kernel
#rpm -ivh kernel-KERNEL_VERSION.FCx.src.rpm
커널 개발 디렉토리 만들기
위 명령은 위에서받은 커널 소스를 압축 풀어서 target이 가리키는 폴더에 넣는 것 뿐이다.
uname -m 이 명령어는 시스템의 하드웨어를 출력한다. 64비트런이 가능한 하드웨어는 현제 운영체제가 32비트라고 해도 i686이 뜬다.
uname -i를 사용하면 현재 시스템이 사용하고 있는 시스템 arch가 나온다.
편의를 위해 심볼릭 링크 걸기
위에서 진한 부분은 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 로 복사를 하자, 덮어 쓰는 것이다.
커널명 바꾸기
vi로 /usr/src/linux/Makefile을 연다
"EXTRAVERSION= -prep" 부분의 -prep 를 ---> -78.0.22-patch.ELsmp 이런식으로 바꾼다.
EXTRAVERSION외의 SUBLEVEL, VERSION, PATCHLEVEL 부분등을 바꾸게 되면 컴파일 도중 에러가 발생됨.
컴파일
make menuconfig
make
make modules_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