커널컴파일을 할때 모든 것을 하나하나 다 설정을 해야하나요???

ins878의 이미지

안녕하세요... 초보적인 지물인지는 모르지만요..

커널 분석을 공부하는 학생입니다.
다름이아니라 커널을 일부분 수정하고서는 커널을 재컴파일 하는데, 보니깐 하나하나 설정을 하도록 되어있는데요... 다른 문서를 찾아봐도 하나하나 설정을 해야된다는 식으로 나와있더군요. 매번 이렇게 작업을 하면 커널을 수정하는 것이 큰 일이 될 것만 같은데...
혹시, 리눅스를 설치할때의 커널상태로 커널 설정이 되어있는 스크립트 같은것은 없는지, 아니면, 다른 것은 기본적으로 설정되어있고, 특정 부분만 수정할 수 없는지 고수님들 가르쳐 주세요...
커널 컴파일 하는 것이 커널 수정하는 것보다 큰 작업이 되는 것 같아요..
꼭 부탁드립니다. :(

skydancer의 이미지

make mrproper 같은 명령을 실행한 경우만 아니라면 이전에 설정한 내용이 그대로 남아있어서 이전 설정을 그대로 적용할 거라면 재설정없이 그냥 그대로 나머지 과정을 진행하시면 됩니다.

웃어요^,.^;

fibonacci의 이미지

처음 한번이 꽤 까다롭고요. 처음 한번을 위해서 커널이 돌아갈 하드웨어의 세세한 사양까지 검토를 해 봐야 하니까요.

팁중에 하나는, 배포본 기본부트시 dmesg에 잡힌 하드웨어들을 참고해서 초기 설정을 해주면 됩니다.

세세한 설정은 그걸 바탕으로 해서 변경해 주고요..

일단 세팅 성공하면 그 세팅을 적절한 파일명으로 menuconfig등에서 저장합니다.
담에는 그걸 불러들여봐서 변경해서 컴팔하면 됩니다.

No Pain, No Gain.

alwaysrainy의 이미지

커널을 수정하려면 일일이 다시 수정해주고 다시 컴파일 하여서
커널 이미지 및 모듈들을 만들어 내야 합니다. 설정 하나 잘못되어서
상당한 인내를 가지고 다시커널 컴파일을 해야하곤 합니다 ^^
커널을 공부하시는 단계라고 말씀하셨는데.. menuconfig 시 세세한
부분들을 공부하다보면 많은 것을 얻으실 수 있을겁니다.
menuconfig 단계가 끝나면 커널의 설정 정보는 .config 파일에
저장됩니다. mrproper 하면 그러한 설정 정보들 까지도 다 삭제가 되구요..
clean 하면 오브젝트 파일들만 삭제됩니다.
꼬릿말을 달자면 menuconfig 대신 xconfig 혹은 config 를 사용하셔도
무방합니다. 개인적으로 menuconfig 가 편해서 ^^
그럼 많은 학습되시기를요 ^^

---------------------------------------
세계는 넓고, 할일은 많다.

mach337의 이미지

RedHat 의 경우
/usr/src/linux-2.4/configs 에 여러 Kernel 설정 파일들이 있습니다.
이것을 /usr/src/linux-2.4/ 에 .config 라는 파일로 복사하면 됩니다.
config 앞에 . 이 있습니다. 주의하시길...
다른 배포본의 경우는 모르겠네요. 아시는분 계신가요..?

frog의 이미지

많은 부분을 손 봐야 하는것이 아니라면,
커널 모듈을 추천합니다.

물론 한계는 있지만,
편하게 인터럽트핸들러나 기타 세세한 부분을 수정 보실 수 있습니다.

dude, open source is really pretty...

youngsoung76의 이미지

자신이 원하는 환경으로 컴파일 하기 (arm을 예로 들겠습니다)
1. defconfig파일을 작성한다.
/ linux/arch/$(arch)/def-config/안에 설정할 config파일을 만듭니다.
파일이름을 아무거나 주어도 괜찮습니다. 여기서는 그냥 111로 했다고
가정을 하겠습니다.
2. /linux/arch/$(arch)/Makefile이란 파일을 열어 아래의 코드를 추가합니다.
#
# Configuration targets. Use these to select a
# configuration for your architecture
%_config:
@( \
CFG=$(@:_config=); \
if [ -f arch/arm/def-configs/$$CFG ]; then \
[ -f .config ] && mv -f .config .config.old; \
cp arch/arm/def-configs/$$CFG .config; \
echo "*** Default configuration for $$CFG installed"; \
echo "*** Next, you may run 'make oldconfig'"; \
else \
echo "$$CFG does not exist"; \
fi; \
)

이렇게 하고난후 make 111_config라 치면 111에 있는 설정이 /linux/.config에 복사가 되어집니다.

3. Make oldconfig를 하면 111에 있는 설정대로 환경설정이됩니다.
왜냐하면 oldconfig: symlinks
$(CONFIG_SHELL) scripts/Configure -d arch/$(ARCH)/config.in
란게 있어서 /linux/scripts/Configure스크립트를 실행 시키는데 이 스크립트는 커널이 참조하는 include/linux/autoconf.h 가 만들어 지게 됩니다.
따라서 커널이 컴파일 할때 autoconf.h를 참조하게되어 결국 111파일에 있는것들이 반영되게 되어 있습니다.

4. Make dep치면 depend들이 컴파일 되고
5. Make zImage 혹은 Make Image 이렇게 하면 실행 이미지가 만들어집니다.

나중에 다른 환경 설정이 필요하다면 ... 일단 111을 다른이름으로 복사해수정할 부분만 수정해서 사용하시면 편리합니다.

kenji의 이미지

mach337 wrote:
RedHat 의 경우
/usr/src/linux-2.4/configs 에 여러 Kernel 설정 파일들이 있습니다.
이것을 /usr/src/linux-2.4/ 에 .config 라는 파일로 복사하면 됩니다.
config 앞에 . 이 있습니다. 주의하시길...
다른 배포본의 경우는 모르겠네요. 아시는분 계신가요..?

debian의 경우는 'make-kpkg'라는 명령으로 kernel package를 만들어 설치하면 /boot에 'config-커널버전'과 같은 형태로 저장이 됩니다.

---
What is real?
If you are talking about what you can see, what you can taste, what you can feel.
That is simply electric signals interpreted by your brain.

you're living in a dream world, Neo.

ins878의 이미지

지금은 고수님들 덕분에 많은 것을 배우고 있습니다.
정말로 감사드립니다. :D

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.