从sd卡启动之文件系统制作
2012-10-05 22:15
316 查看
在调试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的文件系统,可以读写保存数据。
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的文件系统,可以读写保存数据。
相关文章推荐
- beagelboard-xm上dvsdk移植4:sd卡启动脚本以及NFS文件系统的制作和配置
- imx533 配置 制作SD卡启动文件系统
- 制作SD卡启动文件系统
- 制作SD卡启动文件系统
- mini2440 最小根文件系统制作和nfs启动
- imx6ul evk板子 QSPI nor启动记录(4) jffs2文件系统制作及nor启动
- 嵌入式内核制作、根文件系统及内核启动流程 .
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- 制作基于OK6410的文件系统(2.修改busybox文件系统,使之能启动)
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--启动系统
- ZYNQ的Linux Linaro系统镜像制作SD卡启动
- SD卡文件系统启动linux
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- android系统移植emmc记录(1) --制作SD卡启动u-boot
- 如何使用CubeMx制作一个基于SD卡的文件系统工程
- 一步一步制作yaffs/yaffs2根文件系统(八)---总结及怎么样使系统自动启动自己编写的程序
- Linaro Ubuntu for Arndale Octa Broad Exynos 5420开发板,启动系统sd卡的制作。
- OMAP-L138通过SD卡挂载文件系统并启动
- Exynos4412 文件系统制作(一)—— 文件系统的启动过程分析