강좌 & 팁
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-보드