搜索
bottom↓
回复: 8

【请教】嵌入式Linux 文件系统

[复制链接]

出0入0汤圆

发表于 2011-11-4 16:27:21 | 显示全部楼层 |阅读模式
请教大家一个问题: kernel 是如何得知文件系统的存放地址的?
我猜想了两个地方 第一个是uboot 环境变量 然后我改了 但是很遗憾 内核依然能找到文件系统,
第二个是NANDflash 分区信息 我改了 但是 内核还是能找到文件系统
很费解 求教

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-11-4 16:47:38 | 显示全部楼层
1、传递给内核的cmdline
2、我不清楚你怎么改的,无法判断。

出0入0汤圆

 楼主| 发表于 2011-11-4 16:51:27 | 显示全部楼层
回复【1楼】zlei
-----------------------------------------------------------------------

意思是说 文件系统的位置 应该是u_boot 通过参数传递给kernel的了?

出0入0汤圆

发表于 2011-11-4 17:02:24 | 显示全部楼层
回复【2楼】xuefeihumei
回复【1楼】zlei  
-----------------------------------------------------------------------
意思是说 文件系统的位置 应该是u_boot 通过参数传递给kernel的了?
-----------------------------------------------------------------------

ARM体系结构:

1.最常用的方式,就是在make config里修改“General Setup”子菜单中的“Default kernel command string” 选项,通过修改这个选项来修改include/linux/autoconf.h文件中的CONFIG_CMDLINE宏
2.有的时候为了省去make menuconfig的时间,并且内核命令也是固定的,就可以写死内核arch/arm/setup.c文件default_command_line,这个变量本来是初始化为CONFIG_CMDLINE的
3.除了方法1之外,另外一种正规的方法就是将内核命令写入内核参数表中,然后通过start_kernel()->setup_arch()->parse_tags()->parse_tag() ->parse_tag_cmdline()函数来将内核参数表中的内核命令覆盖default_command_line变量(当然你首先得有内核参数表)
4.最后,有的板子会采取直接将内核命令通过bootloader传递给内核

出0入0汤圆

 楼主| 发表于 2011-11-4 17:11:34 | 显示全部楼层
回复【3楼】zlei
-----------------------------------------------------------------------

第一条 Default kernel command string 应该是在 boot option 里面吧?

出0入0汤圆

发表于 2011-11-4 17:40:07 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-11-6 08:44:45 | 显示全部楼层
可能我问的不太明确  再重述一下
关键是我想问:内核是如何知道文件系统映像的存放地址的?

出0入0汤圆

发表于 2011-11-7 09:16:51 | 显示全部楼层
这应该是在BSP相关文件中配置的,例如我的板子是这样的

static struct mtd_partition pssu_nor_partitions[] = {
        /* bootloader (U-Boot, etc) in first 2 sectors */
        [0] = {
                .name           = "bootloader",
                .offset                    = 0,
                .size           = SZ_256K,
                .mask_flags     = MTD_WRITEABLE, /* force read-only */
        },
        /* kernel */
        [1] = {
                .name           = "kernel",
                .offset         = MTDPART_OFS_APPEND,
                .size           = SZ_2M,
        },
        /* file system */
        [2] = {
                .name           = "filesystem",
                .offset         = MTDPART_OFS_APPEND,
                .size           = MTDPART_SIZ_FULL,
        }
};

出0入0汤圆

 楼主| 发表于 2011-11-7 09:36:46 | 显示全部楼层
顶吧
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 20:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表