커널컴파일후 grub설정중..

Lodi의 이미지

/dev/hda
- hda2
-- hda5 fat32
-- hda6 fda32
-- hda7 102mb ext3
-- hda8 14998mb ext3 (root)
-- hda9 510mb linux-swap
hda1 ntfs

파티션이 이렇게 나뉘어져 있습니다.

방금 2.6.9를 커널 컴파일했습니다. 처음하는건데요. 설명서보고 잘따라했습니다.
grub을 쓰는데 /boot/grub/ment.lst 설정이 잘 안되네요.

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,6)
#          kernel /vmlinuz-version ro root=/dev/hda8
#          initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,6)/grub/splash.xpm.gz
 
 
title Red Hat Linux (2.4.20-8)
        root (hd0,6)
        kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ hdc=ide-scsi
        initrd /initrd-2.4.20-8.img
title DOS
        rootnoverify (hd0,0)
        chainloader +1
 
title Red Hat Linux (2.6.9) !
        root (hd0,6)
        kernel /vmlinuz-2.6.9 ro root=LABEL=/

Red Hat Linux (2.6.9) ! 가 새로 제가 추가한건데요..

root (hd0,6)이면 hda7인데 왜 hda8을 가르키지 않나요?? root를 가르키라고 봤는데..
그리고 밑에 kernel vmlinuz-2.6.9 파일도 자꾸 못찾는다고 나오네요.

[root@localhost root]# ls /boot
boot.b           initrd-2.4.20-8.img  module-info           System.map-2.6.9
bzImage-2.6.9    kernel.h             module-info-2.4.20-8  vmlinux-2.4.20-8
chain.b          lost+found           os2_d.b               vmlinuz
config-2.4.20-8  message              System.map            vmlinuz-2.4.20-8
grub             message.ja           System.map-2.4.20-8   vmlinuz-2.6.9

있는데말이죠.. :cry:

아 마지막으로 컴파일 다 하고나면 위에 initrd /initrd-2.4.20-8.img 처럼.
2.6.9용도 새로나와야 되는거 아닌가요? 그파일은 어디에있나요? 그리고 뭐에 쓰이는 것인지.. 궁금합니다.
커널컴파일할때 체크를 해줘야 만들어진다고 들었는데 그 파일도 안보일뿐더러 find해도 없네요.

답변부탁드립니다. 꾸벅.
:oops: [/code]

zilitwo의 이미지

일단 grub 에서.. 확인하는 방법은..

#grub

이렇게 해서 grub 쉘을 띄웁니다.

그리고

grub> root (hd0,6)

이렇게 하시면 밑에 파티션 타입하고 그런게 나오는데요..
거기서 맞나 대충 확인하시고 파일 확인은

grub> kernel /<이상태에서 tab을 눌러보시면..>

파일목록이 표시가 됩니다.
grub> root 에서 파티션이 잘못 잡혔다면 파일이 없겠지요.
제대로 잡으셨다면 파일 목록이 나타날 것입니다.

잘못잡혔다면 숫자를 바꿔가면서 한번 해보세요;

grub 에서 fat 도 다 지원합니다 ^^

그리고 initrd 에 대한건

mkinitrd 란 프로그램이 있는데 이게 initrd 파일을 만들어 주는 프로그램입니다.

# mkinitrd initrd.img 2.6.9

이런식으로 하시면 2.6.9 커널용 initrd 가 만들어집니다. ^^

-----------------------------------
속좀 썩이지 마라~~ 잉???

zilitwo의 이미지

한마디 덧붙이면..

제 경우에는

kernel /vmlinuz root=[]

[] 부분에 실제 루트로 마운트될 루트파티션을 적어줬는데..
위에처럼 적어줘도 상관없는건지..
kernel 뒤에 붙은 root 가 무슨 역할을 하는거죠? -_-;

-----------------------------------
속좀 썩이지 마라~~ 잉???

jailbird의 이미지

zilitwo wrote:
한마디 덧붙이면..

제 경우에는

kernel /vmlinuz root=[]

[] 부분에 실제 루트로 마운트될 루트파티션을 적어줬는데..
위에처럼 적어줘도 상관없는건지..
kernel 뒤에 붙은 root 가 무슨 역할을 하는거죠? -_-;

커널에게 system root가 어느 파티션인지 알려주는 역할을 하는 것으로 알고 있습니다. LABEL=/ 처럼 사용하면 fstab에서 해당 파티션 값을 돌려주는 것이니, 실제 루트로 적어주는 것과 마찬가지일 것입니다.

jailbird의 이미지

Lodi wrote:
root (hd0,6)이면 hda7인데 왜 hda8을 가르키지 않나요?? root를 가르키라고 봤는데..

grub 명령어중 root 명령어는 grub root를 가리키는 것으로 알고 있습니다.
grub과 관련된 파일들이 들어있는 파티션이죠.
메뉴얼에서는 grub root와 system root의 혼동을 피하기 위해서 /boot를 다른 파티션에 설치하는 것을 지양하라고 권했던 것으로 기억합니다.
grub 명령어들이 파일을 찾을 때 특별한 지정이 없으면 이 grub root를 기준으로 해서 그 파티션에서 찾아갑니다.
님의 경우 /boot/grub 디렉터리 및 이하 파일, 그리고 커널 및 부팅관련 파일들이 (hd0,6)에 설치되어 있음을 보시면 이해하시기 쉬우리라 생각합니다.

Lodi wrote:
그리고 밑에 kernel vmlinuz-2.6.9 파일도 자꾸 못찾는다고 나오네요.

정확한 에러메세지가 무언인지...
제 어두운 눈으로는 initrd가 없는 것을 제외하고는 별 이상이 없는 듯한데요.
커널이 initrd를 사용하도록 컴파일 되었는데, initrd를 생성하지 않으신 것은 아닌지 추측해봅니다. 한 번 만들어보세요.
Lodi의 이미지

zilitwo wrote:

grub> root (hd0,6)

이렇게 하시면 밑에 파티션 타입하고 그런게 나오는데요..
거기서 맞나 대충 확인하시고 파일 확인은
......

그리고 initrd 에 대한건

mkinitrd 란 프로그램이 있는데 이게 initrd 파일을 만들어 주는 프로그램입니다.

# mkinitrd initrd.img 2.6.9

이런식으로 하시면 2.6.9 커널용 initrd 가 만들어집니다. ^^

답변 감사합니다. 아직도 안되서 질문이 몇개 더 있는데요.
먼저 grub에서 grub의 쉘로 들어갔습니다.
root(0,5) root(0,6) root(0,7) 다 눌러줘봤는데.
앞에 한두개는 fat.. 아마 윈도 그쪽이겠지요.
그리고 6부터인가.. vfs뭐라고 나왔던거같네요.. 파일시스템이 안맞아서 부팅이 안될때도 있었는데.. 정확한 오류는 잘 생각이 안나네요.

그리고 mkinitrd initrd.img 2.6.9 하면
/boot 에 initrd.img 라는 2.6.9의 initrd가 생기는건가요? 생기는건 같은데.. 2.6.9라고만 하면 어디서 그렇게 읽어와서 바로 생기는지.. 궁금해서요..
아직 부팅이 안되기때문에 잘된건지도 잘모르겠군요.

대충대충 다 고치고서 부팅을 시도햇습니다. 이번엔 오류메시지를 적어왔습니다.

md: ... autorun DONE.
VFS: Cannot open root device "LABEL=/" or unknown -block (0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknow-block(0,0)

라고 뜹니다.

root=/LABEL/라고 써있을텐데요. 그부분을
root=hda5, root=hda6, root=hda7로 바꿔줘도
같은 메시지가 뜹니다. "LABEL=/"가 저것들로 바뀔뿐이죠...

음.. 답변부탁드려요....

jailbird의 이미지

Lodi wrote:

md: ... autorun DONE.
VFS: Cannot open root device "LABEL=/" or unknown -block (0,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknow-block(0,0)

라고 뜹니다.

root=/LABEL/라고 써있을텐데요. 그부분을
root=hda5, root=hda6, root=hda7로 바꿔줘도
같은 메시지가 뜹니다. "LABEL=/"가 저것들로 바뀔뿐이죠...

음.. 답변부탁드려요....

처음 말씀하신 대로 파티션구성이 되어있다면,

root (hd0,6)
kernel /vmlinuz-2.6.9 ro root=/dev/hda8

또는 

kernel (hd0,6)/vmlinuz-2.6.9 ro root=/dev/hda8

이 되지 않을까요?
Lodi의 이미지

root (hd0,6) 
kernel /vmlinuz-2.6.9 ro root=/dev/hda8 

라고 되있는데 안됩니다 ㅠㅠ
밑에 initrd도
initrd /initrd.img 붙여줘도 같습니다.. ㅠㅠ

jailbird의 이미지

Lodi wrote:

라고 되있는데 안됩니다 ㅠㅠ
밑에 initrd도
initrd /initrd.img 붙여줘도 같습니다.. ㅠㅠ

무슨 에러로 안되는지는 말씀을 안하시는군요.

같은 에러로 안되는 것인지 확인하기 위해서 실험을 해 보았습니다.

fdisk -l /dev/hda

Disk /dev/hda: 255 heads, 63 sectors, 4963 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1        64    514048+   6  FAT16
/dev/hda2   *        65      1037   7815622+   7  HPFS/NTFS
/dev/hda3          1038      3104  16603177+   5  Extended
/dev/hda4          3105      4963  14932417+   c  Win95 FAT32 (LBA)
/dev/hda5          1038      1099    497983+  82  Linux swap
/dev/hda6   *      1100      2072   7815591   83  Linux
/dev/hda7          2073      3104   8289508+   7  HPFS/NTFS

/dev/hda1에는 DOS를 설치하였고, 이 곳에 /boot/grub를 만들어 grub을 약간 수정 및 설치하였습니다.
/dev/hda6에는 Debian Woody를 설치하였습니다. 따로 /boot 파티션은 만들지 않았습니다.
# For booting Linux
title  GNU/Linux
root (hd0,0)
kernel (hd0,5)/vmlinuz root=/dev/hda6
savedefault

이것은 menu.lst 파일의 내용 중 일부입니다. 물론 정상적으로 부팅되는 설정입니다.
커널은 (hd0,5)/boot/에 설치되어 있으며 (hd0,5)/vmlinuz라는 이름으로 링크되어 있습니다.
커널이 initrd를 사용하지 않는 배포판 그대로여서 initrd 설정은 필요없었습니다.

여기서 kernel관련 설정 한 줄을 다음과 같이 변화시키니 상기의 님과 같은 에러가 출력되는군요.

"kernel (hd0,5)/vmlinuz ro root=LABEL=/"일 경우,

VFS: Cannot open root device 00:00
Kernel panic: VFS: Unable to mount root fs on 00:00

root=/dev/hda7과 같이 다른 파티션을 가리키게 수정하면
에러의 내용은 같고 뒤의 00:00 부분만 다른 숫자로 출력되더군요.
제 경우 root=LABEL=/ 설정시 에러가 난 것은 배포판에 따른 특성으로 알고 있습니다.
이 설정은 Redhat 계열에서는 /etc/fstab에서 이 alias를 지정하며 이와 연동해서 사용되는 것으로 알고 있는데,
제 경우엔 Debian이라 그런 설정이 없기 때문이겠죠.

이상의 실험으로 menu.lst 파일 내에서
kernel에게 root 변수를 돌려주는 부분이 잘못 되어있을 경우에
상기와 같은 VFS 에러가 나타난다고 추측할 수 있었습니다.
역으로, VFS 에러가 나타나지 않으면 root 변수 부분은 제대로 된 것이라고 할 수 있겠죠.

root 변수를 제대로 넣었어도 같은 에러가 발생했다면,
간단한 철자나 문법 문제일 수도 있겠고, 제가 모르는 다른 문제일 수도 있을 것입니다.
이 경우엔 제가 더 이상 답변을 드릴 능력이 없는 것이겠죠.
어떤 경우이든 같은 에러가 나오느냐, 아니냐는 중요한 관건이 될 것입니다.

다시 한 번 에러 메세지를 잘 살펴보세요.
같은 류의 메세지라면 root 변수가 잘못된 것이니 이를 수정하면 되겠지만,
다른 메세지라면 앞서의 문제는 해결한 것이니
그 메세지를 기준으로 다시 노력해야겠죠.
그럼 성공하시길 기원합니다.

jailbird의 이미지

http://marc.free.net.ph/message/20040428.024535.b600e7e7.html

위의 내용을 보면 상기 에러 메세지에서의 대부분의 답변이
root=/dev/hd?? 부분을 수정하라는 식인데,

페도라에서 initrd를 사용할 경우
기본값으로 되어있는 RAM disk 용량 4096 이 너무 작아서 발생하는 경우도 있다고 하는군요.
커널 컴파일시 8192로 하는 것이 적절하다고 말하는 내용입니다.

이 외에도 커널 컴파일시 CONFIG_PARTITION_ADVANCED 지원 여부, INCLUDE IDE/ATA disk Support 지원 여부 등에 따라서도 비슷한 증상이 있는 듯하군요.

okmsj의 이미지

저도 처음 질문하신 분과 동일한 에러가 생겼습니다.

root=LABEL/ 로 해서 부팅이 안 됐었습니다.

그리고 initrd가 없어서 답변처럼 만들었구요...

저의 경우 hda8로 고쳐서 부팅이 되는데요

부팅이 되고 나면 xwindow로 안 넘어가고 텍스트 창에서 그대로 있습니다.

이때 나오는 에러 메시지는 INIT: ID "x" respawning too fast : disabled for 5 minutes 라고 나옵니다.

루트로 로긴하면 에러메시지가 다음처럼 뜹니다.

-bash: id: command not found
-bash: [: =: unary operator expected
-bash: id: command not found
-bash: dircolors: command not found
...
...
...

이런 식으로 뜨는데 무엇이 문제인지 모르겠네요..

^^*

okmsj의 이미지

위의 문제를 해결했습니다. ^^*
저는 레드햇 9를 쓰는데요 여기서에 root=LABEL/은 잘 안 먹는다고 하더라구요... 이건 나중 문제고.. ^^

1. root를 가르키는 하드가 제대로 설정이 안 되어 있나봐요...
요건 제대로만 가르키면 에러가 안 생길 것 같지만 일단 저는
root=/dev/hda9로 수정했습니다.
요건 위의 NOTICE에서 참고했고 /(/root) 하드를 찾을려면 간단하게 mount를 하시면 / 하드를 찾을 수 있을 껍니다.

2. source를 압축해서 푼 다음에 make menuconfig 나 xconfig를 하잖아요... 요기가 문제였습니다.
안에 디렉토리에서 File system으로 들어간 후 Ext3 journalling file system support를 선택을 해야합니다. 요게 체크가 안 되어 있기 때문에 EXT3 인식을 제대로 못해서 부팅이 안 된 거였습니다. 맨 처음 질문하신 분도 여기가 체크 되었는지 확인해 보세요... ^^*

저는 새로 커널을 깔았는데 module이 하나도 안 올라가 있네요 ㅡㅡ;; 오늘부터 요걸 잡아야 겠네요... .config를 고대로 가져오면 될라나... 흠... 암튼 고생은 했지만 소득은 있었네요.. ^^*

^^*

댓글 달기

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