[해결]커널컴파일후 grub 설정 잘못해서 부팅이 안됩니다

hwiba의 이미지

젠투사용자입니다.
원래 젠커널 설치해서 잘쓰고 있었는데 ati 그래픽 드라이버 설치 문제로 수동 커널 컴파일을 하게 됬습니다.(젠커널 이용 방법을 잘 몰라서요) 컴파일 끝내고 grub.conf 에 root 파일시스템 경로, boot 파티션 경로들 입력 후 재부팅을 해봤는데 이게 커널 패닉이 나는겁니다. 기존에 사용하던 젠커널로는 부팅 잘 되더군요. 그래서 젠투핸드북을 살펴봤습니다.

제가 # grep -v rootfs /proc/mounts > /etc/mtab , # grub-install --no-floppy /dev/sda 과정을 빼먹은 모양이더군요.
그대로 써주고 나서(여기서 부터 잘못 된 것 같아요. 다시 복구하는 방법이 없을지) 다시 부팅해봤습니다. 이번엔 grub 콘솔모드로 부팅이 되네요. 핸드북을 제대로 읽어보니
# grep -v rootfs /proc/mounts > /etc/mtab
이건 boot 파티션을 따로 만들어 주지 않은 유저한테나 해당하는 것이라고 하데요 ㅡㅡ;;그래서 일단 /etc/mtab 안에
rootfs를 포함하는 한줄을 제거했습니다.(live cd를 이용했습니다.부팅이안되서) # grub-install --no-floppy /dev/sda 도 다시 해줬구요. 그런데도 자꾸 grub 이 콘솔모드로 뜨네요.

어쩔 수 없이 콘솔모드로 부팅하는법을 찾아봤습니다. 일단 부팅부터 하고 보자는 심정에.. grub 명령어인
kernel [커널이미지]
initrd [initrd 이미지]
boot
순서대로 하면 부팅이 된다고 들었는데 이 kernel 명령어가 커널이미지를 읽지를 못하네요. (그런 파일이 존재하지 않는다합니다)

어떻게 하면 다시 정상적인 부팅을 할 수 있을까요?뭔가 감이라도 잡히는 부분이 있으면 말씀해 주시면 고맙겠습니다. 큰 도움이 될 것 같아요.

일단 제가 잘못 됬다고 생각하는 부분인 /etc/mtab 파일 내용 입니다

/dev/sda4 / xfs rw,noatime,attr2,noquota 0 0
/proc /proc proc rw,nosuid,nodev,noexec 0 0
sysfs /sys sysfs rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,nosuid,size=10240k,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0
usbfs /proc/bus/usb usbfs rw,nosuid,noexec,devgid=85,devmode=664 0 0
/dev/sda2 /boot ext2 rw,noatime 0 0

grub.conf

default 0
timeout 30
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
 
title Gentoo Linux 2.6.27-r8(genkernel)
root (hd0,3)
kernel /boot/kernel-genkernel-x86-2.6.27-gentoo-r8 root=/dev/ram0 init=/inuxrc ramdisk=8192 real_root=/dev/sda4 udev
initrd /boot/initramfs-genkernel-x86-2.6.27-gentoo-r8
 
title Gentoo Linux 2.6.27-27-r5 (rescue)
root (hd0,3)
kernel /boot/kernel-2.6.27-2009.2.23 root=/dev/sda4
 
title Windows XP
rootnoverify (hd0,0)
makeactive
chainloader +1
hwiba의 이미지

잘 살펴봤는데 부팅시에 boot 파티션이 오토 마운팅이 안됩니다.
grub 콘솔모드에서 커널이미지를 찾을 수 없다는 게, /boot 파티션이 마운트되지 않아서 그런 것이었어요.(커널 이미지들을 모두 /boot 파티션 안에 보관중입니다)
/etc/fstab 에는 다음과 같이 되있습니다

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

boot 파티션 오토 마운팅을 하려면 무엇을 더 손 봐줘야 할까요? boot 파티션만 알아서 잘 마운팅 되면, 부팅이 문제없이 잘 될 것같습니다.^^;;

koseph의 이미지

당연히 자동으로 마운트가 안되는 게 당연합니다.

genkernel을 사용해서 커널 컴파일링 하시면 자동으로 /boot까지 마운트해서 커널 이미지를 빌드합니다.

만약 현재 설정에서 noauto 대신에 auto를 넣어주시면 자동으로 마운트 합니다.

genkernel 사용방법은 그다지 어렵지 않습니다.

오히려 커널 옵션 설정하시는 부분이 시간을 많이 소모하지요. 문서를 차분히 보시면 누구든 할 수 있습니다.

그리고 grub의 설정 부분은 파일의 위치와 이름만 명확하게 지정하시면 거의 문제없이 작동합니다.

grub 자동 설치 보다는 수동으로 설치해 보세요. 그게 더 직관적입니다.

다음은 젠투를 첫번째 하드디스크에 설치하고 #1 파티션에 /boot를 따로 설정한 경우입니다.

$ grub
grub> root (hd0,

(여기서 tab키를 치면 파일시스템의 목록이 자동으로 나옵니다)

 Possible partitions are:
   Partition num: 0,  Filesystem type is reiserfs, partition type 0x83
   Partition num: 1,  Filesystem type is ext2fs, partition type 0x83    <---- 요기가 /boot
   Partition num: 2,  Filesystem type unknown, partition type 0x82
   Partition num: 4,  Filesystem type is xfs, partition type 0x83
   Partition num: 5,  Filesystem type is xfs, partition type 0x83
   Partition num: 6,  Filesystem type unknown, partition type 0x8e
 
grub> root (hd0,1)

만약 /boot를 별도로 생성하지 않았다면 / 파티션의 번호를 root(hd0,n)과 같이 (여기서 n은 / 파티션의 번호) 설정해 주세요.

다음으로 setup 명령을 이용하여 MBR에 grub 부트로더 이미지를 기록합니다.

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+16 p (hd0,1)/boot/grub/stage2 /boot/grub/
menu.lst"... succeeded
Done.
grub> quit
그럼, 즐 젠투리눅싱 하시길....
---------------------------------
There's always another way, dear.

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

hwiba의 이미지

열심히 구글링하다가 겨우 찾았습니다
제가 boot 파티션을 마운트 하지 않은상태에서 /boot 디렉토리에 잡다한 파일을 좀 넣었나봅니다. 그 파일들 다 지워주니까
오토 마운팅, 부팅 다 잘되더군요 ㅡㅡ;;
grub 설정도 koseph 님이 말씀해주신대로 grub> root(hd0,1),grub> setup(hd0) 해서 다 잘 되었습니다.^^감사합니다

댓글 달기

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