[해결]커널컴파일후 grub 설정 잘못해서 부팅이 안됩니다
젠투사용자입니다.
원래 젠커널 설치해서 잘쓰고 있었는데 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
잘 살펴봤는데
잘 살펴봤는데 부팅시에 boot 파티션이 오토 마운팅이 안됩니다.
grub 콘솔모드에서 커널이미지를 찾을 수 없다는 게, /boot 파티션이 마운트되지 않아서 그런 것이었어요.(커널 이미지들을 모두 /boot 파티션 안에 보관중입니다)
/etc/fstab 에는 다음과 같이 되있습니다
boot 파티션 오토 마운팅을 하려면 무엇을 더 손 봐줘야 할까요? boot 파티션만 알아서 잘 마운팅 되면, 부팅이 문제없이 잘 될 것같습니다.^^;;
option을 noauto로 해놓으셨으니.....
당연히 자동으로 마운트가 안되는 게 당연합니다.
genkernel을 사용해서 커널 컴파일링 하시면 자동으로 /boot까지 마운트해서 커널 이미지를 빌드합니다.
만약 현재 설정에서 noauto 대신에 auto를 넣어주시면 자동으로 마운트 합니다.
genkernel 사용방법은 그다지 어렵지 않습니다.
오히려 커널 옵션 설정하시는 부분이 시간을 많이 소모하지요. 문서를 차분히 보시면 누구든 할 수 있습니다.
그리고 grub의 설정 부분은 파일의 위치와 이름만 명확하게 지정하시면 거의 문제없이 작동합니다.
grub 자동 설치 보다는 수동으로 설치해 보세요. 그게 더 직관적입니다.
다음은 젠투를 첫번째 하드디스크에 설치하고 #1 파티션에 /boot를 따로 설정한 경우입니다.
(여기서 tab키를 치면 파일시스템의 목록이 자동으로 나옵니다)
만약 /boot를 별도로 생성하지 않았다면 / 파티션의 번호를 root(hd0,n)과 같이 (여기서 n은 / 파티션의 번호) 설정해 주세요.
다음으로 setup 명령을 이용하여 MBR에 grub 부트로더 이미지를 기록합니다.
---------------------------------
There's always another way, dear.
---------------------------------
There's always another way, dear.
열심히 구글링하다가
열심히 구글링하다가 겨우 찾았습니다
제가 boot 파티션을 마운트 하지 않은상태에서 /boot 디렉토리에 잡다한 파일을 좀 넣었나봅니다. 그 파일들 다 지워주니까
오토 마운팅, 부팅 다 잘되더군요 ㅡㅡ;;
grub 설정도 koseph 님이 말씀해주신대로 grub> root(hd0,1),grub> setup(hd0) 해서 다 잘 되었습니다.^^감사합니다
댓글 달기