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으로 부팅하려면 어떻게 해야 할까요? 위의 방식에 문제가 있을까요? 아니면 메모리 주소를 전달하는 방식에 문제가 있을까요?
댓글 달기