ARM Linux使用SD卡根文件系统

因此指导学员在arm-Linux使用JPT-7模块来跑GPS应用.Nand Flash 空间太小,而且所用的板经常烧不了根文件系统.所以决定用SD卡来跑根文件系统.

 

 

1.PC机上格式化SD卡

  在桌面的PC机上用SD读卡器操作SD卡:

 

  一般情况下PC机上第一个U盘整体设备结点是/dev/sda,第二个是 /dev/sdb,在RHEL5下它会被自动mount到/media/disk和 /media/disk_1 目录.

 

  U盘/dev/sdb上第一个分区是 /dev/sdb1,第二是/dev/sdb2 依此类推.

  根文件系统采用符号链接等特性,用FAT32是不行的,这里直接采用标准的ext3的文件系统.在实测时,把U盘整个做一个分区做ext3根文件系统.总是出不少问题(可能步骤也不对),因此按网上推荐的,做二个分区,第一个分区采用vfat格式,第二个分区才采用ext3的格式.

 

1.1 用fdisk分区

     执行fdisk /dev/sdb

    fdisk有如下常用选项

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

    

如果以前U盘有分区,需要输入d命令来依次删除分区,以下执行两次n命令创建一个 400M的FAT分区,以及把剩下的分区设为ext3,最后用w命令把结果保存下来.

Command (m for help): n

Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1020, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1020, default 1020): +400M

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (202-1020, default 202):
Using default value 202
Last cylinder or +size or +sizeM or +sizeK (202-1020, default 1020):
Using default value 1020

Command (m for help): p

Disk /dev/sdb: 2041 MB, 2041577472 bytes
63 heads, 62 sectors/track, 1020 cylinders
Units = cylinders of 3906 * 512 = 1999872 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         201      392522    b  W95 FAT32
/dev/sdb2             202        1020     1599507   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table.
The new table will be used at the next reboot.

WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.

 

  

1.2 格式化分区

   

    mkfs.vfat /dev/sda1 #第一个分区格式化成fat32

    mkfs.ext3 /dev/sda2 #第二个分区格式化成fat32

  可以用

    tune2fs -l /dev/sda2 来检验分区类型 

  

1.3 拷贝根文件系统

    

  mount /dev/sda2 /mnt/sdcard #挂载SD卡

  cp -ra /home/hxy/rootfs/* /mnt/sdcard #把根文件系统拷到SD卡

 

 

2.编译ARM Linux内核

 

 2.1 修改内核配置

  确保ext3的文件系统支持,和SD卡驱动都被静态编译到内核,我使用的是Linux 2.6.29.

 在内核源码目录执行 make menuconfig

 

  其中ext3在File system下.成功的配置如下.

  
 <*> Ext3 journalling file system support      
    [*]   Ext3 extended attributes
    [*]     Ext3 POSIX Access Control Lists
    [*]     Ext3 Security Labels  
 

 

SD卡驱动支持在Device Drivers ->MMC/SD/SDIO card support 下,成功的配置如下

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyszzw.html