打印
[嵌入式linux]

挂载根文件 失败

[复制链接]
2132|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
java0003|  楼主 | 2007-3-16 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在EP9315(属于ARM920T)上移植linux2.6 当然碰到不少问题,以下是其中之一.

我现在的FLASH分区信息如下:

Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0x60000000  0x60000000  0x00040000  0x00000000
RedBoot config    0x61F80000  0x61F80000  0x00001000  0x00000000
FIS directory     0x61FC0000  0x61FC0000  0x00040000  0x00000000
zImage            0x60040000  0x00080000  0x001C0000  0x00080000
root              0x60200000  0x00800000  0x01800000  0x00000000
user              0x61A00000  0x02000000  0x00500000  0x00000000


我将zImage和ramdisk.gz写入zImage和root分区,再复位电路后执行:

>fis load zImage
>exec -c "noinitrd root=/dev/mtdblock4 init=/linuxrc console=ttyAM0"


内核引导至以下信息处挂掉了:

VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "mtdblock3" or unknown-block(2,0)
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on unknown-block(2,0)


我的mtd分区配置如下:

#define BOOT_PARTITION_SIZE         (KSZ_1M * 2)
/*
* Define static partitions for flash device
*/
static struct mtd_partition partition_info[] =
{
        {        .name        = "Boot",
                .offset        = 0,
                .size        = KSZ_1K * 256
        },
        {        .name        = "Kernel",
                .offset        = KSZ_1K * 256,
                .size        = KSZ_1M * 2 - KSZ_1K * 256
        },
        {        .name        = "Root",
                .offset        = KSZ_1M * 2,
                .size        = KSZ_1M * 24
        },
        {        .name        = "User",
                .offset        = KSZ_1M * 26,
                .size        = KSZ_1M * 5
        }

};
#define NUM_PARTITIONS 4


==========================================================
我在编译内核时也已经选择了关于devfs选项,请帮我分析一下可能导致问题的原因???????????????
谢谢!

相关帖子

沙发
java0003|  楼主 | 2007-3-19 17:22 | 只看该作者

没有人回答,好失望:-(

使用特权

评论回复
板凳
hxlin_2001| | 2007-3-23 14:54 | 只看该作者

eee

是不是你的root分区应该为mtdblock2啊,你修改下linux_cmd_line 
改root=/dev/mtdblock2试试看

使用特权

评论回复
地板
java0003|  楼主 | 2007-3-26 09:07 | 只看该作者

这个我试过了

但问题依旧啊

使用特权

评论回复
5
andante| | 2007-4-6 13:08 | 只看该作者

这样试下

static struct mtd_partition partition_info[] =
{
        {        .name        = "Boot",
                .offset        = 0,
                .size        = KSZ_1K * 256
        },
        {        .name        = "Kernel",
                .offset        = KSZ_1K * 256,
                .size        = KSZ_1M * 2 - KSZ_1K * 256
        },
        {        .name        = "Root",
                .offset        = KSZ_1M * 2,
                .size        = KSZ_1M * 24
        },
        {        .name        = "User",
                .offset        = KSZ_1M * 26,
                .size        = KSZ_1M * 5
        }

};

1)将zImage和ramdisk.gz分别写入上面kernel和Root分区(地址自己算),而不是你给出的bootloader显示的Flash分区。

2)或你可以把mtd_partition partition_info[]进行修改修改,即
Name              FLASH addr  Mem addr    Length      Entry point
RedBoot           0x60000000  0x60000000  0x00040000  0x00000000
RedBoot config    0x61F80000  0x61F80000  0x00001000  0x00000000
FIS directory     0x61FC0000  0x61FC0000  0x00040000  0x00000000
zImage            0x60040000  0x00080000  0x001C0000  0x00080000
root              0x60200000  0x00800000  0x01800000  0x00000000
user              0x61A00000  0x02000000  0x00500000  0x00000000

没意外的话,一切会正常的。阿门。。。

使用特权

评论回复
6
mybao| | 2007-4-6 13:53 | 只看该作者

阿门

使用特权

评论回复
7
ruraliter| | 2007-4-7 10:54 | 只看该作者

建议你去下面的列表中问问

linux-arm@lists.arm.linux.org.uk

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

7

帖子

0

粉丝