글 수 90
2007.03.08 17:16:34 (*.138.143.52)
44410
1. 개요
이 강의는 이지 보드(ez-x5에서 테스트)에서 제공된 램 디스크를 확장하기 위한 작업에 대하여 기술한 문서 이다.
2. 램디스크 이미지 수정하기
이지보드에서 제공된 램 디스크의 크기는 12M 짜리로 설정되어 있다.
이 램 디스크의 크기를 수정하기 위해서는 기존 램디스크의 이미지를 마운트 하여 화일을 집어 넣는 것으로 불가능 하다.
램디스크를 수정하기 위해서는 램 디스크 이미지 화일을 재 작성하여야 한다.
이때 새로운 이미지를 작성할때는 기존의 램 디스크 이미지를 이용하여 재 작성하여야 한다.
작업 과정은 다음과 같다.
여기서 설명한 방식은 loop 디바이스를 이용하여 작성 한다.
만약 커널에서 loop 형식의 디바이스를 지원하지 않는다면 이 방식으로 수행할 수 없다.
loop를 지원하는지 체크는 다음과 같은 방식으로 한다.
# dmesg | grep loop
loop: loaded (max 8 devices)
위와 유사한 내용이 보이면 loop를 지원하는 커널이며, 만일 보이지 않을경우 커널에서 loop를 사용 할 수 있게끔 하려면, 커널에서 다음의 부분을 활성화 시켜 준다.
Block devices --->
<*> Loopback device support
2.1 기존의 램 디스크 이미지를 마운트 하기
설명을 편하게 하기 위하여 다음과 같은 환경을 갖추었다고 가정.
기존의 ramdisk 이미지가 ramdisk.gz 란 화일명 이고, /tmp/ramdisk/ramdisk.gz 에 존재 한다고 합시다.
이 /tmp/ramdisk 디렉토리로 이동 해야 한다.
# cd /tmp/ramdisk/
압축된 이미지 화일을 풀고 나서,
# gzip -d ramdisk.gz
이때 생성된 화일은 ramdisk 가 된다.
이 이미지 화일을 마운트할 디렉토리를 만들어 준다.
# mkdir dir_ramdisk1
마운트 한다.
# mount -t ext2 -o loop ramdisk dir_ramdisk1
정상적 마운트 되었다면 dir_ramdisk1 디렉토리 밑에 이지보드에서 부팅된후 보이는 디렉토리와 같은화일 및 디렉토리가 있을 것이다.
2.2 새로운 램 디스크 이미지를 담을 화일 생성하기
여러분은 새로 원하는 크기의 램 디스크 이미지를 담을 화일을 하나 만들어야 한다.
만약 10 메가의 크기를 갖는 램디스크 이미지를 하나 만든다면 다음과 같은 과정을 거쳐야 한다.
# dd if=/dev/zero of=ramdisk2 bs=1k count=32768
of=ramdisk2 옵션은 우리가 생성할 화일이름이 ramdisk2 라는 것을 가리키며
count=327680 은 32M 의 크기를 갖는 다는 것을 의미 한다. (32M = 32*1024 K)
정상적으로 생성되었다면
# ls -al ramdisk2
-rw-r--r-- 1 root root 33554432 Apr 17 01:01 ramdisk2
위에 보이는 파일의 크기와 같은 크기의 파일이 생성될 것이다.
다음은 이것을 loop 디바이스로 마운트 해야 하는데
이미 /dev/loop0는 2.1 에서 사용한 마운트에 의해서 자동으로 사용 되었으므로 여기서는 loop1을 사용한다..
# /sbin/losetup /dev/loop1 ramdisk2
# /sbin/mke2fs /dev/loop1
위의 명령으로 ramdisk2 화일을 ext2 형식으로 포맷하자.
정상적으로 포맷이 되어 있다면 일단 /dev/loop1 에 연결된 화일을 분리한다.
# /sbin/losetup -d /dev/loop1
2.3 새로운 램 디스크 이미지화일 마운트 및 기존 내용을 복사 하고, 추가할 내용이 있으면 추가를 한다.
새로 만든 이미지 화일을 마운트할 디렉토리를 만든다.
# mkdir dir_ramdisk2
마운트 한다.
# mount -t ext2 -o loop ramdisk2 dir_ramdisk2
dir_ramdisk1 에 있는 내용을 모두 dir_ramdisk2에 복사하여 넣는다.
# cp -dpR dir_ramdisk1 dir_ramdisk2
또한 추가할 내용 및 프로그램(userprogram1)도 dir_ramdisk2에 복사 한다.
# cp userprogram1 dir_ramdisk2/bin/.
2.4 마운트를 풀고 압축 화일을 만든다.
# umount dir_ramdisk1
# umount dir_ramdisk2
각각의 압축화일을 만든다.
# gzip ramdisk
# gzip ramdisk2
이렇게 해서 생긴 ramdisk2.gz가 새로 제작된 램디스크 이미지이다.
새로 제작된 램디스크 이미지를 /tftpboot 디렉토리 아래로 복사한다.
# cp ramdisk2.gz /tftpboot/ramdisk.x5-32M.gz
2.5 부트로더에서 set을 치고 세팅 화면으로 진입하여, K를 선택하여 변경한다.
다음은 디폴트로 설정된 값이다.
K. Kernel CMD 1st [initrd=0xa0800000,5M root=/dev/ram ramdisk=12288]
앞의 5M값은 실제 압축 램디스크 파일의 최대크기 이며, 뒤의 ramdisk=12288 값은 램디스크가 풀렸을때의 램디스크의 최대 크기이다.
만일 압축램디스크의 파일 사이즈가 5M 보다 크고, 만들려는 램디스크의 크기가 12M보다 크면 값을 수정해 주어야 한다. 둘중에 하나라도 변경이 되었으면 이 값을 수정해야 한다.
예를 들어 파일 사이즈는 5M 보다 작더라도 램디스크의 크기를 16M로 해서 램디스크 이미지를 제작 하였을 경우에는 뒤의 ramdisk=16384로 수정해 주어야 하는 것이다.
사용하려는 압축 램디스크 파일의 크기가 9.8M 이고, 램디스크의 크기는 32M라고 가정하자.
압축 램디스크 파일의 최대크기 10M, 램디스크가 풀렸을때의 최대크기 32M일때의 예제값은 다음과 같다.
K. Kernel CMD 1st [initrd=0xa0800000,10M root=/dev/ram ramdisk=32768]
저장을 하고 0을 눌러 빠져 나오면,
압축 램디스크 파일의 최대크기 10M, 램디스크가 풀렸을때의 최대크기 32M일때로 변경된다.
2.6 부트로더에서 set을 치고 세팅 화면으로 진입하여, 6를 선택하여 변경한다.
6. ram disk file name [ramdisk.x5-12M.gz]
Newvalue : ramdisk.x5-32M.gz
저장을 하고 0을 눌러 빠져 나온다.
2.7 부트로더에서 tfr 명령을 이용하여 새로 제작한 32M 램디스크 이미지를 다운로드 한다.
만일 EZ보드가 아닐 경우에도, 위와 유사하게 램디스크 파일을 만들 수 있으며, 부트로더에서 설정하는 부분 대신 다른 방법을 이용하며 램디스크의 크기를 변경 할 수 있을것이다.
이 강의는 이지 보드(ez-x5에서 테스트)에서 제공된 램 디스크를 확장하기 위한 작업에 대하여 기술한 문서 이다.
2. 램디스크 이미지 수정하기
이지보드에서 제공된 램 디스크의 크기는 12M 짜리로 설정되어 있다.
이 램 디스크의 크기를 수정하기 위해서는 기존 램디스크의 이미지를 마운트 하여 화일을 집어 넣는 것으로 불가능 하다.
램디스크를 수정하기 위해서는 램 디스크 이미지 화일을 재 작성하여야 한다.
이때 새로운 이미지를 작성할때는 기존의 램 디스크 이미지를 이용하여 재 작성하여야 한다.
작업 과정은 다음과 같다.
여기서 설명한 방식은 loop 디바이스를 이용하여 작성 한다.
만약 커널에서 loop 형식의 디바이스를 지원하지 않는다면 이 방식으로 수행할 수 없다.
loop를 지원하는지 체크는 다음과 같은 방식으로 한다.
# dmesg | grep loop
loop: loaded (max 8 devices)
위와 유사한 내용이 보이면 loop를 지원하는 커널이며, 만일 보이지 않을경우 커널에서 loop를 사용 할 수 있게끔 하려면, 커널에서 다음의 부분을 활성화 시켜 준다.
Block devices --->
<*> Loopback device support
2.1 기존의 램 디스크 이미지를 마운트 하기
설명을 편하게 하기 위하여 다음과 같은 환경을 갖추었다고 가정.
기존의 ramdisk 이미지가 ramdisk.gz 란 화일명 이고, /tmp/ramdisk/ramdisk.gz 에 존재 한다고 합시다.
이 /tmp/ramdisk 디렉토리로 이동 해야 한다.
# cd /tmp/ramdisk/
압축된 이미지 화일을 풀고 나서,
# gzip -d ramdisk.gz
이때 생성된 화일은 ramdisk 가 된다.
이 이미지 화일을 마운트할 디렉토리를 만들어 준다.
# mkdir dir_ramdisk1
마운트 한다.
# mount -t ext2 -o loop ramdisk dir_ramdisk1
정상적 마운트 되었다면 dir_ramdisk1 디렉토리 밑에 이지보드에서 부팅된후 보이는 디렉토리와 같은화일 및 디렉토리가 있을 것이다.
2.2 새로운 램 디스크 이미지를 담을 화일 생성하기
여러분은 새로 원하는 크기의 램 디스크 이미지를 담을 화일을 하나 만들어야 한다.
만약 10 메가의 크기를 갖는 램디스크 이미지를 하나 만든다면 다음과 같은 과정을 거쳐야 한다.
# dd if=/dev/zero of=ramdisk2 bs=1k count=32768
of=ramdisk2 옵션은 우리가 생성할 화일이름이 ramdisk2 라는 것을 가리키며
count=327680 은 32M 의 크기를 갖는 다는 것을 의미 한다. (32M = 32*1024 K)
정상적으로 생성되었다면
# ls -al ramdisk2
-rw-r--r-- 1 root root 33554432 Apr 17 01:01 ramdisk2
위에 보이는 파일의 크기와 같은 크기의 파일이 생성될 것이다.
다음은 이것을 loop 디바이스로 마운트 해야 하는데
이미 /dev/loop0는 2.1 에서 사용한 마운트에 의해서 자동으로 사용 되었으므로 여기서는 loop1을 사용한다..
# /sbin/losetup /dev/loop1 ramdisk2
# /sbin/mke2fs /dev/loop1
위의 명령으로 ramdisk2 화일을 ext2 형식으로 포맷하자.
정상적으로 포맷이 되어 있다면 일단 /dev/loop1 에 연결된 화일을 분리한다.
# /sbin/losetup -d /dev/loop1
2.3 새로운 램 디스크 이미지화일 마운트 및 기존 내용을 복사 하고, 추가할 내용이 있으면 추가를 한다.
새로 만든 이미지 화일을 마운트할 디렉토리를 만든다.
# mkdir dir_ramdisk2
마운트 한다.
# mount -t ext2 -o loop ramdisk2 dir_ramdisk2
dir_ramdisk1 에 있는 내용을 모두 dir_ramdisk2에 복사하여 넣는다.
# cp -dpR dir_ramdisk1 dir_ramdisk2
또한 추가할 내용 및 프로그램(userprogram1)도 dir_ramdisk2에 복사 한다.
# cp userprogram1 dir_ramdisk2/bin/.
2.4 마운트를 풀고 압축 화일을 만든다.
# umount dir_ramdisk1
# umount dir_ramdisk2
각각의 압축화일을 만든다.
# gzip ramdisk
# gzip ramdisk2
이렇게 해서 생긴 ramdisk2.gz가 새로 제작된 램디스크 이미지이다.
새로 제작된 램디스크 이미지를 /tftpboot 디렉토리 아래로 복사한다.
# cp ramdisk2.gz /tftpboot/ramdisk.x5-32M.gz
2.5 부트로더에서 set을 치고 세팅 화면으로 진입하여, K를 선택하여 변경한다.
다음은 디폴트로 설정된 값이다.
K. Kernel CMD 1st [initrd=0xa0800000,5M root=/dev/ram ramdisk=12288]
앞의 5M값은 실제 압축 램디스크 파일의 최대크기 이며, 뒤의 ramdisk=12288 값은 램디스크가 풀렸을때의 램디스크의 최대 크기이다.
만일 압축램디스크의 파일 사이즈가 5M 보다 크고, 만들려는 램디스크의 크기가 12M보다 크면 값을 수정해 주어야 한다. 둘중에 하나라도 변경이 되었으면 이 값을 수정해야 한다.
예를 들어 파일 사이즈는 5M 보다 작더라도 램디스크의 크기를 16M로 해서 램디스크 이미지를 제작 하였을 경우에는 뒤의 ramdisk=16384로 수정해 주어야 하는 것이다.
사용하려는 압축 램디스크 파일의 크기가 9.8M 이고, 램디스크의 크기는 32M라고 가정하자.
압축 램디스크 파일의 최대크기 10M, 램디스크가 풀렸을때의 최대크기 32M일때의 예제값은 다음과 같다.
K. Kernel CMD 1st [initrd=0xa0800000,10M root=/dev/ram ramdisk=32768]
저장을 하고 0을 눌러 빠져 나오면,
압축 램디스크 파일의 최대크기 10M, 램디스크가 풀렸을때의 최대크기 32M일때로 변경된다.
2.6 부트로더에서 set을 치고 세팅 화면으로 진입하여, 6를 선택하여 변경한다.
6. ram disk file name [ramdisk.x5-12M.gz]
Newvalue : ramdisk.x5-32M.gz
저장을 하고 0을 눌러 빠져 나온다.
2.7 부트로더에서 tfr 명령을 이용하여 새로 제작한 32M 램디스크 이미지를 다운로드 한다.
만일 EZ보드가 아닐 경우에도, 위와 유사하게 램디스크 파일을 만들 수 있으며, 부트로더에서 설정하는 부분 대신 다른 방법을 이용하며 램디스크의 크기를 변경 할 수 있을것이다.