ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ubuntu 9.10 에서 YAFFS2 Mount 하기
    Study/Ubuntu 2009.11.06 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


    'Study > Ubuntu' 카테고리의 다른 글

    Ubuntu Eclipse 설치  (2) 2012.12.26
    Ubuntu 키보드 한글 설정  (0) 2012.12.21
    Ubuntu SSH Server 설치  (0) 2012.12.21
    Ubuntu samba install, configuration  (0) 2010.02.11
    Single ethernet card with multi interfaces (다중 IP 할당)  (0) 2009.11.23
    Ubuntu 9.10 에서 YAFFS2 Mount 하기  (1) 2009.11.06

    댓글 1

Designed by Tistory.