1. 개요

이 강의는 이지 보드에서 제공된 램 디스크를 확장하기 위한 작업에 대하여 기술한 문서입니다.

이 기술 문서는 에프에이리눅스 홈페이지에 있는 강좌 부분에 있는 내용을 옮겨 놓은 것 입니다.

2. 램디스크 이미지 크기 확장

이지보드에서 제공된 램 디스크의 크기는 8M 짜리로 설정되어 있습니다.

이 램 디스크의 크기를 확장하기 위해서는 기존 램디스크의 이미지를 마운트 하여 화일을 집어 넣는

것만으로 불가능합니다.

램디스크의 크기를 늘리기 위해서는 램 디스크이미지 화일을 재 작성하여야 합니다.

이때 새로운 이미지를 작성할때는 기존의 램 디스크 이미지를 이용하여 재 작성하여야 합니다.

작업 과정은 다음과 같습니다.

여기서 설명한 방식은 loop 디바이스를 이용하여 작성한다. 만약 커널에서 loop 형식의 디바이스를

지원하지 않는다면 이 방식으로 수행할수 없습니다.

2.1 기존의 램 디스크 이미지를 마운트 하기

일단 설명을 편하게 하기 위하여 다음과 같은 환경을 갖추었다고 과정 해봅시다.

우선 기존의 ramdisk 이미지가 ramdisk.gz 란 화일명을 갖고

/tmp/ramdisk/ramdisk.gz 에 존재 한다고 합시다

우선 이 디렉토리로 이동해야 합니다.

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=10240

of=ramdisk2 옵션은 우리가 생성할 화일이름이 ramdisk2 라는 것을 가리키며

count=10240 은 10 M 의 크기를 갖는 다는 것을 말합니다. (10 M = 10 * 1024 K)

정상적으로 생성되었다면

# ls -al ramdisk2

-rw-r--r-- 1 root root 10485760 Apr 17 01:01 ramdisk2

와 같은 크기가 생성될 것입니다.

다음은 이것을 loop 디바이스로 마운트 해야 하는데

이미 /dev/loop0는 2.1 장에서 사용한 마운트에 의해서 자동 사용되었을 것입니다.

그러므로

/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

2.4 마운트를 풀고 압축 화일을 만든다.

umount dir_ramdisk1

umount dir_ramdisk2

각각의 압축화일을 만듭니다.

gzip ramdisk

gzip ramdisk2

이렇게 해서 생긴 ramdisk2.gz가 새로 만들어 진 램 디스크 이미지 입니다.

2.5 커널의 램디스크 크기를 조절한다.

우선 이지 보드 용 커널 소스 중에서

linux/arch/arm/mach-sa1100/ezboard.c 화일의 내용중

fixup_ezboard의 내용중 다음과 같이 수정합니다.

static void __init

fixup_ezboard(struct machine_desc *desc, struct param_struct *params,

char **cmdline, struct meminfo *mi)
{
SET_BANK( 0, 0xc8000000, 32*1024*1024 );
mi->nr_banks = 1;

// 램디스크에 관련된 부분 설정해 주는 부분이다.
ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);

// 실제 램디스크의 사이즈.
setup_ramdisk(1, 0, 0, ( 10*1024) );
setup_initrd( __phys_to_virt(0xc0800000), 4*1024*1024);
}

2.6 만약 압축 이미지 화일 크기가 4M를 넘을때

램디스크이 이미지 화일 크기가 4M가 넘으면 이지부트의 헤더 화일중

mem_map.h 의

#define DEFAULT_RAM_RAMDISK_IMG_SIZE (4 * 1024 * 1024)

를 고쳐서 재 컴파일 하여야 합니다.

즉 5M 정도 나오면

#define DEFAULT_RAM_RAMDISK_IMG_SIZE (5 * 1024 * 1024)

이런 식으로 수정 하여야 합니다.

태그: *장비설정 *EZ-보드