LINUX.ORG.RU

ядро 2.4, изменение таблицы mtd разделов


0

0

размер и смещение известны.

static struct mtd_info *ezx_mymtd; // L18 flash mtd device                                                                                                     
static struct map_info *bulverde_map;                                                                                                                          
                                                                                                                                                               
static struct mtd_partition extra_partitions[] = {                                                                                                             
        { offset: 0x02601000, size: 0x19fffec, name: "R/W RootFS"  },                                                                                          
};  
                                                                                                                                                           
#define NB_OF(x)  (sizeof(x)/sizeof(x[0]))         

static int __init init_rwflash(void) {                                                                                                                         
        int ret;                                                                                                                                               
        struct mtd_part *part0 = PART(get_mtd_device(NULL, 0)); // get first mtd partition                                                                     
        ezx_mymtd = part0->master; // from partition get master mtd device                                                                                     
        bulverde_map = ezx_mymtd->priv;                                                                                                                        
                                                                                                                                                               
        printk(KERN_INFO "RW Flash loaded\n");                                                                                                                 
                                                                                                                                                               
        // add extra r/w partitions                                                                                                                            
        ret = add_mtd_partitions(ezx_mymtd, extra_partitions, NB_OF(extra_partitions));                                                                        
        if(ret == 0) {                                                                                                                                         
                printk(KERN_INFO "RW Flash:  Added extra_partitions.\n");                                                                                      
        } else {                                                                                                                                               
                printk(KERN_INFO "RW Flash:  Error during partition add. add_mtd_partitions returned %d\n", ret);                                              
        }                                       
}



гружу. в /proc/mtd что нужно появляется:

mtd14: 019ff000 00020000 "R/W RootFS"

создаю устройства:
mknod /dev/mtd14 c 90 28
mknod /dev/mtdblock14 b 31 14

на чтение устройство работает - фс оттуда монтируется.
но flash_unlock - отваливается. вот выхлоп strace:

open("/dev/mtd14", O_RDWR)              = -1 EACCES (Permission denied)
write(2, "Could not open mtd device: /dev/"..., 38Could not open mtd device: /dev/mtd14
) = 38


где зарыта собака?
☆☆

>open("/dev/mtd14", O_RDWR) = -1 EACCES (Permission denied)

O_o

боюсь даже спрашивать - с правами все ок? SELinux, AppArmour не запущены?

lester_dev ★★★★★
()

Лепи отладочные печати везде, где mtd может вернуть -EACCESS, и ищи точное место возникновения ошибки.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

блин. замена ядра там проблематична :(

Muromec ☆☆
() автор топика

исходный код open на mtd уже смотрели? если смотрели, то вы должны знать в каких ситуациях он может вернуть EACESS.

asgard
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.