rdev 해 보신분 계신가요?
우선 아래 부팅디스크 관련 질문에 답 주신 분들 모두 감사합니다.
혹시 rdev 써 보신 분들 계신가요?
우선 제 하드가 다음과 같습니다. (fdisk 로 본 결과)
hda1 : win95 fat32
hda2 : 리눅스 스왑
hda3 : 리눅스
hda4 : win95 fat32 (LBA)
여기에서 리눅스 즉, hda3 으로 부팅하였습니다.
그리고
rdev /boot/vmliuz 라고 해 보았더니
Root device /dev/hda2 라고 나오더군요.
설치는 예전 와우 리눅스 7.1 로 깐 것입니다.
왜 /dev/hda2 라고 되어 있을까요?
마운트 결과나 /etc/fstab 화일을 보면 루트가 당연히 /dev/hda3 이라고 되어 있습니다.
그리고 위 리눅스 상에서 설치 디스켓을 만들어(syslinux 이용)
rdev /dev/fd0 라고 해 보았더니
Root device 0x3a82 라고 나오고
/dev/fd0 를 /mnt/floppy 에 마운트 한 후에
rdev /mnt/floppy/vmlinuz 라고 하면
역시 Root device /dev/hda2 라고 나옵니다.
(물론 이 디스켓으로 부팅 하면 당연히 /dev/hda3 이 루트로서 마운트 됩니다.)
혹시 이런 기이한 현상에 대해서 혹시 아시는 분 안계신가요?
그러니까 질문은
1. rdev /boot/vmliuz 하였을때 왜 /dev/hda3 이 아니라 /dev/hda2 가 나오는가?
2. rdev /dev/fd0 하였을때 나오는 결과 값 0x3a82 는 무슨 의미인가?
요렇게 두가지입니다. 그럼.....
Re: rdev 해 보신분 계신가요?
rdev값에 무관한, GRUB나 LILO등의 부트로더를 사용했기 때문입니다.
부트로더는 rdev의 root device세팅과 무관하게 root=/dev/hda3와 같은 인자를 커널에 전달하죠.
syslinux가 설치되었을 경우는 /dev/fd0 그 자체는 파일시스템이고 커널이 아니기 때문입니다.
만약에 dd if=vmlinuz of=/dev/fd0라고 해서 파일시스템과 무관하게 /dev/fd0는 커널만 포함하는 (혹은 커널+램디스크) 부트디스크를 만들었다면 rdev /dev/fd0라고 명령을 치면 제대로 된 값을 보여줄 것입니다.
그러나, syslinux가 설치되어 있을 경우는 /dev/fd0가 커널이 아니므로, rdev가 보여주는 값 0x3a82는 쓰레기값 (syslinux 부트섹터의 특정 주소에 들어있는 값)이겠죠.
/dev/fd0 그 자체가 dd로 얻은 커널 그 자체일 경우는 /dev/fd0를 rdev로 조정하여 부트디바이스를 설정하게 됩니다 (rdev /dev/fd0 /dev/hda3와 같은 식으로)
make bzImage에서 얻어지는 실제 커널은, 부트섹터를 포함하고 있고, 커널의 부트섹터에 있는 ROOT_DEV값을 rdev가 제어하는 것입니다.
arch/i386/boot/bootsect.S 파일을 참조해 보세요.
온갖 참된 삶은 만남이다 --Martin Buber
박원규님 감사합니다..꾸벅.그러니까 결론은 lilo 등 부트로더를
박원규님 감사합니다..꾸벅.
그러니까 결론은 lilo 등 부트로더를 사용하기 때문에 rdev 값(루트위치값)이 덮어 진다는 것이군요...
음... 이와 관련된 여러가지 의문점들이 있었는데 해결되는 듯 보이는군요..
감사합니다..
댓글 달기