부트 디스크 제작할때 안됩니다. 꼭좀 부탁드립니다.

안녕하세요
제가 이곳에 시스템 관리 -> 부팅과정 -> Bootdisk HOWTO (김현종) 문서
를 보고
부트 이미지를 만들어서 부팅 디스크를 만드는 것을 하다가 안되는 것이
있어서
이렇게 질문을 올립니다.
제가 만들려는 부팅 디스크는 플로피가 아니구요 DOM(DISK ON MODULE) 이
라고 하는
64메가 짜리 메모리 입니다. (하드디스크처럼 IDE 에 꽃아서 쓰구요 사용
하는건
하드랑 똑같습니다)
이곳에다가 루트파일시스템을 압축해서 이미지로 만들어 부팅시에 이 이
미지를
램디스크에 풀어서 램디스크가 루트 파일 시스템으로 부팅이 되게끔 하려
고 하는데
잘 안되네요...
참고로 압축 이미지 없이 바로 필요한 파일들만 DOM 상에 올려서 lilo 세
팅하고 부팅하면
잘 돌아 갑니다.
1. lilo 설치하기
문서에 6장을 보면 커널 이미지 담기라고 해서 lilo 를 설정해 주는 부분
이 있습니다.
> ==============================================================
먼저, 파일시스템의 크기를 얼마로 해야할지 알아내야 합니다. 만들어낸
커널의 블록 단위 크기가 얼마인지 확인하고("ls -s KERNEL" 명령으로
알수 있습니다), 거기에 50 을 더합니다. 50 블록은 inode 와 그 밖의
몇 가지 파일들에 필요한 대략적인 크기입니다. 원하신다면 정확히 계산
해
볼 수도 있습니다. 아니면 그냥 50 을 사용하세요. 두장의 디스켓으로
만든다면 첫번째 디스크는 어쨌든 커널전용으로만 사용될테니 이 크기
를
더 넉넉하게 잡아도 좋습니다. 계산한 숫자를 KERNEL_BLOCKS 라고 부르
기로
합시다.
플로피 디스켓을 드라이브에 넣고 그 위에 ext2 커널 파일시스템을 만듭
시다
(편의상 드라이브의 이름은 /dev/fd0라 가정합니다).
mke2fs -N 24 -m 0 /dev/fd0 KERNEL_BLOCKS
"-N 24 " 는 inode 수를 24 개로 설정합니다. 이 파일시스템에 필요한
inode 수는 24 개면 됩니다.그 다음, 이 파일시스템을 마운트하고
lost+found 디렉토리를 삭제한 후 LILO 를 위한 dev 와 boot 디렉토리를
만듭니다.
mount /dev/fd0 /mnt
rm -rf /mnt/lost+found
mkdir /mnt/{boot,dev}
그 다음, 디바이스 /dev/null 과 /dev/fd0 를 만듭니다. 디바이스 넘버
를
찾는 대신 그냥 당신 시스템의 하드디스크로부터 -R 옵션을 주어 복사해
오면 됩니다. cp -R /dev/{null,fd0} /mnt/dev
LILO 는 그 부트로더인 boot.b 의 복사본을 필요로 하는데, 이 boot.b
는 하드디스크에서 가져오면 됩니다. 보통, 이 파일은 /boot 디렉토리에
있습니다.
cp /boot/boot.b /mnt/boot
마지막으로, 앞 절에서 만든 LILO 설정파일과 커널을 플로피로 복사해 넣
습니다.
두 가지 모두 루트 디렉토리에 들어갑니다.
cp bdlilo.conf KERNEL /mnt
이제 LILO 가 필요로 하는 모든 것들이 커널 파일시스템에 들어갔으므로
준비는
모두 끝났습니다. LILO 의 -r 플래그는 부트로더를 다른 루트에 설치할
때 사용됩니다.
lilo -v -C bdlilo.conf -r /mnt
LILO가 아무 에러도 없이 제대로 동작했다면 커널 파일시스템은 다음과
비슷한
모습이 될 것입니다.
total 361
1 ?rw?r??r?? 1 root root 176 Jan 10 0722
bdlilo.conf
1 drwxr?xr?x 2 root root 1024 Jan 10 0723 boot/
1 drwxr?xr?x 2 root root 1024 Jan 10 0722 dev/
358 ?rw?r??r?? 1 root root 362707 Jan 10 0723 vmlinuz
boot
total 8
4 ?rw?r??r?? 1 root root 3708 Jan 10 0722 boot.b
4 ?rw??????? 1 root root 3584 Jan 10 0723 map
dev
total 0
0 brw?r????? 1 root root 2, 0 Jan 10 0722 fd0
0 crw?r??r?? 1 root root 1, 3 Jan 10 0722
null
>===================================================================
==========
이런 내용 인데요..
이거 제대로 안되던데요...
우선 lilo.conf 파일을 만들어서 설정 다 맞추고
다음에 위에 설명대로 다 한다음 마지막으로
lilo -v -C bdlilo.conf -r /mnt
부분을 실행하면 lilo 가 정상적으로 실행되거든요..
근데 이렇게 하고 부팅을 하면 DOM 설정에 맞춘 lilo 내용이
하드디스크 (현재 부팅된 파일시스템)의 MBR에 덮어 써 버렸더군요
결국 하드디스크로 부팅하면 커널 패닉 (루트파일시스템을 못찾음) 이라
고
떠버리고, DOM 에는 lilo 가 안올라간 상태 그대로 입니다.
혹시나 해서 chroot 로 마운트된 DOM 으로 루트를 바꾸고 lilo 를 실행해
도
마찬가지구요.
방법이 없네요...
현재 부팅된 파일시스템 말고 다른 파일시스템에 lilo 를 설치하는 방법
이 없나요?
왜 저는 저렇게 하면 부팅된 파일시스템의 MBR에만 자꾸 쓰는지 모르겠습
니다.
2. lilo 없이 커널만 담기
>===================================================================
==========
LILO 를 사용하지 않겠다면 dd 명령을 써서 커널을 부트디스크에 담아야
합니다.
% dd if=KERNEL of=/dev/fd0 bs=1k
353+1 records in
353+1 records out
위의 예에서 dd 는 353 개의 완전한 레코드와 1개의 부분레코드를 써넣었
습니다.
따라서 커널은 디스켓 앞부분의 354 블록들을 점유하게 됩니다. 이 숫자
를
KERNEL_BLOCKS 라고 부르겠으니 기억해 두십시오. 다음 절에서 사용할 것
입니다.
마지막으로 루트디바이스를 디스켓 자체로 설정한 후, 루트가 읽기/쓰기
가
가능하게 로드되도록 설정합시다.
rdev /dev/fd0 /dev/fd0
rdev -R /dev/fd0 0
두 번째 줄의 rdev 명령에서 대문자 -R 을 써야함에 주의하세요.
>===================================================================
=========
위와 같은 내용인데요..
저렇게 해도 부팅 안되던데요?
dd if=/boot/vmlinuz-2.4.2-2 of=/dev/hdc1 bs=1k
하면 정상적으로 써 집니다.
그리고 rdev 부분도 모두 에러없이 잘 되고요..
근데 저렇게 하고 나서 부팅을 하면 부트 시스템을 찾을수 없다고만
나옵니다.
커널을 저렇게 바로 쓰기만 하면 부팅이 되는가요?
아무래도 부트 로더가 MBR에 있어야 하지 않나요?
그런 얘기는 언급이 없네요..
물론 저 내용 다음에 나오는 압축된 루트파일 시스템 쓰는 부분도 모두
한 상태로 해 봤습니다.
이거 꼭 필요한거라 해야 하는데 1주일 동안 해결 안되서
끙끙 거리고 있습니다.
ramdisk Word 설정 부분도 제대로 된건지 확실히 알 수 없어서
찜찜하고...
참... 마지막으로 또 한가지 질문이요.. (^^;; 참 많죠)
mkinitrd 라는거 있죠?
어디선가 보니깐 ramdisk 로 이미지를 로딩하는데 mkinitrd 로
initrd 이미지 파일을 만드는 것을 봤는데요
mkinitrd /boot/initrd-2.4.2-2.img 2.4.2-2
이렇게 사용법이 있는데... (커널 버전은 물론 제 시스템에 맞춘거구요)
이거 실행하면 현재 모든 루프백 디바이스가 사용중이라 할 수 없다고만
나오네요
분명 /dev/initrd 라는 파일두 있는데....
룹백 디바이스가 없어서 그런가요? 커널 컴파일 해서 사용하도록 설정 해
주어야 가능한건지... 아니면 룹백 디바이스를 사용하지 않고 실행할 수
있는
방법은 없는지 궁금합니다.
그럼 꼭 답변 부탁드립니다. ^^;
댓글 달기