linux-2.4.18.tar.gz 리눅스 커널 패치 http://www.kernel.org/pub/linux/kernel/v2.4/
linux-2.4.18.rmk6 리눅스 암 페치 http://www.arm.linux.org.uk/developer/v2.4/
linux-2.4.18.rmk6-swl6 리눅스 s3c2410 패치 patch-2.4.18-rmk6-swl6.gz
toolchain ftp://ftp.arm.linux.org.uk/pub/linux/arm/toolchain/
를 이용하여 시작!!!
시작에 앞서서... 유용한 터미널 명령어!!
$ pwd : 현재 경로를 보여줍니다.
$ ls -hl | sort -s : 현재 폴더의 파일(폴더)목록을 크기순으로 보여줌
% nano file.txt(또는 pic04.pdf o) : 파일 보고, 편집하는 편집기, emacs 나 vi 처럼 핫키를 외울 필요가 없어서 초보자에게 좋습니다.
% rm -rf *.bmp : 파일 제거, 디렉토리는 내부 파일까지 제거해 줍니다.
% tar -xvzf : 파일 묶어서 압축, 결과물은 .gz , cvzf : 압축 해제
% df -h: 현재 시스템의 파티션별 하드디스크 용량을 % 및 Byte 로 표시해 줍니다
-h옵션은 크기를 KB, MB, GB 으로 자동 전환해 보여줍니다.
% find / -name "*.jpg" -print : 키워드로 파일찾기, 전체를 뒤지면 시간이 꽤 걸립니다.
크로스 컴파일 환경 구축 ( toolchain -> SW를 개발하기 위한 환경 구축 )
-> binutils-arm-2.9.5.0, 등등이 필요하지만 미리 묵여진 크로스컴파일 을 사용한다. 위의 링크 를 사용
-> 소스가 하나로 통합된 크로스 컴파일 파일을 설치한다. 설정하는법 README.doc 일일이 설정하는법 크로스컴파일_환경구축.doc
cd /usr/local
mkdir arm
cd arm
tar lxvf cross-<version>.tar.bz2
/usr/src/에서를 통해 설치
tar -zxvf linux-2.4.18.tar.gz
gzip -dc patch-2.4.18-rmk6 | (cd linux ; patch -p1 ) -> gzip -dc patch-2.4.18-rmk6 | (cd linux ; patch -p1)
gzip -dc patch-2.4.18-rmk6-swl | (cd linux ; patch -p1) -> gzip -dc patch-2.4.18-rmk6-swl.gz | (cd linux ; patch -p1)
설치 완료 후
cd linux
make menuconfi -> exit -> yes
make dep
make clean
make zImage
그런데 이때 !!! 다음과 같은 오류코드 발생
In file included from /project/kernel/linux/include/linux/sched.h:23,
from /project/kernel/linux/include/linux/mm.h:4,
from /project/kernel/linux/include/linux/slab.h:14,
from /project/kernel/linux/include/linux/proc_fs.h:5,
from init/main.c:15:
/project/kernel/linux/include/linux/smp.h:29: error: conflicting types for 'smp_ send_reschedule'
/project/kernel/linux/include/asm/smp.h:65: error: previous declaration of 'smp_ send_reschedule' was here
/project/kernel/linux/include/linux/smp.h:29: error: conflicting types for 'smp_ send_reschedule'
/project/kernel/linux/include/asm/smp.h:65: error: previous declaration of 'smp_ send_reschedule' was here
In file included from /project/kernel/linux/include/linux/unistd.h:9,
from init/main.c:17:
/project/kernel/linux/include/asm/unistd.h:360: warning: conflicting types for b uilt-in function '_exit'
make: *** [init/main.o] 오류 1
여기서 SMP가 뭔가 확인해 봤더니 -> Symmetric multiprocessing : 대칭형 다중처리
SMP는 운영체계와 메모리를 공유하는 여러 프로세서가 프로그램을 수행하는 것을 말한다. SMP에서는 프로세서가 메모리와 입출력 버스 및 데이터 path를 공유하며, 또한 하나의 운영체계가 모든 프로세서를 관리한다. 보통 2개부터 32개의 프로세서로 이루어지며, 어떤 시스템은 64개까지 프로세서를 공유한다.
SMP시스템은 보통 MPP시스템에 비하여 병렬 프로그래밍이 훨씬 쉽고, 프로세서간 작업 분산(workload balance)시키는 것은 훨씬 용이하지만, 확장성은 MPP에 비하여 취약하다. 또한 많은 사용자가 동시에 데이터베이스에 접근하여 일을 처리하는 OLTP 작업에서도 강점을 보인다
였다. 그래서 make menuconfig 에서 3번째 processor에서 Symmetric multiprocessing 선택 제거 했으나 그 에러 코드는 사라졌는데. 다른 에러 발생
다시 처음으로 돌아가서 다시 해본 결과 -> 위에서 arm용 패치를 잘 못 해주어서 발생했던 것임, 다시 패치후 다시 make dep~ 부터 실행
다시 에러코드 발생 -_-;;
make[2] : arm-linux-gcc 명령을 찾지 못했음
설치된 Tool 아무 폴더에서나 접근 가능하도록 Path 설정
export PATH=/usr/local/arm/<version>/bin
error 코드
bash : make : command not found
다시시도
vi /root/.bash_profile
내용...
#. bash_profile
# Get the aliases and funcions
if [ -f ~/.bashrc ]; tehn
. ~/.bashrc
fi
alias ls="ls -F --show-control-chars --color=auto"
LESSCHARSET=latin1
# user specific enviroment and startup programs
PATH=$PATH:/usr/local/arm/2.95.3/bin:$PATH
BASH_ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME BASH_ENV PATH
source /root/.bash_profile
한 후 make zImage !!!! 성공!!!
선응형도 이미지 다 만드셨고... 저도 이어서 이미지까지는 만들었네요... 이제... 올려봐야지 ㅋㅋ
이 글은 스프링노트에서 작성되었습니다.