ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ubuntu 9.10 에서 YAFFS2 Mount 하기
    Study/OS 2009. 11. 6. 02:03
    0. 커널 컴파일을 하기 위한 기본 셋팅

    커널 컴파일을 위해선 다음의 package들이 필요

    build-essential
    kernel-package
    libncurses5-dev                                    # ncurses 를 기반으로 하는 화면-menuconfig-에서 설정하기 위한 것
    libgtk2.0-dev, libglib2.0-dev, libglade2-dev   # GTK 기반 화면-gconfig-에서 설정하려면 설치해야 할 것
    libqt-mt-dev                                             # QT 기반 화면-xconfig-에서 설정하려면 필요한 것

    [실행]
    # apt-get install build-essential
    # apt-get install kernel-package
    # apt-get install libncurses5-dev libgtk2.0-dev libglib2.0-dev libglade2-dev
    # apt-get install libqt-mt-dev


    Ubunut에는 linux-source가 default로 포함되어 있지 않으므로 linux-source도 설치
    (시냅틱 패키지 관리에 가면 간단하게 설치 가능하다)

    커널 소스를 다운 받으면, /usr/src/ 디렉토리 안에 저장됨
    * 압축 풀고나서 /usr/src/linux-source-[kernel_version]에 들어가 menuconfig를 통해 kernel 옵션을 수정 ('3.' 에서 실행)

    [실행]
    # tar -xjvf linux-source-[kernel_version]


    1. 서버에서 YAFFS2 다운로드





    우리는 YAFFS2를 다운 받을 예정이므로
    yaffs2/ 폴더에 들어 간 후 하단에 있는 Download GNU tarball 을 통해 tar 파일을 다운 받는다
    다운받은 파일을 tmp 나 home 폴더 등 원하는 경로에 압축을 푼다

    [실행]




    2. /usr/src/linux-[version]/fs 경로에 YAFFS2 설치

    YAFFS2 source를 linux-[version]에 포함시키기 위해 필요한 파일들을 /usr/src/linux-[version]에 저장한다.
    이미 압축을 푼 폴더 내에 .sh 파일이 있으므로 이를 이용한다.
    실행 하고 나면 자동으로 /usr/src/linux-[version]/fs/yaffs2 가 생겼음을 알 수 있다.


    [실행]
    # cd yaffs2
    # ./patch-ker.sh                 // .sh 파일



    3. make menuconfig 를 통해 config 파일 저장

    (커널 메뉴 설정)
     make menuconfig 는 /usr/src/linux-[version]/ 디렉토리 안에서만 가능한 명령이다.

    (각 디렉토리에 Makefile과 Kconfig가 존재한다. 이를 이용하여 menuconfig 에서의 메뉴형태를 변경할 수 있다)

    /usr/src/linux-[version]/fs/yaffs2 에 존재하는
    Makefile과 Kconfig를 통해 원하는 방법으로 menuconfig를 수정 할 수 있다.



    [실행]
    # make menuconfig


    a. File systems를 선택한다

     
    b. Miscellaneous filesystems 를 선택한다


     
    c. YAFFS2 file system support 를 선택한다



    4. 커널 설정 저장 후 커널 컴파일


    exit 버튼을 누르고 save 창이 나오면 save를 한다.
    설정값이 /usr/src/linux-[version]/.config 파일에 저장된다.


    [실행]
    # make clean                                  
    # make bzImage install                     # vmlinuz 를 /boot 에 추가
    # make modules modules_install       # /lib/modules 에 커널 추가



    5. 새로 만든 커널 initrd를 통해 /boot/grub에 추가

    vmilnuz              # 기존의 다른 linux에서 사용되는 bzImage 와 같다. bzImage를 rename
    config                 # 커널 컴파일 시 사용된 config 파일
    system.map      # fatal error가 발생한 경우 recover를 위해 필요한 파일
    initrd.img           # root file system을 실제로 mount 하기 위한 파일

    새로 만든 커널을 부팅 시 실행 하고 싶다면 grub에 initrd를 추가해야 한다.

    [실행]
    # cd /lib/modules
    # update-initramfs -c -k [kernel_module_directory_name]


    실행하고 나면, /boot 에 initrd.img 파일이 생성된다.

    Ubuntu가 9.10로 올라가면서 grubmf grub2로 업데이트 되었기 때문에
    설정파일이 /boot/grub/menu.lst 에서 /boot/grub.cfg 로 변경
    grub.cfg 는 readonly 파일이기 때문에 직접 수정하면 안된다.

    [실행]
    # update-grub
    # grep "menuentry" /boot/grub/grub.cfg


    실행하면 생성된 initrd를 메뉴에 추가한 것을 확인 할 수 있다.
    새로 만든 커널을 등록해서 부팅


    6. Nandsim module 추가 및 YAFFS mount

    /dev 디렉토리에 mtd와 mtdblock이 존재 하지 않으면 modprobe로 mtdblock을 추가
    modprobe로 nandsim도 추가 후 yaffs 마운트

    [실행]
    # modprobe mtdblock
    # modprobe nandsim
    # insmod yaffs.ko
    # mkdir [마운트 할 위치]
    # mount -t yaffs2 /dev/mtdblock0 [마운트 할 위치]
    # cat /proc/filesystems (확인)

    * modprobe를 실행했을 경우 다음과 같은 에러가 발생하면
    -----------------------------------------------------------------------------------------------------------------------------------
    WARNING: all config files need .conf /etc/modprobe.d/vmware-tools it will be ignored in a future release
    -----------------------------------------------------------------------------------------------------------------------------------

    [실행]
    # sudo mv /etc/modprobe.d/vmware-tools /etc/modprobe.d/vmware-tools.conf






    Reference : http://programmerjk.springnote.com/pages/2456582?print=1
                     http://wiki.kldp.org/wiki.php/KernelModuleProgrammingGuide
                     http://www.linux.co.kr/home2/board/bbs/board.php?bo_table=lecture&sca=1&sca2=32&sca3=&wr_id=1639


    반응형

    댓글 1

Designed by Tistory.