'Note/Memo'에 해당되는 글 18건

  1. 2008.06.04 svn 삭제
  2. 2008.06.02 램디스크 만들기
Note/Memo2008. 6. 4. 14:15


find . -name .svn -print0 | xargs -0 rm -rf
Posted by 스카이데이즈


Note/Memo2008. 6. 2. 16:26


http://kr.blog.yahoo.com/richebm/210991.html 에서 퍼왔습니다


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)



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









이 강의내용의 소유권은 (주)제이닷디앤티에 있습니다.

Posted by 스카이데이즈