TD9000(위성STB) 에서 사용하는 파일시스템의 종류 및 설명을 하고 있다. 예전에 개발했던 ST 기반의 오픈 케이블이나 지상파 STB 와는 달리 HDD 가 달려있는 하나의 시스템이라고 생각하면 이해하기 쉬울 것이다.
FLASH
현재 TD9000 에서 사용하고 있는 Flash 는 총 9 개의 파티션으로 나뉘어져 있다.
root@10.0.2.152:/cramfsForRoot32# cat /proc/mtd type: 0x0089001C dev: size erasesize name mtd0: 00100000 00020000 "TD9000 Kernel" mtd1: 00200000 00020000 "TD9000 Root Filesystem" mtd2: 00d00000 00020000 "TD9000 Appl Filesystem" mtd3: 00400000 00020000 "TD9000 Conf Filesystem" mtd4: 00400000 00020000 "TD9000 Help Filesystem" mtd5: 00600000 00020000 "TD9000 Recovery Filesystem" mtd6: 00160000 00020000 "TD9000 Backup Filesystem" mtd7: 00020000 00020000 "TD9000 NVRAM" mtd8: 00080000 00020000 "TD9000 Boot Loader"
name 을 각 파티션마다 대충 어떤 역할을 하는지 감을 잡았을 것이다. nfs boot 을 하면, /cramfsForRoot32 라는 디렉토리가 있다. 이곳에 각 파티션의 이미지(cramfs, jffs2) 파일이 있다. 만일 Normal 부팅 도중에 터미널에 아래와 비슷한 에러메세지가 나온다면,
-3 C02909F9 -> C7CE1000 ... ...
십중팔구는 Flash 문제이다. 대부분 기존의 데이터가 깨져서 생기는 문제인데, 이때, 앞에서 설명한 파일시스템 파일을 이용해서 기존의 영역의 깨진 데이터를 지우고 새로운 파일시스템을 Write 해야 한다.
직접 이를 실행하기 전에 cramfsForRoot32 디렉토리의 설명을 잠깐하고 넘어가겠다.
파티션 | 파일이름 | 설명 | |
mtd0 | Kernel | 커널이 들어가는 자리 | |
mtd1 | rootfs.cramfs | / 디렉토리가 들어가는 자리 | |
mtd2 | DTVRo.cramfs | 메인 프로그램이 들어가는 자리 | |
mtd3 | DISK2 | 마운트해서 필요한 파일을 저장 | |
mtd4 | help.cramfs | 도움말(html)파일을 저장 | |
mtd5 | emergency.cramfs | 비상시 복구를 위한 파일을 저장 | |
mtd6 | 현재 사용하지 않음 | 없음 | |
mtd7 | 모름 | 부트로더상(saveenv)에서 현재의 설정들을 저장하는영역 | |
mtd8 | 모름 | 부트로더를 저장하는영역 |
내가 볼 때, 가장 빈번히 R/W 가 될 부분은 mtd2 가 될 것 같다.
예를 들어 가장 에러확률이 높은 mtd2 (Appl Filesystem) 의 데이터가 깨졌다고 가정하자. 이때 어떻게 할 것인가?
가까스로 로그인 프롬프트를 만났다면, 먼저 mtd2 의 데이터를 지우고, 새롭게 Write 를 해야 할 것이다.
#unlock /dev/mtd2 #eraseall /dev/mtd2 #dd if=DTVRo.cramfs of=/dev/mtdblock2 #lock /dev/mtd2 0 -1 #reboot
어떤가? 제대로 부팅이 되는가?
HDD
위성 STB 의 경우, 특이한 점이 있다면, 바로 하드가 들어간다는 점이다. 거의 동영상 녹화를 하는데 사용된다. 순전히 메인 프로그램은 FLASH 에서 실행되기 때문에, 단순히 저장매체라고 생각하면 된다. 현재 80G 또는 160G 를 사용하는데, 크게 다르지 않다. 각 파티션은 다음과 같다. 참고로 여기서는 160G 를 기준으로 한다.
위치 | 용량 | 파일시스템 | 설명 |
hda1 | 140G | 자체포맷 | 동영상 녹화 파일 저장 |
hda2 | 8G | ext3 | Normal 부팅시 자동으로 마운트 되는 game, mp3 등의 컨텐츠 파일 저장 |
hda3 | 8G | ext3 | Recovery Binary 파일 저장 |
일반적인 Normal 부팅 상태에서는 /dev/hda2 만 마운트 된다. 만일 제대로 부팅이 되지 않는다면, 다시금 파티션을 나눠주고 포맷을 해주어야 한다.
각 파티션의 용량은 위의 표와 같이 나눠주고, hda2 와 hda3 만 포맷을 한다.
#mke2fs -j /dev/hda2 #mke2fs -j /dev/hda3
hda1 파티션의 경우에는 UI 에서 포맷하는 메뉴를 이용해서 포맷한다.