在调试andriod的代码时候发现了一个问题。在andriod调试的时候无法进入常规的文件系统进行简单的操作。由于想要把alsa移植到210的开发板中,发现“/”文件系统是无法进行读写的。在根文件系统下有一个system的目录可以进行读写但是执行命令的时候发现无法操作,顾想到了可读写的文件系统的移植。因此记录下来这篇文章以便后用,也为了遇到相同问题的开发者提供微薄的帮助。

1,fdisk的使用。

2,拷贝文件。

3,修改内核的编译选项。

4,修改uboot启动参数。

5,硬件上的必要准备。

1,fdisk:

首先要介绍的是fdisk的操作。在omap的开发的时候就遇到了sd卡的制作问题。其实网上很多的介绍。在这里只是针对本次操作的介绍,不涉及的内容网上可以查阅到。

我的环境是ubuntu10.04的OS。在插上SD卡后会发现dev目录下多了sdb。(如果不确定可以使用dmesg查看kernel的log)。

fdisk /dev/sdb

按照提示先把所有的分区信息删除,然后再是使用 p 打印出磁盘信息。保证没有分区。

再接着为磁盘分区,分区的时候使用的是命令 n。按照提示输入相应的指令 p。

这里注意分区的大小和容量的信息。default可以选择系统提示默认值,但是第二个参数是要有判断的。我使用的SD卡1G。

选择如下:

root@edward-laptop:~# fdisk /dev/sdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/sdb: 966 MB, 966787072 bytes
30 heads, 62 sectors/track, 1015 cylinders
Units = cylinders of 1860 * 512 = 952320 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x238e5adc

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         200      185969   83  Linux
/dev/sdb2             201         600      372000   83  Linux

以上信息因实际情况而异,可以个人调整。在得到了以上信息后执行命令如下:

sudo mkfs.ext4 /dev/sdb2 把第二分区的空间格式化为EXT4的文件格式。在这命令以后 mount /dev/sdb2 /mnt 把SD卡的第二分区挂到mnt的目录下。进入mnt目录可以发现多了一个lost+found的文件夹。做过文件系统的都会发现这个是制作文件系统的必备信息,可以上网查找相关资料。有了这个文件夹也说明formate成功了。

2,拷贝文件

在这里我有疑问,ext4作为文件系统类型支不支持SD卡类型的设备操作?请高手回答一下这个问题。

我们之前使用过的任何一种文件系统都是会有基本的目录如:/etc /dev /bin /lib /sbin /proc /usr 等。把这些内容拷贝到挂载完毕后的目录/mnt 或者是任何一种你指定的了文件夹。同步数据后。umount /mnt。拔出SD卡文件系统制作完毕。

3,修改编译选项:

在上面的文件系统制作的SD时,选用了mkfs。ext4这条指令,顾把SD卡的第二个分区格式化为ext4的文件系统。在kernel的.config 文件中应该把相应的文件系统的支持列表中添加EXT4的支持。

如下:

..............

#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
CONFIG_EXT4_USE_FOR_EXT23=y
# CONFIG_EXT4_FS_XATTR is not set
# CONFIG_EXT4_DEBUG is not set
CONFIG_JBD2=y
# CONFIG_JBD2_DEBUG is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set

...............

4,修改uboot的启动参数

这个过程相对比较简单,就是一条指令:set bootargs "noinitrd root=/dev/mmcblk0p2 rw console=ttySAC0"。对这条指令介绍一下:

root指定了文件系统设备的载体:SD卡的第二个分区

static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)这个函数中可以看到sprintf(md->disk->disk_name, "mmcblk%d", devidx);,SD卡的设备是以mmcblkXpX的方式命名。具体的命名规则还没有调试过代码。但是要指定第二分区的设备名为:mmcblk0p2 表示partition。

5,uboot上的必要准备

这个过程简单但是必要。

使用tftp命令下载uImage到开发板上:tftp 0x30800000 uImage

设置好了以上参数bootargs后执行:bootm 30800000

最后启动开发板。可以挂载SD卡上的文件系统,并且以这个文件系统作为根文件启动。这时候犹豫是EXT4的文件系统,可以读写保存数据。

从sd卡启动之文件系统制作相关推荐

  1. imx533 配置 制作SD卡启动文件系统

    制作SD卡启动文件系统 [1]对SD卡分区 按飞思卡尔文档列出的分区表用fdisk分区: Partition Type/Index Name Start Offset Size File System ...

  2. SD卡启动tiny4412标准版(1306)的linux系统并挂载网络根文件系统

    uboot编译平台环境:64位win8.1的虚拟机vmware10下的ubuntu-12.04.5-64bit 交叉编译工具链为:  arm-linux-gcc-4.5.1 uboot压缩包:    ...

  3. 【nano系列】jetson nano 迁移系统、制作SD卡启动扩展内存(二)

    本文继上文刷机到EMMC内存后,为扩展内存空间,迁移系统到Micro SD卡并制作SD卡启动 我的SD卡在nano中显示的名称为 /dev/sda1 ,不同于其他文章 的 /dev/mmcblk1p1 ...

  4. 制作SD卡启动自己编译的uboot.bin

    README for FriendlyARM Tiny4412 ----------------------------------------------------- 1. Build uboot ...

  5. imx6 android SD卡启动

    工作中需要将imx6的android系统从SD卡启动,所以就分析了MfgTool中的脚本,分析android的分区情况,并尝试自己操作,竟然成功了,记录于此. 参考文档 http://www.kanc ...

  6. S5PV210体系结构与接口09:SD卡启动详解

    目录 1. MMC技术演进 1.1 NandFlash & NorFlash芯片 1.2 MMC卡 & SD卡 & MicroSD卡(TF卡) 1.2.1 代际关系 1.2.2 ...

  7. [i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统

    转自:http://www.07net01.com/linux/2016/02/1232094.html 参照1:http://blog.csdn.net/girlkoo/article/detail ...

  8. SD卡启动并更新emmc

    由于项目需求需要对开发板更新固件,但对板子寄来寄去过于麻烦,因此制作一个SD卡,对emmc更新固件.这样制作的SD卡要先是一个系统卡,然后再对emmc更新固件. 1.制作SD系统卡 制作SD系统卡需要 ...

  9. Exynos4412——SD卡启动

    实现Tiny4412从SD卡的启动内核与根文件系统. 前面启动开发板时,需要从SD卡启动Uboot,然后从DNW下载内核和根文件系统到RAM,或者NFS挂载根文件系统. Uboot应该是支持SD卡的, ...

最新文章

  1. 将三维点云投影到XOZ面上
  2. Python实现微信防撤回
  3. 让Centos5.6的Firefox支持Java
  4. SAP SD微观研究之销售发票自动生成初探
  5. 广告计算——平滑CTR
  6. initialize方法与load方法比较
  7. 无刷新分页 jquery.pagination.js
  8. oppo r9 android7.0,OPPO R9 Plus的手机系统是什么
  9. java实时监控数据变化_服务数据实时监控平台
  10. Form组件之详解字段
  11. cursor-spacing 软键盘和input的距离
  12. django路由层 虚拟环境 视图层
  13. ColorUI开发手册(适用于后端同学使用)
  14. 《STM32从零开始学习历程》——SPI读取FLASH ID
  15. 第三届易观算法大赛 -- OLAP Session分析(5万奖金)
  16. 涨姿势!一文了解深度学习中的注意力机制
  17. matlab绘制散点密度,MATLAB实例:散点密度图
  18. C语言基础入门:C-Free5新建C语言工程
  19. 「思维拓展/个人提升」简说
  20. Android音视频开发;斗鱼直播实现

热门文章

  1. 2021年Android开发者跳槽指南,Android工程师面试该怎么准备?附答案
  2. 【电商必备】增长销售和客户在线支持的网站即时聊天(一)
  3. 开一家完美证件照照相馆需要考虑什么?
  4. 通达信证券软件接口编程能赚钱吗?
  5. IaaS,PaaS和SaaS介绍
  6. python两个除号什么意思_python除号_python中除号_python中的除号 - 云+社区 - 腾讯云...
  7. 放风筝与恋爱 ——写给男生
  8. 解决nginx启动闪退
  9. 苹果手机语音备忘录在哪_涨知识了!原来苹果手机备忘录还有高级玩法,纸质文档轻松电子化...
  10. 以下是某论坛坛主,给予的回复,证实了我的猜测