커널 2.6 컴파일 후 Kernel panic

corone의 이미지

성의없이 끄적거린 글을 읽어주시고 답변 주신 모든 분들께 감사드립니다.

질문을 하려면 무엇을 어떻게 해서 어떻게 됐는지 자세하게 올려야 그에 대한 답변도 할 수 있는데
아침에는 제가 너무 졸려서 적을 수가 없었습니다.

(레드햇 리눅스 9(커널 버전 2.4.20-8)에서 커널 2.6.14 버전 소스를 커널 컴파일 중 입니다.)

커널 컴파일 모든 작업을 끝내고 리부팅하니까
Kernel panic - not syncing No init found. Try passing init= option to kernel.
이라고 뜨면서 부팅이 멈춥니다.

커널 컴파일한 과정을 최대한 설명드려 보겠습니다.
귀찮으시더라도 아무쪼록 끝까지 읽어주시고 아주 작은 조언이라도 부탁드립니다.

linux-2.6.14.tar.gz 다운로드받아서 /usr/src 디렉토리에 압축을 풀었습니다.
# tar zxvf linux-2.6.14.tar.gz

오브젝트 파일을 지웠습니다.
# make mrproper

커널 옵션을 설정했습니다.
# make menuconfig
대부분 그대로 유지했습니다.
PCMCIA 슬롯의 사용이 꼭 필요하기 때문에 PCMCIA 설정과 몇몇 설정만 바꿨습니다.

기타 작업을 했습니다.
# make bzImage
# make modules
# make modules_install

module-init-utils를 다운로드받아 압축을 풀고 설치했습니다.
압축 푼 후
# ./configure --prefix=/usr/local
# make
# make install

여기까지 커널 컴파일 과정이고

/boot/에 있던 vmlinuz, System.map라는 이름의 링크를 지우고
/boot/vmlinuz-2.6.14
/boot/System.map-2.6.14
의 링크를 걸었습니다.

/boot/grub/grub.conf에서도

title Red Hat Linux
root (hd0,0)
kernel /boot/vmlinuz-2.4.20.8 ro root=LABEL=/
initrd /boot./initrd-2.4.20.8.img

위에서

kernel /boot/vmlinuz-2.6.14 ro root=LABEL=/
로 바꿨습니다.

마지막으로
# grub-install /dev/hda
하고 재부팅했습니다.

이렇게 설정하고 재부팅해서
Kernel panic - not syncing No init found. Try passing init= option to kernel.

이런 Kernel panic 메시지에 대한 이유나 해결을 아시는 분 알려주셨으면 감사하겠습니다.

익명 사용자의 이미지

corone wrote:

커널 컴파일하면 2.4.20 커널은 지워지는 것이 아니었습니까?^^;;;;

예, /boot 디렉토리에 보면 vmlinuz-xxx 파일들이 커널 이미지 파일입니다. make install 하면 커널이미지 등을 /boot 디렉토리로 복사해 줍니다. 커널 컴파일할 때는 커널 패닉이 발생할 수 있기 때문에 이전의 이미지를 보관하고 있는 것이 좋습니다.

corone wrote:

/boot/grub/grub.conf에서도

title Red Hat Linux
root (hd0,0)
kernel /boot/vmlinuz-2.4.20.8 ro root=LABEL=/
initrd /boot./initrd-2.4.20.8.img

kernel /boot/vmlinuz-2.6.14 ro root=LABEL=/
로 바꿨습니다.

마지막으로
# grub-install /dev/hda
하고 재부팅했습니다.


바꾸는 것보다 새로 추가하는 것이 좋습니다. 그러면 부팅할 때 Grub 메뉴에서
원하는 이미지로 부팅해 들어갈 수 있습니다. grub-install은 자꾸 하지 않으셔도 됩니다. 이미 grub이 설치되어 있으므로...

corone wrote:

이렇게 설정하고 재부팅해서
Kernel panic -> not syncing: No init found. Try passing init= option to kernel.
이런 Kernel panic 에 대한 이유나 해결을 아시는 분 알려주셨으면 감사하겠습니다.

몇가지 질문 추가합니다.
/boot/grub/grub.conf에서
initrd /boot./initrd-2.4.20.8.img는 2.6.14 버전으로 안바꿔줘도 됩니까? initrd-2.6.14.img라는 파일이 없어서 안바꿔줬는데..


아마도 커널 설정에서 IDE 드라이버 등 부팅할 때 필요한 드라이버들을 넣지 않았기 때문일 것 같습니다. 커널 컴파일할 때 이전의 설정을 가져와서 초기설정을 하는데 2.4 커널이 initrd 이미지를 필요로 하는 것을 보면 2.6 커널 설정이 위 드라이버를 모듈로 만들어지도록 설정된 것 같습니다. 그래서 mkinitrd 를 이용해서 initrd 이미지를 만들어서 2.4 커널 처럼 grub의 menu.lst에 적어주셔야 합니다. mkinitrd 사용법은 잘 모르겠습니다. 그냥 커널 이미지에 넣어서 컴파일해보기만 해서...

corone wrote:

전혀 다른 질문이지만
kernel /boot/vmlinuz-2.4.20.8 ro root=LABEL=/ 에서
보통 root=/dev/hda1 등으로 표시하는 것으로 알고 있는데
LABEL=/은 무엇입니까? 무슨 뜻입니까?

아미도 파티션에 붙여진 label을 찾아서 root 파티션으로 지정하는가 봅니다.
지금 root 파티션으로 쓰는 파티션에 "/" 라고 label이 붙여진 것 같습니다.
그냥 계속 쓰시면 됩니다.

잘 모르지만 아는체 해 봤습니다. ^^

익명 사용자의 이미지

http://wiki.kldp.org/wiki.php/Kernel%202.6%20Intro#s-1.6

mkinitrd 사용법이 있네요.

커널 컴파일하고 설치하고 나서 /lib/modules 디렉토리에 가시면 2.6.xxx 와 같은 디렉토리가 있을 것입니다.
/lib/modules 디렉토리에서
# mkinitrd 2.6.xxx -o /boot/initrd-2.6.xxx

하시면 /boot 디렉토리에 initrd 이미지가 생성되는 것 같습니다.
그리고 나서 /boot/grub/menu.lst 를 고쳐주세요. 2.4 커널처럼
initrd 부분을 넣으세요. 물론 initrd 이미지 파일 이름은 그에 맞게 고쳐주세요.

corone의 이미지

친절하고 자세한 답변에 진심으로 감사드립니다.

알고 싶었던 많은 것을 알게 되었습니다.

일단 mkinitrd로 initrd-2.6.14 만들었습니다.

그런데, mkinitrd 2.6.14 -o /boot/initrd-2.6.14.img 라는 형식이 안먹혀서
에러 메세지의 example의 형식대로
mkinitrd /boot/initrd-2.6.14.img 2.6.14 로 했습니다.

/boot/ 디렉토리에 initrd-2.6.14.img 만들어졌고

/boot/grub/grub.conf에
kernel /boot/vmlinuz-2.6.14 ro root=LABEL=/
initrd /boot/initrd-2.6.14.img
로 바꿨습니다.

도와주셔서 감사합니다.^^

아직은
Kernel panic -> not syncing No init found. Try passing init= option to kernel.
에러 메세지 뜨면서 부팅이 멈춥니다.

더 도와주세요~

땡깡의 이미지

레드햇 9를 사용하신 다면 몇가지 의존성 설치후 패도라 커널 올리시는 것도 가능합니다.
예전에 제가 테스트 해본 적이 있어서 글 남깁니다.

3.rpm -ivh 패도라커널(fedora 3 커널 사용) 여기서 의존성 나온다.
module-init-tools is needed by kernel-2.6.9-1.6_FC2
mkinitrd >= 3.5.5 is needed by kernel-2.6.9-1.6_FC2
nfs-utils < 1.0.3 conflicts with kernel-2.6.9-1.6_FC2
initscripts < 7.23 conflicts with kernel-2.6.9-1.6_FC2

4.module-init-tools-0.9.14 설치

tar -zxvf module-init-tools-3.0.tar.gz
cd module-init-tools-3.0
./configure --prefix=/sbin
make
make install

5.rpm -Uvh mkinitrd-3.5.14-1.i386.rpm

6.rpm -Uvh nfs-utils-1.0.6-22.i386.rpm
modutils >= 2.4.26-9 is needed by nfs-utils-1.0.6-22

7.rpm -Uvh modutils-2.4.26-16.i386.rpm

8.rpm -Uvh initscripts-7.31.6.EL-1.i386.rpm
ethtool >= 1.8-2 is needed by initscripts-7.31.6.EL-1

9.rpm -Uvh ethtool-1.8-3.1.i386.rpm

10. 다시 커널 설치 완료후 재부팅하면
이후 재부팅시 rpm 오류
rpmdb: unable to join the environment
error: db4 error(11) from dbenv->open: Resource temporarily unavailable
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)
error: cannot open Packages database in /var/lib/rpm
package rpm is not installed

11.그래서 rpm -Uvh rpm-4.2-1.i386.rpm

이렇게 하면 패도라 2.6 커널을 가진 Redhat 9가 돌아간다.

이렇게 설치하셔서 생성된 config 파일과 컴파일 하시면서 사용하신 config 파일 비교해 보시는 것도 도움이 될듯 하네요

what is my wish?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.