커널 패닉

vimania의 이미지

젠투 리눅스를 설치하고 부팅을 하는데 다음과 같은 에러가 나오면서 커널 패닉상태가 됩니다.

VFS: Cannot open root device "sda4" or unknown-block(0,0)
Please append a correct "root=" boot option

"root=" 옵션을 말하면 grub 인거 같아 grub.conf를 확인했습니다.
Title linux 2.6.26.7
root (hd0,1)
kernel /boot/kernel-2.6.26.7 root=/dev/sda4

디스크 구성

sda2 /boot (ext2)
sda3 swap
sda4 /     (XFS)

/etc/fstab 구성

/dev/sda2    /boot    ext2    defaults,noatime    1 2
/dev/sda3    none     swap    sw                  0 0
/dev/sda4    /        xfs     noatime             0 1

grub.conf에 root=/dev/sda4 를 root=/dev/hda4로 해도 안되고
grub.conf 수정하고 grub-install --no-floppy /dev/sda 해도 그대로입니다.

어느 부분을 확인해야 할까요?

sio4의 이미지

제 느낌에는 커널에 xfs 관련 지원이 built-in으로 들어가지 않았거나, initrd에 모듈이 들어가지 않았거나 initrd는 정상이지만 grub에 등록되지 않았거나... 그런 상태인 것 같은데요?

--
"The love you take is equal to the love you make." The End, by Beatles

--
"The love you take is equal to the love you make." The End, by Beatles

vimania의 이미지

kernel menuconfig에서

File system --->
<*> XFS support

선택했습니다. 근데 XFS support 선택하면 보이는 하위 목록은 선택하지 않았습니다. 하위 목록 중에 선택해야 하는게 있나요?

설치하면서 initrd 에 관해서는 커널 컴파일 옵션 선택할때 아무것도 해준게 없는거 같은데 어느부분에서 선택해 줘야 하나요?
그리고 genkernel를 사용해서 커널을 컴파일 하지 않으면 initrd는 필요 없는거 아닌가요?

galien의 이미지

주어진 정황상으로는 이유를 알 수 없네요.
혹시 SCSI 같은 버스/브릿지 류의 커널 컴파일 옵션을 다시 보시는 것도 좋을 것 같네요

vimania의 이미지

알려주신대로 kernel configuration을 다시 확인했습니다.

general setup
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
 
Bus optios --->
    [*] PCI support
    [*] PCI Express support
 
Device Drivers --->
    SCSI device support --->
        <*> SCSI disk support
    <*> Serial ATA --->
        <*> AHCI SATA support
 
File systems --->
    <*> Second extended fs support
    <*> EXT3 support
    <*> XFS support

제 생각으로는 커널 패닉에 관련된 부분이 이정도인거 같은데 혹시 제가 빠뜨린거 있나요?
HDD는 SATA방식입니다.
galien의 이미지

에러 메시지를 위아래 몇 줄 더 보여주시면 정보가 더 있을 것 같습니다..

vimania의 이미지

정확한 에러 메세지를 적어왔습니다.

VFS: Cannot open root device "sda4" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

available partitions을 보여주려는 부분인거 같은데 커널 패닉되면서 멈춰 버립니다.

많은 조언 부탁 드립니다.

송효진의 이미지

AHCI 가 맞는지 lspci 확인은 마치셨나요?

Device Drivers > ATA/ATAPI/MFM/RLL support > Support for SATA [x]
SCSI emulation support [*]
 
Device Drivers > ATA/ATAPI/MFM/RLL support > SCSI device support > SCSI disk support [*]
SCSI generic support [*]

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

vimania의 이미지

lspci 했더니 intel... AHCI... 라고 나오길래 선택했습니다.

그런데

SCSI emulation support [*]

이 옵션 꼭 들어가야 하나요?

올려주신거 중에 다른거는 다 했습니다.

송효진의 이미지

필요할겁니다.
sata 는 어쨌든 ide 기반인데 scsi 처럼 잡히죠.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

koseph의 이미지

우선 젠투에서는 가능한 genkernel을 이용해서 커널을 빌드하시는 게 가장 편리합니다. ^^

위에서 지적하신 XFS 관련 부분을 menuconfig를 통해 모두 선택하신 상태이시고,
genkernel로 커널을 빌드했다고 보구요.

grub option을 확인하셔야 할 것 같습니다.
현재 제가 쓰고 있는 머신의 grub.conf입니다.

title Gentoo Linux 2.6.27-gentoo-r4
root (hd0,1)
kernel /boot/kernel-genkernel-x86-2.6.27-gentoo-r4 root=/dev/ram0 real_root=/dev/sdb1
initrd /boot/initramfs-genkernel-x86-2.6.27-gentoo-r4

보시면 real_root=/dev/sdb1으로 옵션을 주었죠. 여기서, /dev/sdb1은 실제 / 파티션입니다.

/를 XFS 혹은 LVM으로 선택한 경우 initrd가 꼭 필요합니다.

There's always another way, dear.

---------------------------------
There's always another way, dear.

koseph의 이미지

저도 2.6.27-gentoo-r4를 컴파일하면서 경험한 것인데...

SATA 라이브러리와 PATA가 한 집으로 합쳤더군요.

장치명 mapping 구조가 바뀌었습니다.

저 같은 경우 IDE HDD 1개, SATA HDD 1개를 달았더니

예전같으면

/dev/hda
/dev/sda

로 인식이 되던것이....

/dev/hda -> /dev/sdb
/dev/sda -> /dev/sda

로 바뀌더군요. SATA가 먼저 mapping이 되는 방식입니다.

재밌는 것은 Gentoo LiveCD에서는 예전방식으로 그대로 인식을 한다는 겁니다. 커널 버전이 낮아서요.

이게 ROM BIOS 옵션하고 꼬이면 별것도 아닌게 디게 헛갈립니다.

참고하시구요.

XFS를 선택할 때 저는 항상 디버그 옵션을 제외하곤 모두 사용하는 걸로 합니다.
실제로 해당 기능을 쓰는 경우도 있어서요.

 <*> XFS filesystem support
         [*]   XFS Quota support
         [*]   XFS POSIX ACL support
         [*]   XFS Realtime subvolume support

Quota나 ACL, Realtime subvolume을 사용하실 계획이 전혀 없다면 선택하지 않으셔도 부팅과는 상관없습니다.

도움이 되시길 바랍니다.

There's always another way, dear.

---------------------------------
There's always another way, dear.

vimania의 이미지

genkernel 사용 안했습니다.

처음에 커널 컴파일할때 옵션을 모두 no 로 세팅한다음에

make allnoconfig

필요한거 추가하고 컴파일(make && make modules_install)했는데 커널 패닉이라서 질문을 올린건데
패닉생기는 .config파일 백업하고
make defconfig

한다음에 옵션 변경 안하고 그냥 컴파일 하니까 부팅이 되네요.

뭐가 빠져서 패닉이 생겼는지 어찌 알 수 있을까요?
SATA부분에서 옵션을 하나씩 지우면서 컴파일 해보면 알 수 있을거 같은데 엄청난 시간이 걸릴거 같습니다.
우분투 live cd 부팅 시간도 엄청 오래 걸리고 컴파일 시간도 오래걸리네요.

알아내는 좋은 방법이 있을까요?

make defconfig
make menuconfig

이렇게 해서 보면 필요 없어 보이는 옵션이 엄청 많습니다. 그런데 함부로 옵션을 지우기 겁나네요.

좋은 팁있으면 알려주세요.

koseph의 이미지

저는 우선 시스템 설정할 때 잦은 Live CD 부팅은 엄청 귀찮아 하는터라.....

우선, 커널 설정을 Live CD의 설정을 그대로 이용합니다.

zcat /proc/config.gz > /root/kernel_config
하여 이걸 이용해서 커널 컴파일을 먼저하고 이걸로 우선 부팅이 되도록 합니다.

부팅이 잘 되는 커널이미지를 확보한 후 커널 최적화를 하기 위해 이것 저것 만집니다.

이게 좀 더 실수를 줄이는 방법이더라구요.

말씀 하신대로 커널 옵션이 너무 방대해서.... 두개의 config 파일을 diff 해보는 것도 별 의미가 없겠습니다. ㅠㅠ

그래서, 일단 최소옵션으로 시작해서 사용하는 옵션을 일일이 다 설정하고 다니려면 시간 무지하게 까먹습니다. 오히려 시간이 더 많이 걸리시지 않나요?

저같은 경우에는 우선 불필요한 모듈을 모두 꺼버리구요.

이렇게 해도.... 커널 사이즈나 메모리 사용량이 일반 배포판보다 낮습니다.

저는 우선 이 정도에서 만족하는 편이어서...

genkernel을 제가 추천하는 이유는요.

우선 젠투에서 사용하는 /etc/make.conf 체계를 그대로 사용할 수 있어서 컴파일할 때 손댈 일이 확 줄어들기 때문입니다. 커널에도 CFLAGS를 그대로 적용해 주니까요.
젠투의 특성을 가장 많이 살릴 수 있는 유틸리티입니다.

그리고, 어떤 모듈이 빠졌는지를 보시는 방법은 부팅시에 커널 메시지를 잘 관찰하셨다가 해당 메시지를 가지고 커널 소스를 뒤지는 방법 밖에 모르겠습니다. 이것 역시 만만치 않은 작업이라 저는 그냥 앞서 설명드린 대로 default configuration -> 내가 확실히 아는 거 빼기 정도입니다.

시간도 귀중한 자원이니까요.

그리구, 커널 설정을 애써서 하나 만들어 놓으신 경우에도 커널 버전이 올라가면 없어지거나 통폐합되는 옵션들이 꽤 있어서 장기적으로 도움이 안되는 경우가 있더군요.

예전엔 커널 컴파일 옵션을 일일이 모았었는데.... 지금은 그냥 참조만 할 뿐입니다.

There's always another way, dear.

---------------------------------
There's always another way, dear.

vimania의 이미지

koseph님이 말씀하신대로 우선 부팅이 되게끔 하고 확실히 필요 없는 옵션을 제거하면 되겠군요.

좋은 팁 감사합니다.

댓글 달기

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