mtdram을 이용해서 부팅하고 싶습니다.
보안관련 임베디드 시스템에서 rootfs를 암호화해야 할 필요가 있습니다. 그리고 몇가지 제약때문에 initramfs등은 쓰지 못합니다. 생각하다가 대안으로 mtdram을 사용하면 될 것 같아서 그쪽으로 접근중입니다. 그런데 제가 리눅스 관련해서 좀 많이 부족하여 해결하지 못하고 있습니다. mtdram으로 부팅을 하려면 어떻게 해야 할까요? 현재 접근중인 방법은,
1. rootfs는 cramfs로 제작중 - 어떤 것이든 크게 상관 없음
2. 커널에서 Self-contained MTD device drivers를 활성화하여 MTDRAM size와 block size, ABS position(이거는 물리 램주소) 을 부여
3. 커널 코드에서 아래와 같이 mtdram디바이스 생성
static struct platform_device mtd_ram = {
.id = -1,
.num_resources = 1,
.resource = (struct resource[]) {
PLAT_RESOURCE_MEM_NAMED("mtdram0", 0x48000000, 0x04000000),
},
};
static struct platdata_mtd_ram mtd_ram_data = {
.mapname = "mtd-ram rootfs",
.bankwidth = 4,
.nr_partitions = 1,
.partitions = (struct mtd_partition []) {
{
.name = "rootfs",
.offset = 0,
.size = 0x04000000
},
},
};
그런 후 u-boot에서 위에서 지정한 주소에 cramfs로 만든 rootfs를 다운받아 놓은 후, root=/dev/mtdram0 이런식으로 bootargs를 주고 부팅을 시도하면 rootfs에 마운트 실패했단 메세지와 함께 kernel panic이 됩니다. mtdram으로 부팅하려면 어떻게 해야 할까요? 위의 방식에 문제가 있을까요? 아니면 메모리 주소를 전달하는 방식에 문제가 있을까요?

