앞서 커널에서 부트로더를 확인했었는데, 이번에는 부트로더에서 mtd에 포함된 파일을 확인할 수 있는지 여부이다.

      이번에 소개할 내용도, 부트로더의 기본 기능들을 이용하는 예시인데, 이런걸 쓰는거 자체가 필자에게는 스트레스이다. 부트로더는 함부로 건들지 말라고 배웠다. 물론, 반드시 빌요한 경우라면 모르겠지만, 하드웨어 문제점을 피하기 위한 수단으로 부트로더를 여기저기 건드리는건 옳지 못하다. 하드웨어에 문제가 있다면 하드웨어를 고쳐야 되고, 소프트웨어에서 지원해주길 바란다면, 최소한 PMIC등 시스템 부트 타이밍이라도 같이 확인해주고 서로 도우며 문제를 해결하는게 옳지 않을까 싶다.. 

     

    1. 부트로더의 파일 시스템 옵션 설정

      위의 기능을 사용하려면 몇가지 설정이 되어있어야한다. 뭐 주요 기능으로는 부트로더에서 ls 명령등을 사용할 수 있는 옵션과 ext4 파일시스템에 접근을 위한 기능이 설정 되어있어야 한다. 

      조금 부연하자면, 필자가 사용하는 rootfs의 파일시스템이 ext4이므로 ext4를 선택 하였고, 두번째로는 filesystem commands가 선택되어있다. filesystem command에는 load나 ls와 같은 명령들을 이용할 수 있으므로, 파일시스템 서포트 항목과 파일시스템 커맨드 항목을 포함하면 된다. 

    부트로더 옵션 설정

     

    2. 부트로더에서 파일시스템의 파일목록 확인하기

      위의 설정으로 빌드된 부트로더가 장치에 설치되었다면 이제 테스트를 시작할 수 있다. 부트로더에서 파일 시스템 목록을 확인하기 위해서는 ls 명령을 이용한다. 

     

    2.1. ls명령

      사용방법은 아래와 같다. 

        u-boot=> ls
        ls - list files in a directory (default /)

        Usage:
        ls <interface> [<dev[:part]> [directory]]
            - List files in directory 'directory' of partition 'part' on
              device type 'interface' instance 'dev'.

     

    그런데 해야 될 일이 생겼다. 어디에서 읽어와야되는지 모르니 알려주어야 한다.  커널 명령에 비해서 부트로더의 명령들은 일반적으로 설명과 예시가 부족하다. 따라서 검색을 통해서 확인하는것이 심적 도움된다. 

     

    2.2. mmc 명령

      ls 명령을 이용하기 위한 첫번째 ineterface를 선택하여야 한다. 그러려면 우리가 사용하는 mmc가 어디에 붙어있는지     확인해야 하는데, 우선 mmc info 명령으로 mmc 정보를 확인한다. 

        u-boot=> mmc info
        Device: FSL_SDHC
        Manufacturer ID: 15
        OEM: 100
        Name: 8GTF4
        Bus Speed: 52000000
        Mode : MMC DDR52 (52MHz)
        ... 생략 ...

     

      보통 이미 환경변수에 적용되어있으므로 echo ${mmcdev}를 통해 확인이 가능하다.  우선 모른다고 생각하고 하나씩 찾아보자. 아래와 같이 명령을 입력해서 1번에 있다는 것을 확인할 수 있다. 

        u-boot=> mmc dev 0
        Card did not respond to voltage select!
        u-boot=> mmc dev 1
        switch to partitions #0, OK
        mmc1(part 0) is current device

     

      그럼 우리는 여기에서 mmc를 이용하고 장치 1번이라는 정보를 확인하였다. 따라서, 다음과 같이 

    입력해주자.

        u-boot=> ls mmc 1:
        <DIR>       4096 .
        <DIR>       4096 ..
        <DIR>       4096 opt
        <DIR>       4096 etc
        <DIR>       4096 proc
        <DIR>       4096 sys
        <DIR>       4096 usr
        <DIR>       4096 srv
        <DIR>       4096 run
        <DIR>       4096 media
        <DIR>       4096 boot
        ... 생략 ...

     

      만약, 파티션이 나누어진 경우라면 다음과 같이 입력하여야 한다. 

      첫번째 파티션인 경우0, 두번째 파티션인 경우 1.... 필자가 현재 사용하는 시스템은 두번째 파티션이 ext4로 설정 되어있다.  따라서 다음과 같이 입력해야 정확한 입력이라 할 수 있다. 

     

        u-boot=> ls mmc 1:1
        <DIR>       4096 .
        <DIR>       4096 ..
        <DIR>       4096 opt
        <DIR>       4096 etc
        <DIR>       4096 proc

        ... 생략 ...

     

    2.3. 하위 디렉터리 확인

      ls 명령의 디폴트 경로는 최상위 디렉터리(/)이다. 따라서 디렉터리 내부의 내용을 확인하고 싶다면 다음과 같이 디렉터리 경로 까지 입력해주자. 아래의 실행결과를 보면 디렉터리는 DIR, 심볼릭 링크는 SYM으로 표시됨을 알수 있다.

     

        u-boot=> ls mmc 1:1 /boot
        <DIR>       4096 .
        <DIR>       4096 ..
                      261 boot.scr
                   42411 imx8mm.dtb
                5329956 Image.gz
        <SYM>      12 fsl-imx8mm.dtb
         ... 생략 ...
        u-boot=>

     

    이렇게 파일이 있는 것을 확인할 수 있다. 필요시 메모리에 로드할 수도 있다. 어쨋든 다음에 필요한 상황이 되었을 대 별도로 이야기 하도록 하고.. 퇴근해야 되니 이쯤에서...

     

    부트로더에서 파일시스템의 파일 목록 확인하기... 끝...

     
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기