커널패닉 init 프로세스를 찾지 못합니다.
글쓴이: tt / 작성시간: 금, 2006/07/28 - 12:55오후
LFS 문서를 보고 Linux시스템을 이해하고 있습니다.
다음과 같이 하나의 하드에 파티션을 나눈뒤, 부팅했는데
init 프로세스를 찾지 못한다고 말한뒤 죽어버립니다.
... VFS: Mounted root (ext2 filesystem) readonly. Kernel panic: No init fount. Try passing init= option to kernel.
Device Boot Start End Blocks Id System
/dev/hda1 1 9258 74364853+ 7 HPFS/NTFS
/dev/hda2 9259 14357 40957717+ 83 Linux
/dev/hda3 14358 14488 1052257+ 82 Linux swap
/dev/hda4 * 14489 15097 4891792+ 83 Linux
MBR에 LILO가 설치되있고 /dev/hda4로 부팅하면 거기에 있는 lilo가 또 실행됩니다.
hda4의 lilo.conf입니다.
boot = /dev/hda4 prompt # always expect prompt timeout = 150 # wait 15 seconds vga = normal # force sane state lba32 # 'linear' is deprecated delay = 30 # delay 3 seconds if there is a stored command line #serial = 0,1200n8 # uncomment to use COM1 too read-only # initailly mount roots r/o root = current # use "current" root image = /boot/bzImage label = linux
질문은...에러메시지로 봐서 /dev/hda4가 마운트된거 같은데 왜 /sbin/init를 못찾는걸까요?
Forums:
hda2에 기존 리눅스
hda2에 기존 리눅스 시스템이 깔려 있나요? 만약 hda2가 /에 마운트된 상태에서 /mnt/hda4/path/bin/lilo.conf를 옵션으로 lilo를 실행하신다면 해당 lilo.conf의 root를 current 말고 /dev/hda4로 하셔야 할 것 같습니다.
current 를 hda4로
current 를 hda4로 지정해도 마찬가지입니다...
아직 해결을 못하고있습니다 ㅜ.ㅠ
해당 루트 파일
해당 루트 파일 시스템에 init 프로그램이 설치 되어 있는지 확인해 보세요.
흐음...
설치되어있습니다.
커널소스를 보니 다음과 같은 순서로 검색하더군요, 물론 init은 해당위치에 모두 있습니다.
hda4 말구요.
root 파일 시스템이 어떤 것인지 지정해주세요.
/dev/hda4 는 boot 파일시스템이네요.
root(/) 파일시스템이 마운트 되야. /sbin/init이 실행되요~~
Be the Miracle!
Do rush at the Goal and you will be the no1.
Be the Miracle!
Do rush at the Goal and you will be the no1.
파티션 사이즈로 봐서. hda2가 root 파일 시스템이네요.
root = /dev/hda2 해보세요
Be the Miracle!
Do rush at the Goal and you will be the no1.
Be the Miracle!
Do rush at the Goal and you will be the no1.
답변감사합니다만, 질문을 이해못하신것같습니다.
제가 마운트하고자하는 파일시스템은 /dev/hda4입니다.
/dev/hda4의 lilo까지 실행되나 init 프로세스를 찾지 못하는 상태입니다.
아래는 /dev/hda4의 lilo.conf입니다.
init 프로세스가 /sbin/init
/dev/hda4는 이미 올라간상태에요
이게 올라가지 않았다면, 위의 메시지도 볼수 없을거에요
리눅스 부트 프로세스의 마지막인 init 프로세스가 root 파티션에 위치하거든요
위에서 검색하신 디렉토리가 다 root 파티션에 들어가 있습니다.
boot 파티션에는 사용자가 컴파일한 커널 이미지가 들어가있어서, 님이 위와 같은 화면을 확인할수 있었던 것이구요.
init process는 커널 이미지로 다 부팅하고 나서 나머지 프로세스를 생성하기 위한 최고레벨의 프로세스(부모) 에요
루트 파티션이 제대로 마운트가 안된다면, /sbin/init과 같은 프로세스를 실행시킬수가 없게되죠.
님이 말씀하신 /dev/hda4는 이미 마운트가 다 되서 다 사용된 상태에요,
VFS .... root ... 이 메시지에서 처럼이라면 root파티션이 마운트되었다는건데
그 마운트된 파일시스템에 /sbin/init이라는 파일이 없다는 것이니까.
root에 님이 처음에 설정하신 root 파티션(/) 을 지정해주시면 됩니다.
/dev/hda4는 boot
/dev/hda3 는 swap
/dev/hda2 가 root 파티션으로 보이네요.
/dev/hda1은 윈도우 파티션인것 같고요.
한번 확인해보세요.
Be the Miracle!
Do rush at the Goal and you will be the no1.
Be the Miracle!
Do rush at the Goal and you will be the no1.
/dev/hda4 는 boot??
/dev/hda4가 boot인지 root인지 모르겠습니다.
fdisk 로 파티션을 나눌때 시스템id를 83번 즉 Linux로 지정했는데
이렇게하면 /로 잡히는게 아닌지요?
현재 파티션은 다음과 같이 나눠져있고,
/dev/hda4를 마운트해서 init파일이 모두 존재하는것을 확인하였습니다.
파티션 정보를 보면
/dev/hda4가 boot라고 표시되어 있네요.(boot 파티션입니다)
그리고 df명령을 했을때, /dev/hda2가 / 에 mounted on 되어 있는 상태이네요.
Be the Miracle!
Do rush at the Goal and you will be the no1.
Be the Miracle!
Do rush at the Goal and you will be the no1.
/dev/hda4 가 boot 파티션?
/dev/hda2가 /에 마운트된것은 제가 4개의 lilo선택목록중 2번을 선택했기 때문입니다.
1. xp
2. linux1 (/dev/hda2)
3. linux2 (/dev/hda2)
4. linux3 (/dev/hda4)
저는 지금 4번으로 부팅하려하는것이고요,
그리고 fdisk로 /dev/hda4의 boot필드를 토글시켜서 부팅시켜도 init프로세스를 찾지못합니다.
drgno1님께서 지적해주신대로 /dev/hda4를 루트파티션으로 인식시키면 될것도같은데...
아 그럼 리눅스가 /dev/hda2에도 깔려 있는 상태였군요.
그렇다면 /dev/hda4를 root 파티션으로 인식 시키는 것이 올바른 해결 책 같아 보이는데요?
/dev/hda4에 몽땅 다 설치 하신거네요. ^.^
그럼 /dev/hda4만 제대로 마운트되면 해결되야 될것 같은데요.
/dev/hda4를 루트 파티션으로 인식할수 있도록 lilo conf를 손봐줘야 될듯싶습니다.
부팅이 되었다는 자체로 봐서는 /dev/hda4가 자알 마운트된 상태이라는 건데, 그거 참...@.@
Be the Miracle!
Do rush at the Goal and you will be the no1.
Be the Miracle!
Do rush at the Goal and you will be the no1.
ㅎㅎ 이거 참...
이거참 알것같으면서 모르겠네요 ㅋㅋ
drgno1님 같이 고민해주셔서 감사합니다. 해결될때까지 경과보고하겠습니다 ㅋㅋ
혹시 OS가 총 3개가
혹시 OS가 총 3개가 설치된 것이 아닌지요?
/dev/hda1 - XP(?)
/dev/hda2 - Linux 1
/dev/hda3 - Linux Swap
/dev/hda4 - Linux 2
각 파티션이 위에 적은 대로 설치가 된 건지 확인을 해 주세요.
[qoute]Kernel panic: No
말 그대로 init을 지정해주는 것은 어떨가요.
파일시스템을 열지못하는 상태인거같습니다.
파일시스템을 인식못하기때문에 어떠한 프로세스를 지정해도 찾지 못합니다.
lilo 실행
/dev/hda4 의 lilo.conf 에서 root=/dev/hda4 로 수정한 다음에
lilo 명령을 제대로 실행하였나요?
hda2 로 부팅한 상태로 hda4 를 /mnt/lfs 에 마운트 하였다면
# chroot /mnt/lfs /bin/bash
# lilo
이과정을 해주면 될거 같은데요.
이건또 무슨에러인지...
이에러와 위의 /dev/hda4파일시스템을 접근못하는 것과 원인이 같은지는 모르겠지만
lilo소스에 있는 스크립트를 사용해서 lilo는 실행 시킬수가 있었습니다.
그런데 대체 저건 또 무슨에러인지... 분명 /bin/bash가 있는데...없다그러네요
라이브러리가 문제였습니다.
분명 커널이 올라가고나서 파일시스템이 올라갑니다.
커널이 풀렸다는 말은 곧 파일시스템이 인식되었다는 것입니다.(부트와 루트 통으로사용)
따라서 /etc/init을 실행한것인데 그동안 init이 실행되지 않는줄 알고
파일시스템이 왜 인식이 되지않는걸까? 하고 고민을 했습니다. 바보같죠...
암튼 원인은 init프로세스 실행시 필요한 라이브러리들
요것들을 파일시스템에 복사해주니 해결되었습니다.
감사합니다...
헛..
우웃...@.@
이런 문제는 정말 @.@
어떻게 찾으셨어요~?>
축하해요~
Be the Miracle!
Do rush at the Goal and you will be the no1.
Be the Miracle!
Do rush at the Goal and you will be the no1.
댓글 달기