SD卡上挂载文件系统

来源:互联网 发布:java集合常用的方法 编辑:程序博客网 时间:2024/06/05 21:15

SD卡上挂载文件系统

嵌入式系统中,一般情况下,从SD卡启动系统的情况很常见,因为SD卡比较大,可以烧录根文件系统,本文简要介绍SD卡根文件系统的制作。

1.怎样查看SD卡对应/dev/下面的设备名字

SD/MMC 卡的设备构造差不多,MMC 应该是 SD 的前身,不过 MMC 当时的设计比 SD 小一半。SD/MMC 的驱动通用,进一步的,Linux 的设备节点就延续了 MMC 的这个名字,后面的 blk 是块设备这个英文的简写, mmcblk 也就是“ mmc/sd 块设备”,0 就是这个 mmc/sd 设备的顺序编号,p1 就是第一个分区。

对于ubuntu下面可能出现的名字则是/dev/sda adb sdc等(SD 卡一旦插入系统,内核会自动在/dev/下创建设备文件, 但有时可能时用户在拨出卡前并没有umount的话,第二次插卡进去后系统创建的就可能不是原来的设备文件名了)

这和Linux系统的磁盘命名有关系。Linux 使用一种更灵活的命名方案。它所传达的信息比其它操作系统采用的命名方案更多。该命名方案是基于文件的,文件名的格式为:/dev/xxyn下面说明了解析分区命名方案的方法:/dev/这个字串是所有设备文件所在的目录名。因为分区在硬盘上,而硬盘是设备,所以这些文件代表了在/dev/上所有可能的分区。xx分区名的前两个字母标明分区所在设备的类型。通常是 hd (IDE 磁盘)或 sd(SCSI 磁盘)。y这个字母标明分区所在第几个设备。例如,/dev/hda(第一个 IDE 磁盘)或 /dev/sdb(第二个 SCSI 磁盘)n最后的数字代表分区。前四个分区(主分区或扩展分区)是用数字从 1 排列到 4。逻辑分区从 5 开始。例如,/dev/hda3 是在第一个 IDE 硬盘上的第三个主分区或扩展分区;/dev/sdb6 是在第二个 SCSI 硬盘上的第二个逻辑分区。因此,问题中的sdb指的是系统中的第2块SCSI磁盘,sdb1指的是第2块SCSI磁盘上的第1个主分区或者扩展分区。

逻辑分区和主分区

主分区与扩展分区是平级的,扩展分区本身无法用来存放数据,要使用它必须将其分成若干个(1-n个)逻辑分区。一般硬盘分区为一个主分区和一个扩展分区,由扩展分区分出多个逻辑分区,就是你的d盘、e盘、f盘这些逻辑分区。

2.对SD卡进行分区

linux下的分区工具是用fdisk

输入命令 sudo fdisk /dev/sdb(sd卡在dev下的名字是sdb)

1. 输入 m 显示所有命令列示。 2. 输入 p 显示硬盘分割情形。 3. 输入 a 设定硬盘启动区。 4. 输入 n 设定新的硬盘分割区。    4.1. 输入 e 硬盘为[扩展]分割区(extend)。    4.2. 输入 p 硬盘为[首要]分割区(primary)。 5. 输入 t 改变硬盘分割区属性。 6. 输入 d 删除硬盘分割区属性。 7. 输入 q 结束不存入硬盘分割区属性。 8. 输入 w 结束并写入硬盘分割区属性。

例子:将文件系统烧录到SD卡中,SD卡的大小是4GB

  • 通过指令u切换到sectors模式。输入u后回车,fdisk会在sectors模式和cylinders模式间切换,这里切换到sectors模式。
  • 通过d指令删除原来的分区。重复的输入d并回车,可以删除SD卡原有的分区,知道没有任何分区为止。
  • 通过n指令新建分区。输入n并回车。
  • 输入分区编号。这里输入数字1。
  • 输入分区的起始位置。该位置是sectors为单位的,每个sector的大小为512B,这里偏移8M,给内核留下足够的存储空间,输入16384并回车。
  • 输入分区的结束为止。直接使用默认值,即到达SD卡的末尾,故直接回车即可。
  • 保存分区信息。输入指令w并回车。

3.格式化刚才新建的分区

sudo mkfs.ext3 /dev/sdb1
挂载SD卡
sudo mount /dev/sdb1 /mnt

将文件系统拷贝到
sudo cp -a * /mnt

4.板卡在SD卡中启动

要想实现在板子上从SD卡启动系统并挂载根文件系统需要:

  1. uboot和kernal能够正常运行
  2. SD卡中制作的根文件系统正常
  3. uboot中的启动参数,即传递给内核的根文件系统的挂载点要正确。

测试板子输出:

5.常见的问题:

1.怎样知道SD卡的根文件系统制作OK?

2.uboot传递给内核的挂载点怎样确认?

参考:http://blog.csdn.net/girlkoo/article/details/44626011

0 0
原创粉丝点击